diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ec008b3..465a7c95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.2.1-alpha (April 16, 2024) +BUGFIXES: +* ListAttribute replaced to SetAtrribute. +* NetworksWirelessSSIDsResource attributte marked as `Computed` removed cause were only `Optional` params. + ## 0.2.0-alpha (April 16, 2024) FEATURES: * Provider supports v1.44.1 of Meraki Dashboard API. diff --git a/examples/resources/meraki_networks_wireless_ssids_firewall_l3_firewall_rules/resource.tf b/examples/resources/meraki_networks_wireless_ssids_firewall_l3_firewall_rules/resource.tf index 5d33f05b..0a5de2d8 100644 --- a/examples/resources/meraki_networks_wireless_ssids_firewall_l3_firewall_rules/resource.tf +++ b/examples/resources/meraki_networks_wireless_ssids_firewall_l3_firewall_rules/resource.tf @@ -1,7 +1,7 @@ resource "meraki_networks_wireless_ssids_firewall_l3_firewall_rules" "example" { - allow_lan_access = true + allow_lan_access = false network_id = "string" number = "string" rules = [{ diff --git a/examples/samples/resources/adaptative_policy_groups/resource.tf b/examples/samples/resources/adaptative_policy_groups/resource.tf new file mode 100644 index 00000000..b3f57777 --- /dev/null +++ b/examples/samples/resources/adaptative_policy_groups/resource.tf @@ -0,0 +1,20 @@ +terraform { + required_providers { + meraki = { + version = "0.2.0-alpha" + source = "hashicorp.com/edu/meraki" + # "hashicorp.com/edu/meraki" is the local built source, change to "cisco-en-programmability/meraki" to use downloaded version from registry + } + } +} + +provider "meraki" { + meraki_debug = "true" +} + +resource "meraki_organizations_adaptive_policy_groups" "repro" { + organization_id = "828099381482762270" + description = "A repro" + name = "pulumi testing 2" + sgt = 1006 +} \ No newline at end of file diff --git a/examples/samples/resources/meraki_networks_appliance_vlans/resource.tf b/examples/samples/resources/meraki_networks_appliance_vlans/resource.tf new file mode 100644 index 00000000..ac775ddd --- /dev/null +++ b/examples/samples/resources/meraki_networks_appliance_vlans/resource.tf @@ -0,0 +1,24 @@ +terraform { + required_providers { + meraki = { + version = "0.2.0-alpha" + source = "hashicorp.com/edu/meraki" + # "hashicorp.com/edu/meraki" is the local built source, change to "cisco-en-programmability/meraki" to use downloaded version from registry + } + } +} +provider "meraki" { + meraki_debug = "true" +} + +variable "my_network_id" { + type = string + default = "*******" # Branch-1234 +} +resource "meraki_networks_appliance_vlans" "my_mx" { + appliance_ip = "192.168.14.2" + id = "14" + name = "My VLAN" + network_id = var.my_network_id + subnet = "192.168.14.0/24" +} \ No newline at end of file diff --git a/examples/samples/resources/meraki_networks_syslog_servers/resource.tf b/examples/samples/resources/meraki_networks_syslog_servers/resource.tf index 4c3eeddf..949a71d6 100644 --- a/examples/samples/resources/meraki_networks_syslog_servers/resource.tf +++ b/examples/samples/resources/meraki_networks_syslog_servers/resource.tf @@ -16,7 +16,7 @@ resource "meraki_networks_syslog_servers" "example" { network_id = "L_828099381482775375" servers = [{ - host = "1.2.3.4" + host = "1.2.3.42" port = 443 roles = ["Wireless event log", "URLs"] }] diff --git a/examples/samples/resources/networks_devices_claim_vmx/resource.tf b/examples/samples/resources/networks_devices_claim_vmx/resource.tf new file mode 100644 index 00000000..e69de29b diff --git a/examples/samples/resources/new/resource.tf b/examples/samples/resources/new/resource.tf index 79154d99..cb1dbfa0 100644 --- a/examples/samples/resources/new/resource.tf +++ b/examples/samples/resources/new/resource.tf @@ -2,23 +2,26 @@ terraform { required_providers { meraki = { version = "0.2.0-alpha" - source = "hashicorp.com/edu/meraki" + source = "hashicorp.com/edu/meraki" # "hashicorp.com/edu/meraki" is the local built source, change to "cisco-en-programmability/meraki" to use downloaded version from registry } } } + provider "meraki" { meraki_debug = "true" } -variable "my_network_id" { - type = string - default = "*******" # Branch-1234 -} -resource "meraki_networks_appliance_vlans" "my_mx" { - appliance_ip = "192.168.14.2" - id = "14" - name = "My VLAN" - network_id = var.my_network_id - subnet = "192.168.14.0/24" -} \ No newline at end of file +resource "meraki_networks_alerts_settings" "example" { + network_id = "L_828099381482775374" + alerts = [{ + type = "ampMalwareDetected" + enabled = true + }] + default_destinations = { + all_admins = true + # emails = [] + http_server_ids = ["aHR0cHM6Ly93ZWJob29rLnNpdGU="] + snmp = false + } +} \ No newline at end of file diff --git a/examples/samples/resources/testing/resource.tf b/examples/samples/resources/testing/resource.tf new file mode 100644 index 00000000..2a2db570 --- /dev/null +++ b/examples/samples/resources/testing/resource.tf @@ -0,0 +1,53 @@ +terraform { + required_providers { + meraki = { + version = "0.2.0-alpha" + source = "hashicorp.com/edu/meraki" + } + } +} + + + +provider "meraki" { + meraki_debug = "true" +} + +resource "meraki_networks_group_policies" "group_policy_byod" { + name = "BYOD" + network_id = "L_828099381482771185" + vlan_tagging = { + settings = "custom" + vlan_id = "20" + } +} + +resource "meraki_networks_group_policies" "group_policy_guest" { + depends_on = [ meraki_networks_group_policies.group_policy_byod ] + name = "GUEST" + network_id = "L_828099381482771185" + vlan_tagging = { + settings = "custom" + vlan_id = "30" + } +} + +resource "meraki_networks_group_policies" "group_policy_pan" { + depends_on = [ meraki_networks_group_policies.group_policy_guest ] + name = "PAN" + network_id = "L_828099381482771185" + vlan_tagging = { + settings = "custom" + vlan_id = "15" + } +} + +resource "meraki_networks_group_policies" "group_policy_internal" { + depends_on = [ meraki_networks_group_policies.group_policy_pan ] + name = "INTERNAL 2" + network_id = "L_828099381482771185" + vlan_tagging = { + settings = "custom" + vlan_id = "5" + } +} \ No newline at end of file diff --git a/examples/samples/resources/wireless_ssids/resource.tf b/examples/samples/resources/wireless_ssids/resource.tf new file mode 100644 index 00000000..9359c29b --- /dev/null +++ b/examples/samples/resources/wireless_ssids/resource.tf @@ -0,0 +1,31 @@ +terraform { + required_providers { + meraki = { + version = "0.2.0-alpha" + source = "hashicorp.com/edu/meraki" + # "hashicorp.com/edu/meraki" is the local built source, change to "cisco-en-programmability/meraki" to use downloaded version from registry + } + } +} + +provider "meraki" { + meraki_debug = "true" +} + +resource "meraki_networks_wireless_ssids" "test" { + network_id = "L_828099381482771185" + number = 1 + enabled = true + name = "test 2" + adult_content_filtering_enabled = false + auth_mode = "psk" + available_on_all_aps = true + band_selection = "Dual band operation with Band Steering" + ip_assignment_mode = "Bridge mode" + psk = "" + encryption_mode = "wpa" + wpa_encryption_mode = "WPA2 only" + mandatory_dhcp_enabled = true + default_vlan_id = "10" + lan_isolation_enabled = false +} \ No newline at end of file diff --git a/go.mod b/go.mod index 65530cd9..07d08f40 100644 --- a/go.mod +++ b/go.mod @@ -5,23 +5,23 @@ go 1.21.5 toolchain go1.21.6 require ( - github.com/hashicorp/terraform-plugin-docs v0.18.0 + github.com/hashicorp/terraform-plugin-docs v0.19.1 github.com/hashicorp/terraform-plugin-framework v1.7.0 github.com/hashicorp/terraform-plugin-framework-validators v0.12.0 - github.com/meraki/dashboard-api-go/v3 v3.0.0 + github.com/meraki/dashboard-api-go/v3 v3.0.1 ) require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.0 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect + github.com/ProtonMail/go-crypto v1.1.0-alpha.2 // indirect github.com/armon/go-radix v1.0.0 // indirect github.com/bgentry/speakeasy v0.1.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/fatih/color v1.16.0 // indirect github.com/go-resty/resty/v2 v2.12.0 - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-checkpoint v0.5.0 // indirect @@ -31,10 +31,10 @@ require ( github.com/hashicorp/go-plugin v1.6.0 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/hc-install v0.6.2 // indirect + github.com/hashicorp/hc-install v0.6.4 // indirect github.com/hashicorp/terraform-exec v0.20.0 // indirect github.com/hashicorp/terraform-json v0.21.0 // indirect - github.com/hashicorp/terraform-plugin-go v0.22.1 + github.com/hashicorp/terraform-plugin-go v0.22.2 github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect github.com/hashicorp/terraform-registry-address v0.2.3 // indirect github.com/hashicorp/terraform-svchost v0.1.1 // indirect @@ -47,32 +47,35 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/oklog/run v1.1.0 // indirect github.com/posener/complete v1.2.3 // indirect - github.com/russross/blackfriday v1.6.0 // indirect github.com/shopspring/decimal v1.3.1 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - github.com/zclconf/go-cty v1.14.1 // indirect + github.com/zclconf/go-cty v1.14.4 // indirect golang.org/x/crypto v0.21.0 // indirect golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df // indirect - golang.org/x/mod v0.14.0 // indirect + golang.org/x/mod v0.16.0 // indirect golang.org/x/net v0.22.0 // indirect golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect - google.golang.org/grpc v1.62.1 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/grpc v1.63.2 // indirect google.golang.org/protobuf v1.33.0 // indirect ) require ( + github.com/BurntSushi/toml v1.2.1 // indirect github.com/Kunde21/markdownfmt/v3 v3.1.0 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/bmatcuk/doublestar/v4 v4.6.1 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/hashicorp/cli v1.1.6 // indirect github.com/juju/ratelimit v1.0.2 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect - github.com/yuin/goldmark v1.6.0 // indirect + github.com/yuin/goldmark v1.7.0 // indirect github.com/yuin/goldmark-meta v1.1.0 // indirect + go.abhg.dev/goldmark/frontmatter v0.2.0 // indirect gopkg.in/yaml.v2 v2.3.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index a2138670..64ab9d4c 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/Kunde21/markdownfmt/v3 v3.1.0 h1:KiZu9LKs+wFFBQKhrZJrFZwtLnCCWJahL+S+E/3VnM0= github.com/Kunde21/markdownfmt/v3 v3.1.0/go.mod h1:tPXN1RTyOzJwhfHoon9wUr4HGYmWgVxSQN6VBJDkrVc= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -10,18 +12,18 @@ github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v1.1.0-alpha.2 h1:bkyFVUP+ROOARdgCiJzNQo2V2kiB97LyUpzH9P6Hrlg= +github.com/ProtonMail/go-crypto v1.1.0-alpha.2/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bmatcuk/doublestar/v4 v4.6.1 h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I= +github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= -github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= @@ -40,17 +42,15 @@ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66D github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= -github.com/go-git/go-git/v5 v5.10.1 h1:tu8/D8i+TWxgKpzQ3Vc43e+kkhXqtsZCKI/egajKnxk= -github.com/go-git/go-git/v5 v5.10.1/go.mod h1:uEuHjxkHap8kAl//V5F/nNWwqIYtP/402ddd05mp0wg= +github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= +github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= github.com/go-resty/resty/v2 v2.12.0 h1:rsVL8P90LFvkUYq/V5BTVe203WfRIU4gvcf+yfzJzGA= github.com/go-resty/resty/v2 v2.12.0/go.mod h1:o0yGPrkS3lOe1+eFajk6kBW8ScXzwU3hD69/gt2yB/0= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= @@ -82,20 +82,20 @@ github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/C github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hc-install v0.6.2 h1:V1k+Vraqz4olgZ9UzKiAcbman9i9scg9GgSt/U3mw/M= -github.com/hashicorp/hc-install v0.6.2/go.mod h1:2JBpd+NCFKiHiu/yYCGaPyPHhZLxXTpz8oreHa/a3Ps= +github.com/hashicorp/hc-install v0.6.4 h1:QLqlM56/+SIIGvGcfFiwMY3z5WGXT066suo/v9Km8e0= +github.com/hashicorp/hc-install v0.6.4/go.mod h1:05LWLy8TD842OtgcfBbOT0WMoInBMUSHjmDx10zuBIA= github.com/hashicorp/terraform-exec v0.20.0 h1:DIZnPsqzPGuUnq6cH8jWcPunBfY+C+M8JyYF3vpnuEo= github.com/hashicorp/terraform-exec v0.20.0/go.mod h1:ckKGkJWbsNqFKV1itgMnE0hY9IYf1HoiekpuN0eWoDw= github.com/hashicorp/terraform-json v0.21.0 h1:9NQxbLNqPbEMze+S6+YluEdXgJmhQykRyRNd+zTI05U= github.com/hashicorp/terraform-json v0.21.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= -github.com/hashicorp/terraform-plugin-docs v0.18.0 h1:2bINhzXc+yDeAcafurshCrIjtdu1XHn9zZ3ISuEhgpk= -github.com/hashicorp/terraform-plugin-docs v0.18.0/go.mod h1:iIUfaJpdUmpi+rI42Kgq+63jAjI8aZVTyxp3Bvk9Hg8= +github.com/hashicorp/terraform-plugin-docs v0.19.1 h1:XYIlGCfnUDVTyKPIHFKRDfB4INU+pyPKk6VZ/1apPIc= +github.com/hashicorp/terraform-plugin-docs v0.19.1/go.mod h1:NPfKCSfzTtq+YCFHr2qTAMknWUxR8C4KgTbGkHULSV8= github.com/hashicorp/terraform-plugin-framework v1.7.0 h1:wOULbVmfONnJo9iq7/q+iBOBJul5vRovaYJIu2cY/Pw= github.com/hashicorp/terraform-plugin-framework v1.7.0/go.mod h1:jY9Id+3KbZ17OMpulgnWLSfwxNVYSoYBQFTgsx044CI= github.com/hashicorp/terraform-plugin-framework-validators v0.12.0 h1:HOjBuMbOEzl7snOdOoUfE2Jgeto6JOjLVQ39Ls2nksc= github.com/hashicorp/terraform-plugin-framework-validators v0.12.0/go.mod h1:jfHGE/gzjxYz6XoUwi/aYiiKrJDeutQNUtGQXkaHklg= -github.com/hashicorp/terraform-plugin-go v0.22.1 h1:iTS7WHNVrn7uhe3cojtvWWn83cm2Z6ryIUDTRO0EV7w= -github.com/hashicorp/terraform-plugin-go v0.22.1/go.mod h1:qrjnqRghvQ6KnDbB12XeZ4FluclYwptntoWCr9QaXTI= +github.com/hashicorp/terraform-plugin-go v0.22.2 h1:5o8uveu6eZUf5J7xGPV0eY0TPXg3qpmwX9sce03Bxnc= +github.com/hashicorp/terraform-plugin-go v0.22.2/go.mod h1:drq8Snexp9HsbFZddvyLHN6LuWHHndSQg+gV+FPkcIM= github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI= @@ -132,8 +132,8 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/meraki/dashboard-api-go/v3 v3.0.0 h1:5P/R/DuAm3XPkryBUVuQ1zmNGSE2OWqvAAhfgXI6YBk= -github.com/meraki/dashboard-api-go/v3 v3.0.0/go.mod h1:ngZmCzPKto29KbttUw7ibrLc+5RHHBKihYFkWFrL1zE= +github.com/meraki/dashboard-api-go/v3 v3.0.1 h1:24CeiQAuQYDoGkwBG7J91es78eB5CtY/TuCn6iYFeJ4= +github.com/meraki/dashboard-api-go/v3 v3.0.1/go.mod h1:ngZmCzPKto29KbttUw7ibrLc+5RHHBKihYFkWFrL1zE= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= @@ -152,15 +152,13 @@ github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXq github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= -github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= -github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= -github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= -github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= +github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= @@ -178,17 +176,17 @@ github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/goldmark v1.6.0 h1:boZcn2GTjpsynOsC0iJHnBWa4Bi0qzfJjthwauItG68= -github.com/yuin/goldmark v1.6.0/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/goldmark v1.7.0 h1:EfOIvIMZIzHdB/R/zVrikYLPPwJlfMcNczJFMs1m6sA= +github.com/yuin/goldmark v1.7.0/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc= github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0= -github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA= -github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= +github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +go.abhg.dev/goldmark/frontmatter v0.2.0 h1:P8kPG0YkL12+aYk2yU3xHv4tcXzeVnN+gU0tJ5JnxRw= +go.abhg.dev/goldmark/frontmatter v0.2.0/go.mod h1:XqrEkZuM57djk7zrlRUB02x8I5J0px76YjkOzhB4YlU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= @@ -196,14 +194,13 @@ golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaU golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= +golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= @@ -223,7 +220,6 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -234,7 +230,6 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= @@ -243,7 +238,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= @@ -257,12 +251,10 @@ golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= -google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= -google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/internal/provider/data_source_meraki_networks_syslog_servers.go b/internal/provider/data_source_meraki_networks_syslog_servers.go index 29351e3d..e6a02c2f 100644 --- a/internal/provider/data_source_meraki_networks_syslog_servers.go +++ b/internal/provider/data_source_meraki_networks_syslog_servers.go @@ -4,6 +4,7 @@ package provider import ( "context" "log" + "strconv" merakigosdk "github.com/meraki/dashboard-api-go/v3/sdk" @@ -138,8 +139,9 @@ func ResponseNetworksGetNetworkSyslogServersItemToBody(state NetworksSyslogServe result[i] = ResponseNetworksGetNetworkSyslogServersServers{ Host: types.StringValue(servers.Host), Port: func() types.Int64 { - if servers.Port != nil { - return types.Int64Value(int64(*servers.Port)) + if servers.Port != "" { + serverPort, _ := strconv.Atoi(servers.Port) + return types.Int64Value(int64(serverPort)) } return types.Int64{} }(), diff --git a/internal/provider/resource_meraki_administered_licensing_subscription_subscriptions_bind.go b/internal/provider/resource_meraki_administered_licensing_subscription_subscriptions_bind.go index ee09fdd4..306c564b 100644 --- a/internal/provider/resource_meraki_administered_licensing_subscription_subscriptions_bind.go +++ b/internal/provider/resource_meraki_administered_licensing_subscription_subscriptions_bind.go @@ -80,7 +80,7 @@ func (r *AdministeredLicensingSubscriptionSubscriptionsBindResource) Schema(_ co Computed: true, Attributes: map[string]schema.Attribute{ - "errors": schema.ListAttribute{ + "errors": schema.SetAttribute{ MarkdownDescription: `Array of errors if failed`, Computed: true, ElementType: types.StringType, @@ -128,7 +128,7 @@ func (r *AdministeredLicensingSubscriptionSubscriptionsBindResource) Schema(_ co "parameters": schema.SingleNestedAttribute{ Required: true, Attributes: map[string]schema.Attribute{ - "network_ids": schema.ListAttribute{ + "network_ids": schema.SetAttribute{ MarkdownDescription: `List of network ids to bind to the subscription`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_administered_licensing_subscription_subscriptions_claim.go b/internal/provider/resource_meraki_administered_licensing_subscription_subscriptions_claim.go index ec8c6cc0..96a57b62 100644 --- a/internal/provider/resource_meraki_administered_licensing_subscription_subscriptions_claim.go +++ b/internal/provider/resource_meraki_administered_licensing_subscription_subscriptions_claim.go @@ -147,7 +147,7 @@ func (r *AdministeredLicensingSubscriptionSubscriptionsClaimResource) Schema(_ c MarkdownDescription: `Subscription name`, Computed: true, }, - "product_types": schema.ListAttribute{ + "product_types": schema.SetAttribute{ MarkdownDescription: `Products the subscription has entitlements for`, Computed: true, ElementType: types.StringType, diff --git a/internal/provider/resource_meraki_administered_licensing_subscription_subscriptions_claim_key_validate.go b/internal/provider/resource_meraki_administered_licensing_subscription_subscriptions_claim_key_validate.go index 298988d4..4a37c380 100644 --- a/internal/provider/resource_meraki_administered_licensing_subscription_subscriptions_claim_key_validate.go +++ b/internal/provider/resource_meraki_administered_licensing_subscription_subscriptions_claim_key_validate.go @@ -139,7 +139,7 @@ func (r *AdministeredLicensingSubscriptionSubscriptionsClaimKeyValidateResource) MarkdownDescription: `Subscription name`, Computed: true, }, - "product_types": schema.ListAttribute{ + "product_types": schema.SetAttribute{ MarkdownDescription: `Products the subscription has entitlements for`, Computed: true, ElementType: types.StringType, diff --git a/internal/provider/resource_meraki_devices_switch_ports_cycle.go b/internal/provider/resource_meraki_devices_switch_ports_cycle.go index 41c54d25..40989ffa 100644 --- a/internal/provider/resource_meraki_devices_switch_ports_cycle.go +++ b/internal/provider/resource_meraki_devices_switch_ports_cycle.go @@ -56,7 +56,7 @@ func (r *DevicesSwitchPortsCycleResource) Schema(_ context.Context, _ resource.S Computed: true, Attributes: map[string]schema.Attribute{ - "ports": schema.ListAttribute{ + "ports": schema.SetAttribute{ MarkdownDescription: `List of switch ports`, Computed: true, ElementType: types.StringType, @@ -66,7 +66,7 @@ func (r *DevicesSwitchPortsCycleResource) Schema(_ context.Context, _ resource.S "parameters": schema.SingleNestedAttribute{ Required: true, Attributes: map[string]schema.Attribute{ - "ports": schema.ListAttribute{ + "ports": schema.SetAttribute{ MarkdownDescription: `List of switch ports`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_devices_wireless_alternate_management_interface_ipv6.go b/internal/provider/resource_meraki_devices_wireless_alternate_management_interface_ipv6.go index d2f274a5..288dd55d 100644 --- a/internal/provider/resource_meraki_devices_wireless_alternate_management_interface_ipv6.go +++ b/internal/provider/resource_meraki_devices_wireless_alternate_management_interface_ipv6.go @@ -95,7 +95,7 @@ func (r *DevicesWirelessAlternateManagementInterfaceIPv6Resource) Schema(_ conte Computed: true, Attributes: map[string]schema.Attribute{ - "addresses": schema.ListAttribute{ + "addresses": schema.SetAttribute{ MarkdownDescription: `Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority.`, Computed: true, ElementType: types.StringType, @@ -155,7 +155,7 @@ func (r *DevicesWirelessAlternateManagementInterfaceIPv6Resource) Schema(_ conte Computed: true, Attributes: map[string]schema.Attribute{ - "addresses": schema.ListAttribute{ + "addresses": schema.SetAttribute{ MarkdownDescription: `Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority.`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_networks_alerts_settings.go b/internal/provider/resource_meraki_networks_alerts_settings.go index bebb7e41..767f3380 100644 --- a/internal/provider/resource_meraki_networks_alerts_settings.go +++ b/internal/provider/resource_meraki_networks_alerts_settings.go @@ -289,6 +289,36 @@ func (r *NetworksAlertsSettingsResource) Schema(_ context.Context, _ resource.Sc }, }, }, + "muting": schema.SingleNestedAttribute{ + MarkdownDescription: `muting`, + Computed: true, + Optional: true, + PlanModifiers: []planmodifier.Object{ + objectplanmodifier.UseStateForUnknown(), + }, + Attributes: map[string]schema.Attribute{ + + "by_port_schedules": schema.SingleNestedAttribute{ + MarkdownDescription: `by_port_schedules`, + Computed: true, + Optional: true, + PlanModifiers: []planmodifier.Object{ + objectplanmodifier.UseStateForUnknown(), + }, + Attributes: map[string]schema.Attribute{ + "enabled": schema.BoolAttribute{ + MarkdownDescription: `enabled`, + Computed: true, + Optional: true, + PlanModifiers: []planmodifier.Bool{ + boolplanmodifier.UseStateForUnknown(), + }, + Default: booldefault.StaticBool(false), + }, + }, + }, + }, + }, "network_id": schema.StringAttribute{ MarkdownDescription: `networkId path parameter. Network ID`, Required: true, @@ -722,7 +752,7 @@ func ResponseNetworksGetNetworkAlertsSettingsItemToBodyRs(state NetworksAlertsSe }(), } - // itemState.DefaultDestinations.SNMP = state.DefaultDestinations.SNMP + itemState.DefaultDestinations.SNMP = state.DefaultDestinations.SNMP itemState.Alerts = state.Alerts if is_read { diff --git a/internal/provider/resource_meraki_networks_bind.go b/internal/provider/resource_meraki_networks_bind.go index 0e53b99f..638f9fff 100644 --- a/internal/provider/resource_meraki_networks_bind.go +++ b/internal/provider/resource_meraki_networks_bind.go @@ -85,12 +85,12 @@ func (r *NetworksBindResource) Schema(_ context.Context, _ resource.SchemaReques MarkdownDescription: `Organization ID`, Computed: true, }, - "product_types": schema.ListAttribute{ + "product_types": schema.SetAttribute{ MarkdownDescription: `List of the product types that the network supports`, Computed: true, ElementType: types.StringType, }, - "tags": schema.ListAttribute{ + "tags": schema.SetAttribute{ MarkdownDescription: `Network tags`, Computed: true, ElementType: types.StringType, diff --git a/internal/provider/resource_meraki_networks_devices_claim.go b/internal/provider/resource_meraki_networks_devices_claim.go index e6f425b6..13fc0e10 100644 --- a/internal/provider/resource_meraki_networks_devices_claim.go +++ b/internal/provider/resource_meraki_networks_devices_claim.go @@ -56,7 +56,7 @@ func (r *NetworksDevicesClaimResource) Schema(_ context.Context, _ resource.Sche Computed: true, Attributes: map[string]schema.Attribute{ - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `The serials of the devices`, Computed: true, ElementType: types.StringType, @@ -66,7 +66,7 @@ func (r *NetworksDevicesClaimResource) Schema(_ context.Context, _ resource.Sche "parameters": schema.SingleNestedAttribute{ Required: true, Attributes: map[string]schema.Attribute{ - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `A list of serials of devices to claim`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_networks_devices_claim_vmx.go b/internal/provider/resource_meraki_networks_devices_claim_vmx.go index 127faa5f..6f0694a4 100644 --- a/internal/provider/resource_meraki_networks_devices_claim_vmx.go +++ b/internal/provider/resource_meraki_networks_devices_claim_vmx.go @@ -125,7 +125,7 @@ func (r *NetworksDevicesClaimVmxResource) Schema(_ context.Context, _ resource.S MarkdownDescription: `Serial number of the device`, Computed: true, }, - "tags": schema.ListAttribute{ + "tags": schema.SetAttribute{ MarkdownDescription: `List of tags assigned to the device`, Computed: true, ElementType: types.StringType, diff --git a/internal/provider/resource_meraki_networks_group_policies.go b/internal/provider/resource_meraki_networks_group_policies.go index 5edb393e..5da5401f 100644 --- a/internal/provider/resource_meraki_networks_group_policies.go +++ b/internal/provider/resource_meraki_networks_group_policies.go @@ -4,6 +4,7 @@ package provider import ( "context" "fmt" + "log" "strings" merakigosdk "github.com/meraki/dashboard-api-go/v3/sdk" @@ -925,9 +926,9 @@ func (r *NetworksGroupPoliciesResource) Create(ctx context.Context, req resource vvName := data.Name.ValueString() //Items responseVerifyItem, restyResp1, err := r.client.Networks.GetNetworkGroupPolicies(vvNetworkID) - //Have Create + // Have Create if err != nil || restyResp1 == nil { - if restyResp1.StatusCode() != 404 { + if restyResp1.StatusCode() != 404 && restyResp1.StatusCode() != 400 { resp.Diagnostics.AddError( "Failure when executing GetNetworkGroupPolicies", err.Error(), @@ -937,6 +938,7 @@ func (r *NetworksGroupPoliciesResource) Create(ctx context.Context, req resource } if responseVerifyItem != nil { responseStruct := structToMap(responseVerifyItem) + log.Printf("[DEBUG] resp: %v", responseStruct) result := getDictResult(responseStruct, "Name", vvName, simpleCmp) if result != nil { result2 := result.(map[string]interface{}) @@ -962,7 +964,7 @@ func (r *NetworksGroupPoliciesResource) Create(ctx context.Context, req resource response, restyResp2, err := r.client.Networks.CreateNetworkGroupPolicy(vvNetworkID, dataRequest) if err != nil || restyResp2 == nil || response == nil { - if restyResp1 != nil { + if restyResp2 != nil { resp.Diagnostics.AddError( "Failure when executing CreateNetworkGroupPolicy", err.Error(), diff --git a/internal/provider/resource_meraki_networks_sm_devices_install_apps.go b/internal/provider/resource_meraki_networks_sm_devices_install_apps.go index 68b6ad39..41ea446b 100644 --- a/internal/provider/resource_meraki_networks_sm_devices_install_apps.go +++ b/internal/provider/resource_meraki_networks_sm_devices_install_apps.go @@ -79,7 +79,7 @@ func (r *NetworksSmDevicesInstallAppsResource) Schema(_ context.Context, _ resou "parameters": schema.SingleNestedAttribute{ Required: true, Attributes: map[string]schema.Attribute{ - "app_ids": schema.ListAttribute{ + "app_ids": schema.SetAttribute{ MarkdownDescription: `ids of applications to be installed`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_networks_sm_devices_move.go b/internal/provider/resource_meraki_networks_sm_devices_move.go index 961e7f32..df3cd430 100644 --- a/internal/provider/resource_meraki_networks_sm_devices_move.go +++ b/internal/provider/resource_meraki_networks_sm_devices_move.go @@ -56,7 +56,7 @@ func (r *NetworksSmDevicesMoveResource) Schema(_ context.Context, _ resource.Sch Computed: true, Attributes: map[string]schema.Attribute{ - "ids": schema.ListAttribute{ + "ids": schema.SetAttribute{ MarkdownDescription: `The Meraki Ids of the set of devices.`, Computed: true, ElementType: types.StringType, @@ -70,7 +70,7 @@ func (r *NetworksSmDevicesMoveResource) Schema(_ context.Context, _ resource.Sch "parameters": schema.SingleNestedAttribute{ Required: true, Attributes: map[string]schema.Attribute{ - "ids": schema.ListAttribute{ + "ids": schema.SetAttribute{ MarkdownDescription: `The ids of the devices to be moved.`, Optional: true, Computed: true, @@ -84,19 +84,19 @@ func (r *NetworksSmDevicesMoveResource) Schema(_ context.Context, _ resource.Sch stringplanmodifier.RequiresReplace(), }, }, - "scope": schema.ListAttribute{ + "scope": schema.SetAttribute{ MarkdownDescription: `The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the devices to be moved.`, Optional: true, Computed: true, ElementType: types.StringType, }, - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `The serials of the devices to be moved.`, Optional: true, Computed: true, ElementType: types.StringType, }, - "wifi_macs": schema.ListAttribute{ + "wifi_macs": schema.SetAttribute{ MarkdownDescription: `The wifiMacs of the devices to be moved.`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_networks_sm_devices_reboot.go b/internal/provider/resource_meraki_networks_sm_devices_reboot.go index 9295cd9a..9ea5b43f 100644 --- a/internal/provider/resource_meraki_networks_sm_devices_reboot.go +++ b/internal/provider/resource_meraki_networks_sm_devices_reboot.go @@ -73,7 +73,7 @@ func (r *NetworksSmDevicesRebootResource) Schema(_ context.Context, _ resource.S Computed: true, Attributes: map[string]schema.Attribute{ - "ids": schema.ListAttribute{ + "ids": schema.SetAttribute{ MarkdownDescription: `The Meraki Ids of the set of endpoints.`, Computed: true, ElementType: types.StringType, @@ -83,13 +83,13 @@ func (r *NetworksSmDevicesRebootResource) Schema(_ context.Context, _ resource.S "parameters": schema.SingleNestedAttribute{ Required: true, Attributes: map[string]schema.Attribute{ - "ids": schema.ListAttribute{ + "ids": schema.SetAttribute{ MarkdownDescription: `The ids of the endpoints to be rebooted.`, Optional: true, Computed: true, ElementType: types.StringType, }, - "kext_paths": schema.ListAttribute{ + "kext_paths": schema.SetAttribute{ MarkdownDescription: `The KextPaths of the endpoints to be rebooted. Available for macOS 11+`, Optional: true, Computed: true, @@ -119,19 +119,19 @@ func (r *NetworksSmDevicesRebootResource) Schema(_ context.Context, _ resource.S boolplanmodifier.RequiresReplace(), }, }, - "scope": schema.ListAttribute{ + "scope": schema.SetAttribute{ MarkdownDescription: `The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the endpoints to be rebooted.`, Optional: true, Computed: true, ElementType: types.StringType, }, - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `The serials of the endpoints to be rebooted.`, Optional: true, Computed: true, ElementType: types.StringType, }, - "wifi_macs": schema.ListAttribute{ + "wifi_macs": schema.SetAttribute{ MarkdownDescription: `The wifiMacs of the endpoints to be rebooted.`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_networks_sm_devices_shutdown.go b/internal/provider/resource_meraki_networks_sm_devices_shutdown.go index e5a0131e..d6356de8 100644 --- a/internal/provider/resource_meraki_networks_sm_devices_shutdown.go +++ b/internal/provider/resource_meraki_networks_sm_devices_shutdown.go @@ -72,7 +72,7 @@ func (r *NetworksSmDevicesShutdownResource) Schema(_ context.Context, _ resource Computed: true, Attributes: map[string]schema.Attribute{ - "ids": schema.ListAttribute{ + "ids": schema.SetAttribute{ MarkdownDescription: `The Meraki Ids of the set of endpoints.`, Computed: true, ElementType: types.StringType, @@ -82,25 +82,25 @@ func (r *NetworksSmDevicesShutdownResource) Schema(_ context.Context, _ resource "parameters": schema.SingleNestedAttribute{ Required: true, Attributes: map[string]schema.Attribute{ - "ids": schema.ListAttribute{ + "ids": schema.SetAttribute{ MarkdownDescription: `The ids of the endpoints to be shutdown.`, Optional: true, Computed: true, ElementType: types.StringType, }, - "scope": schema.ListAttribute{ + "scope": schema.SetAttribute{ MarkdownDescription: `The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the endpoints to be shutdown.`, Optional: true, Computed: true, ElementType: types.StringType, }, - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `The serials of the endpoints to be shutdown.`, Optional: true, Computed: true, ElementType: types.StringType, }, - "wifi_macs": schema.ListAttribute{ + "wifi_macs": schema.SetAttribute{ MarkdownDescription: `The wifiMacs of the endpoints to be shutdown.`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_networks_sm_devices_uninstall_apps.go b/internal/provider/resource_meraki_networks_sm_devices_uninstall_apps.go index 93515cd4..1e0fb0cd 100644 --- a/internal/provider/resource_meraki_networks_sm_devices_uninstall_apps.go +++ b/internal/provider/resource_meraki_networks_sm_devices_uninstall_apps.go @@ -78,7 +78,7 @@ func (r *NetworksSmDevicesUninstallAppsResource) Schema(_ context.Context, _ res "parameters": schema.SingleNestedAttribute{ Required: true, Attributes: map[string]schema.Attribute{ - "app_ids": schema.ListAttribute{ + "app_ids": schema.SetAttribute{ MarkdownDescription: `ids of applications to be uninstalled`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_networks_split.go b/internal/provider/resource_meraki_networks_split.go index f135e212..730e61f4 100644 --- a/internal/provider/resource_meraki_networks_split.go +++ b/internal/provider/resource_meraki_networks_split.go @@ -86,12 +86,12 @@ func (r *NetworksSplitResource) Schema(_ context.Context, _ resource.SchemaReque MarkdownDescription: `Organization ID`, Computed: true, }, - "product_types": schema.ListAttribute{ + "product_types": schema.SetAttribute{ MarkdownDescription: `List of the product types that the network supports`, Computed: true, ElementType: types.StringType, }, - "tags": schema.ListAttribute{ + "tags": schema.SetAttribute{ MarkdownDescription: `Network tags`, Computed: true, ElementType: types.StringType, diff --git a/internal/provider/resource_meraki_networks_switch_stacks_add.go b/internal/provider/resource_meraki_networks_switch_stacks_add.go index 1ee77f4b..58310e66 100644 --- a/internal/provider/resource_meraki_networks_switch_stacks_add.go +++ b/internal/provider/resource_meraki_networks_switch_stacks_add.go @@ -71,7 +71,7 @@ func (r *NetworksSwitchStacksAddResource) Schema(_ context.Context, _ resource.S MarkdownDescription: `Name of the Switch stack`, Computed: true, }, - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `Serials of the switches in the switch stack`, Computed: true, ElementType: types.StringType, diff --git a/internal/provider/resource_meraki_networks_switch_stacks_remove.go b/internal/provider/resource_meraki_networks_switch_stacks_remove.go index 7be2b1c3..38c775f9 100644 --- a/internal/provider/resource_meraki_networks_switch_stacks_remove.go +++ b/internal/provider/resource_meraki_networks_switch_stacks_remove.go @@ -71,7 +71,7 @@ func (r *NetworksSwitchStacksRemoveResource) Schema(_ context.Context, _ resourc MarkdownDescription: `Name of the Switch stack`, Computed: true, }, - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `Serials of the switches in the switch stack`, Computed: true, ElementType: types.StringType, diff --git a/internal/provider/resource_meraki_networks_syslog_servers.go b/internal/provider/resource_meraki_networks_syslog_servers.go index a5f57469..3e7c96e1 100644 --- a/internal/provider/resource_meraki_networks_syslog_servers.go +++ b/internal/provider/resource_meraki_networks_syslog_servers.go @@ -3,6 +3,7 @@ package provider // RESOURCE NORMAL import ( "context" + "strconv" merakigosdk "github.com/meraki/dashboard-api-go/v3/sdk" @@ -320,8 +321,9 @@ func ResponseNetworksGetNetworkSyslogServersItemToBodyRs(state NetworksSyslogSer result[i] = ResponseNetworksGetNetworkSyslogServersServersRs{ Host: types.StringValue(servers.Host), Port: func() types.Int64 { - if servers.Port != nil { - return types.Int64Value(int64(*servers.Port)) + if servers.Port != "" { + serverPort, _ := strconv.Atoi(servers.Port) + return types.Int64Value(int64(serverPort)) } return types.Int64{} }(), diff --git a/internal/provider/resource_meraki_networks_vlan_profiles_assignments_reassign.go b/internal/provider/resource_meraki_networks_vlan_profiles_assignments_reassign.go index 5d0f7526..30161c1f 100644 --- a/internal/provider/resource_meraki_networks_vlan_profiles_assignments_reassign.go +++ b/internal/provider/resource_meraki_networks_vlan_profiles_assignments_reassign.go @@ -72,12 +72,12 @@ func (r *NetworksVLANProfilesAssignmentsReassignResource) Schema(_ context.Conte Computed: true, Attributes: map[string]schema.Attribute{ - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `Array of Device Serials`, Computed: true, ElementType: types.StringType, }, - "stack_ids": schema.ListAttribute{ + "stack_ids": schema.SetAttribute{ MarkdownDescription: `Array of Switch Stack IDs`, Computed: true, ElementType: types.StringType, @@ -102,13 +102,13 @@ func (r *NetworksVLANProfilesAssignmentsReassignResource) Schema(_ context.Conte "parameters": schema.SingleNestedAttribute{ Required: true, Attributes: map[string]schema.Attribute{ - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `Array of Device Serials`, Optional: true, Computed: true, ElementType: types.StringType, }, - "stack_ids": schema.ListAttribute{ + "stack_ids": schema.SetAttribute{ MarkdownDescription: `Array of Switch Stack IDs`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_networks_wireless_ethernet_ports_profiles_assign.go b/internal/provider/resource_meraki_networks_wireless_ethernet_ports_profiles_assign.go index 6ab42122..cd99cf8b 100644 --- a/internal/provider/resource_meraki_networks_wireless_ethernet_ports_profiles_assign.go +++ b/internal/provider/resource_meraki_networks_wireless_ethernet_ports_profiles_assign.go @@ -76,7 +76,7 @@ func (r *NetworksWirelessEthernetPortsProfilesAssignResource) Schema(_ context.C MarkdownDescription: `AP profile ID`, Computed: true, }, - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `List of updated AP serials`, Computed: true, ElementType: types.StringType, @@ -94,7 +94,7 @@ func (r *NetworksWirelessEthernetPortsProfilesAssignResource) Schema(_ context.C stringplanmodifier.RequiresReplace(), }, }, - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `List of AP serials`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_networks_wireless_ssids.go b/internal/provider/resource_meraki_networks_wireless_ssids.go index 2e1cb5e2..308ddae5 100644 --- a/internal/provider/resource_meraki_networks_wireless_ssids.go +++ b/internal/provider/resource_meraki_networks_wireless_ssids.go @@ -56,7 +56,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch Attributes: map[string]schema.Attribute{ "active_directory": schema.SingleNestedAttribute{ MarkdownDescription: `The current setting for Active Directory. Only valid if splashPage is 'Password-protected with Active Directory'`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Object{ objectplanmodifier.UseStateForUnknown(), @@ -130,7 +129,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "adult_content_filtering_enabled": schema.BoolAttribute{ MarkdownDescription: `Boolean indicating whether or not adult content will be blocked`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -138,7 +136,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "ap_tags_and_vlan_ids": schema.SetNestedAttribute{ MarkdownDescription: `The list of tags and VLAN IDs used for VLAN tagging. This param is only valid when the ipAssignmentMode is 'Bridge mode' or 'Layer 3 roaming'`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Set{ setplanmodifier.UseStateForUnknown(), @@ -194,7 +191,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "availability_tags": schema.SetAttribute{ MarkdownDescription: `List of tags for this SSID. If availableOnAllAps is false, then the SSID is only broadcast by APs with tags matching any of the tags in this list`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Set{ setplanmodifier.UseStateForUnknown(), @@ -227,7 +223,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "concentrator_network_id": schema.StringAttribute{ MarkdownDescription: `The concentrator to use when the ipAssignmentMode is 'Layer 3 roaming with a concentrator' or 'VPN'.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.String{ stringplanmodifier.UseStateForUnknown(), @@ -243,7 +238,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "disassociate_clients_on_vpn_failover": schema.BoolAttribute{ MarkdownDescription: `Disassociate clients when 'VPN' concentrator failover occurs in order to trigger clients to re-associate and generate new DHCP requests. This param is only valid if ipAssignmentMode is 'VPN'.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -251,7 +245,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "dns_rewrite": schema.SingleNestedAttribute{ MarkdownDescription: `DNS servers rewrite settings`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Object{ objectplanmodifier.UseStateForUnknown(), @@ -280,7 +273,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "dot11r": schema.SingleNestedAttribute{ MarkdownDescription: `The current setting for 802.11r`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Object{ objectplanmodifier.UseStateForUnknown(), @@ -307,7 +299,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "dot11w": schema.SingleNestedAttribute{ MarkdownDescription: `The current setting for Protected Management Frames (802.11w).`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Object{ objectplanmodifier.UseStateForUnknown(), @@ -356,7 +347,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "enterprise_admin_access": schema.StringAttribute{ MarkdownDescription: `Whether or not an SSID is accessible by 'enterprise' administrators ('access disabled' or 'access enabled')`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.String{ stringplanmodifier.UseStateForUnknown(), @@ -370,7 +360,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "gre": schema.SingleNestedAttribute{ MarkdownDescription: `Ethernet over GRE settings`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Object{ objectplanmodifier.UseStateForUnknown(), @@ -426,7 +415,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "lan_isolation_enabled": schema.BoolAttribute{ MarkdownDescription: `Boolean indicating whether Layer 2 LAN isolation should be enabled or disabled. Only configurable when ipAssignmentMode is 'Bridge mode'.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -434,7 +422,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "ldap": schema.SingleNestedAttribute{ MarkdownDescription: `The current setting for LDAP. Only valid if splashPage is 'Password-protected with LDAP'.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Object{ objectplanmodifier.UseStateForUnknown(), @@ -533,7 +520,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "local_radius": schema.SingleNestedAttribute{ MarkdownDescription: `The current setting for Local Authentication, a built-in RADIUS server on the access point. Only valid if authMode is '8021x-localradius'.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Object{ objectplanmodifier.UseStateForUnknown(), @@ -658,7 +644,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "named_vlans": schema.SingleNestedAttribute{ MarkdownDescription: `Named VLAN settings.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Object{ objectplanmodifier.UseStateForUnknown(), @@ -774,7 +759,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "oauth": schema.SingleNestedAttribute{ MarkdownDescription: `The OAuth settings of this SSID. Only valid if splashPage is 'Google OAuth'.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Object{ objectplanmodifier.UseStateForUnknown(), @@ -834,7 +818,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_accounting_enabled": schema.BoolAttribute{ MarkdownDescription: `Whether or not RADIUS accounting is enabled`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -842,7 +825,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_accounting_interim_interval": schema.Int64Attribute{ MarkdownDescription: `The interval (in seconds) in which accounting information is updated and sent to the RADIUS accounting server.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Int64{ int64planmodifier.UseStateForUnknown(), @@ -923,7 +905,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_authentication_nas_id": schema.StringAttribute{ MarkdownDescription: `The template of the NAS identifier to be used for RADIUS authentication (ex. $NODE_MAC$:$VAP_NUM$).`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.String{ stringplanmodifier.UseStateForUnknown(), @@ -931,7 +912,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_called_station_id": schema.StringAttribute{ MarkdownDescription: `The template of the called station identifier to be used for RADIUS (ex. $NODE_MAC$:$VAP_NUM$).`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.String{ stringplanmodifier.UseStateForUnknown(), @@ -939,7 +919,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_coa_enabled": schema.BoolAttribute{ MarkdownDescription: `If true, Meraki devices will act as a RADIUS Dynamic Authorization Server and will respond to RADIUS Change-of-Authorization and Disconnect messages sent by the RADIUS server.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -965,7 +944,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_fallback_enabled": schema.BoolAttribute{ MarkdownDescription: `Whether or not higher priority RADIUS servers should be retried after 60 seconds.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -973,7 +951,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_guest_vlan_enabled": schema.BoolAttribute{ MarkdownDescription: `Whether or not RADIUS Guest VLAN is enabled. This param is only valid if the authMode is 'open-with-radius' and addressing mode is not set to 'isolated' or 'nat' mode`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -981,7 +958,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_guest_vlan_id": schema.Int64Attribute{ MarkdownDescription: `VLAN ID of the RADIUS Guest VLAN. This param is only valid if the authMode is 'open-with-radius' and addressing mode is not set to 'isolated' or 'nat' mode`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Int64{ int64planmodifier.UseStateForUnknown(), @@ -1003,7 +979,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_override": schema.BoolAttribute{ MarkdownDescription: `If true, the RADIUS response can override VLAN tag. This is not valid when ipAssignmentMode is 'NAT mode'.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -1011,7 +986,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_proxy_enabled": schema.BoolAttribute{ MarkdownDescription: `If true, Meraki devices will proxy RADIUS messages through the Meraki cloud to the configured RADIUS auth and accounting servers.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -1019,7 +993,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_server_attempts_limit": schema.Int64Attribute{ MarkdownDescription: `The maximum number of transmit attempts after which a RADIUS server is failed over (must be between 1-5).`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Int64{ int64planmodifier.UseStateForUnknown(), @@ -1027,7 +1000,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_server_timeout": schema.Int64Attribute{ MarkdownDescription: `The amount of time for which a RADIUS client waits for a reply from the RADIUS server (must be between 1-10 seconds).`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Int64{ int64planmodifier.UseStateForUnknown(), @@ -1143,7 +1115,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "radius_testing_enabled": schema.BoolAttribute{ MarkdownDescription: `If true, Meraki devices will periodically send Access-Request messages to configured RADIUS servers using identity 'meraki_8021x_test' to ensure that the RADIUS servers are reachable.`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -1151,7 +1122,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "secondary_concentrator_network_id": schema.StringAttribute{ MarkdownDescription: `The secondary concentrator to use when the ipAssignmentMode is 'VPN'. If configured, the APs will switch to using this concentrator if the primary concentrator is unreachable. This param is optional. ('disabled' represents no secondary concentrator.)`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.String{ stringplanmodifier.UseStateForUnknown(), @@ -1159,7 +1129,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "speed_burst": schema.SingleNestedAttribute{ MarkdownDescription: `The SpeedBurst setting for this SSID'`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Object{ objectplanmodifier.UseStateForUnknown(), @@ -1221,7 +1190,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "use_vlan_tagging": schema.BoolAttribute{ MarkdownDescription: `Whether or not traffic should be directed to use specific VLANs. This param is only valid if the ipAssignmentMode is 'Bridge mode' or 'Layer 3 roaming'`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -1237,7 +1205,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "vlan_id": schema.Int64Attribute{ MarkdownDescription: `The VLAN ID used for VLAN tagging. This param is only valid when the ipAssignmentMode is 'Layer 3 roaming with a concentrator' or 'VPN'`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Int64{ int64planmodifier.UseStateForUnknown(), @@ -1245,7 +1212,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "walled_garden_enabled": schema.BoolAttribute{ MarkdownDescription: `Allow users to access a configurable list of IP ranges prior to sign-on`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -1253,7 +1219,6 @@ func (r *NetworksWirelessSSIDsResource) Schema(_ context.Context, _ resource.Sch }, "walled_garden_ranges": schema.SetAttribute{ MarkdownDescription: `Domain names and IP address ranges available in Walled Garden mode`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Set{ setplanmodifier.UseStateForUnknown(), @@ -2582,6 +2547,8 @@ func ResponseWirelessGetNetworkWirelessSSIDItemToBodyRs(state NetworksWirelessSS itemState.DefaultVLANID = state.DefaultVLANID itemState.Psk = state.Psk itemState.RadiusServers = state.RadiusServers + itemState.AdultContentFilteringEnabled = state.AdultContentFilteringEnabled + itemState.LanIsolationEnabled = state.LanIsolationEnabled if is_read { return mergeInterfacesOnlyPath(state, itemState).(NetworksWirelessSSIDsRs) } diff --git a/internal/provider/resource_meraki_networks_wireless_ssids_firewall_l3_firewall_rules.go b/internal/provider/resource_meraki_networks_wireless_ssids_firewall_l3_firewall_rules.go index 22511156..fbdd0190 100644 --- a/internal/provider/resource_meraki_networks_wireless_ssids_firewall_l3_firewall_rules.go +++ b/internal/provider/resource_meraki_networks_wireless_ssids_firewall_l3_firewall_rules.go @@ -52,7 +52,6 @@ func (r *NetworksWirelessSSIDsFirewallL3FirewallRulesResource) Schema(_ context. Attributes: map[string]schema.Attribute{ "allow_lan_access": schema.BoolAttribute{ MarkdownDescription: `Allow wireless client access to local LAN (boolean value - true allows access and false denies access) (optional)`, - Computed: true, Optional: true, PlanModifiers: []planmodifier.Bool{ boolplanmodifier.UseStateForUnknown(), @@ -134,6 +133,74 @@ func (r *NetworksWirelessSSIDsFirewallL3FirewallRulesResource) Schema(_ context. }, }, }, + "rules_response": schema.SetNestedAttribute{ + MarkdownDescription: `An ordered array of the firewall rules for this SSID (not including the local LAN access rule or the default rule).`, + Computed: true, + Optional: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + + "comment": schema.StringAttribute{ + MarkdownDescription: `Description of the rule (optional)`, + Computed: true, + Optional: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "dest_cidr": schema.StringAttribute{ + MarkdownDescription: `Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'`, + Computed: true, + Optional: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "dest_port": schema.StringAttribute{ + MarkdownDescription: `Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'`, + Computed: true, + Optional: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "policy": schema.StringAttribute{ + MarkdownDescription: `'allow' or 'deny' traffic specified by this rule`, + Computed: true, + Optional: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf( + "allow", + "deny", + ), + }, + }, + "protocol": schema.StringAttribute{ + MarkdownDescription: `The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')`, + Computed: true, + Optional: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf( + "any", + "icmp", + "icmp6", + "tcp", + "udp", + ), + }, + }, + }, + }, + }, }, } } @@ -329,6 +396,7 @@ type NetworksWirelessSSIDsFirewallL3FirewallRulesRs struct { NetworkID types.String `tfsdk:"network_id"` Number types.String `tfsdk:"number"` Rules *[]ResponseWirelessGetNetworkWirelessSsidFirewallL3FirewallRulesRulesRs `tfsdk:"rules"` + RulesResponse *[]ResponseWirelessGetNetworkWirelessSsidFirewallL3FirewallRulesRulesRs `tfsdk:"rules_response"` AllowLanAccess types.Bool `tfsdk:"allow_lan_access"` } @@ -380,7 +448,7 @@ func (r *NetworksWirelessSSIDsFirewallL3FirewallRulesRs) toSdkApiRequestUpdate(c // From gosdk to TF Structs Schema func ResponseWirelessGetNetworkWirelessSSIDFirewallL3FirewallRulesItemToBodyRs(state NetworksWirelessSSIDsFirewallL3FirewallRulesRs, response *merakigosdk.ResponseWirelessGetNetworkWirelessSSIDFirewallL3FirewallRules, is_read bool) NetworksWirelessSSIDsFirewallL3FirewallRulesRs { itemState := NetworksWirelessSSIDsFirewallL3FirewallRulesRs{ - Rules: func() *[]ResponseWirelessGetNetworkWirelessSsidFirewallL3FirewallRulesRulesRs { + RulesResponse: func() *[]ResponseWirelessGetNetworkWirelessSsidFirewallL3FirewallRulesRulesRs { if response.Rules != nil { result := make([]ResponseWirelessGetNetworkWirelessSsidFirewallL3FirewallRulesRulesRs, len(*response.Rules)) for i, rules := range *response.Rules { @@ -397,6 +465,9 @@ func ResponseWirelessGetNetworkWirelessSSIDFirewallL3FirewallRulesItemToBodyRs(s return &[]ResponseWirelessGetNetworkWirelessSsidFirewallL3FirewallRulesRulesRs{} }(), } + + itemState.Rules = state.Rules + itemState.AllowLanAccess = state.AllowLanAccess if is_read { return mergeInterfacesOnlyPath(state, itemState).(NetworksWirelessSSIDsFirewallL3FirewallRulesRs) } diff --git a/internal/provider/resource_meraki_organizations_claim.go b/internal/provider/resource_meraki_organizations_claim.go index f2618265..d0f7091d 100644 --- a/internal/provider/resource_meraki_organizations_claim.go +++ b/internal/provider/resource_meraki_organizations_claim.go @@ -73,12 +73,12 @@ func (r *OrganizationsClaimResource) Schema(_ context.Context, _ resource.Schema }, }, }, - "orders": schema.ListAttribute{ + "orders": schema.SetAttribute{ MarkdownDescription: `The numbers of the orders claimed`, Computed: true, ElementType: types.StringType, }, - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `The serials of the devices claimed`, Computed: true, ElementType: types.StringType, @@ -114,13 +114,13 @@ func (r *OrganizationsClaimResource) Schema(_ context.Context, _ resource.Schema }, }, }, - "orders": schema.ListAttribute{ + "orders": schema.SetAttribute{ MarkdownDescription: `The numbers of the orders that should be claimed`, Optional: true, Computed: true, ElementType: types.StringType, }, - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `The serials of the devices that should be claimed`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_organizations_inventory_claim.go b/internal/provider/resource_meraki_organizations_inventory_claim.go index 13a19103..5aa2bda4 100644 --- a/internal/provider/resource_meraki_organizations_inventory_claim.go +++ b/internal/provider/resource_meraki_organizations_inventory_claim.go @@ -73,12 +73,12 @@ func (r *OrganizationsInventoryClaimResource) Schema(_ context.Context, _ resour }, }, }, - "orders": schema.ListAttribute{ + "orders": schema.SetAttribute{ MarkdownDescription: `The numbers of the orders claimed`, Computed: true, ElementType: types.StringType, }, - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `The serials of the devices claimed`, Computed: true, ElementType: types.StringType, @@ -114,13 +114,13 @@ func (r *OrganizationsInventoryClaimResource) Schema(_ context.Context, _ resour }, }, }, - "orders": schema.ListAttribute{ + "orders": schema.SetAttribute{ MarkdownDescription: `The numbers of the orders that should be claimed`, Optional: true, Computed: true, ElementType: types.StringType, }, - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `The serials of the devices that should be claimed`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_organizations_inventory_release.go b/internal/provider/resource_meraki_organizations_inventory_release.go index 2a9865f6..82aae4cc 100644 --- a/internal/provider/resource_meraki_organizations_inventory_release.go +++ b/internal/provider/resource_meraki_organizations_inventory_release.go @@ -56,7 +56,7 @@ func (r *OrganizationsInventoryReleaseResource) Schema(_ context.Context, _ reso Computed: true, Attributes: map[string]schema.Attribute{ - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `Serials of the devices that were released`, Computed: true, ElementType: types.StringType, @@ -66,7 +66,7 @@ func (r *OrganizationsInventoryReleaseResource) Schema(_ context.Context, _ reso "parameters": schema.SingleNestedAttribute{ Required: true, Attributes: map[string]schema.Attribute{ - "serials": schema.ListAttribute{ + "serials": schema.SetAttribute{ MarkdownDescription: `Serials of the devices that should be released`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_organizations_licenses_move.go b/internal/provider/resource_meraki_organizations_licenses_move.go index d467ae90..6b2277fa 100644 --- a/internal/provider/resource_meraki_organizations_licenses_move.go +++ b/internal/provider/resource_meraki_organizations_licenses_move.go @@ -60,7 +60,7 @@ func (r *OrganizationsLicensesMoveResource) Schema(_ context.Context, _ resource MarkdownDescription: `The ID of the organization to move the licenses to`, Computed: true, }, - "license_ids": schema.ListAttribute{ + "license_ids": schema.SetAttribute{ MarkdownDescription: `A list of IDs of licenses to move to the new organization`, Computed: true, ElementType: types.StringType, @@ -78,7 +78,7 @@ func (r *OrganizationsLicensesMoveResource) Schema(_ context.Context, _ resource stringplanmodifier.RequiresReplace(), }, }, - "license_ids": schema.ListAttribute{ + "license_ids": schema.SetAttribute{ MarkdownDescription: `A list of IDs of licenses to move to the new organization`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_organizations_networks_combine.go b/internal/provider/resource_meraki_organizations_networks_combine.go index 0f927640..3f62410b 100644 --- a/internal/provider/resource_meraki_organizations_networks_combine.go +++ b/internal/provider/resource_meraki_organizations_networks_combine.go @@ -126,7 +126,7 @@ func (r *OrganizationsNetworksCombineResource) Schema(_ context.Context, _ resou stringplanmodifier.RequiresReplace(), }, }, - "network_ids": schema.ListAttribute{ + "network_ids": schema.SetAttribute{ MarkdownDescription: `A list of the network IDs that will be combined. If an ID of a combined network is included in this list, the other networks in the list will be grouped into that network`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_organizations_sm_sentry_policies_assignments.go b/internal/provider/resource_meraki_organizations_sm_sentry_policies_assignments.go index 5561b217..4984eaa6 100644 --- a/internal/provider/resource_meraki_organizations_sm_sentry_policies_assignments.go +++ b/internal/provider/resource_meraki_organizations_sm_sentry_policies_assignments.go @@ -124,7 +124,7 @@ func (r *OrganizationsSmSentryPoliciesAssignmentsResource) Schema(_ context.Cont MarkdownDescription: `The Id of the Systems Manager Network the Sentry Policy is assigned to`, Computed: true, }, - "tags": schema.ListAttribute{ + "tags": schema.SetAttribute{ MarkdownDescription: `The tags of the Sentry Policy`, Computed: true, ElementType: types.StringType, @@ -194,7 +194,7 @@ func (r *OrganizationsSmSentryPoliciesAssignmentsResource) Schema(_ context.Cont stringplanmodifier.RequiresReplace(), }, }, - "tags": schema.ListAttribute{ + "tags": schema.SetAttribute{ MarkdownDescription: `The tags for the Sentry Policy`, Optional: true, Computed: true, diff --git a/internal/provider/resource_meraki_organizations_switch_devices_clone.go b/internal/provider/resource_meraki_organizations_switch_devices_clone.go index 3ce6f1b9..80463230 100644 --- a/internal/provider/resource_meraki_organizations_switch_devices_clone.go +++ b/internal/provider/resource_meraki_organizations_switch_devices_clone.go @@ -63,7 +63,7 @@ func (r *OrganizationsSwitchDevicesCloneResource) Schema(_ context.Context, _ re stringplanmodifier.RequiresReplace(), }, }, - "target_serials": schema.ListAttribute{ + "target_serials": schema.SetAttribute{ MarkdownDescription: `Array of serial numbers of one or more target switches (must be on a network not bound to a template)`, Optional: true, Computed: true,