Commit Graph

161 Commits

Author SHA1 Message Date
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
Joshua Spence
8264d9f30b Add temporary debug code 2023-02-28 21:52:07 +11:00
Joshua Spence
592bc6267f Don't use the USP-RPS as a test device
The [USP-RPS](https://store.ui.com/products/usp-rps) is a "switch" (has `usw` type) but it doesn't have ports and so the port override tests will fail. Just ignore these devices.
2023-02-28 21:52:07 +11:00
Joshua Spence
8b28a7d42e Allow device timeouts to be customized 2023-02-28 16:47:22 +11:00
Joshua Spence
c52cc13660 Wait for updates to propagate to devices 2023-02-28 16:47:22 +11:00
Joshua Spence
a83f9b3dbd Ensure the same MAC address isn't reused 2023-02-28 16:47:22 +11:00
Joshua Spence
8f0cd30efc Consider "unknown" and "upgrading" to be valid pending states 2023-02-28 16:47:22 +11:00
Joshua Spence
c3be14dc13 Allow five minutes for device adoption 2023-02-28 16:47:22 +11:00
Michon van Dooren
05df488c3b Add test clearing device portoverrides (#313)
* Add test clearing device portoverrides

* Update `go-unifi`

---------

Co-authored-by: Joshua Spence <josh@spence.com.au>
2023-02-28 11:54:15 +11:00
Joshua Spence
aa9f778363 Ensure subsystem logger has been created (#314) 2023-02-28 11:38:54 +11:00
Christian Winther
7296c9d730 unifi_port_forward enabled should default to true (#258)
Fixes https://github.com/paultyng/terraform-provider-unifi/issues/255
2023-02-28 08:29:54 +11:00
Joshua Spence
b3662a627f Fix network mDNS acceptance tests (#311)
* Make compatible with `getTestVLAN`

* Run `go generate`
2023-02-25 10:18:49 +11:00
Xabier Larrakoetxea Gallego
dc95eceb2e Add support for mDNS on network resource (#292)
* Add support for mDNS on network resource

Signed-off-by: Xabier Larrakoetxea <me@slok.dev>

* Add mDSN network tests

Signed-off-by: Xabier Larrakoetxea <me@slok.dev>

---------

Signed-off-by: Xabier Larrakoetxea <me@slok.dev>
2023-02-25 10:05:48 +11:00
Joshua Spence
81c357b3a5 Improve test stability (#310)
* Improve stability of network/wlan tests

* Improve stability of user tests

* Don't test with different Terraform versions
2023-02-24 18:04:56 +11:00
Joshua Spence
066163a22c Allow device adoption (#188)
* Allow device adoption

* Handling disappearing device

* Allocate test devices dynamically

* Increase `NotFoundChecks`

* Demo devices don't seem to have sequential MACs

* Change default for `forget_on_destroy`

* Minor
2023-02-24 10:42:06 +11:00
Michon van Dooren
7eadb9ba08 Expose source port of firewall rules (#305)
* Expose source port of firewall rules

* Add tests

---------

Co-authored-by: Joshua Spence <josh@spence.com.au>
2023-02-23 15:55:08 +11:00
Michon van Dooren
b5e936c724 Set default wlan band to 'both' (#304) 2023-02-23 14:50:29 +11:00
Bill (William) O'Neill
1a9bac4a09 Add support for local_dns_record (#293) 2022-11-16 10:06:35 -05:00
Paul Tyng
c65954205a Fix priority validation
Fixes #289
2022-10-24 13:13:17 -04:00
Oskar
0cf907be5f feat: create users in the build-in radius server (#286)
* feat: account resource with data source

* Adjust docs and validation

* add import test steps

* adjust radius capitalization in docs

Co-authored-by: Paul Tyng <paul@paultyng.net>
2022-10-23 10:12:10 -04:00
Paul Tyng
3bdb843a13 Add test step removing qos (#285)
* Add test step removing qos

* Bump go-unifi
2022-10-23 09:30:09 -04:00
Paul Tyng
f653ca03d9 Update schedule support for typed API field (#284)
* Test removing schedule

* Use new schedule API field

* fix attribute name

* Bump go-unifi
2022-10-23 09:00:07 -04:00
Andreas Harter
0604e1deaf Add missing IPv6 properties (#261)
* Add missing WAN IPv6 properties to network resource

* Rename 'ipv6_static_subnet' to 'ipv6_subnet'

According to the go-unifi lib, the name was incorrect

* Improve description and validation of IPv6 properties

* Add missing IPv6 props to network

* Add IPv6 support to firewall rules

* Adjust naming

* ensure unique vlan

* Add vlan ID validation

* fix assertion

* Update docs

* rename attribute

* cleanup imports

* test protocol_v6

* test dhcp_v6_lease

* spelling

* switch protocol back

Co-authored-by: Paul Tyng <paul@paultyng.net>
2022-10-22 12:56:56 -04:00
Paul Tyng
3df6f4a4a4 Reorder keys 2022-10-21 15:53:26 -04:00
Oskar
db21ecd760 Adding radius profile resource (#215)
* Adding radius profile resource

* Fix radius profile resource documentation and naming

* Updated doc generation

Co-authored-by: Paul Tyng <paul@paultyng.net>
2022-10-21 15:52:25 -04:00
Oskar
c48063bb19 Enable USG/UDM radius server (#214)
* Enable built-in radius server settings

* Adding documentation

* Update docs with new generator

Co-authored-by: Paul Tyng <paul@paultyng.net>
2022-10-21 15:42:39 -04:00
Paul Tyng
4465152b20 Fix deprecation 2022-10-20 11:56:29 -04:00
Paul Tyng
0d4dc04428 unifi_network - default network access bools to true
* Expose InternetAccessEnabled and IntraNetworkAccessEnabled

* Generate docs

* bump go-unifi to v1.27.0

* ammend tf and unifi versions

* fix minrate preference setting in 7.2

* fix

* try some additional tf 1.3 versions  to see why they are failing

* Bump sdk version to fix import test bug

Co-authored-by: Dillon Newell <dillon@newell-labs.ca>
2022-10-20 11:54:03 -04:00
Paul Tyng
d02c97bd55 Updates for controller v7.1 and dependency updates 2022-07-02 22:02:22 -04:00
Joshua Spence
4f1a61ef27 Don't support multicast_dns_enabled on v7 (#241) 2022-05-18 09:26:17 +10:00