Commit Graph

190 Commits

Author SHA1 Message Date
Mateusz Filipowicz
5da978a5d3 feat: add SSL inspection resource support with unifi_setting_ssl_inspection resource (#38)
* feat: add SSL inspection resource support with `unifi_setting_ssl_inspection` resource

* add version contstraint
2025-03-02 20:46:49 +01:00
Mateusz Filipowicz
ef2221cab9 feat: add network optimization resource support with unifi_setting_network_optimization resource (#37)
* feat: add network optimization resource support with `unifi_setting_network_optimization` resource
2025-03-02 01:41:08 +01:00
Mateusz Filipowicz
8b5ed14d8d feat: add NTP setting resource support with unifi_setting_ntp resource (#36)
* feat: add NTP setting resource support with `unifi_setting_ntp` resource

* linting

* fix missing method

* add missing validators
2025-03-02 01:10:41 +01:00
Mateusz Filipowicz
a78667e669 feat: add magic site-to-site VPN setting resource support with unifi_setting_magic_site_to_site_vpn resource (#35)
* feat: add magic site-to-site VPN setting resource support with `unifi_setting_magic_site_to_site_vpn` resource

* do not use default

* require controller version >=7.4 for magic site to site vpn tests
2025-03-01 23:12:06 +01:00
Mateusz Filipowicz
f815ffef79 feat: add locale setting resource support with unifi_setting_locale resource (#34)
* feat: add locale setting resource support with `unifi_setting_locale` resource

* lint
2025-03-01 18:03:58 +01:00
Mateusz Filipowicz
273d0daddd feat: add automatic speedtest setting resource support with unifi_setting_auto_speedtest resource (#32)
* feat: add automatic speedtest setting resource support with `unifi_setting_auto_speedtest` resource

* restore lowered test paralellism

* refactoring and fixes

* fix speedtest after refactor

* run speedtest test on versions [7.2,7.4.156), cause later it was removed from USG which is used in tests
2025-03-01 15:38:17 +01:00
Mateusz Filipowicz
a36940b019 feat: add country setting resource support with unifi_setting_country resource (#31)
* feat: add country setting resource support with `unifi_setting_country` resource

* linting
2025-02-27 02:56:07 +01:00
Mateusz Filipowicz
b1688313c0 docs: improve provider documentation (#29)
* docs: improve provider documentation

* fix accidentally changed type of stormctrl_ucast_rate

* docs: add badges and plans to readme
2025-02-26 18:56:45 +01:00
Mateusz Filipowicz
e5e50f98c0 chore: support locking in tests (#28) 2025-02-26 10:33:55 +01:00
Mateusz Filipowicz
af1aa62b3f feat: retry forgetting device when device is busy (#26) 2025-02-26 09:31:32 +01:00
Mateusz Filipowicz
e7164c0460 feat: add DNS record resource and datasources (#25)
* add DNS record

* revamp tests

* lint

* cleanup

* feat dns test

* chore: add DNS Record tests

* linting

* f
2025-02-26 01:17:59 +01:00
Mateusz Filipowicz
325d7b7f20 feat: initialize Terraform Plugin Framework (#23)
* feat: initialize Terraform Plugin Framework

* fix docker-compose path for tests

* fix: ensure documentation can be generated with old provider SDK and new plugin framework

* lint
2025-02-24 00:11:41 +01:00
Mateusz Filipowicz
b7fe359f6c feat: support API Key authentication to UniFi controller (#22) 2025-02-23 19:51:18 +01:00
Mateusz Filipowicz
f5bd8ebb15 feat: switch to filipowm/go-unifi UniFi SDK client (#20)
* feat: switch to filipowm/go-unifi UniFi SDK client

* disable validation in tests

* replace usage of APIError by ServerError

* bump go-unifi to 1.4.0
2025-02-23 17:07:03 +01:00
Mateusz Filipowicz
7c8724bc5c feat: support excluded_network_ids on port profile resource 2025-02-07 11:16:00 +01:00
Mateusz Filipowicz
4c3d5830ad feat: remove unused firewall properties from settings usg 2025-02-07 01:09:36 +01:00
Mateusz Filipowicz
b19314bc6e use filipowm/go-unifi instead of paultyng/go-unifi 2025-02-07 01:09:36 +01:00
Mateusz Filipowicz
0d5de4a4cf feat: add validation on wifi name 2025-02-07 01:09:36 +01:00
Mateusz Filipowicz
708d73eb6b feat: add enabled flag 2025-02-07 01:09:36 +01:00
Mateusz Filipowicz
5e4894c114 chore: tidying up dependencies 2025-02-07 01:09:36 +01:00
Mateusz Filipowicz
0cf84ee1df feat: support updated port profile API 2025-02-07 01:09:36 +01:00
Mateusz Filipowicz
7e222cb061 feat: add network_isolation_enabled and deprecate intra_network_access_enabled 2025-02-07 01:09:36 +01:00
Mateusz Filipowicz
6e6991d227 chore: set test parallelism to 2 from 4 due to too high parallelism causing "text file busy" issue 2025-01-21 11:50:04 +01:00
Mateusz Filipowicz
5b20ec9132 chore: make tests less flaky due to random naming of resources
Refers #480
2025-01-09 00:21:28 +01:00
Mateusz Filipowicz
5ba683fdad fix: flaky TestAccSite_basic and TestAccDataAccount_mac tests (#481)
* fix: temporarily disable CheckDestroy in TestAccSite_basic causing test flakiness

References #480

* fix: generate random name and mac in TestAccDataAccount_default and TestAccDataAccount_mac respectively to fix flakiness

References #480

* chore: disable linter on testAccCheckSiteResourceDestroy
2025-01-07 20:01:50 +11:00
Joshua Spence
60b7295c10 Update supported versions (#462)
* Update supported versions

* Fixes

* Set default for `dhcp_v6_enabled`

* Update resource_network_test.go

* Format

* Undo

* fixme

* Add back older versions

* Format

* FIXME
2024-11-22 13:23:12 +11:00
dependabot[bot]
d79cc47b12 Bump golangci/golangci-lint-action from 3.7.1 to 6.0.1 (#458)
* Bump golangci/golangci-lint-action from 3.7.1 to 6.0.1

Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 3.7.1 to 6.0.1.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases)
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v3.7.1...v6.0.1)

---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Go format

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Josh Spence <jspence@anduril.com>
2024-11-22 11:29:06 +11:00
David Symonds
2e6f384294 Support per-port PoE mode override for devices. (#393) 2023-09-08 15:23:43 +10:00
Joshua Spence
82b99c3fba Run acceptance tests against UniFi Network 7.4 (#377) 2023-06-07 14:11:01 +10:00
dependabot[bot]
3879e88f7a Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.25.0 to 2.26.0 (#353)
* Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.25.0 to 2.26.0

Bumps [github.com/hashicorp/terraform-plugin-sdk/v2](https://github.com/hashicorp/terraform-plugin-sdk) from 2.25.0 to 2.26.0.
- [Release notes](https://github.com/hashicorp/terraform-plugin-sdk/releases)
- [Changelog](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/terraform-plugin-sdk/compare/v2.25.0...v2.26.0)

---
updated-dependencies:
- dependency-name: github.com/hashicorp/terraform-plugin-sdk/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Address deprecations

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joshua Spence <josh@spence.com.au>
2023-03-22 10:43:31 +11:00
Joshua Spence
ca71d9e4f9 Add IPv6 support to static routes (#349)
* Improve tests

* Add Ipv6 support

* We can't create IPv6 static routes without a gateway

* Revert "We can't create IPv6 static routes without a gateway"

This reverts commit dfff85c5b7d22c28d50485536c567e3a8b657136.

* Adopt device

* Fix

* Revert "Adopt device"

This reverts commit a1fb209c7b2cd0d9ae44640fece91f4bafeed2ae.
2023-03-10 20:15:54 +11:00
Jamie Wark
65e1701bc5 Add wlan tuning (#312)
* Add wlan tuning

* proxy_arp
* bss_transition
* fast_roaming_enabled

* Fix punctuation

* Default `bss_transition` to `true`

* Improve tests

* Tweak descriptions

* Fix tests

* Fix tests

---------

Co-authored-by: Joshua Spence <josh@spence.com.au>
2023-03-10 14:15:35 +11:00
Joshua Spence
105d542879 Add DiffSuppressFunc for op_mode and aggregate_num_ports (#344) 2023-03-08 22:27:58 +11:00
Paul Tyng
0401ae6913 Add support for port aggregation (#182)
* Add support for port aggregation

Fixes #142

* Return `*unifi.Device` from `allocateDevice`

* Merge `TestAccDevice_switch_portOverrides` and `TestAccDevice_remove_portOverrides`

* Add tests

Note that only switches with a Broadcom, Microsemi or Nephos chipset support both port mirroring and port aggregation.

```java
package com.ubnt.data;

public class Device extends X implements Sanitizable
{

  // ...

  public int getMaxMirrorSession() {
    int n = 0;
    if (this.getModel() == Model.\u00f8\u00f50000) {
      n = 2;
    }
    else if (this.isBroadcomSwitch() || this.isMicrosemiSwitch() || this.isMediaTekSwitch() || this.isNephosSwitch()) {
      n = 1;
    }
    return this.thisforObject().getInt("max_mirror_sessions", n);
  }

  public int getMaxAggregation() {
    int n = 0;
    if (this.isBroadcomSwitch() || this.isMicrosemiSwitch() || this.isNephosSwitch()) {
      n = 6;
    }
    return this.thisforObject().getInt("max_aggregate_sessions", n);
  }

  // ...

  public boolean isBroadcomSwitch() {
    final Model model = this.getModel();
    return model.getChipset().typeOf(Chipset.\u00f400000) && model.getType() == DeviceType.if;
  }

  public boolean isMicrosemiSwitch() {
    final Model model = this.getModel();
    return model.getChipset().typeOf(Chipset.o00000) && model.getType() == DeviceType.if;
  }

  public boolean isMediaTekSwitch() {
    final Model model = this.getModel();
    return model.getChipset().typeOf(Chipset.\u00d3O0000) && model.getType() == DeviceType.if;
  }

  public boolean isNephosSwitch() {
    final Model model = this.getModel();
    return model.getChipset().typeOf(Chipset.\u00d5O0000) && model.getType() == DeviceType.if;
  }

  // ...

}
```

To extract the list of models that use one of these chipsets I used the following script (executed as `java --class-path path/to/ace.jar main.java`):

```java
import com.ubnt.data.Model;

class UniFiModels {
  public static void main(String[] args) {
    /*
    for (Model model : Model.values()) {
      System.out.printf(
          "Model = %s\nSKU = %s\nType = %s\nFeatures = %s\nChipset = %s\nSysId = %s\nPortNum = %s\n\n",
          model,
          model.getSku(),
          model.getType(),
          model.getFeatures(),
          model.getChipset(),
          model.getSysId(),
          model.getPortNum());
    }
    */

    for (Model model : Model.values()) {
      System.out.printf("%s: %s (%s)\n", model.getChipset(), model, model.getSku());
    }
  }
}

```

---------

Co-authored-by: Joshua Spence <josh@spence.com.au>
2023-03-08 18:02:34 +11:00
Joshua Spence
9367e123fe Dump controller logs after acceptance tests (#335)
* Dump logs

* Incrase log verbosity

* Fix lint

* Add `LogConsumer`

* Revert "Add `LogConsumer`"

This reverts commit eba91831e11fd8b38343d14363fe553a3591377b.

* Tidying

* Minor tidying

* Conditional guard

* Minor

* Fix

* Fix

* Dump logs in CI
2023-03-04 00:09:50 +11:00
Joshua Spence
c713a22aa6 Don't use USW-Leaf in acceptance tests (#336)
The USW-Leaf consistently fails to be adopted:

```
[2023-03-03T04:25:11,002] XXX <fake-UDC48X6> ERROR inform - dev[00:27:22:00:00:12] failed to update capability: api.err.InvalidReportPort
[2023-03-03T04:25:21,004] XXX <fake-UDC48X6> ERROR inform - dev[00:27:22:00:00:12] failed to update capability: api.err.InvalidReportPort
[2023-03-03T04:25:31,005] XXX <fake-UDC48X6> ERROR inform - dev[00:27:22:00:00:12] failed to update capability: api.err.InvalidReportPort
[2023-03-03T04:25:41,006] XXX <fake-UDC48X6> ERROR inform - dev[00:27:22:00:00:12] failed to update capability: api.err.InvalidReportPort
```
2023-03-03 17:11:32 +11:00
Joshua Spence
b27b54a755 Use testcontainers-go (#330)
* Use `testcontainers-go`

* Wait for ready

* Sleep

* Remove `time.Sleep`

* Wait until devices appear

* Pass environment

* Add `golangci-lint` to tools

* Minor
2023-03-03 15:19:19 +11:00
Joshua Spence
284c42aaae Improve device allocation (#333)
* Improve device allocation

* Improve

* Tweak MAC code

* Add `golangci-lint` to tools

* Debugging

* Revert "Debugging"

This reverts commit 90c0b054256e9a741193854dc6b5984f6e749a9a.

* Use `golang-set`

* Remove `sync.Mutex`

* Cleanup
2023-03-03 14:05:09 +11:00
Joshua Spence
cecd408e57 Migrate to terraform-plugin-testing (#331)
See https://developer.hashicorp.com/terraform/plugin/testing/migrating.
2023-03-03 09:04:31 +11:00
Chris Hasenpflug
8bfcf5b503 firewall_rule: Add enabled attribute (#63)
* firewall_rule: Add enabled attribute

Resolves #62

* Add tests

* Update docs

---------

Co-authored-by: Joshua Spence <josh@spence.com.au>
2023-03-02 20:06:04 +11:00
Joshua Spence
f0ee3cbbfa Lower the device retry timeouts (#322)
* Lower the device retry timeouts

* Add debug logging

* Revert "Add debug logging"

This reverts commit 209da04dd9cee2e826724f27ea4602cdc9414015.

* Tweak timeouts
2023-03-01 13:04:40 +11:00
Joshua Spence
263a2c71d2 Remove UNIFI_ACC_WLAN_CONCURRENCY (#323)
* Remove `UNIFI_ACC_WLAN_CONCURRENCY`

* Update resource_wlan_test.go

* Update resource_wlan_test.go
2023-03-01 10:44:11 +11:00
Joshua Spence
d3147cf83c Allow 10 minutes for device adoption (#318) 2023-02-28 22:40:58 +11:00
Joshua Spence
2eba55a7f3 Change default value for allow_adoption (#317)
* Change default value for `allow_adoption`

* Update docs
2023-02-28 22:19:22 +11:00
Joshua Spence
5cc1679b7f Tidying 2023-02-28 21:52:07 +11:00
Joshua Spence
c0a2d0e07b Skip PDUs 2023-02-28 21:52:07 +11:00
Joshua Spence
b5a1680cd9 Revert "Remove debug code"
This reverts commit 4f768d67c08ae476033bfc59d428c14f6cd0435d.
2023-02-28 21:52:07 +11:00
Joshua Spence
c3b52a2191 Temp 2023-02-28 21:52:07 +11:00
Joshua Spence
5becf45299 Remove debug code 2023-02-28 21:52:07 +11:00
Joshua Spence
6a337ed666 Add another USP-RPS model 2023-02-28 21:52:07 +11:00