From f20a4548d606cb08cb5e0a94628f0b3adeac3709 Mon Sep 17 00:00:00 2001 From: Siddharth Kulshrestha Date: Mon, 14 Feb 2022 12:20:31 +0530 Subject: [PATCH] V2 SDK Upgrade --- .golangci.yml | 4 + client/client.go | 2 +- go.mod | 15 +- go.sum | 366 +++++++++ main.go | 2 +- nutanix/categories.go | 8 +- ..._source_nutanix_access_control_policies.go | 89 +-- ...ce_nutanix_access_control_policies_test.go | 2 +- ...ta_source_nutanix_access_control_policy.go | 108 +-- ...urce_nutanix_access_control_policy_test.go | 4 +- nutanix/data_source_nutanix_category_key.go | 14 +- .../data_source_nutanix_category_key_test.go | 2 +- nutanix/data_source_nutanix_cluster.go | 710 +++--------------- nutanix/data_source_nutanix_cluster_test.go | 2 +- nutanix/data_source_nutanix_clusters.go | 588 ++------------- nutanix/data_source_nutanix_clusters_test.go | 2 +- nutanix/data_source_nutanix_host.go | 328 ++------ nutanix/data_source_nutanix_host_test.go | 4 +- nutanix/data_source_nutanix_hosts.go | 277 +------ nutanix/data_source_nutanix_hosts_test.go | 2 +- nutanix/data_source_nutanix_image.go | 246 +----- nutanix/data_source_nutanix_image_test.go | 4 +- nutanix/data_source_nutanix_karbon_cluster.go | 38 +- ...ource_nutanix_karbon_cluster_kubeconfig.go | 27 +- ..._nutanix_karbon_cluster_kubeconfig_test.go | 4 +- .../data_source_nutanix_karbon_cluster_ssh.go | 26 +- ..._source_nutanix_karbon_cluster_ssh_test.go | 4 +- ...data_source_nutanix_karbon_cluster_test.go | 4 +- .../data_source_nutanix_karbon_clusters.go | 21 +- ...ata_source_nutanix_karbon_clusters_test.go | 4 +- ...ource_nutanix_karbon_private_registries.go | 15 +- ..._source_nutanix_karbon_private_registry.go | 18 +- ...ta_source_nutanix_network_security_rule.go | 371 ++------- ...urce_nutanix_network_security_rule_test.go | 4 +- nutanix/data_source_nutanix_permission.go | 102 +-- .../data_source_nutanix_permission_test.go | 2 +- nutanix/data_source_nutanix_permissions.go | 85 +-- .../data_source_nutanix_permissions_test.go | 2 +- nutanix/data_source_nutanix_project.go | 126 +--- nutanix/data_source_nutanix_project_test.go | 4 +- nutanix/data_source_nutanix_projects.go | 97 +-- nutanix/data_source_nutanix_projects_test.go | 2 +- nutanix/data_source_nutanix_role.go | 97 +-- nutanix/data_source_nutanix_role_test.go | 4 +- nutanix/data_source_nutanix_roles.go | 84 +-- nutanix/data_source_nutanix_roles_test.go | 2 +- nutanix/data_source_nutanix_subnet.go | 311 ++------ nutanix/data_source_nutanix_subnet_test.go | 2 +- nutanix/data_source_nutanix_subnets.go | 169 +---- nutanix/data_source_nutanix_subnets_test.go | 2 +- nutanix/data_source_nutanix_user.go | 102 +-- nutanix/data_source_nutanix_user_group.go | 97 +-- .../data_source_nutanix_user_group_test.go | 2 +- nutanix/data_source_nutanix_user_groups.go | 83 +- .../data_source_nutanix_user_groups_test.go | 2 +- nutanix/data_source_nutanix_user_test.go | 2 +- nutanix/data_source_nutanix_users.go | 85 +-- nutanix/data_source_nutanix_users_test.go | 2 +- .../data_source_nutanix_virtual_machine.go | 552 ++------------ ...ata_source_nutanix_virtual_machine_test.go | 4 +- nutanix/data_source_protection_rule.go | 73 +- nutanix/data_source_protection_rule_test.go | 4 +- nutanix/data_source_protection_rules.go | 58 +- nutanix/data_source_protection_rules_test.go | 2 +- nutanix/data_source_recovery_plan.go | 83 +- nutanix/data_source_recovery_plan_test.go | 4 +- nutanix/data_source_recovery_plans.go | 70 +- nutanix/data_source_recovery_plans_test.go | 2 +- nutanix/filters.go | 2 +- nutanix/helpers.go | 4 +- nutanix/provider.go | 5 +- nutanix/provider_test.go | 13 +- .../resource_nutanix_access_control_policy.go | 122 ++- ...urce_nutanix_access_control_policy_test.go | 22 +- nutanix/resource_nutanix_category_key.go | 32 +- nutanix/resource_nutanix_category_key_test.go | 6 +- nutanix/resource_nutanix_category_value.go | 34 +- .../resource_nutanix_category_value_test.go | 6 +- nutanix/resource_nutanix_image.go | 319 ++------ nutanix/resource_nutanix_image_test.go | 6 +- nutanix/resource_nutanix_karbon_cluster.go | 138 ++-- .../resource_nutanix_karbon_cluster_test.go | 6 +- ...esource_nutanix_karbon_private_registry.go | 44 +- .../resource_nutanix_network_security_rule.go | 335 ++------- ...urce_nutanix_network_security_rule_test.go | 6 +- nutanix/resource_nutanix_project.go | 151 ++-- nutanix/resource_nutanix_project_test.go | 6 +- nutanix/resource_nutanix_protection_rule.go | 120 ++- .../resource_nutanix_protection_rule_test.go | 6 +- nutanix/resource_nutanix_recovery_plan.go | 114 +-- .../resource_nutanix_recovery_plan_test.go | 6 +- nutanix/resource_nutanix_role.go | 118 +-- nutanix/resource_nutanix_role_test.go | 22 +- nutanix/resource_nutanix_subnet.go | 386 ++-------- nutanix/resource_nutanix_subnet_test.go | 24 +- nutanix/resource_nutanix_user.go | 140 ++-- nutanix/resource_nutanix_user_test.go | 4 +- nutanix/resource_nutanix_virtual_machine.go | 682 +++-------------- .../resource_nutanix_virtual_machine_test.go | 6 +- nutanix/structure.go | 2 +- utils/utils.go | 30 + 101 files changed, 2200 insertions(+), 6350 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 8f4b5f75b..e993a2979 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -49,6 +49,10 @@ linters: - nestif - godot - goconst + - unparam + - unused + - staticcheck + - deadcode issues: exclude: diff --git a/client/client.go b/client/client.go index d0e580aa6..3dd60ef06 100644 --- a/client/client.go +++ b/client/client.go @@ -14,7 +14,7 @@ import ( "net/url" "github.com/PaesslerAG/jsonpath" - "github.com/hashicorp/terraform-plugin-sdk/helper/logging" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/logging" ) const ( diff --git a/go.mod b/go.mod index ec740bd75..e5b9ab0d0 100644 --- a/go.mod +++ b/go.mod @@ -2,15 +2,20 @@ module github.com/terraform-providers/terraform-provider-nutanix require ( github.com/PaesslerAG/jsonpath v0.1.1 + github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 // indirect + github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 // indirect github.com/client9/misspell v0.3.4 + github.com/golang/snappy v0.0.1 // indirect github.com/golangci/golangci-lint v1.25.0 - github.com/hashicorp/terraform-plugin-sdk v1.7.0 - github.com/magiconair/properties v1.8.1 // indirect + github.com/hashicorp/terraform-plugin-go v0.5.0 // indirect + github.com/hashicorp/terraform-plugin-sdk/v2 v2.10.1 + github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba // indirect + github.com/magiconair/properties v1.8.1 github.com/mitchellh/gox v1.0.1 + github.com/pierrec/lz4 v2.0.5+incompatible // indirect github.com/spf13/cast v1.3.1 - github.com/stretchr/testify v1.6.1 - golang.org/x/tools v0.0.0-20200530233709-52effbd89c51 // indirect - gopkg.in/yaml.v2 v2.2.8 + github.com/stretchr/testify v1.7.0 + gopkg.in/yaml.v2 v2.4.0 ) go 1.13 diff --git a/go.sum b/go.sum index e923d71b6..7163b4b34 100644 --- a/go.sum +++ b/go.sum @@ -5,11 +5,40 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1 h1:lRi0CHyU+ytlvylOlFKKq0af6JncuyoRh1J+QJBqQx0= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.61.0/go.mod h1:XukKJg4Y7QsUu0Hxg3qQKUWR4VuWivmyMK2+rUyxAqw= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenPeeDeeP/depguard v1.0.1 h1:VlW4R6jmBIv3/u1JNlawEvJMM4J+dPORPaZasQee8Us= github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= @@ -18,13 +47,18 @@ github.com/PaesslerAG/gval v1.0.0/go.mod h1:y/nm5yEyTeX6av0OfKJNp9rBNj2XrGhAf5+v github.com/PaesslerAG/jsonpath v0.1.0/go.mod h1:4BzmtoM/PI8fPO4aQGIusjGxGir2BzcV0grWtFzq1Y8= github.com/PaesslerAG/jsonpath v0.1.1 h1:c1/AToHQMVsduPAa4Vh6xp2U0evy4t8SWp8imEsylIk= github.com/PaesslerAG/jsonpath v0.1.1/go.mod h1:lVboNxFGal/VwW6d9JzIy56bUsYAP6tH/x80vjnCseY= +github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/andybalholm/crlf v0.0.0-20171020200849-670099aa064f/go.mod h1:k8feO4+kXDxro6ErPXBRTJ/ro2mf0SsFG8s7doP9kJE= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U= github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= @@ -32,10 +66,14 @@ github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFU github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= +github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= +github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= 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/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= github.com/aws/aws-sdk-go v1.25.3 h1:uM16hIw9BotjZKMZlX05SN2EFtaWfi/NonPKIARiBLQ= github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= @@ -47,10 +85,15 @@ github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bombsimon/wsl/v3 v3.0.0 h1:w9f49xQatuaeTJFaNP4SpiWSR5vfT6IstPtM62JjcqA= github.com/bombsimon/wsl/v3 v3.0.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= @@ -65,13 +108,31 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-critic/go-critic v0.4.1 h1:4DTQfT1wWwLg/hzxwD9bkdhDQrdJtxe6DUTadPlrIeE= github.com/go-critic/go-critic v0.4.1/go.mod h1:7/14rZGnZbY6E38VEGk2kVhoq6itzc1E68facVDK23g= +github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= +github.com/go-git/go-billy/v5 v5.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-git-fixtures/v4 v4.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw= +github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= +github.com/go-git/go-git/v5 v5.1.0/go.mod h1:ZKfuPUoY1ZqIG4QG9BDBh3G4gLM5zvPuSJAozQrZuyM= +github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-lintpack/lintpack v0.5.2 h1:DI5mA3+eKdWeJ40nU4d6Wc26qmdG8RCi/btYq0TuRN0= github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= @@ -114,15 +175,32 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= @@ -160,14 +238,28 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +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.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= @@ -181,53 +273,109 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU= +github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI= +github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= github.com/hashicorp/go-getter v1.4.0 h1:ENHNi8494porjD0ZhIrjlAHnveSFhY7hvOJrV/fsKkw= github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= +github.com/hashicorp/go-getter v1.5.0/go.mod h1:a7z7NPPfNQpJWcn4rSWFtdrSldqLdLPEF3d8nFMsSLM= +github.com/hashicorp/go-getter v1.5.3/go.mod h1:BrrV/1clo8cCYu6mxvboYg+KutTiFnXjMEgDD8+i7ZI= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.9.2 h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxCsHI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.15.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.16.1 h1:IVQwpTGNRRIHafnTs2dQLIk4ENtneRIEEJWOVDqz99o= +github.com/hashicorp/go-hclog v0.16.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v1.0.1 h1:4OtAfUGbnKC6yS48p0CtMX2oFYtzFZVv6rok3cRWgnE= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +github.com/hashicorp/go-plugin v1.3.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0= +github.com/hashicorp/go-plugin v1.4.0/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= +github.com/hashicorp/go-plugin v1.4.1 h1:6UltRQlLN9iZO513VveELp5xyaFxVD2+1OVylE+2E+w= +github.com/hashicorp/go-plugin v1.4.1/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw= +github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hc-install v0.3.1 h1:VIjllE6KyAI1A244G8kTaHXy+TL5/XYzvrtFi8po/Yk= +github.com/hashicorp/hc-install v0.3.1/go.mod h1:3LCdWcCDS1gaHC9mhHCGbkYfoY6vdsKohGjugbZdZak= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.0.0 h1:efQznTz+ydmQXq3BOnRa3AXzvCeTq1P4dKj/z5GLlY8= github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= +github.com/hashicorp/hcl/v2 v2.3.0 h1:iRly8YaMwTBAKhn1Ybk7VSdzbnopghktCD031P8ggUE= +github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8 h1:+RyjwU+Gnd/aTJBPZVDNm903eXVjjqhbaR4Ypx3xYyY= github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8/go.mod h1:p+ivJws3dpqbp1iP84+npOyAmTTOLMgCzrXd3GSdn/A= +github.com/hashicorp/terraform-exec v0.13.0/go.mod h1:SGhto91bVRlgXQWcJ5znSz+29UZIa8kpBbkGwQ+g9E8= +github.com/hashicorp/terraform-exec v0.15.0 h1:cqjh4d8HYNQrDoEmlSGelHmg2DYDh5yayckvJ5bV18E= +github.com/hashicorp/terraform-exec v0.15.0/go.mod h1:H4IG8ZxanU+NW0ZpDRNsvh9f0ul7C0nHP+rUR/CHs7I= github.com/hashicorp/terraform-json v0.4.0 h1:KNh29iNxozP5adfUFBJ4/fWd0Cu3taGgjHB38JYqOF4= github.com/hashicorp/terraform-json v0.4.0/go.mod h1:eAbqb4w0pSlRmdvl8fOyHAi/+8jnkVYN28gJkSJrLhU= +github.com/hashicorp/terraform-json v0.8.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE= +github.com/hashicorp/terraform-json v0.13.0 h1:Li9L+lKD1FO5RVFRM1mMMIBDoUHslOniyEi5CM+FWGY= +github.com/hashicorp/terraform-json v0.13.0/go.mod h1:y5OdLBCT+rxbwnpxZs9kGL7R9ExU76+cpdY8zHwoazk= +github.com/hashicorp/terraform-plugin-go v0.2.1/go.mod h1:10V6F3taeDWVAoLlkmArKttR3IULlRWFAGtQIQTIDr4= +github.com/hashicorp/terraform-plugin-go v0.5.0 h1:+gCDdF0hcYCm0YBTxrP4+K1NGIS5ZKZBKDORBewLJmg= +github.com/hashicorp/terraform-plugin-go v0.5.0/go.mod h1:PAVN26PNGpkkmsvva1qfriae5Arky3xl3NfzKa8XFVM= +github.com/hashicorp/terraform-plugin-log v0.2.0 h1:rjflRuBqCnSk3UHOR25MP1G5BDLKktTA6lNjjcAnBfI= +github.com/hashicorp/terraform-plugin-log v0.2.0/go.mod h1:E1kJmapEHzqu1x6M++gjvhzM2yMQNXPVWZRCB8sgYjg= github.com/hashicorp/terraform-plugin-sdk v1.7.0 h1:B//oq0ZORG+EkVrIJy0uPGSonvmXqxSzXe8+GhknoW0= github.com/hashicorp/terraform-plugin-sdk v1.7.0/go.mod h1:OjgQmey5VxnPej/buEhe+YqKm0KNvV3QqU4hkqHqPCY= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.4.3 h1:DGnxpIYRHXQZb2TOlQ1OCEYxoRQrAcbLIcYm8kvbFuU= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.4.3/go.mod h1:5wrrTcxbSaQXamCDbHZTHk6yTF9OEZaOvQ9fvLXBE3o= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.10.1 h1:B9AocC+dxrCqcf4vVhztIkSkt3gpRjUkEka8AmZWGlQ= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.10.1/go.mod h1:FjM9DXWfP0w/AeOtJoSKHBZ01LqmaO6uP4bXhv3fekw= github.com/hashicorp/terraform-plugin-test v1.2.0 h1:AWFdqyfnOj04sxTdaAF57QqvW7XXrT8PseUHkbKsE8I= github.com/hashicorp/terraform-plugin-test v1.2.0/go.mod h1:QIJHYz8j+xJtdtLrFTlzQVC0ocr3rf/OjIpgZLK56Hs= +github.com/hashicorp/terraform-registry-address v0.0.0-20210412075316-9b2996cce896 h1:1FGtlkJw87UsTMg5s8jrekrHmUPUJaMcu6ELiVhQrNw= +github.com/hashicorp/terraform-registry-address v0.0.0-20210412075316-9b2996cce896/go.mod h1:bzBPnUIkI0RxauU8Dqo+2KrZZ28Cf48s8V6IHt3p4co= github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596 h1:hjyO2JsNZUKT1ym+FAdlBEkGPevazYsmVgIMw7dVELg= github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= +github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0= +github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= +github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a h1:GmsqmapfzSJkm28dhRoHz2tLRbJmqhU86IPgBtN3mmk= github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a/go.mod h1:xRskid8CManxVta/ALEhJha/pweKBaVG6fWgc0yH25s= github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3 h1:jNYPNLe3d8smommaoQlK7LOA5ESyUJJ+Wf79ZtA7Vp4= @@ -238,15 +386,19 @@ github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= @@ -254,6 +406,7 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= @@ -272,6 +425,7 @@ github.com/maratori/testpackage v1.0.1 h1:QtJ5ZjqapShm0w5DosRjg0PRlSdAdlx+W6cCKo github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb h1:RHba4YImhrUVQDHUCe2BNSOz4tVy2yGyXhvYDvxGgeE= github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= @@ -281,16 +435,22 @@ github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10 h1:qxFzApOv4WsAL965uUPIsXzAKCZxN2p9UqdhFS4ZW10= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.1/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= +github.com/mitchellh/cli v1.1.2/go.mod h1:6iaV0fGdElS6dPBx0EApTxHrcWvmJphyh2n8YBLPPZ4= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= 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= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -298,6 +458,9 @@ github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b/go.mod h1:r1VsdOzO github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.0.4/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= @@ -310,6 +473,8 @@ github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nakabonne/nestif v0.3.0 h1:+yOViDGhg8ygGrmII72nV9B/zGxY188TYpfolntsaPw= @@ -318,6 +483,7 @@ github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d h1:AREM5mwr4u1 github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce/go.mod h1:uFMI8w+ref4v2r9jz+c9i1IfIttS/OkmLfrk1jne5hs= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= @@ -334,6 +500,8 @@ github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= @@ -343,6 +511,7 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -354,10 +523,13 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/ryancurrah/gomodguard v1.0.2 h1:vumZpZardqQ9EfFIZDNEpKaMxfqqEBMhu0uSRcDO5x4= github.com/ryancurrah/gomodguard v1.0.2/go.mod h1:9T/Cfuxs5StfsocWr4WzDL36HqnX0fVb9d5fSEaLhoE= +github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/securego/gosec v0.0.0-20200103095621-79fbf3af8d83 h1:AtnWoOvTioyDXFvu96MWEeE8qj4COSQnJogzLy/u41A= github.com/securego/gosec v0.0.0-20200103095621-79fbf3af8d83/go.mod h1:vvbZ2Ae7AzSq3/kywjUDxSNq2SJ27RxCz2un0H3ePqE= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= @@ -365,6 +537,7 @@ github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxr github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= @@ -375,6 +548,7 @@ github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4k github.com/sourcegraph/go-diff v0.5.1 h1:gO6i5zugwzo1RVTvgvfwCOSVegNuvnNi6bAD1QCmkHs= github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34cd2MNlA9u1mE= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= @@ -403,6 +577,8 @@ github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tetafro/godot v0.2.5 h1:7+EYJM/Z4gYZhBFdRrVm6JTj5ZLw/QI1j4RfEOXJviE= @@ -416,6 +592,7 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok= github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ultraware/funlen v0.0.2 h1:Av96YVBwwNSe4MLR7iI/BIa3VyI7/djnto/pK3Uxbdo= github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= github.com/ultraware/whitespace v0.0.4 h1:If7Va4cM03mpgrNH9k49/VOicWpGoG70XPBFFODYDsg= @@ -429,24 +606,40 @@ github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v4.0.1+incompatible h1:RMF1enSPeKTlXrXdOcqjFUElywVZjjC6pqse21bKbEU= github.com/vmihailenco/msgpack v4.0.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= +github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= +github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= +github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= +github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.2.1 h1:vGMsygfmeCl4Xb6OA5U5XVAaQZ69FvoG7X2jUtQujb8= github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= +github.com/zclconf/go-cty v1.9.1 h1:viqrgQwFl5UpSxc046qblj78wZXVDFnSOufaOTER+cc= +github.com/zclconf/go-cty v1.9.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -454,19 +647,46 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e h1:gsTQYXdTw2Gq7RBsWvlQ91b+aEQ6bXFUngBGuR8sPpI= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -483,20 +703,42 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191009170851-d66e71096ffb/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210326060303-6b1517762897 h1:KrsHThm5nFk34YtATK1LsThyGhGbGe1olrte/HInHvs= +golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -506,6 +748,7 @@ golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -515,15 +758,45 @@ golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69 h1:rOhMmluY6kLMhdnrivzec6lLgaVbMHMn2ISQXJeJ5EM= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -546,13 +819,39 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190719005602-e377ae9d6386/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200102140908-9497f49d5709/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200530233709-52effbd89c51 h1:Wec8/IO8hAraBf0it7/dPQYOslIrgM938wZYNkLnOYc= golang.org/x/tools v0.0.0-20200530233709-52effbd89c51/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed h1:+qzWo37K31KxduIYaBeMqJ8MUOyTayOQKpH9aDPLMSY= +golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -562,11 +861,26 @@ google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0 h1:jbyannxz0XFD3zdjgrSUsaJbgpH4eTrkdhRChkHPfO8= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -575,6 +889,28 @@ google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200711021454-869866162049 h1:YFTFpQhgvrLrmxtiIncJxFXeCyq84ixuKWVCaCAi9Oc= +google.golang.org/genproto v0.0.0-20200711021454-869866162049/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -582,12 +918,33 @@ google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0 h1:AzbTB6ux+okLTzP8Ru1Xs41C303zdcfEht7MQnYJt5A= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0 h1:zWTV+LMdc3kaiJMSTOFz2UgSBgx8RNQoTGiZu3fR9S0= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= @@ -597,6 +954,7 @@ gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -604,6 +962,9 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -612,6 +973,9 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= @@ -619,5 +983,7 @@ mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jC mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f h1:Cq7MalBHYACRd6EesksG1Q8EoIAKOsiZviGKbOLIej4= mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4 h1:JPJh2pk3+X4lXAkZIk2RuE/7/FoK9maXw+TNPJhVS/c= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/main.go b/main.go index b72ffb65d..2474e70c9 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,7 @@ package main import ( - "github.com/hashicorp/terraform-plugin-sdk/plugin" + "github.com/hashicorp/terraform-plugin-sdk/v2/plugin" "github.com/terraform-providers/terraform-provider-nutanix/nutanix" ) diff --git a/nutanix/categories.go b/nutanix/categories.go index 72f3923fd..d1cd359a5 100644 --- a/nutanix/categories.go +++ b/nutanix/categories.go @@ -1,8 +1,8 @@ package nutanix import ( - "github.com/hashicorp/terraform-plugin-sdk/helper/hashcode" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func categoriesSchema() *schema.Schema { @@ -12,7 +12,7 @@ func categoriesSchema() *schema.Schema { Computed: true, Set: func(v interface{}) int { category := v.(map[string]interface{}) - return hashcode.String(category["name"].(string) + category["value"].(string)) + return utils.HashcodeString(category["name"].(string) + category["value"].(string)) }, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -62,7 +62,7 @@ func categoriesSchemaOptional() *schema.Schema { Optional: true, Set: func(v interface{}) int { category := v.(map[string]interface{}) - return hashcode.String(category["name"].(string) + category["value"].(string)) + return utils.HashcodeString(category["name"].(string) + category["value"].(string)) }, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ diff --git a/nutanix/data_source_nutanix_access_control_policies.go b/nutanix/data_source_nutanix_access_control_policies.go index d0ff1bbf3..0f98d5e01 100644 --- a/nutanix/data_source_nutanix_access_control_policies.go +++ b/nutanix/data_source_nutanix_access_control_policies.go @@ -1,15 +1,18 @@ package nutanix import ( - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "context" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixAccessControlPolicies() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixAccessControlPoliciesRead, + ReadContext: dataSourceNutanixAccessControlPoliciesRead, Schema: map[string]*schema.Schema{ "api_version": { Type: schema.TypeString, @@ -31,78 +34,23 @@ func dataSourceNutanixAccessControlPolicies() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -160,7 +108,6 @@ func dataSourceNutanixAccessControlPolicies() *schema.Resource { "role_reference": { Type: schema.TypeList, Computed: true, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "kind": { @@ -199,7 +146,6 @@ func dataSourceNutanixAccessControlPolicies() *schema.Resource { "right_hand_side": { Type: schema.TypeList, Computed: true, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "collection": { @@ -208,7 +154,6 @@ func dataSourceNutanixAccessControlPolicies() *schema.Resource { }, "categories": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -251,7 +196,6 @@ func dataSourceNutanixAccessControlPolicies() *schema.Resource { "right_hand_side": { Type: schema.TypeList, Computed: true, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "collection": { @@ -260,7 +204,6 @@ func dataSourceNutanixAccessControlPolicies() *schema.Resource { }, "categories": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -336,7 +279,7 @@ func dataSourceNutanixAccessControlPolicies() *schema.Resource { } } -func dataSourceNutanixAccessControlPoliciesRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixAccessControlPoliciesRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API req := &v3.DSMetadata{} @@ -348,11 +291,11 @@ func dataSourceNutanixAccessControlPoliciesRead(d *schema.ResourceData, meta int resp, err := conn.V3.ListAllAccessControlPolicy(utils.StringValue(req.Filter)) if err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } entities := make([]map[string]interface{}, len(resp.Entities)) @@ -385,7 +328,7 @@ func dataSourceNutanixAccessControlPoliciesRead(d *schema.ResourceData, meta int } if err := d.Set("entities", entities); err != nil { - return err + return diag.FromErr(err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_nutanix_access_control_policies_test.go b/nutanix/data_source_nutanix_access_control_policies_test.go index 0a585bccf..940f95bf7 100644 --- a/nutanix/data_source_nutanix_access_control_policies_test.go +++ b/nutanix/data_source_nutanix_access_control_policies_test.go @@ -3,7 +3,7 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixAccessControlPoliciesDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_access_control_policy.go b/nutanix/data_source_nutanix_access_control_policy.go index ec2138186..fcc594c49 100644 --- a/nutanix/data_source_nutanix_access_control_policy.go +++ b/nutanix/data_source_nutanix_access_control_policy.go @@ -1,16 +1,18 @@ package nutanix import ( + "context" "fmt" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixAccessControlPolicy() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixAccessControlPolicyRead, + ReadContext: dataSourceNutanixAccessControlPolicyRead, Schema: map[string]*schema.Schema{ "access_control_policy_id": { Type: schema.TypeString, @@ -29,78 +31,23 @@ func dataSourceNutanixAccessControlPolicy() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -158,7 +105,6 @@ func dataSourceNutanixAccessControlPolicy() *schema.Resource { "role_reference": { Type: schema.TypeList, Computed: true, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "kind": { @@ -197,7 +143,6 @@ func dataSourceNutanixAccessControlPolicy() *schema.Resource { "right_hand_side": { Type: schema.TypeList, Computed: true, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "collection": { @@ -206,7 +151,6 @@ func dataSourceNutanixAccessControlPolicy() *schema.Resource { }, "categories": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -249,7 +193,6 @@ func dataSourceNutanixAccessControlPolicy() *schema.Resource { "right_hand_side": { Type: schema.TypeList, Computed: true, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "collection": { @@ -258,7 +201,6 @@ func dataSourceNutanixAccessControlPolicy() *schema.Resource { }, "categories": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -292,7 +234,7 @@ func dataSourceNutanixAccessControlPolicy() *schema.Resource { } } -func dataSourceNutanixAccessControlPolicyRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixAccessControlPolicyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API @@ -300,7 +242,7 @@ func dataSourceNutanixAccessControlPolicyRead(d *schema.ResourceData, meta inter name, nOk := d.GetOk("access_control_policy_name") if !iok && !nOk { - return fmt.Errorf("please provide `access_control_policy_id` or `access_control_policy_name`") + return diag.Errorf("please provide `access_control_policy_id` or `access_control_policy_name`") } var reqErr error @@ -314,51 +256,51 @@ func dataSourceNutanixAccessControlPolicyRead(d *schema.ResourceData, meta inter } if reqErr != nil { - return reqErr + return diag.FromErr(reqErr) } m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValues(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } if status := resp.Status; status != nil { if err := d.Set("name", utils.StringValue(resp.Status.Name)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("description", utils.StringValue(resp.Status.Description)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("state", utils.StringValue(resp.Status.State)); err != nil { - return err + return diag.FromErr(err) } if res := status.Resources; res != nil { if err := d.Set("user_reference_list", flattenArrayReferenceValues(status.Resources.UserReferenceList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("user_group_reference_list", flattenArrayReferenceValues(status.Resources.UserGroupReferenceList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("role_reference", flattenReferenceValuesList(status.Resources.RoleReference)); err != nil { - return err + return diag.FromErr(err) } if status.Resources.FilterList.ContextList != nil { if err := d.Set("context_filter_list", flattenContextList(status.Resources.FilterList.ContextList)); err != nil { - return err + return diag.FromErr(err) } } } diff --git a/nutanix/data_source_nutanix_access_control_policy_test.go b/nutanix/data_source_nutanix_access_control_policy_test.go index 5bbae8733..b11ebea3f 100644 --- a/nutanix/data_source_nutanix_access_control_policy_test.go +++ b/nutanix/data_source_nutanix_access_control_policy_test.go @@ -4,9 +4,9 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixAccessControlPolicyDataSourceByID_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_category_key.go b/nutanix/data_source_nutanix_category_key.go index 01364e326..d3556e84a 100644 --- a/nutanix/data_source_nutanix_category_key.go +++ b/nutanix/data_source_nutanix_category_key.go @@ -1,17 +1,19 @@ package nutanix import ( + "context" "fmt" "log" "strings" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixCategoryKey() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixCategoryKeyRead, + ReadContext: dataSourceNutanixCategoryKeyRead, Schema: map[string]*schema.Schema{ "system_defined": { @@ -39,7 +41,7 @@ func dataSourceNutanixCategoryKey() *schema.Resource { } } -func dataSourceNutanixCategoryKeyRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixCategoryKeyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Reading CategoryKey: %s", d.Get("name").(string)) // Get client connection @@ -53,7 +55,7 @@ func dataSourceNutanixCategoryKeyRead(d *schema.ResourceData, meta interface{}) d.SetId("") } - return err + return diag.FromErr(err) } d.Set("api_version", utils.StringValue(resp.APIVersion)) @@ -66,7 +68,7 @@ func dataSourceNutanixCategoryKeyRead(d *schema.ResourceData, meta interface{}) list, err := conn.V3.ListAllCategoryValues(d.Get("name").(string), "") if err != nil { - return err + return diag.FromErr(err) } values := make([]string, len(list.Entities)) @@ -75,5 +77,5 @@ func dataSourceNutanixCategoryKeyRead(d *schema.ResourceData, meta interface{}) values[k] = utils.StringValue(v.Value) } - return d.Set("values", values) + return diag.FromErr(d.Set("values", values)) } diff --git a/nutanix/data_source_nutanix_category_key_test.go b/nutanix/data_source_nutanix_category_key_test.go index 1ad1c2cd9..5e5c6e731 100644 --- a/nutanix/data_source_nutanix_category_key_test.go +++ b/nutanix/data_source_nutanix_category_key_test.go @@ -3,7 +3,7 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixCategoryKeyDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_cluster.go b/nutanix/data_source_nutanix_cluster.go index 73e50339b..b5f894f1c 100644 --- a/nutanix/data_source_nutanix_cluster.go +++ b/nutanix/data_source_nutanix_cluster.go @@ -1,18 +1,20 @@ package nutanix import ( + "context" "fmt" "log" "strconv" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixCluster() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixClusterRead, + ReadContext: dataSourceNutanixClusterRead, SchemaVersion: 1, StateUpgraders: []schema.StateUpgrader{ { @@ -31,78 +33,23 @@ func dataSourceNutanixCluster() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "api_version": { @@ -148,21 +95,8 @@ func dataSourceNutanixCluster() *schema.Resource { "client_auth": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "status": { - Type: schema.TypeString, - Computed: true, - }, - "ca_chain": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "authorized_public_key_list": { @@ -204,37 +138,8 @@ func dataSourceNutanixCluster() *schema.Resource { "ssl_key_signing_info": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "city": { - Type: schema.TypeString, - Computed: true, - }, - "common_name_suffix": { - Type: schema.TypeString, - Computed: true, - }, - "state": { - Type: schema.TypeString, - Computed: true, - }, - "country_code": { - Type: schema.TypeString, - Computed: true, - }, - "common_name": { - Type: schema.TypeString, - Computed: true, - }, - "organization": { - Type: schema.TypeString, - Computed: true, - }, - "email_address": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ssl_key_expire_datetime": { @@ -253,37 +158,8 @@ func dataSourceNutanixCluster() *schema.Resource { "certification_signing_info": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "city": { - Type: schema.TypeString, - Computed: true, - }, - "common_name_suffix": { - Type: schema.TypeString, - Computed: true, - }, - "state": { - Type: schema.TypeString, - Computed: true, - }, - "country_code": { - Type: schema.TypeString, - Computed: true, - }, - "common_name": { - Type: schema.TypeString, - Computed: true, - }, - "organization": { - Type: schema.TypeString, - Computed: true, - }, - "email_address": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "operation_mode": { @@ -318,33 +194,8 @@ func dataSourceNutanixCluster() *schema.Resource { "build": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "commit_id": { - Type: schema.TypeString, - Computed: true, - }, - "full_version": { - Type: schema.TypeString, - Computed: true, - }, - "commit_date": { - Type: schema.TypeString, - Computed: true, - }, - "version": { - Type: schema.TypeString, - Computed: true, - }, - "short_commit_id": { - Type: schema.TypeString, - Computed: true, - }, - "build_type": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "timezone": { @@ -400,17 +251,8 @@ func dataSourceNutanixCluster() *schema.Resource { "credentials": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "proxy_type_list": { @@ -421,25 +263,8 @@ func dataSourceNutanixCluster() *schema.Resource { "address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Computed: true, - }, - "port": { - Type: schema.TypeString, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -456,17 +281,8 @@ func dataSourceNutanixCluster() *schema.Resource { "smtp_server_credentials": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "smtp_server_proxy_type_list": { @@ -477,25 +293,8 @@ func dataSourceNutanixCluster() *schema.Resource { "smtp_server_address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Computed: true, - }, - "port": { - Type: schema.TypeString, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ntp_server_ip_list": { @@ -526,17 +325,8 @@ func dataSourceNutanixCluster() *schema.Resource { "domain_server_credentials": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "nfs_subnet_whitelist": { @@ -568,36 +358,15 @@ func dataSourceNutanixCluster() *schema.Resource { "analysis_vm_efficiency_map": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "bully_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "constrained_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "dead_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "inefficient_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "overprovisioned_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, } } -func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixClusterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API @@ -608,47 +377,47 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro // Make request to the API v, err = conn.V3.GetCluster(c.(string)) if err != nil { - return err + return diag.FromErr(err) } } else { n, ok := d.GetOk("name") if !ok { - return fmt.Errorf("please provide the cluster_id or name attribute") + return diag.Errorf("please provide the cluster_id or name attribute") } v, err = findClusterByName(conn, n.(string)) if err != nil { - return err + return diag.FromErr(err) } } m, c := setRSEntityMetadata(v.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", utils.StringValue(v.APIVersion)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValues(v.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValues(v.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("name", utils.StringValue(v.Status.Name)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("state", utils.StringValue(v.Status.State)); err != nil { - return err + return diag.FromErr(err) } nodes := make([]map[string]interface{}, 0) @@ -668,12 +437,12 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("nodes", nodes); err != nil { - return err + return diag.FromErr(err) } config := v.Status.Resources.Config if err := d.Set("gpu_driver_version", utils.StringValue(config.GpuDriverVersion)); err != nil { - return err + return diag.FromErr(err) } clientAuth := make(map[string]interface{}) @@ -684,7 +453,7 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("client_auth", clientAuth); err != nil { - return err + return diag.FromErr(err) } authPublicKey := make([]map[string]interface{}, 0) @@ -700,7 +469,7 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("authorized_public_key_list", authPublicKey); err != nil { - return err + return diag.FromErr(err) } ncc := make(map[string]interface{}) @@ -721,26 +490,26 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("software_map_ncc", ncc); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("software_map_nos", nos); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("encryption_status", utils.StringValue(config.EncryptionStatus)); err != nil { - return err + return diag.FromErr(err) } signingInfo := make(map[string]interface{}) if config.SslKey != nil { if err := d.Set("ssl_key_type", utils.StringValue(config.SslKey.KeyType)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("ssl_key_name", utils.StringValue(config.SslKey.KeyName)); err != nil { - return err + return diag.FromErr(err) } if config.SslKey.SigningInfo != nil { @@ -754,36 +523,36 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("ssl_key_signing_info", signingInfo); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("ssl_key_expire_datetime", utils.StringValue(config.SslKey.ExpireDatetime)); err != nil { - return err + return diag.FromErr(err) } } else { if err := d.Set("ssl_key_type", ""); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("ssl_key_name", ""); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("ssl_key_signing_info", signingInfo); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("ssl_key_expire_datetime", ""); err != nil { - return err + return diag.FromErr(err) } } if err := d.Set("service_list", utils.StringValueSlice(config.ServiceList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("supported_information_verbosity", utils.StringValue(config.SupportedInformationVerbosity)); err != nil { - return err + return diag.FromErr(err) } certSigning := make(map[string]interface{}) @@ -798,11 +567,11 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("certification_signing_info", certSigning); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("operation_mode", utils.StringValue(config.OperationMode)); err != nil { - return err + return diag.FromErr(err) } caCert := make([]map[string]interface{}, 0) @@ -819,15 +588,15 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("ca_certificate_list", caCert); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("enabled_feature_list", utils.StringValueSlice(config.EnabledFeatureList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("is_available", utils.BoolValue(config.IsAvailable)); err != nil { - return err + return diag.FromErr(err) } build := make(map[string]interface{}) @@ -841,15 +610,15 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("build", build); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("timezone", utils.StringValue(config.Timezone)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("cluster_arch", utils.StringValue(config.ClusterArch)); err != nil { - return err + return diag.FromErr(err) } managementServer := make([]map[string]interface{}, 0) @@ -868,20 +637,20 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("management_server_list", managementServer); err != nil { - return err + return diag.FromErr(err) } network := v.Status.Resources.Network if err := d.Set("masquerading_port", utils.Int64Value(network.MasqueradingPort)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("masquerading_ip", utils.StringValue(network.MasqueradingIP)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("external_ip", utils.StringValue(network.ExternalIP)); err != nil { - return err + return diag.FromErr(err) } httpProxy := make([]map[string]interface{}, 0) @@ -912,7 +681,7 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("http_proxy_list", httpProxy); err != nil { - return err + return diag.FromErr(err) } smtpServCreds := make(map[string]interface{}) @@ -920,16 +689,16 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro if network.SMTPServer != nil { if err := d.Set("smtp_server_type", utils.StringValue(network.SMTPServer.Type)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("smtp_server_email_address", utils.StringValue(network.SMTPServer.EmailAddress)); err != nil { - return err + return diag.FromErr(err) } if network.SMTPServer.Server != nil { if err := d.Set("smtp_server_proxy_type_list", utils.StringValueSlice(network.SMTPServer.Server.ProxyTypeList)); err != nil { - return err + return diag.FromErr(err) } if network.SMTPServer.Server.Credentials != nil { @@ -944,44 +713,44 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("smtp_server_credentials", smtpServCreds); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("smtp_server_address", smtpServAddr); err != nil { - return err + return diag.FromErr(err) } } else { if err := d.Set("smtp_server_type", ""); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("smtp_server_email_address", ""); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("smtp_server_credentials", smtpServCreds); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("smtp_server_proxy_type_list", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("smtp_server_address", smtpServAddr); err != nil { - return err + return diag.FromErr(err) } } if err := d.Set("ntp_server_ip_list", utils.StringValueSlice(network.NameServerIPList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("external_subnet", utils.StringValue(network.ExternalSubnet)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("external_data_services_ip", utils.StringValue(network.ExternalDataServicesIP)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("internal_subnet", utils.StringValue(network.InternalSubnet)); err != nil { - return err + return diag.FromErr(err) } domain := network.DomainServer @@ -989,37 +758,37 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro if domain != nil { if err := d.Set("domain_server_nameserver", utils.StringValue(domain.Nameserver)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("domain_server_name", utils.StringValue(domain.Name)); err != nil { - return err + return diag.FromErr(err) } domServCreds["username"] = utils.StringValue(domain.DomainCredentials.Username) domServCreds["password"] = utils.StringValue(domain.DomainCredentials.Password) if err := d.Set("domain_server_credentials", domServCreds); err != nil { - return err + return diag.FromErr(err) } } else { if err := d.Set("domain_server_nameserver", ""); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("domain_server_name", ""); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("domain_server_credentials", domServCreds); err != nil { - return err + return diag.FromErr(err) } } if err := d.Set("nfs_subnet_whitelist", utils.StringValueSlice(network.NFSSubnetWhitelist)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("name_server_ip_list", utils.StringValueSlice(network.NameServerIPList)); err != nil { - return err + return diag.FromErr(err) } httpWhiteList := make([]map[string]interface{}, 0) @@ -1035,7 +804,7 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("http_proxy_whitelist", httpWhiteList); err != nil { - return err + return diag.FromErr(err) } analysis := make(map[string]interface{}) @@ -1048,12 +817,12 @@ func dataSourceNutanixClusterRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("analysis_vm_efficiency_map", analysis); err != nil { - return err + return diag.FromErr(err) } cUUID := utils.StringValue(v.Metadata.UUID) if err := d.Set("cluster_id", cUUID); err != nil { - return err + return diag.FromErr(err) } d.SetId(cUUID) @@ -1091,7 +860,7 @@ func findClusterByName(conn *v3.Client, name string) (*v3.ClusterIntentResponse, return found[0], nil } -func resourceDatasourceClusterStateUpgradeV0(is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { +func resourceDatasourceClusterStateUpgradeV0(ctx context.Context, is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { log.Printf("[DEBUG] Entering resourceDatasourceClusterStateUpgradeV0") return resourceNutanixCategoriesMigrateState(is, meta) } @@ -1108,37 +877,8 @@ func resourceNutanixDatasourceClusterResourceV0() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": { @@ -1149,41 +889,15 @@ func resourceNutanixDatasourceClusterResourceV0() *schema.Resource { "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "api_version": { @@ -1229,21 +943,8 @@ func resourceNutanixDatasourceClusterResourceV0() *schema.Resource { "client_auth": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "status": { - Type: schema.TypeString, - Computed: true, - }, - "ca_chain": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "authorized_public_key_list": { @@ -1285,37 +986,8 @@ func resourceNutanixDatasourceClusterResourceV0() *schema.Resource { "ssl_key_signing_info": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "city": { - Type: schema.TypeString, - Computed: true, - }, - "common_name_suffix": { - Type: schema.TypeString, - Computed: true, - }, - "state": { - Type: schema.TypeString, - Computed: true, - }, - "country_code": { - Type: schema.TypeString, - Computed: true, - }, - "common_name": { - Type: schema.TypeString, - Computed: true, - }, - "organization": { - Type: schema.TypeString, - Computed: true, - }, - "email_address": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ssl_key_expire_datetime": { @@ -1334,37 +1006,8 @@ func resourceNutanixDatasourceClusterResourceV0() *schema.Resource { "certification_signing_info": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "city": { - Type: schema.TypeString, - Computed: true, - }, - "common_name_suffix": { - Type: schema.TypeString, - Computed: true, - }, - "state": { - Type: schema.TypeString, - Computed: true, - }, - "country_code": { - Type: schema.TypeString, - Computed: true, - }, - "common_name": { - Type: schema.TypeString, - Computed: true, - }, - "organization": { - Type: schema.TypeString, - Computed: true, - }, - "email_address": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "operation_mode": { @@ -1399,33 +1042,8 @@ func resourceNutanixDatasourceClusterResourceV0() *schema.Resource { "build": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "commit_id": { - Type: schema.TypeString, - Computed: true, - }, - "full_version": { - Type: schema.TypeString, - Computed: true, - }, - "commit_date": { - Type: schema.TypeString, - Computed: true, - }, - "version": { - Type: schema.TypeString, - Computed: true, - }, - "short_commit_id": { - Type: schema.TypeString, - Computed: true, - }, - "build_type": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "timezone": { @@ -1481,17 +1099,8 @@ func resourceNutanixDatasourceClusterResourceV0() *schema.Resource { "credentials": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "proxy_type_list": { @@ -1502,25 +1111,8 @@ func resourceNutanixDatasourceClusterResourceV0() *schema.Resource { "address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Computed: true, - }, - "port": { - Type: schema.TypeString, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -1537,17 +1129,8 @@ func resourceNutanixDatasourceClusterResourceV0() *schema.Resource { "smtp_server_credentials": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "smtp_server_proxy_type_list": { @@ -1558,25 +1141,8 @@ func resourceNutanixDatasourceClusterResourceV0() *schema.Resource { "smtp_server_address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Computed: true, - }, - "port": { - Type: schema.TypeString, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ntp_server_ip_list": { @@ -1607,17 +1173,8 @@ func resourceNutanixDatasourceClusterResourceV0() *schema.Resource { "domain_server_credentials": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "nfs_subnet_whitelist": { @@ -1649,29 +1206,8 @@ func resourceNutanixDatasourceClusterResourceV0() *schema.Resource { "analysis_vm_efficiency_map": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "bully_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "constrained_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "dead_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "inefficient_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "overprovisioned_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, diff --git a/nutanix/data_source_nutanix_cluster_test.go b/nutanix/data_source_nutanix_cluster_test.go index 756a063e2..6ee334dc2 100644 --- a/nutanix/data_source_nutanix_cluster_test.go +++ b/nutanix/data_source_nutanix_cluster_test.go @@ -4,7 +4,7 @@ import ( "regexp" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixClusterDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_clusters.go b/nutanix/data_source_nutanix_clusters.go index 571c728ba..ce396933d 100644 --- a/nutanix/data_source_nutanix_clusters.go +++ b/nutanix/data_source_nutanix_clusters.go @@ -1,17 +1,19 @@ package nutanix import ( + "context" "log" "strconv" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixClusters() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixClustersRead, + ReadContext: dataSourceNutanixClustersRead, SchemaVersion: 1, StateUpgraders: []schema.StateUpgrader{ { @@ -33,78 +35,23 @@ func dataSourceNutanixClusters() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "api_version": { @@ -148,21 +95,8 @@ func dataSourceNutanixClusters() *schema.Resource { "client_auth": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "status": { - Type: schema.TypeString, - Computed: true, - }, - "ca_chain": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "authorized_public_key_list": { @@ -204,37 +138,8 @@ func dataSourceNutanixClusters() *schema.Resource { "ssl_key_signing_info": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "city": { - Type: schema.TypeString, - Computed: true, - }, - "common_name_suffix": { - Type: schema.TypeString, - Computed: true, - }, - "state": { - Type: schema.TypeString, - Computed: true, - }, - "country_code": { - Type: schema.TypeString, - Computed: true, - }, - "common_name": { - Type: schema.TypeString, - Computed: true, - }, - "organization": { - Type: schema.TypeString, - Computed: true, - }, - "email_address": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ssl_key_expire_datetime": { @@ -253,37 +158,8 @@ func dataSourceNutanixClusters() *schema.Resource { "certification_signing_info": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "city": { - Type: schema.TypeString, - Computed: true, - }, - "common_name_suffix": { - Type: schema.TypeString, - Computed: true, - }, - "state": { - Type: schema.TypeString, - Computed: true, - }, - "country_code": { - Type: schema.TypeString, - Computed: true, - }, - "common_name": { - Type: schema.TypeString, - Computed: true, - }, - "organization": { - Type: schema.TypeString, - Computed: true, - }, - "email_address": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "operation_mode": { @@ -318,33 +194,8 @@ func dataSourceNutanixClusters() *schema.Resource { "build": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "commit_id": { - Type: schema.TypeString, - Computed: true, - }, - "full_version": { - Type: schema.TypeString, - Computed: true, - }, - "commit_date": { - Type: schema.TypeString, - Computed: true, - }, - "version": { - Type: schema.TypeString, - Computed: true, - }, - "short_commit_id": { - Type: schema.TypeString, - Computed: true, - }, - "build_type": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "timezone": { @@ -400,17 +251,8 @@ func dataSourceNutanixClusters() *schema.Resource { "credentials": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "proxy_type_list": { @@ -421,25 +263,8 @@ func dataSourceNutanixClusters() *schema.Resource { "address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Computed: true, - }, - "port": { - Type: schema.TypeString, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -456,17 +281,8 @@ func dataSourceNutanixClusters() *schema.Resource { "smtp_server_credentials": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "smtp_server_proxy_type_list": { @@ -477,25 +293,8 @@ func dataSourceNutanixClusters() *schema.Resource { "smtp_server_address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Computed: true, - }, - "port": { - Type: schema.TypeString, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ntp_server_ip_list": { @@ -526,17 +325,8 @@ func dataSourceNutanixClusters() *schema.Resource { "domain_server_credentials": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "nfs_subnet_whitelist": { @@ -568,29 +358,8 @@ func dataSourceNutanixClusters() *schema.Resource { "analysis_vm_efficiency_map": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "bully_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "constrained_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "dead_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "inefficient_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "overprovisioned_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -600,7 +369,7 @@ func dataSourceNutanixClusters() *schema.Resource { } } -func dataSourceNutanixClustersRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixClustersRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API @@ -608,11 +377,11 @@ func dataSourceNutanixClustersRead(d *schema.ResourceData, meta interface{}) err resp, err := conn.V3.ListAllCluster(filter) if err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } entities := make([]map[string]interface{}, len(resp.Entities)) @@ -893,7 +662,7 @@ func dataSourceNutanixClustersRead(d *schema.ResourceData, meta interface{}) err } if err := d.Set("entities", entities); err != nil { - return err + return diag.FromErr(err) } d.SetId(resource.UniqueId()) @@ -901,7 +670,7 @@ func dataSourceNutanixClustersRead(d *schema.ResourceData, meta interface{}) err return nil } -func resourceDatasourceClustersStateUpgradeV0(is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { +func resourceDatasourceClustersStateUpgradeV0(ctx context.Context, is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { log.Printf("[DEBUG] Entering resourceDatasourceClustersStateUpgradeV0") return resourceNutanixCategoriesMigrateState(is, meta) } @@ -921,37 +690,8 @@ func resourceNutanixDatasourceClustersResourceV0() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": { @@ -962,41 +702,15 @@ func resourceNutanixDatasourceClustersResourceV0() *schema.Resource { "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "api_version": { @@ -1040,21 +754,8 @@ func resourceNutanixDatasourceClustersResourceV0() *schema.Resource { "client_auth": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "status": { - Type: schema.TypeString, - Computed: true, - }, - "ca_chain": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "authorized_public_key_list": { @@ -1096,37 +797,8 @@ func resourceNutanixDatasourceClustersResourceV0() *schema.Resource { "ssl_key_signing_info": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "city": { - Type: schema.TypeString, - Computed: true, - }, - "common_name_suffix": { - Type: schema.TypeString, - Computed: true, - }, - "state": { - Type: schema.TypeString, - Computed: true, - }, - "country_code": { - Type: schema.TypeString, - Computed: true, - }, - "common_name": { - Type: schema.TypeString, - Computed: true, - }, - "organization": { - Type: schema.TypeString, - Computed: true, - }, - "email_address": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ssl_key_expire_datetime": { @@ -1145,37 +817,8 @@ func resourceNutanixDatasourceClustersResourceV0() *schema.Resource { "certification_signing_info": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "city": { - Type: schema.TypeString, - Computed: true, - }, - "common_name_suffix": { - Type: schema.TypeString, - Computed: true, - }, - "state": { - Type: schema.TypeString, - Computed: true, - }, - "country_code": { - Type: schema.TypeString, - Computed: true, - }, - "common_name": { - Type: schema.TypeString, - Computed: true, - }, - "organization": { - Type: schema.TypeString, - Computed: true, - }, - "email_address": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "operation_mode": { @@ -1210,33 +853,8 @@ func resourceNutanixDatasourceClustersResourceV0() *schema.Resource { "build": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "commit_id": { - Type: schema.TypeString, - Computed: true, - }, - "full_version": { - Type: schema.TypeString, - Computed: true, - }, - "commit_date": { - Type: schema.TypeString, - Computed: true, - }, - "version": { - Type: schema.TypeString, - Computed: true, - }, - "short_commit_id": { - Type: schema.TypeString, - Computed: true, - }, - "build_type": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "timezone": { @@ -1292,17 +910,8 @@ func resourceNutanixDatasourceClustersResourceV0() *schema.Resource { "credentials": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "proxy_type_list": { @@ -1313,25 +922,8 @@ func resourceNutanixDatasourceClustersResourceV0() *schema.Resource { "address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Computed: true, - }, - "port": { - Type: schema.TypeString, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -1348,17 +940,8 @@ func resourceNutanixDatasourceClustersResourceV0() *schema.Resource { "smtp_server_credentials": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "smtp_server_proxy_type_list": { @@ -1369,25 +952,8 @@ func resourceNutanixDatasourceClustersResourceV0() *schema.Resource { "smtp_server_address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Computed: true, - }, - "port": { - Type: schema.TypeString, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ntp_server_ip_list": { @@ -1418,17 +984,8 @@ func resourceNutanixDatasourceClustersResourceV0() *schema.Resource { "domain_server_credentials": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "nfs_subnet_whitelist": { @@ -1460,29 +1017,8 @@ func resourceNutanixDatasourceClustersResourceV0() *schema.Resource { "analysis_vm_efficiency_map": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "bully_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "constrained_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "dead_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "inefficient_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - "overprovisioned_vm_num": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, diff --git a/nutanix/data_source_nutanix_clusters_test.go b/nutanix/data_source_nutanix_clusters_test.go index 5adf47714..9ea7ae37a 100644 --- a/nutanix/data_source_nutanix_clusters_test.go +++ b/nutanix/data_source_nutanix_clusters_test.go @@ -3,7 +3,7 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixClustersDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_host.go b/nutanix/data_source_nutanix_host.go index 2b1df7ce2..ff3279b2e 100644 --- a/nutanix/data_source_nutanix_host.go +++ b/nutanix/data_source_nutanix_host.go @@ -1,15 +1,18 @@ package nutanix import ( + "context" + "github.com/spf13/cast" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" ) func dataSourceNutanixHost() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixHostRead, + ReadContext: dataSourceNutanixHostRead, Schema: map[string]*schema.Schema{ "host_id": { Type: schema.TypeString, @@ -26,45 +29,15 @@ func dataSourceNutanixHost() *schema.Resource { "failover_cluster": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "domain_credencial": { - Type: schema.TypeMap, - Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, - }, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ipmi": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cpu_model": { @@ -83,45 +56,8 @@ func dataSourceNutanixHost() *schema.Resource { "windows_domain": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "name": { - Type: schema.TypeString, - Computed: true, - }, - "name_server_ip": { - Type: schema.TypeString, - Computed: true, - }, - "organization_unit_path": { - Type: schema.TypeString, - Computed: true, - }, - "name_prefix": { - Type: schema.TypeString, - Computed: true, - }, - "domain_name": { - Type: schema.TypeString, - Computed: true, - }, - "domain_credencial": { - Type: schema.TypeMap, - Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, - }, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "gpu_list": { @@ -185,21 +121,8 @@ func dataSourceNutanixHost() *schema.Resource { "consumer_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "mode": { @@ -260,21 +183,8 @@ func dataSourceNutanixHost() *schema.Resource { "hypervisor": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "num_vms": { - Type: schema.TypeInt, - Computed: true, - }, - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "hypervisor_full_name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "host_type": { @@ -288,93 +198,29 @@ func dataSourceNutanixHost() *schema.Resource { "rackable_unit_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "controller_vm": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "nat_ip": { - Type: schema.TypeString, - Computed: true, - }, - "oplog_usage": { - Type: schema.TypeMap, - Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "opolog_disk_pct": { - Type: schema.TypeFloat, - Computed: true, - }, - "opolog_disk_size": { - Type: schema.TypeString, - Computed: true, - }, - }, - }, - }, - "nat_port": { - Type: schema.TypeInt, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "block": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "block_serial_number": { - Type: schema.TypeString, - Computed: true, - }, - "block_model": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "api_version": { @@ -384,85 +230,30 @@ func dataSourceNutanixHost() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, } } -func dataSourceNutanixHostRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixHostRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API @@ -470,85 +261,85 @@ func dataSourceNutanixHostRead(d *schema.ResourceData, meta interface{}) error { host, err := conn.V3.GetHost(hostID) if err != nil { - return err + return diag.FromErr(err) } if err := d.Set("name", host.Status.Name); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("gpu_driver_version", host.Status.Resources.GPUDriverVersion); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("failover_cluster", flattenFailOverCluster(host.Status.Resources.FailoverCluster)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("ipmi", flattenIMPI(host.Status.Resources.IPMI)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("cpu_model", host.Status.Resources.CPUModel); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("host_nics_id_list", host.Status.Resources.HostNicsIDList); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("num_cpu_sockets", host.Status.Resources.NumCPUSockets); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("windows_domain", flattenWindowsDomain(host.Status.Resources.WindowsDomain)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("gpu_list", flattenGpuList(host.Status.Resources.GPUList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("serial_number", host.Status.Resources.SerialNumber); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("cpu_capacity_hz", host.Status.Resources.CPUCapacityHZ); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("memory_capacity_mib", host.Status.Resources.MemoryVapacityMib); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("host_disks_reference_list", flattenReferenceList(host.Status.Resources.HostDisksReferenceList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("monitoring_state", host.Status.Resources.MonitoringState); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("hypervisor", flattenHypervisor(host.Status.Resources.Hypervisor)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("host_type", host.Status.Resources.HostType); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("num_cpu_cores", host.Status.Resources.NumCPUCores); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("rackable_unit_reference", flattenReference(host.Status.Resources.RackableUnitReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("controller_vm", flattenControllerVM(host.Status.Resources.ControllerVM)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("block", flattenBlock(host.Status.Resources.Block)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("cluster_reference", flattenReference(host.Status.ClusterReference)); err != nil { - return err + return diag.FromErr(err) } m, c := setRSEntityMetadata(host.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValues(host.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValues(host.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } d.SetId(hostID) @@ -558,9 +349,8 @@ func dataSourceNutanixHostRead(d *schema.ResourceData, meta interface{}) error { func flattenFailOverCluster(failOvercluster *v3.FailoverCluster) map[string]interface{} { if failOvercluster != nil { return map[string]interface{}{ - "ip": failOvercluster.IP, - "name": failOvercluster.Name, - "domain_credencial": flattenDomainCredencials(failOvercluster.DomainCredencial), + "ip": failOvercluster.IP, + "name": failOvercluster.Name, } } return map[string]interface{}{} @@ -592,8 +382,6 @@ func flattenWindowsDomain(windowsDomain *v3.WindowsDomain) map[string]interface{ "name_server_ip": windowsDomain.NameServerIP, "organization_unit_path": windowsDomain.OrganizationUnitPath, "name_prefix": windowsDomain.NamePrefix, - "domain_name": windowsDomain.DomainCredencial, - "domain_credencial": windowsDomain.DomainCredencial, } } return map[string]interface{}{} diff --git a/nutanix/data_source_nutanix_host_test.go b/nutanix/data_source_nutanix_host_test.go index cf33c867e..33f5747f7 100644 --- a/nutanix/data_source_nutanix_host_test.go +++ b/nutanix/data_source_nutanix_host_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixHostDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_hosts.go b/nutanix/data_source_nutanix_hosts.go index 014f55223..01d1e6ae1 100644 --- a/nutanix/data_source_nutanix_hosts.go +++ b/nutanix/data_source_nutanix_hosts.go @@ -1,14 +1,17 @@ package nutanix import ( - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "context" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" ) func dataSourceNutanixHosts() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixHostsRead, + ReadContext: dataSourceNutanixHostsRead, Schema: map[string]*schema.Schema{ "api_version": { Type: schema.TypeString, @@ -30,45 +33,15 @@ func dataSourceNutanixHosts() *schema.Resource { "failover_cluster": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "domain_credencial": { - Type: schema.TypeMap, - Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, - }, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ipmi": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cpu_model": { @@ -87,45 +60,8 @@ func dataSourceNutanixHosts() *schema.Resource { "windows_domain": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "name": { - Type: schema.TypeString, - Computed: true, - }, - "name_server_ip": { - Type: schema.TypeString, - Computed: true, - }, - "organization_unit_path": { - Type: schema.TypeString, - Computed: true, - }, - "name_prefix": { - Type: schema.TypeString, - Computed: true, - }, - "domain_name": { - Type: schema.TypeString, - Computed: true, - }, - "domain_credencial": { - Type: schema.TypeMap, - Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "username": { - Type: schema.TypeString, - Computed: true, - }, - "password": { - Type: schema.TypeString, - Computed: true, - }, - }, - }, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "gpu_list": { @@ -189,21 +125,8 @@ func dataSourceNutanixHosts() *schema.Resource { "consumer_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "mode": { @@ -264,21 +187,8 @@ func dataSourceNutanixHosts() *schema.Resource { "hypervisor": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "num_vms": { - Type: schema.TypeInt, - Computed: true, - }, - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "hypervisor_full_name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "host_type": { @@ -292,93 +202,29 @@ func dataSourceNutanixHosts() *schema.Resource { "rackable_unit_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "controller_vm": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "nat_ip": { - Type: schema.TypeString, - Computed: true, - }, - "oplog_usage": { - Type: schema.TypeMap, - Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "opolog_disk_pct": { - Type: schema.TypeFloat, - Computed: true, - }, - "opolog_disk_size": { - Type: schema.TypeString, - Computed: true, - }, - }, - }, - }, - "nat_port": { - Type: schema.TypeInt, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "block": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "block_serial_number": { - Type: schema.TypeString, - Computed: true, - }, - "block_model": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "api_version": { @@ -388,78 +234,23 @@ func dataSourceNutanixHosts() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -469,20 +260,20 @@ func dataSourceNutanixHosts() *schema.Resource { } } -func dataSourceNutanixHostsRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixHostsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API resp, err := conn.V3.ListAllHost() if err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("entities", flattenHostEntities(resp.Entities)); err != nil { - return err + return diag.FromErr(err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_nutanix_hosts_test.go b/nutanix/data_source_nutanix_hosts_test.go index 146571074..c7419d53d 100644 --- a/nutanix/data_source_nutanix_hosts_test.go +++ b/nutanix/data_source_nutanix_hosts_test.go @@ -3,7 +3,7 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixHostsDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_image.go b/nutanix/data_source_nutanix_image.go index 37a2c5183..38742479a 100644 --- a/nutanix/data_source_nutanix_image.go +++ b/nutanix/data_source_nutanix_image.go @@ -1,17 +1,19 @@ package nutanix import ( + "context" "fmt" "log" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixImage() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixImageRead, + ReadContext: dataSourceNutanixImageRead, SchemaVersion: 1, StateUpgraders: []schema.StateUpgrader{ { @@ -38,78 +40,23 @@ func dataSourceNutanixImage() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -127,21 +74,8 @@ func dataSourceNutanixImage() *schema.Resource { "availability_zone_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_uuid": { @@ -164,17 +98,8 @@ func dataSourceNutanixImage() *schema.Resource { "checksum": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "checksum_algorithm": { - Type: schema.TypeString, - Computed: true, - }, - "checksum_value": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "source_uri": { @@ -184,17 +109,8 @@ func dataSourceNutanixImage() *schema.Resource { "version": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "product_version": { - Type: schema.TypeString, - Computed: true, - }, - "product_name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "architecture": { @@ -209,7 +125,7 @@ func dataSourceNutanixImage() *schema.Resource { } } -func dataSourceNutanixImageRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixImageRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API @@ -217,7 +133,7 @@ func dataSourceNutanixImageRead(d *schema.ResourceData, meta interface{}) error imageName, nok := d.GetOk("image_name") if !iok && !nok { - return fmt.Errorf("please provide one of image_id or image_name attributes") + return diag.Errorf("please provide one of image_id or image_name attributes") } var reqErr error @@ -230,27 +146,27 @@ func dataSourceNutanixImageRead(d *schema.ResourceData, meta interface{}) error } if reqErr != nil { - return reqErr + return diag.FromErr(reqErr) } m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("availability_zone_reference", flattenReferenceValues(resp.Status.AvailabilityZoneReference)); err != nil { - return err + return diag.FromErr(err) } if err := flattenClusterReference(resp.Status.ClusterReference, d); err != nil { - return err + return diag.FromErr(err) } d.Set("api_version", utils.StringValue(resp.APIVersion)) d.Set("name", utils.StringValue(resp.Status.Name)) @@ -266,7 +182,7 @@ func dataSourceNutanixImageRead(d *schema.ResourceData, meta interface{}) error } if err := d.Set("retrieval_uri_list", uriList); err != nil { - return err + return diag.FromErr(err) } d.SetId(utils.StringValue(resp.Metadata.UUID)) @@ -305,7 +221,7 @@ func findImageByName(conn *v3.Client, name string) (*v3.ImageIntentResponse, err return findImageByUUID(conn, *found[0].Metadata.UUID) } -func resourceDatasourceImageInstanceStateUpgradeV0(is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { +func resourceDatasourceImageInstanceStateUpgradeV0(ctx context.Context, is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { log.Printf("[DEBUG] Entering resourceDatasourceImageInstanceStateUpgradeV0") return resourceNutanixCategoriesMigrateState(is, meta) } @@ -330,37 +246,8 @@ func resourceNutanixDatasourceImageInstanceResourceV0() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": { @@ -371,41 +258,15 @@ func resourceNutanixDatasourceImageInstanceResourceV0() *schema.Resource { "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -423,21 +284,8 @@ func resourceNutanixDatasourceImageInstanceResourceV0() *schema.Resource { "availability_zone_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_uuid": { @@ -460,17 +308,8 @@ func resourceNutanixDatasourceImageInstanceResourceV0() *schema.Resource { "checksum": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "checksum_algorithm": { - Type: schema.TypeString, - Computed: true, - }, - "checksum_value": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "source_uri": { @@ -480,17 +319,8 @@ func resourceNutanixDatasourceImageInstanceResourceV0() *schema.Resource { "version": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "product_version": { - Type: schema.TypeString, - Computed: true, - }, - "product_name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "architecture": { diff --git a/nutanix/data_source_nutanix_image_test.go b/nutanix/data_source_nutanix_image_test.go index bfbd42ee8..2f4153acb 100644 --- a/nutanix/data_source_nutanix_image_test.go +++ b/nutanix/data_source_nutanix_image_test.go @@ -5,8 +5,8 @@ import ( "regexp" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixImageDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_karbon_cluster.go b/nutanix/data_source_nutanix_karbon_cluster.go index ffc6ecb58..60f4e35ea 100644 --- a/nutanix/data_source_nutanix_karbon_cluster.go +++ b/nutanix/data_source_nutanix_karbon_cluster.go @@ -1,22 +1,23 @@ package nutanix import ( - "fmt" + "context" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/terraform-providers/terraform-provider-nutanix/client/karbon" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixKarbonCluster() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixKarbonClusterRead, + ReadContext: dataSourceNutanixKarbonClusterRead, SchemaVersion: 1, Schema: KarbonClusterDataSourceMap(), } } -func dataSourceNutanixKarbonClusterRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixKarbonClusterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).KarbonAPI setTimeout(meta) @@ -24,7 +25,7 @@ func dataSourceNutanixKarbonClusterRead(d *schema.ResourceData, meta interface{} karbonClusterID, iok := d.GetOk("karbon_cluster_id") karbonClusterNameInput, nok := d.GetOk("karbon_cluster_name") if !iok && !nok { - return fmt.Errorf("please provide one of karbon_cluster_id or karbon_cluster_name attributes") + return diag.Errorf("please provide one of karbon_cluster_id or karbon_cluster_name attributes") } var err error var resp *karbon.ClusterIntentResponse @@ -37,48 +38,48 @@ func dataSourceNutanixKarbonClusterRead(d *schema.ResourceData, meta interface{} if err != nil { d.SetId("") - return err + return diag.FromErr(err) } karbonClusterName := *resp.Name flattenedEtcdNodepool, err := flattenNodePools(d, conn, "etcd_node_pool", karbonClusterName, resp.ETCDConfig.NodePools) if err != nil { - return err + return diag.FromErr(err) } flattenedWorkerNodepool, err := flattenNodePools(d, conn, "worker_node_pool", karbonClusterName, resp.WorkerConfig.NodePools) if err != nil { - return err + return diag.FromErr(err) } flattenedMasterNodepool, err := flattenNodePools(d, conn, "master_node_pool", karbonClusterName, resp.MasterConfig.NodePools) if err != nil { - return err + return diag.FromErr(err) } if err = d.Set("name", utils.StringValue(resp.Name)); err != nil { - return fmt.Errorf("error setting name for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting name for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("status", utils.StringValue(resp.Status)); err != nil { - return fmt.Errorf("error setting status for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting status for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("version", utils.StringValue(resp.Version)); err != nil { - return fmt.Errorf("error setting version for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting version for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("kubeapi_server_ipv4_address", utils.StringValue(resp.KubeAPIServerIPv4Address)); err != nil { - return fmt.Errorf("error setting kubeapi_server_ipv4_address for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting kubeapi_server_ipv4_address for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("deployment_type", resp.MasterConfig.DeploymentType); err != nil { - return fmt.Errorf("error setting deployment_type for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting deployment_type for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("worker_node_pool", flattenedWorkerNodepool); err != nil { - return fmt.Errorf("error setting worker_node_pool for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting worker_node_pool for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("etcd_node_pool", flattenedEtcdNodepool); err != nil { - return fmt.Errorf("error setting etcd_node_pool for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting etcd_node_pool for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("master_node_pool", flattenedMasterNodepool); err != nil { - return fmt.Errorf("error setting master_node_pool for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting master_node_pool for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("uuid", utils.StringValue(resp.UUID)); err != nil { - return fmt.Errorf("error setting uuid for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting uuid for Karbon Cluster %s: %s", d.Id(), err) } d.SetId(*resp.UUID) @@ -135,7 +136,6 @@ func KarbonClusterElementDataSourceMap() map[string]*schema.Schema { func nodePoolDatasourceSchema() *schema.Schema { return &schema.Schema{ Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ diff --git a/nutanix/data_source_nutanix_karbon_cluster_kubeconfig.go b/nutanix/data_source_nutanix_karbon_cluster_kubeconfig.go index b0c4665de..aca3130bd 100644 --- a/nutanix/data_source_nutanix_karbon_cluster_kubeconfig.go +++ b/nutanix/data_source_nutanix_karbon_cluster_kubeconfig.go @@ -1,17 +1,18 @@ package nutanix import ( - "fmt" + "context" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/terraform-providers/terraform-provider-nutanix/client/karbon" "gopkg.in/yaml.v2" ) func dataSourceNutanixKarbonClusterKubeconfig() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixKarbonClusterKubeconfigRead, + ReadContext: dataSourceNutanixKarbonClusterKubeconfigRead, Schema: map[string]*schema.Schema{ "karbon_cluster_id": { @@ -45,7 +46,7 @@ func dataSourceNutanixKarbonClusterKubeconfig() *schema.Resource { } } -func dataSourceNutanixKarbonClusterKubeconfigRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixKarbonClusterKubeconfigRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).KarbonAPI setTimeout(meta) @@ -54,7 +55,7 @@ func dataSourceNutanixKarbonClusterKubeconfigRead(d *schema.ResourceData, meta i karbonClusterName, nok := d.GetOk("karbon_cluster_name") if !iok && !nok { - return fmt.Errorf("please provide one of karbon_cluster_id or karbon_cluster_name attributes") + return diag.Errorf("please provide one of karbon_cluster_id or karbon_cluster_name attributes") } var err error @@ -68,25 +69,25 @@ func dataSourceNutanixKarbonClusterKubeconfigRead(d *schema.ResourceData, meta i if err != nil { d.SetId("") - return err + return diag.FromErr(err) } if len(resp.Clusters) != 1 { - return fmt.Errorf("incorrect amount of cluster information retrieved via kubeconfig, must be 1") + return diag.Errorf("incorrect amount of cluster information retrieved via kubeconfig, must be 1") } if len(resp.Users) != 1 { - return fmt.Errorf("incorrect amount of user information retrieved via kubeconfig must be 1") + return diag.Errorf("incorrect amount of user information retrieved via kubeconfig must be 1") } if err := d.Set("cluster_ca_certificate", resp.Clusters[0].Cluster.CertificateAuthorityData); err != nil { - return fmt.Errorf("error setting `cluster_ca_certificate` for Karbon cluster (%s): %s", d.Id(), err) + return diag.Errorf("error setting `cluster_ca_certificate` for Karbon cluster (%s): %s", d.Id(), err) } if err := d.Set("cluster_url", resp.Clusters[0].Cluster.Server); err != nil { - return fmt.Errorf("error setting `cluster_url` for Karbon cluster (%s): %s", d.Id(), err) + return diag.Errorf("error setting `cluster_url` for Karbon cluster (%s): %s", d.Id(), err) } if err := d.Set("access_token", resp.Users[0].User.Token); err != nil { - return fmt.Errorf("error setting `access_token` for Karbon cluster (%s): %s", d.Id(), err) + return diag.Errorf("error setting `access_token` for Karbon cluster (%s): %s", d.Id(), err) } if err := d.Set("name", resp.Clusters[0].Name); err != nil { - return fmt.Errorf("error setting `name` for Karbon cluster (%s): %s", d.Id(), err) + return diag.Errorf("error setting `name` for Karbon cluster (%s): %s", d.Id(), err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_nutanix_karbon_cluster_kubeconfig_test.go b/nutanix/data_source_nutanix_karbon_cluster_kubeconfig_test.go index ddb6f7b44..c51afbe3c 100644 --- a/nutanix/data_source_nutanix_karbon_cluster_kubeconfig_test.go +++ b/nutanix/data_source_nutanix_karbon_cluster_kubeconfig_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixKarbonClusterKubeConfigDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_karbon_cluster_ssh.go b/nutanix/data_source_nutanix_karbon_cluster_ssh.go index 931ce1fb1..6cc76425a 100644 --- a/nutanix/data_source_nutanix_karbon_cluster_ssh.go +++ b/nutanix/data_source_nutanix_karbon_cluster_ssh.go @@ -1,23 +1,23 @@ package nutanix import ( - "errors" - "fmt" + "context" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/terraform-providers/terraform-provider-nutanix/client/karbon" ) func dataSourceNutanixKarbonClusterSSH() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixKarbonClusterSSHRead, + ReadContext: dataSourceNutanixKarbonClusterSSHRead, SchemaVersion: 1, Schema: KarbonClusterSSHConfigElementDataSourceMap(), } } -func dataSourceNutanixKarbonClusterSSHRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixKarbonClusterSSHRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).KarbonAPI setTimeout(meta) @@ -25,7 +25,7 @@ func dataSourceNutanixKarbonClusterSSHRead(d *schema.ResourceData, meta interfac karbonClusterID, iok := d.GetOk("karbon_cluster_id") karbonClusterNameInput, nok := d.GetOk("karbon_cluster_name") if !iok && !nok { - return errors.New("please provide one of karbon_cluster_id or karbon_cluster_name attributes") + return diag.Errorf("please provide one of karbon_cluster_id or karbon_cluster_name attributes") } var err error var resp *karbon.ClusterSSHconfig @@ -34,7 +34,7 @@ func dataSourceNutanixKarbonClusterSSHRead(d *schema.ResourceData, meta interfac var c *karbon.ClusterIntentResponse c, err = conn.Cluster.GetKarbonCluster(karbonClusterID.(string)) if err != nil { - return fmt.Errorf("unable to find cluster with id %s: %s", karbonClusterID, err) + return diag.Errorf("unable to find cluster with id %s: %s", karbonClusterID, err) } karbonClusterName = *c.Name } else { @@ -44,20 +44,20 @@ func dataSourceNutanixKarbonClusterSSHRead(d *schema.ResourceData, meta interfac resp, err = conn.Cluster.GetSSHConfigForKarbonCluster(karbonClusterName) if err != nil { d.SetId("") - return err + return diag.FromErr(err) } if err := d.Set("certificate", resp.Certificate); err != nil { - return fmt.Errorf("failed to set certificate output: %s", err) + return diag.Errorf("failed to set certificate output: %s", err) } if err := d.Set("expiry_time", resp.ExpiryTime); err != nil { - return fmt.Errorf("failed to set expiry_time output: %s", err) + return diag.Errorf("failed to set expiry_time output: %s", err) } if err := d.Set("private_key", resp.PrivateKey); err != nil { - return fmt.Errorf("failed to set private_key output: %s", err) + return diag.Errorf("failed to set private_key output: %s", err) } if err := d.Set("username", resp.Username); err != nil { - return fmt.Errorf("failed to set username output: %s", err) + return diag.Errorf("failed to set username output: %s", err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_nutanix_karbon_cluster_ssh_test.go b/nutanix/data_source_nutanix_karbon_cluster_ssh_test.go index d10a852a2..e4cf52997 100644 --- a/nutanix/data_source_nutanix_karbon_cluster_ssh_test.go +++ b/nutanix/data_source_nutanix_karbon_cluster_ssh_test.go @@ -3,8 +3,8 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixKarbonClusterSSHDataSource_basicx(t *testing.T) { diff --git a/nutanix/data_source_nutanix_karbon_cluster_test.go b/nutanix/data_source_nutanix_karbon_cluster_test.go index 128cc92a0..bc0299731 100644 --- a/nutanix/data_source_nutanix_karbon_cluster_test.go +++ b/nutanix/data_source_nutanix_karbon_cluster_test.go @@ -3,8 +3,8 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixKarbonClusterDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_karbon_clusters.go b/nutanix/data_source_nutanix_karbon_clusters.go index 15498e5cb..cb530f7fe 100644 --- a/nutanix/data_source_nutanix_karbon_clusters.go +++ b/nutanix/data_source_nutanix_karbon_clusters.go @@ -1,16 +1,17 @@ package nutanix import ( - "fmt" + "context" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixKarbonClusters() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixKarbonClustersRead, + ReadContext: dataSourceNutanixKarbonClustersRead, SchemaVersion: 1, Schema: map[string]*schema.Schema{ "clusters": { @@ -24,7 +25,7 @@ func dataSourceNutanixKarbonClusters() *schema.Resource { } } -func dataSourceNutanixKarbonClustersRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixKarbonClustersRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).KarbonAPI setTimeout(meta) @@ -40,20 +41,20 @@ func dataSourceNutanixKarbonClustersRead(d *schema.ResourceData, meta interface{ for k, v := range *resp { cluster := make(map[string]interface{}) if err != nil { - return fmt.Errorf("error searching for cluster via legacy API: %s", err) + return diag.Errorf("error searching for cluster via legacy API: %s", err) } karbonClusterName := *v.Name flattenedEtcdNodepool, err := flattenNodePools(d, conn, "etcd_node_pool", karbonClusterName, v.ETCDConfig.NodePools) if err != nil { - return err + return diag.FromErr(err) } flattenedWorkerNodepool, err := flattenNodePools(d, conn, "worker_node_pool", karbonClusterName, v.WorkerConfig.NodePools) if err != nil { - return err + return diag.FromErr(err) } flattenedMasterNodepool, err := flattenNodePools(d, conn, "master_node_pool", karbonClusterName, v.MasterConfig.NodePools) if err != nil { - return err + return diag.FromErr(err) } cluster["name"] = utils.StringValue(v.Name) @@ -73,7 +74,7 @@ func dataSourceNutanixKarbonClustersRead(d *schema.ResourceData, meta interface{ } if err := d.Set("clusters", clusters); err != nil { - return fmt.Errorf("failed to set clusters output: %s", err) + return diag.Errorf("failed to set clusters output: %s", err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_nutanix_karbon_clusters_test.go b/nutanix/data_source_nutanix_karbon_clusters_test.go index 26963ccb5..a986771ed 100644 --- a/nutanix/data_source_nutanix_karbon_clusters_test.go +++ b/nutanix/data_source_nutanix_karbon_clusters_test.go @@ -3,8 +3,8 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixKarbonClustersDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_karbon_private_registries.go b/nutanix/data_source_nutanix_karbon_private_registries.go index 6c25a1343..f397e4b4c 100644 --- a/nutanix/data_source_nutanix_karbon_private_registries.go +++ b/nutanix/data_source_nutanix_karbon_private_registries.go @@ -1,16 +1,17 @@ package nutanix import ( - "fmt" + "context" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixKarbonPrivateRegistries() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixKarbonPrivateRegistriesRead, + ReadContext: dataSourceNutanixKarbonPrivateRegistriesRead, SchemaVersion: 1, Schema: map[string]*schema.Schema{ "private_registries": { @@ -24,7 +25,7 @@ func dataSourceNutanixKarbonPrivateRegistries() *schema.Resource { } } -func dataSourceNutanixKarbonPrivateRegistriesRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixKarbonPrivateRegistriesRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).KarbonAPI setTimeout(meta) @@ -40,7 +41,7 @@ func dataSourceNutanixKarbonPrivateRegistriesRead(d *schema.ResourceData, meta i for k, v := range *resp { privateRegistry := make(map[string]interface{}) if err != nil { - return fmt.Errorf("error searching for private registry via legacy API: %s", err) + return diag.Errorf("error searching for private registry via legacy API: %s", err) } privateRegistry["name"] = utils.StringValue(v.Name) @@ -51,7 +52,7 @@ func dataSourceNutanixKarbonPrivateRegistriesRead(d *schema.ResourceData, meta i } if err := d.Set("private_registries", privateRegistries); err != nil { - return fmt.Errorf("failed to set private_registries output: %s", err) + return diag.Errorf("failed to set private_registries output: %s", err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_nutanix_karbon_private_registry.go b/nutanix/data_source_nutanix_karbon_private_registry.go index 32a6ffdd7..e8e61471c 100644 --- a/nutanix/data_source_nutanix_karbon_private_registry.go +++ b/nutanix/data_source_nutanix_karbon_private_registry.go @@ -1,22 +1,24 @@ package nutanix import ( + "context" "fmt" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/terraform-providers/terraform-provider-nutanix/client/karbon" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixKarbonPrivateRegistry() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixKarbonPrivateRegistryRead, + ReadContext: dataSourceNutanixKarbonPrivateRegistryRead, SchemaVersion: 1, Schema: KarbonPrivateRegistryDataSourceMap(), } } -func dataSourceNutanixKarbonPrivateRegistryRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixKarbonPrivateRegistryRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).KarbonAPI setTimeout(meta) @@ -24,7 +26,7 @@ func dataSourceNutanixKarbonPrivateRegistryRead(d *schema.ResourceData, meta int karbonPrivateRegistryID, iok := d.GetOk("private_registry_id") karbonPrivateRegistryName, nok := d.GetOk("private_registry_name") if !iok && !nok { - return fmt.Errorf("please provide one of private_registry_id or private_registry_name attributes") + return diag.Errorf("please provide one of private_registry_id or private_registry_name attributes") } var err error var resp *karbon.PrivateRegistryResponse @@ -37,17 +39,17 @@ func dataSourceNutanixKarbonPrivateRegistryRead(d *schema.ResourceData, meta int if err != nil { d.SetId("") - return err + return diag.FromErr(err) } uuid := utils.StringValue(resp.UUID) if err := d.Set("name", utils.StringValue(resp.Name)); err != nil { - return fmt.Errorf("error occurred while setting name: %s", err) + return diag.Errorf("error occurred while setting name: %s", err) } if err := d.Set("endpoint", utils.StringValue(resp.Endpoint)); err != nil { - return fmt.Errorf("error occurred while setting endpoint: %s", err) + return diag.Errorf("error occurred while setting endpoint: %s", err) } if err := d.Set("uuid", uuid); err != nil { - return fmt.Errorf("error occurred while setting endpoint: %s", err) + return diag.Errorf("error occurred while setting endpoint: %s", err) } d.SetId(uuid) diff --git a/nutanix/data_source_nutanix_network_security_rule.go b/nutanix/data_source_nutanix_network_security_rule.go index c1c5591c0..05c30a42b 100644 --- a/nutanix/data_source_nutanix_network_security_rule.go +++ b/nutanix/data_source_nutanix_network_security_rule.go @@ -1,18 +1,19 @@ package nutanix import ( - "fmt" + "context" "log" "strconv" "github.com/terraform-providers/terraform-provider-nutanix/utils" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceNutanixNetworkSecurityRule() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixNetworkSecurityRuleRead, + ReadContext: dataSourceNutanixNetworkSecurityRuleRead, SchemaVersion: 1, StateUpgraders: []schema.StateUpgrader{ { @@ -30,71 +31,34 @@ func dataSourceNutanixNetworkSecurityRule() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "allow_ipv6_traffic": { + Type: schema.TypeBool, + Computed: true, + }, + "is_policy_hitlog_enabled": { + Type: schema.TypeBool, + Computed: true, + }, "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - }, - "uuid": { - Type: schema.TypeString, - }, - "name": { - Type: schema.TypeString, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - }, - "uuid": { - Type: schema.TypeString, - }, - "name": { - Type: schema.TypeString, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -197,22 +161,8 @@ func dataSourceNutanixNetworkSecurityRule() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -357,21 +307,8 @@ func dataSourceNutanixNetworkSecurityRule() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -485,21 +422,8 @@ func dataSourceNutanixNetworkSecurityRule() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -644,21 +568,8 @@ func dataSourceNutanixNetworkSecurityRule() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -831,21 +742,8 @@ func dataSourceNutanixNetworkSecurityRule() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -990,21 +888,8 @@ func dataSourceNutanixNetworkSecurityRule() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -1031,7 +916,7 @@ func dataSourceNutanixNetworkSecurityRule() *schema.Resource { } } -func dataSourceNutanixNetworkSecurityRuleRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixNetworkSecurityRuleRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Reading Network Security Rule: %s", d.Get("name").(string)) // Get client connection @@ -1040,32 +925,32 @@ func dataSourceNutanixNetworkSecurityRuleRead(d *schema.ResourceData, meta inter networkSecurityRuleID, ok := d.GetOk("network_security_rule_id") if !ok { - return fmt.Errorf("please provide the required attribute network_security_rule_id") + return diag.Errorf("please provide the required attribute network_security_rule_id") } // Make request to the API resp, err := conn.V3.GetNetworkSecurityRule(networkSecurityRuleID.(string)) if err != nil { - return err + return diag.FromErr(err) } // set metadata values m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValues(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } d.Set("api_version", utils.StringValue(resp.APIVersion)) @@ -1073,11 +958,11 @@ func dataSourceNutanixNetworkSecurityRuleRead(d *schema.ResourceData, meta inter d.Set("description", utils.StringValue(resp.Spec.Description)) if resp.Status == nil { - return fmt.Errorf("error reading Status from network security rule %s", networkSecurityRuleID.(string)) + return diag.Errorf("error reading Status from network security rule %s", networkSecurityRuleID.(string)) } if resp.Status.Resources == nil { - return fmt.Errorf("error reading Status.Resources from network security rule %s", networkSecurityRuleID.(string)) + return diag.Errorf("error reading Status.Resources from network security rule %s", networkSecurityRuleID.(string)) } rules := resp.Status.Resources @@ -1092,7 +977,7 @@ func dataSourceNutanixNetworkSecurityRuleRead(d *schema.ResourceData, meta inter if rules.QuarantineRule != nil { if err := d.Set("quarantine_rule_action", utils.StringValue(rules.QuarantineRule.Action)); err != nil { - return err + return diag.FromErr(err) } if rules.QuarantineRule.OutboundAllowList != nil { @@ -1166,32 +1051,32 @@ func dataSourceNutanixNetworkSecurityRuleRead(d *schema.ResourceData, meta inter // Set quarantine_rule_outbound_allow_list if err := d.Set("quarantine_rule_outbound_allow_list", qroaList); err != nil { - return err + return diag.FromErr(err) } } if rules.QuarantineRule.TargetGroup != nil { if err := d.Set("quarantine_rule_target_group_default_internal_policy", utils.StringValue(rules.QuarantineRule.TargetGroup.DefaultInternalPolicy)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("quarantine_rule_target_group_peer_specification_type", utils.StringValue(rules.QuarantineRule.TargetGroup.PeerSpecificationType)); err != nil { - return err + return diag.FromErr(err) } if rules.QuarantineRule.TargetGroup.Filter != nil { v := rules.QuarantineRule.TargetGroup if v.Filter != nil { if err := d.Set("quarantine_rule_target_group_filter_kind_list", utils.StringValueSlice(v.Filter.KindList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("quarantine_rule_target_group_filter_type", utils.StringValue(v.Filter.Type)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("quarantine_rule_target_group_filter_params", expandFilterParams(v.Filter.Params)); err != nil { - return err + return diag.FromErr(err) } } } @@ -1276,49 +1161,49 @@ func dataSourceNutanixNetworkSecurityRuleRead(d *schema.ResourceData, meta inter // Set quarantine_rule_inbound_allow_list if err := d.Set("quarantine_rule_inbound_allow_list", qriaList); err != nil { - return err + return diag.FromErr(err) } } } else { if err := d.Set("quarantine_rule_inbound_allow_list", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("quarantine_rule_outbound_allow_list", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("quarantine_rule_target_group_filter_kind_list", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("quarantine_rule_target_group_filter_params", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } } if err := flattenNetworkRule("app_rule", rules.AppRule, d); err != nil { - return err + return diag.FromErr(err) } if err := flattenNetworkRule("ad_rule", rules.AdRule, d); err != nil { - return err + return diag.FromErr(err) } if rules.IsolationRule != nil { if err := d.Set("isolation_rule_action", utils.StringValue(rules.IsolationRule.Action)); err != nil { - return err + return diag.FromErr(err) } if rules.IsolationRule.FirstEntityFilter != nil { firstFilter := rules.IsolationRule.FirstEntityFilter if err := d.Set("isolation_rule_first_entity_filter_kind_list", utils.StringValueSlice(firstFilter.KindList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_first_entity_filter_type", utils.StringValue(firstFilter.Type)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_first_entity_filter_params", expandFilterParams(firstFilter.Params)); err != nil { - return err + return diag.FromErr(err) } } @@ -1326,27 +1211,27 @@ func dataSourceNutanixNetworkSecurityRuleRead(d *schema.ResourceData, meta inter secondFilter := rules.IsolationRule.SecondEntityFilter if err := d.Set("isolation_rule_second_entity_filter_kind_list", utils.StringValueSlice(secondFilter.KindList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_second_entity_filter_type", utils.StringValue(secondFilter.Type)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_second_entity_filter_params", expandFilterParams(secondFilter.Params)); err != nil { - return err + return diag.FromErr(err) } } } else { if err := d.Set("isolation_rule_first_entity_filter_kind_list", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_first_entity_filter_params", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_second_entity_filter_kind_list", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_second_entity_filter_params", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } } @@ -1355,7 +1240,7 @@ func dataSourceNutanixNetworkSecurityRuleRead(d *schema.ResourceData, meta inter return nil } -func resourceDatasourceNetworkSecurityRuleStateUpgradeV0(is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { +func resourceDatasourceNetworkSecurityRuleStateUpgradeV0(ctx context.Context, is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { log.Printf("[DEBUG] Entering resourceDatasourceNetworkSecurityRuleStateUpgradeV0") return resourceNutanixCategoriesMigrateState(is, meta) } @@ -1374,33 +1259,8 @@ func resourceNutanixDatasourceNetworkSecurityRuleResourceV0() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": { @@ -1411,35 +1271,15 @@ func resourceNutanixDatasourceNetworkSecurityRuleResourceV0() *schema.Resource { "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - }, - "uuid": { - Type: schema.TypeString, - }, - "name": { - Type: schema.TypeString, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - }, - "uuid": { - Type: schema.TypeString, - }, - "name": { - Type: schema.TypeString, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -1550,22 +1390,8 @@ func resourceNutanixDatasourceNetworkSecurityRuleResourceV0() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -1710,21 +1536,8 @@ func resourceNutanixDatasourceNetworkSecurityRuleResourceV0() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -1838,21 +1651,8 @@ func resourceNutanixDatasourceNetworkSecurityRuleResourceV0() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -1997,21 +1797,8 @@ func resourceNutanixDatasourceNetworkSecurityRuleResourceV0() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { diff --git a/nutanix/data_source_nutanix_network_security_rule_test.go b/nutanix/data_source_nutanix_network_security_rule_test.go index 6732085dc..d932ecea1 100644 --- a/nutanix/data_source_nutanix_network_security_rule_test.go +++ b/nutanix/data_source_nutanix_network_security_rule_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixNetworkSecurityRuleDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_permission.go b/nutanix/data_source_nutanix_permission.go index 303119065..30f295e63 100644 --- a/nutanix/data_source_nutanix_permission.go +++ b/nutanix/data_source_nutanix_permission.go @@ -1,16 +1,18 @@ package nutanix import ( + "context" "fmt" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixPermission() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixPermissionRead, + ReadContext: dataSourceNutanixPermissionRead, Schema: map[string]*schema.Schema{ "permission_id": { Type: schema.TypeString, @@ -29,78 +31,23 @@ func dataSourceNutanixPermission() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -126,7 +73,6 @@ func dataSourceNutanixPermission() *schema.Resource { "fields": { Type: schema.TypeList, Computed: true, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "field_mode": { @@ -147,7 +93,7 @@ func dataSourceNutanixPermission() *schema.Resource { } } -func dataSourceNutanixPermissionRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixPermissionRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API @@ -155,7 +101,7 @@ func dataSourceNutanixPermissionRead(d *schema.ResourceData, meta interface{}) e permissionName, rnOk := d.GetOk("permission_name") if !iok && !rnOk { - return fmt.Errorf("please provide `permission_id` or `permission_name`") + return diag.Errorf("please provide `permission_id` or `permission_name`") } var err error @@ -169,47 +115,47 @@ func dataSourceNutanixPermissionRead(d *schema.ResourceData, meta interface{}) e } if err != nil { - return err + return diag.FromErr(err) } m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValues(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } if status := resp.Status; status != nil { if err := d.Set("name", utils.StringValue(resp.Status.Name)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("description", utils.StringValue(resp.Status.Description)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("state", utils.StringValue(resp.Status.State)); err != nil { - return err + return diag.FromErr(err) } if res := status.Resources; res != nil { if err := d.Set("operation", utils.StringValue(res.Operation)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("kind", utils.StringValue(res.Kind)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("fields", flattenFieldsPermission(res.Fields)); err != nil { - return err + return diag.FromErr(err) } } } diff --git a/nutanix/data_source_nutanix_permission_test.go b/nutanix/data_source_nutanix_permission_test.go index d9646201a..60a457ee2 100644 --- a/nutanix/data_source_nutanix_permission_test.go +++ b/nutanix/data_source_nutanix_permission_test.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixPermissionDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_permissions.go b/nutanix/data_source_nutanix_permissions.go index 902115353..f0d8b5833 100644 --- a/nutanix/data_source_nutanix_permissions.go +++ b/nutanix/data_source_nutanix_permissions.go @@ -1,16 +1,18 @@ package nutanix import ( + "context" "log" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixPermissions() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixPermissionsRead, + ReadContext: dataSourceNutanixPermissionsRead, Schema: map[string]*schema.Schema{ "api_version": { Type: schema.TypeString, @@ -20,7 +22,6 @@ func dataSourceNutanixPermissions() *schema.Resource { Type: schema.TypeSet, Optional: true, Computed: true, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "filter": { @@ -68,78 +69,23 @@ func dataSourceNutanixPermissions() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -165,7 +111,6 @@ func dataSourceNutanixPermissions() *schema.Resource { "fields": { Type: schema.TypeList, Computed: true, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "field_mode": { @@ -189,7 +134,7 @@ func dataSourceNutanixPermissions() *schema.Resource { } } -func dataSourceNutanixPermissionsRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixPermissionsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Reading Permissions: %s", d.Id()) // Get client connection @@ -197,11 +142,11 @@ func dataSourceNutanixPermissionsRead(d *schema.ResourceData, meta interface{}) resp, err := conn.V3.ListAllPermission("") if err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } entities := make([]map[string]interface{}, len(resp.Entities)) @@ -226,7 +171,7 @@ func dataSourceNutanixPermissionsRead(d *schema.ResourceData, meta interface{}) } if err := d.Set("entities", entities); err != nil { - return err + return diag.FromErr(err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_nutanix_permissions_test.go b/nutanix/data_source_nutanix_permissions_test.go index a543cf7ac..8e35ec8d6 100644 --- a/nutanix/data_source_nutanix_permissions_test.go +++ b/nutanix/data_source_nutanix_permissions_test.go @@ -3,7 +3,7 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixPermissionsDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_project.go b/nutanix/data_source_nutanix_project.go index 6ece0bd76..a4903d8ab 100644 --- a/nutanix/data_source_nutanix_project.go +++ b/nutanix/data_source_nutanix_project.go @@ -1,17 +1,19 @@ package nutanix import ( + "context" "fmt" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceNutanixProject() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixProjectRead, + ReadContext: dataSourceNutanixProjectRead, Schema: map[string]*schema.Schema{ "project_id": { Type: schema.TypeString, @@ -114,21 +116,8 @@ func dataSourceNutanixProject() *schema.Resource { "default_subnet_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "user_reference_list": { @@ -213,73 +202,22 @@ func dataSourceNutanixProject() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -291,14 +229,14 @@ func dataSourceNutanixProject() *schema.Resource { } } -func dataSourceNutanixProjectRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixProjectRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API id, iok := d.GetOk("project_id") name, nOk := d.GetOk("project_name") if !iok && !nOk { - return fmt.Errorf("please provide `project_id` or `project_name`") + return diag.Errorf("please provide `project_id` or `project_name`") } var err error @@ -312,62 +250,62 @@ func dataSourceNutanixProjectRead(d *schema.ResourceData, meta interface{}) erro } if err != nil { - return err + return diag.FromErr(err) } m, c := setRSEntityMetadata(project.Metadata) if err := d.Set("name", project.Status.Name); err != nil { - return fmt.Errorf("error setting `name` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `name` for Project(%s): %s", d.Id(), err) } if err := d.Set("description", project.Status.Descripion); err != nil { - return fmt.Errorf("error setting `description` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `description` for Project(%s): %s", d.Id(), err) } if err := d.Set("state", project.Status.State); err != nil { - return fmt.Errorf("error setting `state` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `state` for Project(%s): %s", d.Id(), err) } if err := d.Set("is_default", project.Status.Resources.IsDefault); err != nil { - return fmt.Errorf("error setting `is_default` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `is_default` for Project(%s): %s", d.Id(), err) } if err := d.Set("resource_domain", flattenResourceDomain(project.Spec.Resources.ResourceDomain)); err != nil { - return fmt.Errorf("error setting `resource_domain` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `resource_domain` for Project(%s): %s", d.Id(), err) } if err := d.Set("account_reference_list", flattenReferenceList(project.Spec.Resources.AccountReferenceList)); err != nil { - return fmt.Errorf("error setting `account_reference_list` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `account_reference_list` for Project(%s): %s", d.Id(), err) } if err := d.Set("environment_reference_list", flattenReferenceList(project.Spec.Resources.EnvironmentReferenceList)); err != nil { - return fmt.Errorf("error setting `environment_reference_list` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `environment_reference_list` for Project(%s): %s", d.Id(), err) } if err := d.Set("default_subnet_reference", flattenReference(project.Spec.Resources.DefaultSubnetReference)); err != nil { - return fmt.Errorf("error setting `default_subnet_reference` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `default_subnet_reference` for Project(%s): %s", d.Id(), err) } if err := d.Set("user_reference_list", flattenReferenceList(project.Spec.Resources.UserReferenceList)); err != nil { - return fmt.Errorf("error setting `user_reference_list` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `user_reference_list` for Project(%s): %s", d.Id(), err) } if err := d.Set("external_user_group_reference_list", flattenReferenceList(project.Spec.Resources.ExternalUserGroupReferenceList)); err != nil { - return fmt.Errorf("error setting `external_user_group_reference_list` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `external_user_group_reference_list` for Project(%s): %s", d.Id(), err) } if err := d.Set("subnet_reference_list", flattenReferenceList(project.Spec.Resources.SubnetReferenceList)); err != nil { - return fmt.Errorf("error setting `subnet_reference_list` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `subnet_reference_list` for Project(%s): %s", d.Id(), err) } if err := d.Set("external_network_list", flattenExternalNetworkListReferenceList(project.Spec.Resources.ExternalNetworkList)); err != nil { - return fmt.Errorf("error setting `external_network_list` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `external_network_list` for Project(%s): %s", d.Id(), err) } if err := d.Set("metadata", m); err != nil { - return fmt.Errorf("error setting `metadata` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `metadata` for Project(%s): %s", d.Id(), err) } if err := d.Set("project_reference", flattenReferenceValues(project.Metadata.ProjectReference)); err != nil { - return fmt.Errorf("error setting `project_reference` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `project_reference` for Project(%s): %s", d.Id(), err) } if err := d.Set("owner_reference", flattenReferenceValues(project.Metadata.OwnerReference)); err != nil { - return fmt.Errorf("error setting `owner_reference` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `owner_reference` for Project(%s): %s", d.Id(), err) } if err := d.Set("categories", c); err != nil { - return fmt.Errorf("error setting `categories` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `categories` for Project(%s): %s", d.Id(), err) } if err := d.Set("api_version", project.APIVersion); err != nil { - return fmt.Errorf("error setting `api_version` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `api_version` for Project(%s): %s", d.Id(), err) } d.SetId(utils.StringValue(project.Metadata.UUID)) diff --git a/nutanix/data_source_nutanix_project_test.go b/nutanix/data_source_nutanix_project_test.go index e74b342a9..213744ef1 100644 --- a/nutanix/data_source_nutanix_project_test.go +++ b/nutanix/data_source_nutanix_project_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/spf13/cast" ) diff --git a/nutanix/data_source_nutanix_projects.go b/nutanix/data_source_nutanix_projects.go index 4ac5c9c08..7c670d177 100644 --- a/nutanix/data_source_nutanix_projects.go +++ b/nutanix/data_source_nutanix_projects.go @@ -1,15 +1,18 @@ package nutanix import ( - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "context" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixProjects() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixProjectsRead, + ReadContext: dataSourceNutanixProjectsRead, Schema: map[string]*schema.Schema{ "api_version": { Type: schema.TypeString, @@ -111,21 +114,8 @@ func dataSourceNutanixProjects() *schema.Resource { "default_subnet_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "user_reference_list": { @@ -210,73 +200,22 @@ func dataSourceNutanixProjects() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -291,7 +230,7 @@ func dataSourceNutanixProjects() *schema.Resource { } } -func dataSourceNutanixProjectsRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixProjectsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API req := &v3.DSMetadata{} @@ -303,14 +242,14 @@ func dataSourceNutanixProjectsRead(d *schema.ResourceData, meta interface{}) err resp, err := conn.V3.ListAllProject(utils.StringValue(req.Filter)) if err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("entities", flattenProjectEntities(resp.Entities)); err != nil { - return err + return diag.FromErr(err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_nutanix_projects_test.go b/nutanix/data_source_nutanix_projects_test.go index d68eda812..4ab6913d6 100644 --- a/nutanix/data_source_nutanix_projects_test.go +++ b/nutanix/data_source_nutanix_projects_test.go @@ -3,7 +3,7 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixProjectsDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_role.go b/nutanix/data_source_nutanix_role.go index 3e53ca742..3a258aca2 100644 --- a/nutanix/data_source_nutanix_role.go +++ b/nutanix/data_source_nutanix_role.go @@ -1,16 +1,18 @@ package nutanix import ( + "context" "fmt" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixRole() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixRoleRead, + ReadContext: dataSourceNutanixRoleRead, Schema: map[string]*schema.Schema{ "role_id": { Type: schema.TypeString, @@ -29,78 +31,23 @@ func dataSourceNutanixRole() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -139,7 +86,7 @@ func dataSourceNutanixRole() *schema.Resource { } } -func dataSourceNutanixRoleRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixRoleRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API @@ -147,7 +94,7 @@ func dataSourceNutanixRoleRead(d *schema.ResourceData, meta interface{}) error { roleName, rnOk := d.GetOk("role_name") if !iok && !rnOk { - return fmt.Errorf("please provide `role_id` or `role_name`") + return diag.Errorf("please provide `role_id` or `role_name`") } var err error @@ -161,41 +108,41 @@ func dataSourceNutanixRoleRead(d *schema.ResourceData, meta interface{}) error { } if err != nil { - return err + return diag.FromErr(err) } m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValues(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } if status := resp.Status; status != nil { if err := d.Set("name", utils.StringValue(resp.Status.Name)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("description", utils.StringValue(resp.Status.Description)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("state", utils.StringValue(resp.Status.State)); err != nil { - return err + return diag.FromErr(err) } if res := status.Resources; res != nil { if err := d.Set("permission_reference_list", flattenArrayReferenceValues(status.Resources.PermissionReferenceList)); err != nil { - return err + return diag.FromErr(err) } } } diff --git a/nutanix/data_source_nutanix_role_test.go b/nutanix/data_source_nutanix_role_test.go index 66957a723..43b5e776d 100644 --- a/nutanix/data_source_nutanix_role_test.go +++ b/nutanix/data_source_nutanix_role_test.go @@ -4,9 +4,9 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixRoleDataSourceByID_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_roles.go b/nutanix/data_source_nutanix_roles.go index 37569dfe5..50ba595c9 100644 --- a/nutanix/data_source_nutanix_roles.go +++ b/nutanix/data_source_nutanix_roles.go @@ -1,15 +1,18 @@ package nutanix import ( - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "context" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixRoles() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixRolesRead, + ReadContext: dataSourceNutanixRolesRead, Schema: map[string]*schema.Schema{ "api_version": { Type: schema.TypeString, @@ -31,78 +34,23 @@ func dataSourceNutanixRoles() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -183,7 +131,7 @@ func dataSourceNutanixRoles() *schema.Resource { } } -func dataSourceNutanixRolesRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixRolesRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API req := &v3.DSMetadata{} @@ -195,11 +143,11 @@ func dataSourceNutanixRolesRead(d *schema.ResourceData, meta interface{}) error resp, err := conn.V3.ListAllRole(utils.StringValue(req.Filter)) if err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } entities := make([]map[string]interface{}, len(resp.Entities)) @@ -227,7 +175,7 @@ func dataSourceNutanixRolesRead(d *schema.ResourceData, meta interface{}) error } if err := d.Set("entities", entities); err != nil { - return err + return diag.FromErr(err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_nutanix_roles_test.go b/nutanix/data_source_nutanix_roles_test.go index eeb64cde9..14cbf4016 100644 --- a/nutanix/data_source_nutanix_roles_test.go +++ b/nutanix/data_source_nutanix_roles_test.go @@ -3,7 +3,7 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixRolesDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_subnet.go b/nutanix/data_source_nutanix_subnet.go index 5172670eb..f5f8e88b7 100644 --- a/nutanix/data_source_nutanix_subnet.go +++ b/nutanix/data_source_nutanix_subnet.go @@ -1,10 +1,12 @@ package nutanix import ( + "context" "fmt" "log" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/terraform-providers/terraform-provider-nutanix/client" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" @@ -12,7 +14,7 @@ import ( func dataSourceNutanixSubnet() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixSubnetRead, + ReadContext: dataSourceNutanixSubnetRead, SchemaVersion: 1, StateUpgraders: []schema.StateUpgrader{ { @@ -40,78 +42,23 @@ func dataSourceNutanixSubnet() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -129,21 +76,8 @@ func dataSourceNutanixSubnet() *schema.Resource { "availability_zone_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "message_list": { @@ -197,21 +131,8 @@ func dataSourceNutanixSubnet() *schema.Resource { "dhcp_server_address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "dhcp_server_address_port": { @@ -226,21 +147,8 @@ func dataSourceNutanixSubnet() *schema.Resource { "dhcp_options": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "boot_file_name": { - Type: schema.TypeString, - Computed: true, - }, - "domain_name": { - Type: schema.TypeString, - Computed: true, - }, - "tftp_server_name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "dhcp_domain_name_server_list": { @@ -260,21 +168,8 @@ func dataSourceNutanixSubnet() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -312,7 +207,7 @@ func findSubnetByName(conn *v3.Client, name string, clientSideFilters []*client. return found[0], nil } -func dataSourceNutanixSubnetRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixSubnetRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API @@ -338,7 +233,7 @@ func dataSourceNutanixSubnetRead(d *schema.ResourceData, meta interface{}) error clientSideFilters = ReplaceFilterPrefixes(clientSideFilters, mappings) if !iok && !nok { - return fmt.Errorf("please provide one of subnet_id or subnet_name attributes") + return diag.Errorf("please provide one of subnet_id or subnet_name attributes") } var reqErr error @@ -351,28 +246,28 @@ func dataSourceNutanixSubnetRead(d *schema.ResourceData, meta interface{}) error } if reqErr != nil { - return reqErr + return diag.FromErr(reqErr) } m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValues(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("availability_zone_reference", flattenReferenceValues(resp.Status.AvailabilityZoneReference)); err != nil { - return err + return diag.FromErr(err) } if err := flattenClusterReference(resp.Status.ClusterReference, d); err != nil { - return err + return diag.FromErr(err) } dgIP := "" @@ -420,24 +315,19 @@ func dataSourceNutanixSubnetRead(d *schema.ResourceData, meta interface{}) error } if err := d.Set("dhcp_server_address", dhcpSA); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("ip_config_pool_list_ranges", ipcpl); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("dhcp_options", dOptions); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("dhcp_domain_name_server_list", dnsList); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("dhcp_domain_search_list", dsList); err != nil { - return err - } - - //cluster reference is not there for overlay subnet - if resp.Status.ClusterReference != nil { - d.Set("cluster_reference_name", utils.StringValue(resp.Status.ClusterReference.Name)) + return diag.FromErr(err) } d.Set("api_version", utils.StringValue(resp.APIVersion)) @@ -458,7 +348,7 @@ func dataSourceNutanixSubnetRead(d *schema.ResourceData, meta interface{}) error return nil } -func resourceDatasourceSubnetStateUpgradeV0(is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { +func resourceDatasourceSubnetStateUpgradeV0(ctx context.Context, is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { log.Printf("[DEBUG] Entering resourceDatasourceSubnetStateUpgradeV0") return resourceNutanixCategoriesMigrateState(is, meta) } @@ -483,37 +373,8 @@ func resourceNutanixDatasourceSubnetResourceV0() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": { @@ -524,41 +385,15 @@ func resourceNutanixDatasourceSubnetResourceV0() *schema.Resource { "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -576,21 +411,8 @@ func resourceNutanixDatasourceSubnetResourceV0() *schema.Resource { "availability_zone_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "message_list": { @@ -644,21 +466,8 @@ func resourceNutanixDatasourceSubnetResourceV0() *schema.Resource { "dhcp_server_address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "dhcp_server_address_port": { @@ -673,21 +482,8 @@ func resourceNutanixDatasourceSubnetResourceV0() *schema.Resource { "dhcp_options": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "boot_file_name": { - Type: schema.TypeString, - Computed: true, - }, - "domain_name": { - Type: schema.TypeString, - Computed: true, - }, - "tftp_server_name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "dhcp_domain_name_server_list": { @@ -707,21 +503,8 @@ func resourceNutanixDatasourceSubnetResourceV0() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, diff --git a/nutanix/data_source_nutanix_subnet_test.go b/nutanix/data_source_nutanix_subnet_test.go index 0591fc9c4..2079ef288 100644 --- a/nutanix/data_source_nutanix_subnet_test.go +++ b/nutanix/data_source_nutanix_subnet_test.go @@ -5,7 +5,7 @@ import ( "regexp" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixSubnetDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_subnets.go b/nutanix/data_source_nutanix_subnets.go index b6df6c724..cf1d6cb89 100644 --- a/nutanix/data_source_nutanix_subnets.go +++ b/nutanix/data_source_nutanix_subnets.go @@ -1,15 +1,18 @@ package nutanix import ( - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "context" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixSubnets() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixSubnetsRead, + ReadContext: dataSourceNutanixSubnetsRead, Schema: map[string]*schema.Schema{ "api_version": { Type: schema.TypeString, @@ -35,78 +38,23 @@ func dataSourceNutanixSubnets() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -124,41 +72,15 @@ func dataSourceNutanixSubnets() *schema.Resource { "availability_zone_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "message_list": { @@ -212,21 +134,8 @@ func dataSourceNutanixSubnets() *schema.Resource { "dhcp_server_address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "dhcp_server_address_port": { @@ -241,21 +150,8 @@ func dataSourceNutanixSubnets() *schema.Resource { "dhcp_options": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "boot_file_name": { - Type: schema.TypeString, - Computed: true, - }, - "domain_name": { - Type: schema.TypeString, - Computed: true, - }, - "tftp_server_name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "dhcp_domain_name_server_list": { @@ -275,21 +171,8 @@ func dataSourceNutanixSubnets() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -338,7 +221,7 @@ func dataSourceNutanixSubnets() *schema.Resource { } } -func dataSourceNutanixSubnetsRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixSubnetsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API req := &v3.DSMetadata{} @@ -350,11 +233,11 @@ func dataSourceNutanixSubnetsRead(d *schema.ResourceData, meta interface{}) erro resp, err := conn.V3.ListAllSubnet(utils.StringValue(req.Filter), nil) if err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } entities := make([]map[string]interface{}, len(resp.Entities)) @@ -440,7 +323,7 @@ func dataSourceNutanixSubnetsRead(d *schema.ResourceData, meta interface{}) erro } if err := d.Set("entities", entities); err != nil { - return err + return diag.FromErr(err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_nutanix_subnets_test.go b/nutanix/data_source_nutanix_subnets_test.go index 01f3a6446..9e53d2ef3 100644 --- a/nutanix/data_source_nutanix_subnets_test.go +++ b/nutanix/data_source_nutanix_subnets_test.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixSubnetsDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_user.go b/nutanix/data_source_nutanix_user.go index 0903809ae..fcc142c8a 100644 --- a/nutanix/data_source_nutanix_user.go +++ b/nutanix/data_source_nutanix_user.go @@ -1,18 +1,20 @@ package nutanix import ( + "context" "fmt" "log" "strings" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixUser() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixUserRead, + ReadContext: dataSourceNutanixUserRead, Schema: map[string]*schema.Schema{ "user_id": { Type: schema.TypeString, @@ -31,34 +33,8 @@ func dataSourceNutanixUser() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -66,46 +42,19 @@ func dataSourceNutanixUser() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "directory_service_user": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -116,7 +65,6 @@ func dataSourceNutanixUser() *schema.Resource { }, "directory_service_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -144,7 +92,6 @@ func dataSourceNutanixUser() *schema.Resource { }, "identity_provider_user": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -154,7 +101,6 @@ func dataSourceNutanixUser() *schema.Resource { }, "identity_provider_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -232,7 +178,7 @@ func dataSourceNutanixUser() *schema.Resource { } } -func dataSourceNutanixUserRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixUserRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Reading User: %s", d.Id()) // Get client connection @@ -242,7 +188,7 @@ func dataSourceNutanixUserRead(d *schema.ResourceData, meta interface{}) error { name, nok := d.GetOk("user_name") if !iok && !nok { - return fmt.Errorf("please provide one of user_id or user_name attributes") + return diag.Errorf("please provide one of user_id or user_name attributes") } var reqErr error @@ -258,52 +204,52 @@ func dataSourceNutanixUserRead(d *schema.ResourceData, meta interface{}) error { if strings.Contains(fmt.Sprint(reqErr), "ENTITY_NOT_FOUND") { d.SetId("") } - return fmt.Errorf("error reading user with error %s", reqErr) + return diag.Errorf("error reading user with error %s", reqErr) } m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return fmt.Errorf("error setting metadata for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting metadata for user UUID(%s), %s", d.Id(), err) } if err := d.Set("categories", c); err != nil { - return fmt.Errorf("error setting categories for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting categories for user UUID(%s), %s", d.Id(), err) } if err := d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return fmt.Errorf("error setting owner_reference for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting owner_reference for user UUID(%s), %s", d.Id(), err) } d.Set("api_version", utils.StringValue(resp.APIVersion)) - d.Set("name", utils.StringValue(resp.Status.Name)) + d.Set("user_name", utils.StringValue(resp.Status.Name)) if err := d.Set("state", resp.Status.State); err != nil { - return fmt.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) } if err := d.Set("directory_service_user", flattenDirectoryServiceUser(resp.Status.Resources.DirectoryServiceUser)); err != nil { - return fmt.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) } if err := d.Set("identity_provider_user", flattenIdentityProviderUser(resp.Status.Resources.IdentityProviderUser)); err != nil { - return fmt.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) } if err := d.Set("user_type", resp.Status.Resources.UserType); err != nil { - return fmt.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) } if err := d.Set("display_name", resp.Status.Resources.DisplayName); err != nil { - return fmt.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) } if err := d.Set("project_reference_list", flattenArrayReferenceValues(resp.Status.Resources.ProjectsReferenceList)); err != nil { - return fmt.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) } refe := flattenArrayReferenceValues(resp.Status.Resources.AccessControlPolicyReferenceList) if err := d.Set("access_control_policy_reference_list", refe); err != nil { - return fmt.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) } d.SetId(*resp.Metadata.UUID) diff --git a/nutanix/data_source_nutanix_user_group.go b/nutanix/data_source_nutanix_user_group.go index 7c4c9ec64..1d4b6c915 100644 --- a/nutanix/data_source_nutanix_user_group.go +++ b/nutanix/data_source_nutanix_user_group.go @@ -1,18 +1,20 @@ package nutanix import ( + "context" "fmt" "log" "strings" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixUserGroup() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixUserGroupRead, + ReadContext: dataSourceNutanixUserGroupRead, Schema: map[string]*schema.Schema{ "user_group_id": { Type: schema.TypeString, @@ -36,34 +38,8 @@ func dataSourceNutanixUserGroup() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -71,41 +47,15 @@ func dataSourceNutanixUserGroup() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "user_group_type": { @@ -118,7 +68,6 @@ func dataSourceNutanixUserGroup() *schema.Resource { }, "directory_service_user_group": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -128,7 +77,6 @@ func dataSourceNutanixUserGroup() *schema.Resource { }, "directory_service_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -202,7 +150,7 @@ func dataSourceNutanixUserGroup() *schema.Resource { } } -func dataSourceNutanixUserGroupRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixUserGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Reading Group: %s", d.Id()) // Get client connection @@ -213,7 +161,7 @@ func dataSourceNutanixUserGroupRead(d *schema.ResourceData, meta interface{}) er dname, dnok := d.GetOk("user_group_distinguished_name") if !iok && !nok && !dnok { - return fmt.Errorf("please provide one of user_group_id, user_group_distinguished_name or user_group_name attributes") + return diag.Errorf("please provide one of user_group_id, user_group_distinguished_name or user_group_name attributes") } var reqErr error @@ -235,48 +183,47 @@ func dataSourceNutanixUserGroupRead(d *schema.ResourceData, meta interface{}) er if strings.Contains(fmt.Sprint(reqErr), "ENTITY_NOT_FOUND") { d.SetId("") } - return fmt.Errorf("error reading group with error %s", reqErr) + return diag.Errorf("error reading group with error %s", reqErr) } m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return fmt.Errorf("error setting metadata for group UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting metadata for group UUID(%s), %s", d.Id(), err) } if err := d.Set("categories", c); err != nil { - return fmt.Errorf("error setting categories for group UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting categories for group UUID(%s), %s", d.Id(), err) } if err := d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return fmt.Errorf("error setting owner_reference for group UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting owner_reference for group UUID(%s), %s", d.Id(), err) } d.Set("api_version", utils.StringValue(resp.APIVersion)) - d.Set("name", utils.StringValue(resp.Status.Resources.DisplayName)) if err := d.Set("state", resp.Status.State); err != nil { - return fmt.Errorf("error setting state for group UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for group UUID(%s), %s", d.Id(), err) } if err := d.Set("directory_service_user_group", flattenDirectoryServiceUserGroup(resp.Status.Resources.DirectoryServiceUserGroup)); err != nil { - return fmt.Errorf("error setting state for group UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for group UUID(%s), %s", d.Id(), err) } if err := d.Set("user_group_type", resp.Status.Resources.UserGroupType); err != nil { - return fmt.Errorf("error setting state for group UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for group UUID(%s), %s", d.Id(), err) } if err := d.Set("display_name", resp.Status.Resources.DisplayName); err != nil { - return fmt.Errorf("error setting state for group UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for group UUID(%s), %s", d.Id(), err) } if err := d.Set("project_reference_list", flattenArrayReferenceValues(resp.Status.Resources.ProjectsReferenceList)); err != nil { - return fmt.Errorf("error setting state for group UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for group UUID(%s), %s", d.Id(), err) } refe := flattenArrayReferenceValues(resp.Status.Resources.AccessControlPolicyReferenceList) if err := d.Set("access_control_policy_reference_list", refe); err != nil { - return fmt.Errorf("error setting state for group UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for group UUID(%s), %s", d.Id(), err) } d.SetId(*resp.Metadata.UUID) diff --git a/nutanix/data_source_nutanix_user_group_test.go b/nutanix/data_source_nutanix_user_group_test.go index 729cca300..f4fb41c91 100644 --- a/nutanix/data_source_nutanix_user_group_test.go +++ b/nutanix/data_source_nutanix_user_group_test.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixUserGroupDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_user_groups.go b/nutanix/data_source_nutanix_user_groups.go index ca03e83e0..be16847f5 100644 --- a/nutanix/data_source_nutanix_user_groups.go +++ b/nutanix/data_source_nutanix_user_groups.go @@ -1,17 +1,19 @@ package nutanix import ( + "context" "log" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixUserGroups() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixUserGroupsRead, + ReadContext: dataSourceNutanixUserGroupsRead, Schema: map[string]*schema.Schema{ "api_version": { Type: schema.TypeString, @@ -21,7 +23,6 @@ func dataSourceNutanixUserGroups() *schema.Resource { Type: schema.TypeSet, Optional: true, Computed: true, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "filter": { @@ -69,34 +70,8 @@ func dataSourceNutanixUserGroups() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -104,41 +79,15 @@ func dataSourceNutanixUserGroups() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "user_group_type": { @@ -151,7 +100,6 @@ func dataSourceNutanixUserGroups() *schema.Resource { }, "directory_service_user_group": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -161,7 +109,6 @@ func dataSourceNutanixUserGroups() *schema.Resource { }, "directory_service_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -238,7 +185,7 @@ func dataSourceNutanixUserGroups() *schema.Resource { } } -func dataSourceNutanixUserGroupsRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixUserGroupsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Reading User Groups: %s", d.Id()) // Get client connection @@ -253,11 +200,11 @@ func dataSourceNutanixUserGroupsRead(d *schema.ResourceData, meta interface{}) e resp, err := conn.V3.ListAllUserGroup(utils.StringValue(req.Filter)) if err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } entities := make([]map[string]interface{}, len(resp.Entities)) @@ -282,7 +229,7 @@ func dataSourceNutanixUserGroupsRead(d *schema.ResourceData, meta interface{}) e } if err := d.Set("entities", entities); err != nil { - return err + return diag.FromErr(err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_nutanix_user_groups_test.go b/nutanix/data_source_nutanix_user_groups_test.go index 987059799..845290999 100644 --- a/nutanix/data_source_nutanix_user_groups_test.go +++ b/nutanix/data_source_nutanix_user_groups_test.go @@ -3,7 +3,7 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixUserGroupsDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_user_test.go b/nutanix/data_source_nutanix_user_test.go index 2ab165da4..f3913b60a 100644 --- a/nutanix/data_source_nutanix_user_test.go +++ b/nutanix/data_source_nutanix_user_test.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixUserDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_users.go b/nutanix/data_source_nutanix_users.go index debb2c7bd..843395213 100644 --- a/nutanix/data_source_nutanix_users.go +++ b/nutanix/data_source_nutanix_users.go @@ -1,17 +1,19 @@ package nutanix import ( + "context" "log" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixUsers() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixUsersRead, + ReadContext: dataSourceNutanixUsersRead, Schema: map[string]*schema.Schema{ "api_version": { Type: schema.TypeString, @@ -21,7 +23,6 @@ func dataSourceNutanixUsers() *schema.Resource { Type: schema.TypeSet, Optional: true, Computed: true, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "filter": { @@ -73,34 +74,8 @@ func dataSourceNutanixUsers() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -108,46 +83,19 @@ func dataSourceNutanixUsers() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "directory_service_user": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -158,7 +106,6 @@ func dataSourceNutanixUsers() *schema.Resource { }, "directory_service_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -186,7 +133,6 @@ func dataSourceNutanixUsers() *schema.Resource { }, "identity_provider_user": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -196,7 +142,6 @@ func dataSourceNutanixUsers() *schema.Resource { }, "identity_provider_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -277,7 +222,7 @@ func dataSourceNutanixUsers() *schema.Resource { } } -func dataSourceNutanixUsersRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixUsersRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Reading User: %s", d.Id()) // Get client connection @@ -292,11 +237,11 @@ func dataSourceNutanixUsersRead(d *schema.ResourceData, meta interface{}) error resp, err := conn.V3.ListAllUser(utils.StringValue(req.Filter)) if err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } entities := make([]map[string]interface{}, len(resp.Entities)) @@ -323,7 +268,7 @@ func dataSourceNutanixUsersRead(d *schema.ResourceData, meta interface{}) error } if err := d.Set("entities", entities); err != nil { - return err + return diag.FromErr(err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_nutanix_users_test.go b/nutanix/data_source_nutanix_users_test.go index 7fc17a30b..6d648d950 100644 --- a/nutanix/data_source_nutanix_users_test.go +++ b/nutanix/data_source_nutanix_users_test.go @@ -3,7 +3,7 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixUsersDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_nutanix_virtual_machine.go b/nutanix/data_source_nutanix_virtual_machine.go index cb84ca9e7..ad0f8db3e 100644 --- a/nutanix/data_source_nutanix_virtual_machine.go +++ b/nutanix/data_source_nutanix_virtual_machine.go @@ -1,18 +1,19 @@ package nutanix import ( - "fmt" + "context" "log" "strconv" "github.com/terraform-providers/terraform-provider-nutanix/utils" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceNutanixVirtualMachine() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixVirtualMachineRead, + ReadContext: dataSourceNutanixVirtualMachineRead, SchemaVersion: 1, StateUpgraders: []schema.StateUpgrader{ { @@ -29,78 +30,23 @@ func dataSourceNutanixVirtualMachine() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "api_version": { @@ -118,21 +64,8 @@ func dataSourceNutanixVirtualMachine() *schema.Resource { "availability_zone_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_uuid": { @@ -171,21 +104,8 @@ func dataSourceNutanixVirtualMachine() *schema.Resource { "host_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "hypervisor_type": { @@ -254,21 +174,8 @@ func dataSourceNutanixVirtualMachine() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "subnet_uuid": { @@ -297,45 +204,8 @@ func dataSourceNutanixVirtualMachine() *schema.Resource { "nutanix_guest_tools": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "available_version": { - Type: schema.TypeString, - Computed: true, - }, - "ngt_state": { - Type: schema.TypeString, - Computed: true, - }, - "iso_mount_state": { - Type: schema.TypeString, - Computed: true, - }, - "state": { - Type: schema.TypeString, - Computed: true, - }, - "version": { - Type: schema.TypeString, - Computed: true, - }, - "guest_os_version": { - Type: schema.TypeString, - Computed: true, - }, - "vss_snapshot_capable": { - Type: schema.TypeString, // Bool - Computed: true, - }, - "is_reachable": { - Type: schema.TypeString, // Bool - Computed: true, - }, - "vm_mobility_drivers_installed": { - Type: schema.TypeString, // Bool - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ngt_enabled_capability_list": { @@ -406,21 +276,8 @@ func dataSourceNutanixVirtualMachine() *schema.Resource { "parent_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "memory_size_mib": { @@ -436,19 +293,8 @@ func dataSourceNutanixVirtualMachine() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "device_index": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "adapter_type": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "boot_device_mac_address": { @@ -487,17 +333,8 @@ func dataSourceNutanixVirtualMachine() *schema.Resource { "guest_customization_sysprep": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "install_type": { - Type: schema.TypeString, - Computed: true, - }, - "unattend_xml": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "guest_customization_sysprep_custom_key_values": { @@ -540,7 +377,6 @@ func dataSourceNutanixVirtualMachine() *schema.Resource { "storage_config": { Type: schema.TypeList, Computed: true, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "flash_mode": { @@ -586,17 +422,8 @@ func dataSourceNutanixVirtualMachine() *schema.Resource { "disk_address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "device_index": { - Type: schema.TypeInt, - Computed: true, - }, - "adapter_type": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -605,41 +432,15 @@ func dataSourceNutanixVirtualMachine() *schema.Resource { "data_source_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "volume_group_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -665,59 +466,59 @@ func dataSourceNutanixVirtualMachine() *schema.Resource { } } -func dataSourceNutanixVirtualMachineRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixVirtualMachineRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API vm, ok := d.GetOk("vm_id") if !ok { - return fmt.Errorf("please provide the required attribute vm_id") + return diag.Errorf("please provide the required attribute vm_id") } // Make request to the API resp, err := conn.V3.GetVM(vm.(string)) if err != nil { - return err + return diag.FromErr(err) } m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValues(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("availability_zone_reference", flattenReferenceValues(resp.Status.AvailabilityZoneReference)); err != nil { - return err + return diag.FromErr(err) } if err := flattenClusterReference(resp.Status.ClusterReference, d); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("nic_list", flattenNicListStatus(resp.Status.Resources.NicList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("host_reference", flattenReferenceValues(resp.Status.Resources.HostReference)); err != nil { - return err + return diag.FromErr(err) } if err := flattenNutanixGuestTools(d, resp.Status.Resources.GuestTools); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("gpu_list", flattenGPUList(resp.Status.Resources.GpuList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("parent_reference", flattenReferenceValues(resp.Status.Resources.ParentReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("disk_list", flattenDiskList(resp.Status.Resources.DiskList)); err != nil { - return err + return diag.FromErr(err) } diskAddress := make(map[string]interface{}) @@ -781,21 +582,21 @@ func dataSourceNutanixVirtualMachineRead(d *schema.ResourceData, meta interface{ } } if err := d.Set("guest_customization_cloud_init_custom_key_values", cloudInitCV); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("guest_customization_sysprep_custom_key_values", sysrepCV); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("guest_customization_sysprep", sysprep); err != nil { - return err + return diag.FromErr(err) } if err := flattenClusterReference(resp.Status.ClusterReference, d); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("serial_port_list", resp.Status.Resources.SerialPortList); err != nil { - return err + return diag.FromErr(err) } d.Set("guest_customization_cloud_init_user_data", cloudInitUser) @@ -824,7 +625,7 @@ func dataSourceNutanixVirtualMachineRead(d *schema.ResourceData, meta interface{ return nil } -func resourceDatasourceVirtualMachineInstanceStateUpgradeV0(is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { +func resourceDatasourceVirtualMachineInstanceStateUpgradeV0(ctx context.Context, is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { log.Printf("[DEBUG] Entering resourceDatasourceDatasourceVirtualMachineInstanceStateUpgradeV0") return resourceNutanixCategoriesMigrateState(is, meta) } @@ -839,37 +640,8 @@ func resourceNutanixDatasourceVirtualMachineInstanceResourceV0() *schema.Resourc "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": { @@ -880,41 +652,15 @@ func resourceNutanixDatasourceVirtualMachineInstanceResourceV0() *schema.Resourc "project_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "api_version": { @@ -932,21 +678,8 @@ func resourceNutanixDatasourceVirtualMachineInstanceResourceV0() *schema.Resourc "availability_zone_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_uuid": { @@ -985,21 +718,8 @@ func resourceNutanixDatasourceVirtualMachineInstanceResourceV0() *schema.Resourc "host_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "hypervisor_type": { @@ -1068,21 +788,8 @@ func resourceNutanixDatasourceVirtualMachineInstanceResourceV0() *schema.Resourc "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "subnet_uuid": { @@ -1111,45 +818,8 @@ func resourceNutanixDatasourceVirtualMachineInstanceResourceV0() *schema.Resourc "nutanix_guest_tools": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "available_version": { - Type: schema.TypeString, - Computed: true, - }, - "ngt_state": { - Type: schema.TypeString, - Computed: true, - }, - "iso_mount_state": { - Type: schema.TypeString, - Computed: true, - }, - "state": { - Type: schema.TypeString, - Computed: true, - }, - "version": { - Type: schema.TypeString, - Computed: true, - }, - "guest_os_version": { - Type: schema.TypeString, - Computed: true, - }, - "vss_snapshot_capable": { - Type: schema.TypeString, // Bool - Computed: true, - }, - "is_reachable": { - Type: schema.TypeString, // Bool - Computed: true, - }, - "vm_mobility_drivers_installed": { - Type: schema.TypeString, // Bool - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ngt_enabled_capability_list": { @@ -1220,21 +890,8 @@ func resourceNutanixDatasourceVirtualMachineInstanceResourceV0() *schema.Resourc "parent_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "memory_size_mib": { @@ -1250,19 +907,8 @@ func resourceNutanixDatasourceVirtualMachineInstanceResourceV0() *schema.Resourc Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "device_index": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "adapter_type": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "boot_device_mac_address": { @@ -1293,17 +939,8 @@ func resourceNutanixDatasourceVirtualMachineInstanceResourceV0() *schema.Resourc "guest_customization_sysprep": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "install_type": { - Type: schema.TypeString, - Computed: true, - }, - "unattend_xml": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "guest_customization_sysprep_custom_key_values": { @@ -1355,17 +992,8 @@ func resourceNutanixDatasourceVirtualMachineInstanceResourceV0() *schema.Resourc "disk_address": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "device_index": { - Type: schema.TypeInt, - Computed: true, - }, - "adapter_type": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -1374,42 +1002,16 @@ func resourceNutanixDatasourceVirtualMachineInstanceResourceV0() *schema.Resourc "data_source_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "volume_group_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, diff --git a/nutanix/data_source_nutanix_virtual_machine_test.go b/nutanix/data_source_nutanix_virtual_machine_test.go index 7f487939f..d94f4a3b5 100644 --- a/nutanix/data_source_nutanix_virtual_machine_test.go +++ b/nutanix/data_source_nutanix_virtual_machine_test.go @@ -5,8 +5,8 @@ import ( "os" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixVirtualMachineDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_protection_rule.go b/nutanix/data_source_protection_rule.go index 0f006b4b1..44db70c39 100644 --- a/nutanix/data_source_protection_rule.go +++ b/nutanix/data_source_protection_rule.go @@ -1,19 +1,21 @@ package nutanix import ( + "context" "fmt" "strings" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceNutanixProtectionRule() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixProtectionRuleRead, + ReadContext: dataSourceNutanixProtectionRuleRead, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, SchemaVersion: 1, Schema: map[string]*schema.Schema{ @@ -38,43 +40,13 @@ func dataSourceNutanixProtectionRule() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -95,7 +67,6 @@ func dataSourceNutanixProtectionRule() *schema.Resource { }, "project_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -147,8 +118,6 @@ func dataSourceNutanixProtectionRule() *schema.Resource { "local_snapshot_retention_policy": { Type: schema.TypeList, Computed: true, - MaxItems: 1, - MinItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "num_snapshots": { @@ -177,8 +146,6 @@ func dataSourceNutanixProtectionRule() *schema.Resource { "remote_snapshot_retention_policy": { Type: schema.TypeList, Computed: true, - MaxItems: 1, - MinItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "num_snapshots": { @@ -221,8 +188,6 @@ func dataSourceNutanixProtectionRule() *schema.Resource { "category_filter": { Type: schema.TypeList, Computed: true, - MaxItems: 1, - MinItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "type": { @@ -265,13 +230,13 @@ func dataSourceNutanixProtectionRule() *schema.Resource { } } -func dataSourceNutanixProtectionRuleRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixProtectionRuleRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API protectionRuleID, iOk := d.GetOk("protection_rule_id") protectionRuleName, nOk := d.GetOk("protection_rule_name") if !iOk && !nOk { - return fmt.Errorf("please provide `protection_rule_id` or `role_name`") + return diag.Errorf("please provide `protection_rule_id` or `role_name`") } var err error @@ -294,36 +259,36 @@ func dataSourceNutanixProtectionRuleRead(d *schema.ResourceData, meta interface{ m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValuesList(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValuesList(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("name", resp.Spec.Name); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("start_time", resp.Spec.Resources.StartTime); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("category_filter", flattenCategoriesFilter(resp.Spec.Resources.CategoryFilter)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("availability_zone_connectivity_list", flattenAvailabilityZoneConnectivityList(resp.Spec.Resources.AvailabilityZoneConnectivityList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("ordered_availability_zone_list", flattenOrderAvailibilityList(resp.Spec.Resources.OrderedAvailabilityZoneList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("state", resp.Status.State); err != nil { - return err + return diag.FromErr(err) } d.SetId(*resp.Metadata.UUID) diff --git a/nutanix/data_source_protection_rule_test.go b/nutanix/data_source_protection_rule_test.go index 56d1591f3..2332adca3 100644 --- a/nutanix/data_source_protection_rule_test.go +++ b/nutanix/data_source_protection_rule_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixProtectionRuleDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_protection_rules.go b/nutanix/data_source_protection_rules.go index 27354ac7d..94d3a0c16 100644 --- a/nutanix/data_source_protection_rules.go +++ b/nutanix/data_source_protection_rules.go @@ -1,15 +1,18 @@ package nutanix import ( - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "context" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixProtectionRules() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixProtectionRulesRead, + ReadContext: dataSourceNutanixProtectionRulesRead, Schema: map[string]*schema.Schema{ "api_version": { Type: schema.TypeString, @@ -31,43 +34,13 @@ func dataSourceNutanixProtectionRules() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -88,7 +61,6 @@ func dataSourceNutanixProtectionRules() *schema.Resource { }, "project_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -140,8 +112,6 @@ func dataSourceNutanixProtectionRules() *schema.Resource { "local_snapshot_retention_policy": { Type: schema.TypeList, Computed: true, - MaxItems: 1, - MinItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "num_snapshots": { @@ -170,8 +140,6 @@ func dataSourceNutanixProtectionRules() *schema.Resource { "remote_snapshot_retention_policy": { Type: schema.TypeList, Computed: true, - MaxItems: 1, - MinItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "num_snapshots": { @@ -214,8 +182,6 @@ func dataSourceNutanixProtectionRules() *schema.Resource { "category_filter": { Type: schema.TypeList, Computed: true, - MaxItems: 1, - MinItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "type": { @@ -261,7 +227,7 @@ func dataSourceNutanixProtectionRules() *schema.Resource { } } -func dataSourceNutanixProtectionRulesRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixProtectionRulesRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API req := &v3.DSMetadata{} @@ -272,14 +238,14 @@ func dataSourceNutanixProtectionRulesRead(d *schema.ResourceData, meta interface } resp, err := conn.V3.ListAllProtectionRules(utils.StringValue(req.Filter)) if err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("entities", flattenProtectionRuleEntities(resp.Entities)); err != nil { - return err + return diag.FromErr(err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_protection_rules_test.go b/nutanix/data_source_protection_rules_test.go index c6640ab72..eef5bad6e 100644 --- a/nutanix/data_source_protection_rules_test.go +++ b/nutanix/data_source_protection_rules_test.go @@ -3,7 +3,7 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixProtectionRulesDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_recovery_plan.go b/nutanix/data_source_recovery_plan.go index 32325b7e9..95acd3af7 100644 --- a/nutanix/data_source_recovery_plan.go +++ b/nutanix/data_source_recovery_plan.go @@ -1,19 +1,21 @@ package nutanix import ( + "context" "fmt" "strings" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceNutanixRecoveryPlan() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixRecoveryPlanRead, + ReadContext: dataSourceNutanixRecoveryPlanRead, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, SchemaVersion: 1, Schema: map[string]*schema.Schema{ @@ -38,43 +40,13 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -95,7 +67,6 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { }, "project_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -134,15 +105,11 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { "stage_work": { Type: schema.TypeList, Computed: true, - MinItems: 1, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "recover_entities": { Type: schema.TypeList, Computed: true, - MinItems: 1, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "entity_info_list": { @@ -194,8 +161,6 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { "parameters": { Type: schema.TypeList, Computed: true, - MinItems: 1, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "floating_ip_assignment_list": { @@ -214,7 +179,6 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { Schema: map[string]*schema.Schema{ "test_floating_ip_config": { Type: schema.TypeList, - MinItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -231,7 +195,6 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { }, "recovery_floating_ip_config": { Type: schema.TypeList, - MinItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -248,7 +211,6 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { }, "vm_reference": { Type: schema.TypeList, - MinItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -269,7 +231,6 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { }, "vm_nic_information": { Type: schema.TypeList, - MinItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -307,13 +268,10 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { "recovery_network": { Type: schema.TypeList, Computed: true, - MinItems: 1, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "virtual_network_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -334,7 +292,6 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { }, "vpc_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -387,13 +344,10 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { "test_network": { Type: schema.TypeList, Computed: true, - MinItems: 1, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "virtual_network_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -414,7 +368,6 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { }, "vpc_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -587,13 +540,13 @@ func dataSourceNutanixRecoveryPlan() *schema.Resource { } } -func dataSourceNutanixRecoveryPlanRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixRecoveryPlanRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API recoveryPlanID, iOk := d.GetOk("recovery_plan_id") recoveryPlanName, nOk := d.GetOk("recovery_plan_name") if !iOk && !nOk { - return fmt.Errorf("please provide `recovery_plan_id` or `recovery_plan_name`") + return diag.Errorf("please provide `recovery_plan_id` or `recovery_plan_name`") } var err error @@ -615,31 +568,31 @@ func dataSourceNutanixRecoveryPlanRead(d *schema.ResourceData, meta interface{}) m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValuesList(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValuesList(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("name", resp.Spec.Name); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("description", resp.Spec.Description); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("stage_list", flattenStageList(resp.Spec.Resources.StageList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("parameters", flattenParameters(resp.Spec.Resources.Parameters)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("state", resp.Status.State); err != nil { - return err + return diag.FromErr(err) } d.SetId(*resp.Metadata.UUID) diff --git a/nutanix/data_source_recovery_plan_test.go b/nutanix/data_source_recovery_plan_test.go index b1083be37..3a7a9f965 100644 --- a/nutanix/data_source_recovery_plan_test.go +++ b/nutanix/data_source_recovery_plan_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixRecoveryPlanDataSource_basic(t *testing.T) { diff --git a/nutanix/data_source_recovery_plans.go b/nutanix/data_source_recovery_plans.go index 2e6609c38..0716c5574 100644 --- a/nutanix/data_source_recovery_plans.go +++ b/nutanix/data_source_recovery_plans.go @@ -1,15 +1,18 @@ package nutanix import ( - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "context" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func dataSourceNutanixRecoveryPlans() *schema.Resource { return &schema.Resource{ - Read: dataSourceNutanixRecoveryPlansRead, + ReadContext: dataSourceNutanixRecoveryPlansRead, Schema: map[string]*schema.Schema{ "api_version": { Type: schema.TypeString, @@ -31,43 +34,13 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), "owner_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -88,7 +61,6 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { }, "project_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -127,15 +99,11 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { "stage_work": { Type: schema.TypeList, Computed: true, - MinItems: 1, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "recover_entities": { Type: schema.TypeList, Computed: true, - MinItems: 1, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "entity_info_list": { @@ -187,8 +155,6 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { "parameters": { Type: schema.TypeList, Computed: true, - MinItems: 1, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "floating_ip_assignment_list": { @@ -207,7 +173,6 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { Schema: map[string]*schema.Schema{ "test_floating_ip_config": { Type: schema.TypeList, - MinItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -224,7 +189,6 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { }, "recovery_floating_ip_config": { Type: schema.TypeList, - MinItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -241,7 +205,6 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { }, "vm_reference": { Type: schema.TypeList, - MinItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -262,7 +225,6 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { }, "vm_nic_information": { Type: schema.TypeList, - MinItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -300,13 +262,10 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { "recovery_network": { Type: schema.TypeList, Computed: true, - MinItems: 1, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "virtual_network_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -327,7 +286,6 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { }, "vpc_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -380,13 +338,10 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { "test_network": { Type: schema.TypeList, Computed: true, - MinItems: 1, - MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "virtual_network_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -407,7 +362,6 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { }, "vpc_reference": { Type: schema.TypeList, - MaxItems: 1, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -583,7 +537,7 @@ func dataSourceNutanixRecoveryPlans() *schema.Resource { } } -func dataSourceNutanixRecoveryPlansRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceNutanixRecoveryPlansRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API @@ -595,14 +549,14 @@ func dataSourceNutanixRecoveryPlansRead(d *schema.ResourceData, meta interface{} } resp, err := conn.V3.ListAllRecoveryPlans(utils.StringValue(req.Filter)) if err != nil { - return err + return diag.FromErr(err) } if err := d.Set("api_version", resp.APIVersion); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("entities", flattenRecoveryPlanEntities(resp.Entities)); err != nil { - return err + return diag.FromErr(err) } d.SetId(resource.UniqueId()) diff --git a/nutanix/data_source_recovery_plans_test.go b/nutanix/data_source_recovery_plans_test.go index c5fc1ded1..4ffc0cae5 100644 --- a/nutanix/data_source_recovery_plans_test.go +++ b/nutanix/data_source_recovery_plans_test.go @@ -3,7 +3,7 @@ package nutanix import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixRecoveryPlansDataSource_basic(t *testing.T) { diff --git a/nutanix/filters.go b/nutanix/filters.go index 5fd717df7..f65837b75 100644 --- a/nutanix/filters.go +++ b/nutanix/filters.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/terraform-providers/terraform-provider-nutanix/client" ) diff --git a/nutanix/helpers.go b/nutanix/helpers.go index 1fd9d087f..e03664b1d 100644 --- a/nutanix/helpers.go +++ b/nutanix/helpers.go @@ -5,8 +5,8 @@ import ( "strconv" "strings" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) diff --git a/nutanix/provider.go b/nutanix/provider.go index 3e9c3d260..2943cf3af 100644 --- a/nutanix/provider.go +++ b/nutanix/provider.go @@ -3,12 +3,11 @@ package nutanix import ( "log" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) // Provider function returns the object that implements the terraform.ResourceProvider interface, specifically a schema.Provider -func Provider() terraform.ResourceProvider { +func Provider() *schema.Provider { // defines descriptions for ResourceProvider schema definitions descriptions := map[string]string{ "username": "User name for Nutanix Prism. Could be\n" + diff --git a/nutanix/provider_test.go b/nutanix/provider_test.go index 36676b883..4068838d8 100644 --- a/nutanix/provider_test.go +++ b/nutanix/provider_test.go @@ -6,30 +6,29 @@ import ( "testing" "time" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -var testAccProviders map[string]terraform.ResourceProvider +var testAccProviders map[string]*schema.Provider var testAccProvider *schema.Provider func init() { - testAccProvider = Provider().(*schema.Provider) + testAccProvider = Provider() - testAccProviders = map[string]terraform.ResourceProvider{ + testAccProviders = map[string]*schema.Provider{ "nutanix": testAccProvider, } } func TestProvider(t *testing.T) { - if err := Provider().(*schema.Provider).InternalValidate(); err != nil { + if err := Provider().InternalValidate(); err != nil { t.Fatalf("err: %s", err) } } func TestProvider_impl(t *testing.T) { - var _ terraform.ResourceProvider = Provider() + var _ *schema.Provider = Provider() } func testAccPreCheck(t *testing.T) { diff --git a/nutanix/resource_nutanix_access_control_policy.go b/nutanix/resource_nutanix_access_control_policy.go index a41bbd958..afdadf10b 100644 --- a/nutanix/resource_nutanix_access_control_policy.go +++ b/nutanix/resource_nutanix_access_control_policy.go @@ -1,12 +1,14 @@ package nutanix import ( + "context" "fmt" "strings" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/helper/validation" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/spf13/cast" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" @@ -14,12 +16,12 @@ import ( func resourceNutanixAccessControlPolicy() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixAccessControlPolicyCreate, - Read: resourceNutanixAccessControlPolicyRead, - Update: resourceNutanixAccessControlPolicyUpdate, - Delete: resourceNutanixAccessControlPolicyDelete, + CreateContext: resourceNutanixAccessControlPolicyCreate, + ReadContext: resourceNutanixAccessControlPolicyRead, + UpdateContext: resourceNutanixAccessControlPolicyUpdate, + DeleteContext: resourceNutanixAccessControlPolicyDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, Schema: map[string]*schema.Schema{ "api_version": { @@ -34,44 +36,8 @@ func resourceNutanixAccessControlPolicy() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -308,7 +274,7 @@ func resourceNutanixAccessControlPolicy() *schema.Resource { } } -func resourceNutanixAccessControlPolicyCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixAccessControlPolicyCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API request := &v3.AccessControlPolicy{} @@ -319,11 +285,11 @@ func resourceNutanixAccessControlPolicyCreate(d *schema.ResourceData, meta inter rf, rfOk := d.GetOk("role_reference") if !rfOk { - return fmt.Errorf("please provide the required `role_reference` attribute") + return diag.Errorf("please provide the required `role_reference` attribute") } if err := getMetadataAttributesV2(d, metadata, "access_control_policy"); err != nil { - return err + return diag.FromErr(err) } access.RoleReference = validateRefList(rf.([]interface{}), nil) @@ -343,7 +309,7 @@ func resourceNutanixAccessControlPolicyCreate(d *schema.ResourceData, meta inter resp, err := conn.V3.CreateAccessControlPolicy(request) if err != nil { - return fmt.Errorf("error creating Nutanix AccessControlPolicy %s: %+v", utils.StringValue(spec.Name), err) + return diag.Errorf("error creating Nutanix AccessControlPolicy %s: %+v", utils.StringValue(spec.Name), err) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -358,10 +324,10 @@ func resourceNutanixAccessControlPolicyCreate(d *schema.ResourceData, meta inter MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { + if _, err := stateConf.WaitForStateContext(ctx); err != nil { id := d.Id() d.SetId("") - return fmt.Errorf("error waiting for access control policy id (%s) to create: %+v", id, err) + return diag.Errorf("error waiting for access control policy id (%s) to create: %+v", id, err) } // Setting Description because in Get request is not present. @@ -369,10 +335,10 @@ func resourceNutanixAccessControlPolicyCreate(d *schema.ResourceData, meta inter d.SetId(utils.StringValue(resp.Metadata.UUID)) - return resourceNutanixAccessControlPolicyRead(d, meta) + return resourceNutanixAccessControlPolicyRead(ctx, d, meta) } -func resourceNutanixAccessControlPolicyRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixAccessControlPolicyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API id := d.Id() resp, err := conn.V3.GetAccessControlPolicy(id) @@ -381,51 +347,51 @@ func resourceNutanixAccessControlPolicyRead(d *schema.ResourceData, meta interfa d.SetId("") return nil } - errDel := resourceNutanixAccessControlPolicyDelete(d, meta) + errDel := resourceNutanixAccessControlPolicyDelete(ctx, d, meta) if errDel != nil { - return fmt.Errorf("error deleting access control policy (%s) after read error: %+v", id, errDel) + return diag.Errorf("error deleting access control policy (%s) after read error: %+v", id, errDel) } d.SetId("") - return fmt.Errorf("error reading access control policy id (%s): %+v", id, err) + return diag.Errorf("error reading access control policy id (%s): %+v", id, err) } m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValuesList(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } d.Set("api_version", resp.APIVersion) if status := resp.Status; status != nil { if err := d.Set("name", utils.StringValue(resp.Status.Name)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("description", utils.StringValue(resp.Status.Description)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("state", utils.StringValue(resp.Status.State)); err != nil { - return err + return diag.FromErr(err) } if res := status.Resources; res != nil { if err := d.Set("user_reference_list", flattenArrayReferenceValues(status.Resources.UserReferenceList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("user_group_reference_list", flattenArrayReferenceValues(status.Resources.UserGroupReferenceList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("role_reference", flattenReferenceValuesList(status.Resources.RoleReference)); err != nil { - return err + return diag.FromErr(err) } if status.Resources.FilterList.ContextList != nil { if err := d.Set("context_filter_list", flattenContextList(status.Resources.FilterList.ContextList)); err != nil { - return err + return diag.FromErr(err) } } } @@ -434,7 +400,7 @@ func resourceNutanixAccessControlPolicyRead(d *schema.ResourceData, meta interfa if spec.FilterList != nil { if spec.FilterList.ContextList != nil { if err := d.Set("context_filter_list", flattenContextList(spec.FilterList.ContextList)); err != nil { - return err + return diag.FromErr(err) } } } @@ -444,7 +410,7 @@ func resourceNutanixAccessControlPolicyRead(d *schema.ResourceData, meta interfa return nil } -func resourceNutanixAccessControlPolicyUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixAccessControlPolicyUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API request := &v3.AccessControlPolicy{} metadata := &v3.Metadata{} @@ -458,7 +424,7 @@ func resourceNutanixAccessControlPolicyUpdate(d *schema.ResourceData, meta inter if strings.Contains(fmt.Sprint(err), "ENTITY_NOT_FOUND") { d.SetId("") } - return fmt.Errorf("error retrieving for access control policy id (%s) :%+v", id, err) + return diag.Errorf("error retrieving for access control policy id (%s) :%+v", id, err) } if response.Metadata != nil { @@ -508,7 +474,7 @@ func resourceNutanixAccessControlPolicyUpdate(d *schema.ResourceData, meta inter resp, errUpdate := conn.V3.UpdateAccessControlPolicy(d.Id(), request) if errUpdate != nil { - return fmt.Errorf("error updating access control policy id %s): %s", d.Id(), errUpdate) + return diag.Errorf("error updating access control policy id %s): %s", d.Id(), errUpdate) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -523,22 +489,22 @@ func resourceNutanixAccessControlPolicyUpdate(d *schema.ResourceData, meta inter MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for access control policy (%s) to update: %s", d.Id(), err) } // Setting Description because in Get request is not present. d.Set("description", utils.StringValue(resp.Spec.Description)) - return resourceNutanixAccessControlPolicyRead(d, meta) + return resourceNutanixAccessControlPolicyRead(ctx, d, meta) } -func resourceNutanixAccessControlPolicyDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixAccessControlPolicyDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API resp, err := conn.V3.DeleteAccessControlPolicy(d.Id()) if err != nil { - return fmt.Errorf("error deleting access control policy id %s): %s", d.Id(), err) + return diag.Errorf("error deleting access control policy id %s): %s", d.Id(), err) } // Wait for the VM to be available @@ -551,8 +517,8 @@ func resourceNutanixAccessControlPolicyDelete(d *schema.ResourceData, meta inter MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for access control policy (%s) to update: %s", d.Id(), err) } diff --git a/nutanix/resource_nutanix_access_control_policy_test.go b/nutanix/resource_nutanix_access_control_policy_test.go index c206205a5..f7d6d3cb6 100644 --- a/nutanix/resource_nutanix_access_control_policy_test.go +++ b/nutanix/resource_nutanix_access_control_policy_test.go @@ -5,10 +5,10 @@ import ( "strings" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) const resourceAccessPolicy = "nutanix_access_control_policy.test" @@ -105,10 +105,10 @@ func TestAccNutanixAccessControlPolicy_WithCategory(t *testing.T) { testAccCheckNutanixAccessControlPolicyExists(), testAccCheckNutanixCategories(resourceAccessPolicy), resource.TestCheckResourceAttr(resourceAccessPolicy, "categories.#", "1"), - resource.TestCheckResourceAttrSet(resourceAccessPolicy, "categories.2228745532.name"), - resource.TestCheckResourceAttrSet(resourceAccessPolicy, "categories.2228745532.value"), - resource.TestCheckResourceAttr(resourceAccessPolicy, "categories.2228745532.name", "Environment"), - resource.TestCheckResourceAttr(resourceAccessPolicy, "categories.2228745532.value", "Production"), + resource.TestCheckResourceAttrSet(resourceAccessPolicy, "categories.0.name"), + resource.TestCheckResourceAttrSet(resourceAccessPolicy, "categories.0.value"), + resource.TestCheckResourceAttr(resourceAccessPolicy, "categories.0.name", "Environment"), + resource.TestCheckResourceAttr(resourceAccessPolicy, "categories.0.value", "Production"), ), }, { @@ -116,10 +116,10 @@ func TestAccNutanixAccessControlPolicy_WithCategory(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckNutanixAccessControlPolicyExists(), resource.TestCheckResourceAttr(resourceAccessPolicy, "categories.#", "1"), - resource.TestCheckResourceAttrSet(resourceAccessPolicy, "categories.2940305446.name"), - resource.TestCheckResourceAttrSet(resourceAccessPolicy, "categories.2940305446.value"), - resource.TestCheckResourceAttr(resourceAccessPolicy, "categories.2940305446.name", "Environment"), - resource.TestCheckResourceAttr(resourceAccessPolicy, "categories.2940305446.value", "Staging"), + resource.TestCheckResourceAttrSet(resourceAccessPolicy, "categories.0.name"), + resource.TestCheckResourceAttrSet(resourceAccessPolicy, "categories.0.value"), + resource.TestCheckResourceAttr(resourceAccessPolicy, "categories.0.name", "Environment"), + resource.TestCheckResourceAttr(resourceAccessPolicy, "categories.0.value", "Staging"), ), }, { diff --git a/nutanix/resource_nutanix_category_key.go b/nutanix/resource_nutanix_category_key.go index 6b866583c..127a6b6cf 100644 --- a/nutanix/resource_nutanix_category_key.go +++ b/nutanix/resource_nutanix_category_key.go @@ -1,23 +1,25 @@ package nutanix import ( + "context" "fmt" "log" "strings" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func resourceNutanixCategoryKey() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixCategoryKeyCreateOrUpdate, - Read: resourceNutanixCategoryKeyRead, - Update: resourceNutanixCategoryKeyCreateOrUpdate, - Delete: resourceNutanixCategoryKeyDelete, + CreateContext: resourceNutanixCategoryKeyCreateOrUpdate, + ReadContext: resourceNutanixCategoryKeyRead, + UpdateContext: resourceNutanixCategoryKeyCreateOrUpdate, + DeleteContext: resourceNutanixCategoryKeyDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, Schema: map[string]*schema.Schema{ "system_defined": { @@ -41,7 +43,7 @@ func resourceNutanixCategoryKey() *schema.Resource { } } -func resourceNutanixCategoryKeyCreateOrUpdate(resourceData *schema.ResourceData, meta interface{}) error { +func resourceNutanixCategoryKeyCreateOrUpdate(ctx context.Context, resourceData *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Creating CategoryKey: %s", resourceData.Get("name").(string)) conn := meta.(*Client).API @@ -57,7 +59,7 @@ func resourceNutanixCategoryKeyCreateOrUpdate(resourceData *schema.ResourceData, // validate required fields if !nameOK { - return fmt.Errorf("please provide the required attribute name") + return diag.Errorf("please provide the required attribute name") } request.Name = utils.StringPtr(name.(string)) @@ -66,7 +68,7 @@ func resourceNutanixCategoryKeyCreateOrUpdate(resourceData *schema.ResourceData, resp, err := conn.V3.CreateOrUpdateCategoryKey(request) if err != nil { - return err + return diag.FromErr(err) } n := *resp.Name @@ -74,10 +76,10 @@ func resourceNutanixCategoryKeyCreateOrUpdate(resourceData *schema.ResourceData, // set terraform state resourceData.SetId(n) - return resourceNutanixCategoryKeyRead(resourceData, meta) + return resourceNutanixCategoryKeyRead(ctx, resourceData, meta) } -func resourceNutanixCategoryKeyRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixCategoryKeyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Reading CategoryKey: %s", d.Get("name").(string)) // Get client connection @@ -91,23 +93,23 @@ func resourceNutanixCategoryKeyRead(d *schema.ResourceData, meta interface{}) er d.SetId("") return nil } - return err + return diag.FromErr(err) } d.Set("api_version", utils.StringValue(resp.APIVersion)) d.Set("name", utils.StringValue(resp.Name)) d.Set("description", utils.StringValue(resp.Description)) - return d.Set("system_defined", utils.BoolValue(resp.SystemDefined)) + return diag.FromErr(d.Set("system_defined", utils.BoolValue(resp.SystemDefined))) } -func resourceNutanixCategoryKeyDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixCategoryKeyDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API log.Printf("[Debug] Destroying the category with the ID %s", d.Id()) if err := conn.V3.DeleteCategoryKey(d.Id()); err != nil { - return err + return diag.FromErr(err) } d.SetId("") diff --git a/nutanix/resource_nutanix_category_key_test.go b/nutanix/resource_nutanix_category_key_test.go index 0f93e1eef..f75a0bf07 100644 --- a/nutanix/resource_nutanix_category_key_test.go +++ b/nutanix/resource_nutanix_category_key_test.go @@ -6,9 +6,9 @@ import ( "testing" "time" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccNutanixCategoryKey_basic(t *testing.T) { diff --git a/nutanix/resource_nutanix_category_value.go b/nutanix/resource_nutanix_category_value.go index 21c18ed13..23ac9cfde 100644 --- a/nutanix/resource_nutanix_category_value.go +++ b/nutanix/resource_nutanix_category_value.go @@ -1,21 +1,23 @@ package nutanix import ( + "context" "fmt" "log" "strings" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) func resourceNutanixCategoryValue() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixCategoryValueCreateOrUpdate, - Read: resourceNutanixCategoryValueRead, - Update: resourceNutanixCategoryValueCreateOrUpdate, - Delete: resourceNutanixCategoryValueDelete, + CreateContext: resourceNutanixCategoryValueCreateOrUpdate, + ReadContext: resourceNutanixCategoryValueRead, + UpdateContext: resourceNutanixCategoryValueCreateOrUpdate, + DeleteContext: resourceNutanixCategoryValueDelete, Schema: map[string]*schema.Schema{ "value": { Type: schema.TypeString, @@ -43,7 +45,7 @@ func resourceNutanixCategoryValue() *schema.Resource { } } -func resourceNutanixCategoryValueCreateOrUpdate(resourceData *schema.ResourceData, meta interface{}) error { +func resourceNutanixCategoryValueCreateOrUpdate(ctx context.Context, resourceData *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Creating CategoryValue: %s", resourceData.Get("value").(string)) conn := meta.(*Client).API @@ -61,7 +63,7 @@ func resourceNutanixCategoryValueCreateOrUpdate(resourceData *schema.ResourceDat // validate required fields if !nameOK || !valueOK { - return fmt.Errorf("please provide the required attributes name and value") + return diag.Errorf("please provide the required attributes name and value") } request.Value = utils.StringPtr(value.(string)) @@ -70,7 +72,7 @@ func resourceNutanixCategoryValueCreateOrUpdate(resourceData *schema.ResourceDat resp, err := conn.V3.CreateOrUpdateCategoryValue(name.(string), request) if err != nil { - return err + return diag.FromErr(err) } v := *resp.Value @@ -78,16 +80,16 @@ func resourceNutanixCategoryValueCreateOrUpdate(resourceData *schema.ResourceDat // set terraform state resourceData.SetId(v) - return resourceNutanixCategoryValueRead(resourceData, meta) + return resourceNutanixCategoryValueRead(ctx, resourceData, meta) } -func resourceNutanixCategoryValueRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixCategoryValueRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Reading CategoryValue: %s", d.Id()) name, nameOK := d.GetOk("name") if !nameOK { - return fmt.Errorf("please provide the required attributes name") + return diag.Errorf("please provide the required attributes name") } // Get client connection @@ -101,29 +103,29 @@ func resourceNutanixCategoryValueRead(d *schema.ResourceData, meta interface{}) d.SetId("") return nil } - return err + return diag.FromErr(err) } d.Set("api_version", utils.StringValue(resp.APIVersion)) d.Set("name", utils.StringValue(resp.Name)) d.Set("description", utils.StringValue(resp.Description)) - return d.Set("system_defined", utils.BoolValue(resp.SystemDefined)) + return diag.FromErr(d.Set("system_defined", utils.BoolValue(resp.SystemDefined))) } -func resourceNutanixCategoryValueDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixCategoryValueDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API name, nameOK := d.GetOk("name") if !nameOK { - return fmt.Errorf("please provide the required attributes name") + return diag.Errorf("please provide the required attributes name") } log.Printf("[Debug] Destroying the category with the ID %s", d.Id()) if err := conn.V3.DeleteCategoryValue(name.(string), d.Id()); err != nil { - return err + return diag.FromErr(err) } d.SetId("") diff --git a/nutanix/resource_nutanix_category_value_test.go b/nutanix/resource_nutanix_category_value_test.go index 119223342..faba78439 100644 --- a/nutanix/resource_nutanix_category_value_test.go +++ b/nutanix/resource_nutanix_category_value_test.go @@ -6,10 +6,10 @@ import ( "testing" "time" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccNutanixCategoryValue_basic(t *testing.T) { diff --git a/nutanix/resource_nutanix_image.go b/nutanix/resource_nutanix_image.go index 18950d62b..f0bbed9c3 100644 --- a/nutanix/resource_nutanix_image.go +++ b/nutanix/resource_nutanix_image.go @@ -1,7 +1,7 @@ package nutanix import ( - "errors" + "context" "fmt" "log" "path/filepath" @@ -11,8 +11,9 @@ import ( v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) const ( @@ -33,12 +34,12 @@ var ( func resourceNutanixImage() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixImageCreate, - Read: resourceNutanixImageRead, - Update: resourceNutanixImageUpdate, - Delete: resourceNutanixImageDelete, + CreateContext: resourceNutanixImageCreate, + ReadContext: resourceNutanixImageRead, + UpdateContext: resourceNutanixImageUpdate, + DeleteContext: resourceNutanixImageDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, SchemaVersion: 1, StateUpgraders: []schema.StateUpgrader{ @@ -56,34 +57,8 @@ func resourceNutanixImage() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -91,41 +66,15 @@ func resourceNutanixImage() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -145,22 +94,8 @@ func resourceNutanixImage() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_uuid": { @@ -185,17 +120,8 @@ func resourceNutanixImage() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "checksum_algorithm": { - Type: schema.TypeString, - Required: true, - }, - "checksum_value": { - Type: schema.TypeString, - Required: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "source_uri": { @@ -212,17 +138,8 @@ func resourceNutanixImage() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "product_version": { - Type: schema.TypeString, - Required: true, - }, - "product_name": { - Type: schema.TypeString, - Required: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "architecture": { @@ -238,7 +155,7 @@ func resourceNutanixImage() *schema.Resource { } } -func resourceNutanixImageCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixImageCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Creating Image: %s", d.Get("name").(string)) client := meta.(*Client) conn := client.API @@ -261,16 +178,16 @@ func resourceNutanixImageCreate(d *schema.ResourceData, meta interface{}) error // if both path and uri are provided, return an error if iok && pok { - return errors.New("both source_uri and source_path provided") + return diag.Errorf("both source_uri and source_path provided") } // Read Arguments and set request values if !nok { - return fmt.Errorf("please provide the required attribute name") + return diag.Errorf("please provide the required attribute name") } if err := getMetadataAttributes(d, metadata, "image"); err != nil { - return err + return diag.FromErr(err) } if descok { @@ -278,7 +195,7 @@ func resourceNutanixImageCreate(d *schema.ResourceData, meta interface{}) error } if err := getImageResource(d, image); err != nil { - return err + return diag.FromErr(err) } spec.Name = utils.StringPtr(n.(string)) @@ -290,7 +207,7 @@ func resourceNutanixImageCreate(d *schema.ResourceData, meta interface{}) error // Make request to the API resp, err := conn.V3.CreateImage(request) if err != nil { - return fmt.Errorf("error creating Nutanix Image %s: %+v", utils.StringValue(spec.Name), err) + return diag.Errorf("error creating Nutanix Image %s: %+v", utils.StringValue(spec.Name), err) } UUID := *resp.Metadata.UUID @@ -309,13 +226,14 @@ func resourceNutanixImageCreate(d *schema.ResourceData, meta interface{}) error MinTimeout: imageMinTimeout, } - if _, errw := stateConf.WaitForState(); errw != nil { - delErr := resourceNutanixImageDelete(d, meta) - if delErr != nil { - return fmt.Errorf("error waiting for image (%s) to delete in creation: %s", d.Id(), delErr) + if _, errw := stateConf.WaitForStateContext(ctx); errw != nil { + delErr := resourceNutanixImageDelete(ctx, d, meta) + if delErr != nil && delErr.HasError() { + delErr = append(delErr, diag.Errorf("error waiting for image (%s) to delete in creation", d.Id())...) + return delErr } d.SetId("") - return fmt.Errorf("error waiting for image (%s) to create: %s", UUID, errw) + return diag.Errorf("error waiting for image (%s) to create: %s", UUID, errw) } // if we need to upload an image, we do it now @@ -324,19 +242,19 @@ func resourceNutanixImageCreate(d *schema.ResourceData, meta interface{}) error err = conn.V3.UploadImage(UUID, path.(string)) if err != nil { - delErr := resourceNutanixImageDelete(d, meta) + delErr := resourceNutanixImageDelete(ctx, d, meta) if delErr != nil { return delErr } - return fmt.Errorf("failed uploading image: %s", err) + return diag.Errorf("failed uploading image: %s", err) } } - return resourceNutanixImageRead(d, meta) + return resourceNutanixImageRead(ctx, d, meta) } -func resourceNutanixImageRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixImageRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Reading Image: %s", d.Get("name").(string)) // Get client connection @@ -350,46 +268,46 @@ func resourceNutanixImageRead(d *schema.ResourceData, meta interface{}) error { d.SetId("") return nil } - return fmt.Errorf("error reading image UUID (%s) with error %s", uuid, err) + return diag.Errorf("error reading image UUID (%s) with error %s", uuid, err) } m, c := setRSEntityMetadata(resp.Metadata) if err = d.Set("metadata", m); err != nil { - return fmt.Errorf("error setting metadata for image UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting metadata for image UUID(%s), %s", d.Id(), err) } if err = d.Set("categories", c); err != nil { - return fmt.Errorf("error setting categories for image UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting categories for image UUID(%s), %s", d.Id(), err) } if err = d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return fmt.Errorf("error setting owner_reference for image UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting owner_reference for image UUID(%s), %s", d.Id(), err) } d.Set("api_version", utils.StringValue(resp.APIVersion)) d.Set("name", utils.StringValue(resp.Status.Name)) d.Set("description", utils.StringValue(resp.Status.Description)) if err = d.Set("availability_zone_reference", flattenReferenceValues(resp.Status.AvailabilityZoneReference)); err != nil { - return fmt.Errorf("error setting owner_reference for image UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting owner_reference for image UUID(%s), %s", d.Id(), err) } if err = flattenClusterReference(resp.Status.ClusterReference, d); err != nil { - return fmt.Errorf("error setting cluster_uuid or cluster_name for image UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting cluster_uuid or cluster_name for image UUID(%s), %s", d.Id(), err) } if err = d.Set("state", resp.Status.State); err != nil { - return fmt.Errorf("error setting state for image UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for image UUID(%s), %s", d.Id(), err) } if err = d.Set("image_type", resp.Status.Resources.ImageType); err != nil { - return fmt.Errorf("error setting image_type for image UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting image_type for image UUID(%s), %s", d.Id(), err) } if err = d.Set("source_uri", resp.Status.Resources.SourceURI); err != nil { - return fmt.Errorf("error setting source_uri for image UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting source_uri for image UUID(%s), %s", d.Id(), err) } if err = d.Set("size_bytes", resp.Status.Resources.SizeBytes); err != nil { - return fmt.Errorf("error setting size_bytes for image UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting size_bytes for image UUID(%s), %s", d.Id(), err) } checksum := make(map[string]string) @@ -399,7 +317,7 @@ func resourceNutanixImageRead(d *schema.ResourceData, meta interface{}) error { } if err = d.Set("checksum", checksum); err != nil { - return fmt.Errorf("error setting checksum for image UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting checksum for image UUID(%s), %s", d.Id(), err) } version := make(map[string]string) @@ -409,7 +327,7 @@ func resourceNutanixImageRead(d *schema.ResourceData, meta interface{}) error { } if err = d.Set("version", version); err != nil { - return fmt.Errorf("error setting version for image UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting version for image UUID(%s), %s", d.Id(), err) } uriList := make([]string, 0, len(resp.Status.Resources.RetrievalURIList)) @@ -418,13 +336,13 @@ func resourceNutanixImageRead(d *schema.ResourceData, meta interface{}) error { } if err = d.Set("retrieval_uri_list", uriList); err != nil { - return fmt.Errorf("error setting retrieval_uri_list for image UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting retrieval_uri_list for image UUID(%s), %s", d.Id(), err) } return nil } -func resourceNutanixImageUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixImageUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { client := meta.(*Client) conn := client.API timeout := client.WaitTimeout @@ -445,7 +363,7 @@ func resourceNutanixImageUpdate(d *schema.ResourceData, meta interface{}) error if strings.Contains(fmt.Sprint(err), "ENTITY_NOT_FOUND") { d.SetId("") } - return err + return diag.FromErr(err) } if response.Metadata != nil { @@ -483,7 +401,7 @@ func resourceNutanixImageUpdate(d *schema.ResourceData, meta interface{}) error if d.HasChange("source_uri") || d.HasChange("checksum") || d.HasChange("source_path") { if err := getImageResource(d, res); err != nil { - return err + return diag.FromErr(err) } spec.Resources = res } @@ -494,7 +412,7 @@ func resourceNutanixImageUpdate(d *schema.ResourceData, meta interface{}) error resp, errUpdate := conn.V3.UpdateImage(d.Id(), request) if errUpdate != nil { - return fmt.Errorf("error updating image(%s) %s", d.Id(), errUpdate) + return diag.Errorf("error updating image(%s) %s", d.Id(), errUpdate) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -509,20 +427,21 @@ func resourceNutanixImageUpdate(d *schema.ResourceData, meta interface{}) error MinTimeout: imageMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - delErr := resourceNutanixImageDelete(d, meta) + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + delErr := resourceNutanixImageDelete(ctx, d, meta) if delErr != nil { - return fmt.Errorf("error waiting for image (%s) to delete in update: %s", d.Id(), delErr) + delErr = append(delErr, diag.Errorf("error waiting for image (%s) to delete in update", d.Id())...) + return delErr } uuid := d.Id() d.SetId("") - return fmt.Errorf("error waiting for image (%s) to update: %s", uuid, err) + return diag.Errorf("error waiting for image (%s) to update: %s", uuid, err) } - return resourceNutanixImageRead(d, meta) + return resourceNutanixImageRead(ctx, d, meta) } -func resourceNutanixImageDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixImageDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Deleting Image: %s", d.Get("name").(string)) client := meta.(*Client) @@ -540,7 +459,7 @@ func resourceNutanixImageDelete(d *schema.ResourceData, meta interface{}) error if strings.Contains(fmt.Sprint(err), "ENTITY_NOT_FOUND") { d.SetId("") } - return err + return diag.FromErr(err) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -555,9 +474,9 @@ func resourceNutanixImageDelete(d *schema.ResourceData, meta interface{}) error MinTimeout: imageMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { + if _, err := stateConf.WaitForStateContext(ctx); err != nil { d.SetId("") - return fmt.Errorf("error waiting for image (%s) to delete: %s", d.Id(), err) + return diag.Errorf("error waiting for image (%s) to delete: %s", d.Id(), err) } d.SetId("") @@ -615,7 +534,7 @@ func getImageResource(d *schema.ResourceData, image *v3.ImageResources) error { return nil } -func resourceImageInstanceStateUpgradeV0(is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { +func resourceImageInstanceStateUpgradeV0(ctx context.Context, is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { log.Printf("[DEBUG] Entering resourceImageInstanceStateUpgradeV0") return resourceNutanixCategoriesMigrateState(is, meta) } @@ -630,34 +549,8 @@ func resourceNutanixImageInstanceResourceV0() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": { @@ -669,41 +562,15 @@ func resourceNutanixImageInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -723,22 +590,8 @@ func resourceNutanixImageInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_uuid": { @@ -763,17 +616,8 @@ func resourceNutanixImageInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "checksum_algorithm": { - Type: schema.TypeString, - Required: true, - }, - "checksum_value": { - Type: schema.TypeString, - Required: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "source_uri": { @@ -790,17 +634,8 @@ func resourceNutanixImageInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "product_version": { - Type: schema.TypeString, - Required: true, - }, - "product_name": { - Type: schema.TypeString, - Required: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "architecture": { diff --git a/nutanix/resource_nutanix_image_test.go b/nutanix/resource_nutanix_image_test.go index 02596e924..3841126d4 100644 --- a/nutanix/resource_nutanix_image_test.go +++ b/nutanix/resource_nutanix_image_test.go @@ -9,9 +9,9 @@ import ( "testing" "time" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) const resourceName = "nutanix_image.acctest-test" diff --git a/nutanix/resource_nutanix_karbon_cluster.go b/nutanix/resource_nutanix_karbon_cluster.go index 5cfe52ad1..1c59dbcdc 100644 --- a/nutanix/resource_nutanix_karbon_cluster.go +++ b/nutanix/resource_nutanix_karbon_cluster.go @@ -1,6 +1,7 @@ package nutanix import ( + "context" "fmt" "log" "strings" @@ -9,9 +10,10 @@ import ( karbon "github.com/terraform-providers/terraform-provider-nutanix/client/karbon" "github.com/terraform-providers/terraform-provider-nutanix/utils" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/helper/validation" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" ) const ( @@ -53,13 +55,13 @@ const ( func resourceNutanixKarbonCluster() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixKarbonClusterCreate, - Read: resourceNutanixKarbonClusterRead, - Update: resourceNutanixKarbonClusterUpdate, - Delete: resourceNutanixKarbonClusterDelete, - Exists: resourceNutanixKarbonClusterExists, + CreateContext: resourceNutanixKarbonClusterCreate, + ReadContext: resourceNutanixKarbonClusterRead, + UpdateContext: resourceNutanixKarbonClusterUpdate, + DeleteContext: resourceNutanixKarbonClusterDelete, + Exists: resourceNutanixKarbonClusterExists, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, SchemaVersion: 1, Schema: KarbonClusterResourceMap(), @@ -389,7 +391,7 @@ func nodePoolSchema(defaultNodepoolName string, forceNewNodes bool, cpuDefault i } } -func resourceNutanixKarbonClusterCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixKarbonClusterCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Print("[Debug] Entering resourceNutanixKarbonClusterCreate") // Get client connection client := meta.(*Client) @@ -399,64 +401,64 @@ func resourceNutanixKarbonClusterCreate(d *schema.ResourceData, meta interface{} var err error karbonVersion, err := conn.Meta.GetSemanticVersion() if err != nil { - return fmt.Errorf("unable to get karbon version during cluster create: %s", err) + return diag.Errorf("unable to get karbon version during cluster create: %s", err) } etcdNodePoolInput, okETCD := d.GetOk("etcd_node_pool") if !okETCD { - return fmt.Errorf("unable to retrieve mandatory parameter etcd_node_pool") + return diag.Errorf("unable to retrieve mandatory parameter etcd_node_pool") } workerNodePoolInput, okWorker := d.GetOk("worker_node_pool") if !okWorker { - return fmt.Errorf("unable to retrieve mandatory parameter worker_node_pool") + return diag.Errorf("unable to retrieve mandatory parameter worker_node_pool") } masterNodePoolInput, okMaster := d.GetOk("master_node_pool") if !okMaster { - return fmt.Errorf("unable to retrieve mandatory parameter master_node_pool") + return diag.Errorf("unable to retrieve mandatory parameter master_node_pool") } storageClassConfigInput, okStorageClassConfig := d.GetOk("storage_class_config") if !okStorageClassConfig { - return fmt.Errorf("unable to retrieve mandatory parameter storage_class_config") + return diag.Errorf("unable to retrieve mandatory parameter storage_class_config") } cniInput, okCNI := d.GetOk("cni_config") if !okCNI { - return fmt.Errorf("unable to retrieve mandatory parameter cni_config") + return diag.Errorf("unable to retrieve mandatory parameter cni_config") } karbonClusterNameInput, okName := d.GetOk("name") if !okName { - return fmt.Errorf("unable to retrieve mandatory parameter name") + return diag.Errorf("unable to retrieve mandatory parameter name") } versionInput, okVersion := d.GetOk("version") if !okVersion { - return fmt.Errorf("unable to retrieve mandatory parameter version") + return diag.Errorf("unable to retrieve mandatory parameter version") } timeout, timeoutErr := getTimeout(d) if timeoutErr != nil { - return timeoutErr + return diag.FromErr(timeoutErr) } karbonClusterName := karbonClusterNameInput.(string) etcdNodePool, err := expandNodePool(etcdNodePoolInput.([]interface{}), karbonVersion) if err != nil { - return err + return diag.FromErr(err) } workerNodePool, err := expandNodePool(workerNodePoolInput.([]interface{}), karbonVersion) if err != nil { - return err + return diag.FromErr(err) } masterNodePool, err := expandNodePool(masterNodePoolInput.([]interface{}), karbonVersion) if err != nil { - return err + return diag.FromErr(err) } // storageclass storageClassConfig, err := expandStorageClassConfig(storageClassConfigInput.(*schema.Set).List()) if err != nil { - return err + return diag.FromErr(err) } // CNI cniConfig, err := expandCNI(cniInput.([]interface{})) if err != nil { - return err + return diag.FromErr(err) } karbonCluster := &karbon.ClusterIntentInput{ Name: karbonClusterName, @@ -479,7 +481,7 @@ func resourceNutanixKarbonClusterCreate(d *schema.ResourceData, meta interface{} activePassiveConfig, apcOk := d.GetOk("active_passive_config") externalLbConfig, elbcOk := d.GetOk("external_lb_config") if apcOk && elbcOk { - return fmt.Errorf("cannot pass both active_passive_config and external_lb_config") + return diag.Errorf("cannot pass both active_passive_config and external_lb_config") } if !apcOk && !elbcOk { karbonCluster.MastersConfig.SingleMasterConfig = &karbon.ClusterSingleMasterConfigIntentInput{} @@ -488,47 +490,47 @@ func resourceNutanixKarbonClusterCreate(d *schema.ResourceData, meta interface{} if apcOk { err = addActivePassiveConfig(activePassiveConfig, karbonCluster) if err != nil { - return err + return diag.FromErr(err) } } if elbcOk { // set active active config err = addExternalLBConfig(externalLbConfig, karbonCluster) if err != nil { - return err + return diag.FromErr(err) } } createClusterResponse, err := conn.Cluster.CreateKarbonCluster(karbonCluster) if err != nil { - return fmt.Errorf("error occurred during cluster creation:\n %s", err) + return diag.Errorf("error occurred during cluster creation:\n %s", err) } if createClusterResponse.TaskUUID == "" { - return fmt.Errorf("did not retrieve task uuid") + return diag.Errorf("did not retrieve task uuid") } if createClusterResponse.ClusterUUID == "" { - return fmt.Errorf("did not retrieve cluster uuid") + return diag.Errorf("did not retrieve cluster uuid") } // Set terraform state id d.SetId(createClusterResponse.ClusterUUID) - err = WaitForKarbonCluster(client, timeout, createClusterResponse.TaskUUID) + err = WaitForKarbonCluster(ctx, client, timeout, createClusterResponse.TaskUUID) if err != nil { - return err + return diag.FromErr(err) } if privateRegistries, ok := d.GetOk("private_registry"); ok { newPrivateRegistries, err := expandPrivateRegistries(privateRegistries.(*schema.Set).List()) if err != nil { - return err + return diag.FromErr(err) } for _, newP := range *newPrivateRegistries { conn.Cluster.AddPrivateRegistry(karbonClusterName, newP) } } - return resourceNutanixKarbonClusterRead(d, meta) + return resourceNutanixKarbonClusterRead(ctx, d, meta) } -func resourceNutanixKarbonClusterRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixKarbonClusterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Print("[Debug] Entering resourceNutanixKarbonClusterRead") // Get client connection conn := meta.(*Client).KarbonAPI @@ -543,21 +545,21 @@ func resourceNutanixKarbonClusterRead(d *schema.ResourceData, meta interface{}) karbonClusterName := *resp.Name flattenedEtcdNodepool, err := flattenNodePools(d, conn, "etcd_node_pool", karbonClusterName, resp.ETCDConfig.NodePools) if err != nil { - return err + return diag.FromErr(err) } flattenedWorkerNodepool, err := flattenNodePools(d, conn, "worker_node_pool", karbonClusterName, resp.WorkerConfig.NodePools) if err != nil { - return err + return diag.FromErr(err) } flattenedMasterNodepool, err := flattenNodePools(d, conn, "master_node_pool", karbonClusterName, resp.MasterConfig.NodePools) if err != nil { - return err + return diag.FromErr(err) } d.Set("name", utils.StringValue(resp.Name)) if err = d.Set("status", utils.StringValue(resp.Status)); err != nil { - return fmt.Errorf("error setting status for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting status for Karbon Cluster %s: %s", d.Id(), err) } // Must use know version because GA API reports different version @@ -568,40 +570,40 @@ func resourceNutanixKarbonClusterRead(d *schema.ResourceData, meta interface{}) versionSet = utils.StringValue(resp.Version) } if err = d.Set("version", versionSet); err != nil { - return fmt.Errorf("error setting version for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting version for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("kubeapi_server_ipv4_address", utils.StringValue(resp.KubeAPIServerIPv4Address)); err != nil { - return fmt.Errorf("error setting kubeapi_server_ipv4_address for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting kubeapi_server_ipv4_address for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("deployment_type", resp.MasterConfig.DeploymentType); err != nil { - return fmt.Errorf("error setting deployment_type for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting deployment_type for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("worker_node_pool", flattenedWorkerNodepool); err != nil { - return fmt.Errorf("error setting worker_node_pool for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting worker_node_pool for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("etcd_node_pool", flattenedEtcdNodepool); err != nil { - return fmt.Errorf("error setting etcd_node_pool for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting etcd_node_pool for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("master_node_pool", flattenedMasterNodepool); err != nil { - return fmt.Errorf("error setting worker_node_pool for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting worker_node_pool for Karbon Cluster %s: %s", d.Id(), err) } flattenedPrivateRegistries, err := flattenPrivateRegisties(conn, karbonClusterName) if err != nil { - return fmt.Errorf("error getting flat private_registry for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error getting flat private_registry for Karbon Cluster %s: %s", d.Id(), err) } if err = d.Set("private_registry", flattenedPrivateRegistries); err != nil { - return fmt.Errorf("error setting private_registry for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting private_registry for Karbon Cluster %s: %s", d.Id(), err) } flatCNIConfig := flattenCNIConfig(resp.CNIConfig) if err = d.Set("cni_config", flatCNIConfig); err != nil { - return fmt.Errorf("error setting cni_config for Karbon Cluster %s: %s", d.Id(), err) + return diag.Errorf("error setting cni_config for Karbon Cluster %s: %s", d.Id(), err) } d.SetId(*resp.UUID) return nil } -func resourceNutanixKarbonClusterUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixKarbonClusterUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Print("[Debug] Entering resourceNutanixKarbonClusterUpdate") // Get client connection client := meta.(*Client) @@ -611,45 +613,45 @@ func resourceNutanixKarbonClusterUpdate(d *schema.ResourceData, meta interface{} // Make request to the API resp, err := conn.Cluster.GetKarbonCluster(d.Id()) if err != nil { - return err + return diag.FromErr(err) } karbonVersion, err := conn.Meta.GetSemanticVersion() if err != nil { - return fmt.Errorf("unable to get karbon version during cluster update: %s", err) + return diag.Errorf("unable to get karbon version during cluster update: %s", err) } karbonClusterName := *resp.Name if d.HasChange("worker_node_pool") { timeout, timeoutErr := getTimeout(d) if timeoutErr != nil { - return timeoutErr + return diag.FromErr(timeoutErr) } _, n := d.GetChange("worker_node_pool") newWorkerNodePool, err := expandNodePool(n.([]interface{}), karbonVersion) if err != nil { - return fmt.Errorf("error occurred while expanding new worker node pool: %s", err) + return diag.Errorf("error occurred while expanding new worker node pool: %s", err) } currentNodePool, err := GetNodePoolsForCluster(conn, karbonClusterName, resp.WorkerConfig.NodePools) if err != nil { - return err + return diag.FromErr(err) } taskUUID, err := determineNodepoolsScaling(client, karbonClusterName, currentNodePool, newWorkerNodePool) if err != nil { - return err + return diag.FromErr(err) } - err = WaitForKarbonCluster(client, timeout, taskUUID) + err = WaitForKarbonCluster(ctx, client, timeout, taskUUID) if err != nil { - return err + return diag.FromErr(err) } } if d.HasChange("private_registry") { _, p := d.GetChange("private_registry") newPrivateRegistries, err := expandPrivateRegistries(p.(*schema.Set).List()) if err != nil { - return err + return diag.FromErr(err) } currentPrivateRegistriesList, err := conn.Cluster.ListPrivateRegistries(karbonClusterName) if err != nil { - return err + return diag.FromErr(err) } currentPrivateRegistries := convertKarbonPrivateRegistriesIntentInputToOperations(*currentPrivateRegistriesList) toAdd := diffFlatPrivateRegistrySlices(*newPrivateRegistries, currentPrivateRegistries) @@ -661,31 +663,31 @@ func resourceNutanixKarbonClusterUpdate(d *schema.ResourceData, meta interface{} conn.Cluster.DeletePrivateRegistry(karbonClusterName, *r.RegistryName) } } - return resourceNutanixKarbonClusterRead(d, meta) + return resourceNutanixKarbonClusterRead(ctx, d, meta) } -func resourceNutanixKarbonClusterDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixKarbonClusterDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Print("[Debug] Entering resourceNutanixKarbonClusterDelete") client := meta.(*Client) conn := client.KarbonAPI setTimeout(meta) timeout, timeoutErr := getTimeout(d) if timeoutErr != nil { - return timeoutErr + return diag.FromErr(timeoutErr) } karbonClusterNameInput, okName := d.GetOk("name") if !okName { - return fmt.Errorf("unable to retrieve mandatory parameter name") + return diag.Errorf("unable to retrieve mandatory parameter name") } karbonClusterName := karbonClusterNameInput.(string) clusterDeleteResponse, err := conn.Cluster.DeleteKarbonCluster(karbonClusterName) if err != nil { - return fmt.Errorf("error while deleting Karbon Cluster UUID(%s): %s", d.Id(), err) + return diag.Errorf("error while deleting Karbon Cluster UUID(%s): %s", d.Id(), err) } - err = WaitForKarbonCluster(client, timeout, clusterDeleteResponse.TaskUUID) + err = WaitForKarbonCluster(ctx, client, timeout, clusterDeleteResponse.TaskUUID) if err != nil { - return fmt.Errorf("error while waiting for Karbon Cluster deletion with UUID(%s): %s", d.Id(), err) + return diag.Errorf("error while waiting for Karbon Cluster deletion with UUID(%s): %s", d.Id(), err) } d.SetId("") return nil @@ -982,7 +984,7 @@ func GetNodePoolsForCluster(conn *karbon.Client, karbonClusterName string, nodep return nodepoolStructs, nil } -func WaitForKarbonCluster(client *Client, waitTimeoutMinutes int64, taskUUID string) error { +func WaitForKarbonCluster(ctx context.Context, client *Client, waitTimeoutMinutes int64, taskUUID string) error { stateConf := &resource.StateChangeConf{ Pending: []string{"QUEUED", "RUNNING"}, Target: []string{"SUCCEEDED"}, @@ -992,7 +994,7 @@ func WaitForKarbonCluster(client *Client, waitTimeoutMinutes int64, taskUUID str MinTimeout: WAITMINTIMEOUT, } - if _, errWaitTask := stateConf.WaitForState(); errWaitTask != nil { + if _, errWaitTask := stateConf.WaitForStateContext(ctx); errWaitTask != nil { return fmt.Errorf("error waiting for karbon cluster to create: %s", errWaitTask) } return nil diff --git a/nutanix/resource_nutanix_karbon_cluster_test.go b/nutanix/resource_nutanix_karbon_cluster_test.go index dbaa82580..e36c3f06c 100644 --- a/nutanix/resource_nutanix_karbon_cluster_test.go +++ b/nutanix/resource_nutanix_karbon_cluster_test.go @@ -6,9 +6,9 @@ import ( "testing" "time" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccNutanixKarbonCluster_basic(t *testing.T) { diff --git a/nutanix/resource_nutanix_karbon_private_registry.go b/nutanix/resource_nutanix_karbon_private_registry.go index 51420db3d..7cb8b4ed5 100644 --- a/nutanix/resource_nutanix_karbon_private_registry.go +++ b/nutanix/resource_nutanix_karbon_private_registry.go @@ -1,24 +1,26 @@ package nutanix import ( + "context" "fmt" "log" karbon "github.com/terraform-providers/terraform-provider-nutanix/client/karbon" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/helper/validation" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" ) func resourceNutanixKarbonPrivateRegistry() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixKarbonPrivateRegistryCreate, - Read: resourceNutanixKarbonPrivateRegistryRead, - Update: resourceNutanixKarbonPrivateRegistryUpdate, - Delete: resourceNutanixKarbonPrivateRegistryDelete, - Exists: resourceNutanixKarbonPrivateRegistryExists, + CreateContext: resourceNutanixKarbonPrivateRegistryCreate, + ReadContext: resourceNutanixKarbonPrivateRegistryRead, + UpdateContext: resourceNutanixKarbonPrivateRegistryUpdate, + DeleteContext: resourceNutanixKarbonPrivateRegistryDelete, + Exists: resourceNutanixKarbonPrivateRegistryExists, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, SchemaVersion: 1, Schema: KarbonPrivateRegistryResourceMap(), @@ -65,7 +67,7 @@ func KarbonPrivateRegistryResourceMap() map[string]*schema.Schema { } } -func resourceNutanixKarbonPrivateRegistryCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixKarbonPrivateRegistryCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Print("[Debug] Entering resourceNutanixKarbonPrivateRegistryCreate") // Get client connection client := meta.(*Client) @@ -77,13 +79,13 @@ func resourceNutanixKarbonPrivateRegistryCreate(d *schema.ResourceData, meta int n := name.(string) karbonPrivateRegistry.Name = &n } else { - return fmt.Errorf("error occurred during private registry creation: name must be set") + return diag.Errorf("error occurred during private registry creation: name must be set") } if url, ok := d.GetOk("url"); ok { u := url.(string) karbonPrivateRegistry.URL = &u } else { - return fmt.Errorf("error occurred during private registry creation: url must be set") + return diag.Errorf("error occurred during private registry creation: url must be set") } if port, ok := d.GetOk("port"); ok { p := int64(port.(int)) @@ -104,15 +106,15 @@ func resourceNutanixKarbonPrivateRegistryCreate(d *schema.ResourceData, meta int } createPrivateRegistryResponse, err := conn.PrivateRegistry.CreateKarbonPrivateRegistry(karbonPrivateRegistry) if err != nil { - return fmt.Errorf("error occurred during private registry creation: %s", err) + return diag.Errorf("error occurred during private registry creation: %s", err) } // Set terraform state id d.SetId(*createPrivateRegistryResponse.UUID) - return resourceNutanixKarbonPrivateRegistryRead(d, meta) + return resourceNutanixKarbonPrivateRegistryRead(ctx, d, meta) } -func resourceNutanixKarbonPrivateRegistryRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixKarbonPrivateRegistryRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Print("[Debug] Entering resourceNutanixKarbonPrivateRegistryRead") // Get client connection conn := meta.(*Client).KarbonAPI @@ -121,7 +123,7 @@ func resourceNutanixKarbonPrivateRegistryRead(d *schema.ResourceData, meta inter var name interface{} var ok bool if name, ok = d.GetOk("name"); !ok { - return fmt.Errorf("cannot read private registry without name") + return diag.Errorf("cannot read private registry without name") } resp, err := conn.PrivateRegistry.GetKarbonPrivateRegistry(name.(string)) if err != nil { @@ -129,21 +131,21 @@ func resourceNutanixKarbonPrivateRegistryRead(d *schema.ResourceData, meta inter return nil } if err := d.Set("name", *resp.Name); err != nil { - return fmt.Errorf("error setting name for Karbon private registry %s: %s", d.Id(), err) + return diag.Errorf("error setting name for Karbon private registry %s: %s", d.Id(), err) } if err := d.Set("endpoint", *resp.Endpoint); err != nil { - return fmt.Errorf("error setting endpoint for Karbon private registry %s: %s", d.Id(), err) + return diag.Errorf("error setting endpoint for Karbon private registry %s: %s", d.Id(), err) } d.SetId(*resp.UUID) return nil } -func resourceNutanixKarbonPrivateRegistryUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixKarbonPrivateRegistryUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Print("[Debug] Entering resourceNutanixKarbonPrivateRegistryUpdate") - return resourceNutanixKarbonPrivateRegistryRead(d, meta) + return resourceNutanixKarbonPrivateRegistryRead(ctx, d, meta) } -func resourceNutanixKarbonPrivateRegistryDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixKarbonPrivateRegistryDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Print("[Debug] Entering resourceNutanixKarbonPrivateRegistryDelete") client := meta.(*Client) conn := client.KarbonAPI @@ -152,7 +154,7 @@ func resourceNutanixKarbonPrivateRegistryDelete(d *schema.ResourceData, meta int _, err := conn.PrivateRegistry.DeleteKarbonPrivateRegistry(karbonPrivateRegistryName) if err != nil { - return fmt.Errorf("error while deleting Karbon Private Registry UUID(%s): %s", d.Id(), err) + return diag.Errorf("error while deleting Karbon Private Registry UUID(%s): %s", d.Id(), err) } d.SetId("") return nil diff --git a/nutanix/resource_nutanix_network_security_rule.go b/nutanix/resource_nutanix_network_security_rule.go index 64be383fe..677e07712 100644 --- a/nutanix/resource_nutanix_network_security_rule.go +++ b/nutanix/resource_nutanix_network_security_rule.go @@ -1,6 +1,7 @@ package nutanix import ( + "context" "fmt" "log" "reflect" @@ -10,9 +11,9 @@ import ( "github.com/terraform-providers/terraform-provider-nutanix/utils" - "github.com/hashicorp/terraform-plugin-sdk/helper/hashcode" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" ) @@ -24,12 +25,12 @@ var ( func resourceNutanixNetworkSecurityRule() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixNetworkSecurityRuleCreate, - Read: resourceNutanixNetworkSecurityRuleRead, - Update: resourceNutanixNetworkSecurityRuleUpdate, - Delete: resourceNutanixNetworkSecurityRuleDelete, + CreateContext: resourceNutanixNetworkSecurityRuleCreate, + ReadContext: resourceNutanixNetworkSecurityRuleRead, + UpdateContext: resourceNutanixNetworkSecurityRuleUpdate, + DeleteContext: resourceNutanixNetworkSecurityRuleDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, SchemaVersion: 1, StateUpgraders: []schema.StateUpgrader{ @@ -47,33 +48,8 @@ func resourceNutanixNetworkSecurityRule() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -81,42 +57,16 @@ func resourceNutanixNetworkSecurityRule() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -211,22 +161,8 @@ func resourceNutanixNetworkSecurityRule() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -357,22 +293,8 @@ func resourceNutanixNetworkSecurityRule() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -535,22 +457,8 @@ func resourceNutanixNetworkSecurityRule() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -681,22 +589,8 @@ func resourceNutanixNetworkSecurityRule() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -725,7 +619,7 @@ func resourceNutanixNetworkSecurityRule() *schema.Resource { } } -func resourceNutanixNetworkSecurityRuleCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixNetworkSecurityRuleCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API @@ -740,14 +634,14 @@ func resourceNutanixNetworkSecurityRuleCreate(d *schema.ResourceData, meta inter desc, descok := d.GetOk("description") if !nok { - return fmt.Errorf("please provide the required attribute name") + return diag.Errorf("please provide the required attribute name") } // Read arguments and set request values // only set kind if errMetad := getMetadataAttributes(d, metadata, "network_security_rule"); errMetad != nil { - return errMetad + return diag.FromErr(errMetad) } if descok { @@ -756,7 +650,7 @@ func resourceNutanixNetworkSecurityRuleCreate(d *schema.ResourceData, meta inter // get resources if err := getNetworkSecurityRuleResources(d, networkSecurityRule); err != nil { - return err + return diag.FromErr(err) } if descok { @@ -777,7 +671,7 @@ func resourceNutanixNetworkSecurityRuleCreate(d *schema.ResourceData, meta inter resp, err := conn.V3.CreateNetworkSecurityRule(request) if err != nil { - return fmt.Errorf("error creating Nutanix Network Security Rule %s: %+v", utils.StringValue(spec.Name), err) + return diag.Errorf("error creating Nutanix Network Security Rule %s: %+v", utils.StringValue(spec.Name), err) } d.SetId(*resp.Metadata.UUID) @@ -794,14 +688,14 @@ func resourceNutanixNetworkSecurityRuleCreate(d *schema.ResourceData, meta inter MinTimeout: netMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf("error waiting for network_security_rule (%s) to create: %s", d.Id(), err) + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf("error waiting for network_security_rule (%s) to create: %s", d.Id(), err) } - return resourceNutanixNetworkSecurityRuleRead(d, meta) + return resourceNutanixNetworkSecurityRuleRead(ctx, d, meta) } -func resourceNutanixNetworkSecurityRuleRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixNetworkSecurityRuleRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Reading Network Security Rule: %s", d.Get("name").(string)) // Get client connection @@ -814,31 +708,31 @@ func resourceNutanixNetworkSecurityRuleRead(d *schema.ResourceData, meta interfa d.SetId("") return nil } - return errNet + return diag.FromErr(errNet) } m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValues(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if resp.Status == nil { - return fmt.Errorf("error reading Status from network security rule %s", d.Id()) + return diag.Errorf("error reading Status from network security rule %s", d.Id()) } if resp.Status.Resources == nil { - return fmt.Errorf("error reading Status.Resources from network security rule %s", d.Id()) + return diag.Errorf("error reading Status.Resources from network security rule %s", d.Id()) } d.Set("api_version", utils.StringValue(resp.APIVersion)) @@ -856,30 +750,30 @@ func resourceNutanixNetworkSecurityRuleRead(d *schema.ResourceData, meta interfa } if err := flattenNetworkRule("app_rule", rules.AppRule, d); err != nil { - return err + return diag.FromErr(err) } if err := flattenNetworkRule("ad_rule", rules.AdRule, d); err != nil { - return err + return diag.FromErr(err) } if rules.IsolationRule != nil { if err := d.Set("isolation_rule_action", utils.StringValue(rules.IsolationRule.Action)); err != nil { - return err + return diag.FromErr(err) } if rules.IsolationRule.FirstEntityFilter != nil { firstFilter := rules.IsolationRule.FirstEntityFilter if err := d.Set("isolation_rule_first_entity_filter_kind_list", utils.StringValueSlice(firstFilter.KindList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_first_entity_filter_type", utils.StringValue(firstFilter.Type)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_first_entity_filter_params", expandFilterParams(firstFilter.Params)); err != nil { - return err + return diag.FromErr(err) } } @@ -887,27 +781,27 @@ func resourceNutanixNetworkSecurityRuleRead(d *schema.ResourceData, meta interfa secondFilter := rules.IsolationRule.SecondEntityFilter if err := d.Set("isolation_rule_second_entity_filter_kind_list", utils.StringValueSlice(secondFilter.KindList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_second_entity_filter_type", utils.StringValue(secondFilter.Type)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_second_entity_filter_params", expandFilterParams(secondFilter.Params)); err != nil { - return err + return diag.FromErr(err) } } } else { if err := d.Set("isolation_rule_first_entity_filter_kind_list", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_first_entity_filter_params", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_second_entity_filter_kind_list", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("isolation_rule_second_entity_filter_params", make([]string, 0)); err != nil { - return err + return diag.FromErr(err) } } @@ -963,7 +857,7 @@ func flattenNetworkRule(prefix string, rule *v3.NetworkSecurityRuleResourcesRule return nil } -func resourceNutanixNetworkSecurityRuleUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixNetworkSecurityRuleUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API @@ -979,7 +873,7 @@ func resourceNutanixNetworkSecurityRuleUpdate(d *schema.ResourceData, meta inter if strings.Contains(fmt.Sprint(err), "ENTITY_NOT_FOUND") { d.SetId("") } - return err + return diag.FromErr(err) } if response.Metadata != nil { @@ -1042,7 +936,7 @@ func resourceNutanixNetworkSecurityRuleUpdate(d *schema.ResourceData, meta inter d.HasChange("isolation_rule_second_entity_filter_type") || d.HasChange("isolation_rule_second_entity_filter_params") { if err := getNetworkSecurityRuleResources(d, networkSecurityRule); err != nil { - return err + return diag.FromErr(err) } spec.Resources = networkSecurityRule } @@ -1053,7 +947,7 @@ func resourceNutanixNetworkSecurityRuleUpdate(d *schema.ResourceData, meta inter resp, errUpdate := conn.V3.UpdateNetworkSecurityRule(d.Id(), request) if errUpdate != nil { - return errUpdate + return diag.FromErr(errUpdate) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -1068,15 +962,15 @@ func resourceNutanixNetworkSecurityRuleUpdate(d *schema.ResourceData, meta inter MinTimeout: netMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for network_security_rule (%s) to update: %s", d.Id(), err) } - return resourceNutanixNetworkSecurityRuleRead(d, meta) + return resourceNutanixNetworkSecurityRuleRead(ctx, d, meta) } -func resourceNutanixNetworkSecurityRuleDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixNetworkSecurityRuleDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Deleting Network Security Rule: %s", d.Get("name").(string)) conn := meta.(*Client).API @@ -1084,7 +978,7 @@ func resourceNutanixNetworkSecurityRuleDelete(d *schema.ResourceData, meta inter resp, err := conn.V3.DeleteNetworkSecurityRule(UUID) if err != nil { - return err + return diag.FromErr(err) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -1099,8 +993,8 @@ func resourceNutanixNetworkSecurityRuleDelete(d *schema.ResourceData, meta inter MinTimeout: netMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for network_security_rule (%s) to delete: %s", d.Id(), err) } @@ -1513,7 +1407,7 @@ func expandIcmpTypeCodeList(icmp interface{}) []*v3.NetworkRuleIcmpTypeCodeList func filterParamsHash(v interface{}) int { params := v.(map[string]interface{}) - return hashcode.String(params["name"].(string)) + return utils.HashcodeString(params["name"].(string)) } func flattenNetworkRuleList(networkRules []*v3.NetworkRule) []map[string]interface{} { @@ -1607,7 +1501,7 @@ func portRangeSchema() *schema.Schema { } } -func resourceSecurityRuleInstanceStateUpgradeV0(is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { +func resourceSecurityRuleInstanceStateUpgradeV0(ctx context.Context, is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { log.Printf("[DEBUG] Entering resourceSecurityRuleInstanceStateUpgradeV0") return resourceNutanixCategoriesMigrateState(is, meta) } @@ -1622,33 +1516,8 @@ func resourceNutanixSecurityRuleInstanceResourceV0() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": { @@ -1660,42 +1529,16 @@ func resourceNutanixSecurityRuleInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -1780,22 +1623,8 @@ func resourceNutanixSecurityRuleInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { @@ -1926,22 +1755,8 @@ func resourceNutanixSecurityRuleInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "icmp_type_code_list": { diff --git a/nutanix/resource_nutanix_network_security_rule_test.go b/nutanix/resource_nutanix_network_security_rule_test.go index a1db85328..b7f7a1bb8 100644 --- a/nutanix/resource_nutanix_network_security_rule_test.go +++ b/nutanix/resource_nutanix_network_security_rule_test.go @@ -6,9 +6,9 @@ import ( "testing" "time" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccNutanixNetworkSecurityRule_basic(t *testing.T) { diff --git a/nutanix/resource_nutanix_project.go b/nutanix/resource_nutanix_project.go index b7781c546..900180129 100644 --- a/nutanix/resource_nutanix_project.go +++ b/nutanix/resource_nutanix_project.go @@ -1,12 +1,14 @@ package nutanix import ( + "context" "fmt" "log" "strings" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/spf13/cast" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" @@ -14,12 +16,12 @@ import ( func resourceNutanixProject() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixProjectCreate, - Read: resourceNutanixProjectRead, - Update: resourceNutanixProjectUpdate, - Delete: resourceNutanixProjectDelete, + CreateContext: resourceNutanixProjectCreate, + ReadContext: resourceNutanixProjectRead, + UpdateContext: resourceNutanixProjectUpdate, + DeleteContext: resourceNutanixProjectDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, Schema: map[string]*schema.Schema{ "name": { @@ -230,77 +232,24 @@ func resourceNutanixProject() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -313,7 +262,7 @@ func resourceNutanixProject() *schema.Resource { } } -func resourceNutanixProjectCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixProjectCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API req := &v3.Project{ @@ -324,7 +273,7 @@ func resourceNutanixProjectCreate(d *schema.ResourceData, meta interface{}) erro resp, err := conn.V3.CreateProject(req) if err != nil { - return err + return diag.FromErr(err) } uuid := *resp.Metadata.UUID @@ -340,15 +289,15 @@ func resourceNutanixProjectCreate(d *schema.ResourceData, meta interface{}) erro MinTimeout: vmMinTimeout, } - if _, errWaitTask := stateConf.WaitForState(); errWaitTask != nil { - return fmt.Errorf("error waiting for project(%s) to create: %s", uuid, errWaitTask) + if _, errWaitTask := stateConf.WaitForStateContext(ctx); errWaitTask != nil { + return diag.Errorf("error waiting for project(%s) to create: %s", uuid, errWaitTask) } d.SetId(uuid) - return resourceNutanixProjectRead(d, meta) + return resourceNutanixProjectRead(ctx, d, meta) } -func resourceNutanixProjectRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixProjectRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API project, err := conn.V3.GetProject(d.Id()) @@ -357,73 +306,73 @@ func resourceNutanixProjectRead(d *schema.ResourceData, meta interface{}) error d.SetId("") return nil } - return err + return diag.FromErr(err) } m, c := setRSEntityMetadata(project.Metadata) if err := d.Set("name", project.Status.Name); err != nil { - return fmt.Errorf("error setting `name` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `name` for Project(%s): %s", d.Id(), err) } if err := d.Set("description", project.Status.Descripion); err != nil { - return fmt.Errorf("error setting `description` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `description` for Project(%s): %s", d.Id(), err) } if err := d.Set("state", project.Status.State); err != nil { - return fmt.Errorf("error setting `state` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `state` for Project(%s): %s", d.Id(), err) } if err := d.Set("is_default", project.Status.Resources.IsDefault); err != nil { - return fmt.Errorf("error setting `is_default` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `is_default` for Project(%s): %s", d.Id(), err) } if err := d.Set("resource_domain", flattenResourceDomain(project.Spec.Resources.ResourceDomain)); err != nil { - return fmt.Errorf("error setting `resource_domain` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `resource_domain` for Project(%s): %s", d.Id(), err) } if err := d.Set("account_reference_list", flattenReferenceList(project.Spec.Resources.AccountReferenceList)); err != nil { - return fmt.Errorf("error setting `account_reference_list` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `account_reference_list` for Project(%s): %s", d.Id(), err) } if err := d.Set("environment_reference_list", flattenReferenceList(project.Spec.Resources.EnvironmentReferenceList)); err != nil { - return fmt.Errorf("error setting `environment_reference_list` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `environment_reference_list` for Project(%s): %s", d.Id(), err) } if err := d.Set("default_subnet_reference", []interface{}{flattenReference(project.Spec.Resources.DefaultSubnetReference)}); err != nil { - return fmt.Errorf("error setting `default_subnet_reference` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `default_subnet_reference` for Project(%s): %s", d.Id(), err) } if err := d.Set("user_reference_list", flattenReferenceList(project.Spec.Resources.UserReferenceList)); err != nil { - return fmt.Errorf("error setting `user_reference_list` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `user_reference_list` for Project(%s): %s", d.Id(), err) } if err := d.Set("external_user_group_reference_list", flattenReferenceList(project.Spec.Resources.ExternalUserGroupReferenceList)); err != nil { - return fmt.Errorf("error setting `external_user_group_reference_list` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `external_user_group_reference_list` for Project(%s): %s", d.Id(), err) } if err := d.Set("subnet_reference_list", flattenReferenceList(project.Spec.Resources.SubnetReferenceList)); err != nil { - return fmt.Errorf("error setting `subnet_reference_list` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `subnet_reference_list` for Project(%s): %s", d.Id(), err) } if err := d.Set("external_network_list", flattenReferenceList(project.Spec.Resources.ExternalNetworkList)); err != nil { - return fmt.Errorf("error setting `external_network_list` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `external_network_list` for Project(%s): %s", d.Id(), err) } if err := d.Set("metadata", m); err != nil { - return fmt.Errorf("error setting `metadata` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `metadata` for Project(%s): %s", d.Id(), err) } if err := d.Set("project_reference", flattenReferenceValues(project.Metadata.ProjectReference)); err != nil { - return fmt.Errorf("error setting `project_reference` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `project_reference` for Project(%s): %s", d.Id(), err) } if err := d.Set("owner_reference", flattenReferenceValues(project.Metadata.OwnerReference)); err != nil { - return fmt.Errorf("error setting `owner_reference` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `owner_reference` for Project(%s): %s", d.Id(), err) } if err := d.Set("categories", c); err != nil { - return fmt.Errorf("error setting `categories` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `categories` for Project(%s): %s", d.Id(), err) } if err := d.Set("api_version", project.APIVersion); err != nil { - return fmt.Errorf("error setting `api_version` for Project(%s): %s", d.Id(), err) + return diag.Errorf("error setting `api_version` for Project(%s): %s", d.Id(), err) } return nil } -func resourceNutanixProjectUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixProjectUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API project, err := conn.V3.GetProject(d.Id()) if err != nil { - return err + return diag.FromErr(err) } project.Status = nil @@ -460,7 +409,7 @@ func resourceNutanixProjectUpdate(d *schema.ResourceData, meta interface{}) erro if d.HasChange("metadata") || d.HasChange("project_reference") || d.HasChange("owner_reference") || d.HasChange("categories") { if err = getMetadataAttributes(d, project.Metadata, "project"); err != nil { - return fmt.Errorf("error expanding metadata: %+v", err) + return diag.Errorf("error expanding metadata: %+v", err) } } if d.HasChange("api_version") { @@ -472,7 +421,7 @@ func resourceNutanixProjectUpdate(d *schema.ResourceData, meta interface{}) erro if strings.Contains(fmt.Sprint(err), "ENTITY_NOT_FOUND") { d.SetId("") } - return err + return diag.FromErr(err) } uuid := *resp.Metadata.UUID @@ -488,18 +437,18 @@ func resourceNutanixProjectUpdate(d *schema.ResourceData, meta interface{}) erro MinTimeout: vmMinTimeout, } - if _, errWaitTask := stateConf.WaitForState(); errWaitTask != nil { - return fmt.Errorf("error waiting for project(%s) to update: %s", uuid, errWaitTask) + if _, errWaitTask := stateConf.WaitForStateContext(ctx); errWaitTask != nil { + return diag.Errorf("error waiting for project(%s) to update: %s", uuid, errWaitTask) } - return resourceNutanixProjectRead(d, meta) + return resourceNutanixProjectRead(ctx, d, meta) } -func resourceNutanixProjectDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixProjectDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API resp, err := conn.V3.DeleteProject(d.Id()) if err != nil { - return fmt.Errorf("error deleting project id %s): %s", d.Id(), err) + return diag.Errorf("error deleting project id %s): %s", d.Id(), err) } // Wait for the Project to be available @@ -512,8 +461,8 @@ func resourceNutanixProjectDelete(d *schema.ResourceData, meta interface{}) erro MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf("error waiting for project (%s) to update: %s", d.Id(), err) + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf("error waiting for project (%s) to update: %s", d.Id(), err) } d.SetId("") diff --git a/nutanix/resource_nutanix_project_test.go b/nutanix/resource_nutanix_project_test.go index f0f92bab2..8b92a2356 100644 --- a/nutanix/resource_nutanix_project_test.go +++ b/nutanix/resource_nutanix_project_test.go @@ -6,9 +6,9 @@ import ( "testing" "time" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" "github.com/spf13/cast" ) diff --git a/nutanix/resource_nutanix_protection_rule.go b/nutanix/resource_nutanix_protection_rule.go index f5462f480..6b0261dc5 100755 --- a/nutanix/resource_nutanix_protection_rule.go +++ b/nutanix/resource_nutanix_protection_rule.go @@ -1,14 +1,16 @@ package nutanix import ( + "context" "fmt" "log" "strings" - "github.com/hashicorp/terraform-plugin-sdk/helper/validation" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/spf13/cast" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" @@ -16,12 +18,12 @@ import ( func resourceNutanixProtectionRule() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixProtectionRuleCreate, - Read: resourceNutanixProtectionRuleRead, - Update: resourceNutanixProtectionRuleUpdate, - Delete: resourceNutanixProtectionRuleDelete, + CreateContext: resourceNutanixProtectionRuleCreate, + ReadContext: resourceNutanixProtectionRuleRead, + UpdateContext: resourceNutanixProtectionRuleUpdate, + DeleteContext: resourceNutanixProtectionRuleDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, SchemaVersion: 1, Schema: map[string]*schema.Schema{ @@ -37,44 +39,8 @@ func resourceNutanixProtectionRule() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -296,7 +262,7 @@ func resourceNutanixProtectionRule() *schema.Resource { } } -func resourceNutanixProtectionRuleCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixProtectionRuleCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API request := &v3.ProtectionRuleInput{} @@ -310,11 +276,11 @@ func resourceNutanixProtectionRuleCreate(d *schema.ResourceData, meta interface{ desc, descok := d.GetOk("description") if !nok && !azclok && !oazlok { - return fmt.Errorf("please provide the required attributes `name`, `availability_zone`, `ordered_availability_zone`") + return diag.Errorf("please provide the required attributes `name`, `availability_zone`, `ordered_availability_zone`") } if err := getMetadataAttributes(d, metadata, "protection_rule"); err != nil { - return err + return diag.FromErr(err) } getProtectionRulesResources(d, protectionRule) @@ -325,11 +291,11 @@ func resourceNutanixProtectionRuleCreate(d *schema.ResourceData, meta interface{ protectionUUID, err := resourceNutanixProtectionRulesExists(conn, d.Get("name").(string)) if err != nil { - return fmt.Errorf("error checking if protection_rule already exists %+v", err) + return diag.Errorf("error checking if protection_rule already exists %+v", err) } if protectionUUID != nil { - return fmt.Errorf("protection_rule already with name %s exists , UUID %s", d.Get("name").(string), *protectionUUID) + return diag.Errorf("protection_rule already with name %s exists , UUID %s", d.Get("name").(string), *protectionUUID) } spec.Name = n.(string) @@ -339,7 +305,7 @@ func resourceNutanixProtectionRuleCreate(d *schema.ResourceData, meta interface{ resp, err := conn.V3.CreateProtectionRule(request) if err != nil { - return fmt.Errorf("error creating Nutanix ProtectionRules %s: %+v", spec.Name, err) + return diag.Errorf("error creating Nutanix ProtectionRules %s: %+v", spec.Name, err) } d.SetId(*resp.Metadata.UUID) @@ -356,19 +322,19 @@ func resourceNutanixProtectionRuleCreate(d *schema.ResourceData, meta interface{ MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { + if _, err := stateConf.WaitForStateContext(ctx); err != nil { id := d.Id() d.SetId("") - return fmt.Errorf("error waiting for protection_rule id (%s) to create: %+v", id, err) + return diag.Errorf("error waiting for protection_rule id (%s) to create: %+v", id, err) } // Setting Description because in Get request is not present. d.Set("description", resp.Spec.Description) - return resourceNutanixProtectionRuleRead(d, meta) + return resourceNutanixProtectionRuleRead(ctx, d, meta) } -func resourceNutanixProtectionRuleRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixProtectionRuleRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API id := d.Id() resp, err := conn.V3.GetProtectionRule(id) @@ -382,39 +348,39 @@ func resourceNutanixProtectionRuleRead(d *schema.ResourceData, meta interface{}) m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValuesList(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValuesList(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("name", resp.Spec.Name); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("description", resp.Spec.Description); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("start_time", resp.Spec.Resources.StartTime); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("category_filter", flattenCategoriesFilter(resp.Spec.Resources.CategoryFilter)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("availability_zone_connectivity_list", flattenAvailabilityZoneConnectivityList(resp.Spec.Resources.AvailabilityZoneConnectivityList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("ordered_availability_zone_list", flattenOrderAvailibilityList(resp.Spec.Resources.OrderedAvailabilityZoneList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("state", resp.Status.State); err != nil { - return err + return diag.FromErr(err) } d.SetId(*resp.Metadata.UUID) @@ -422,7 +388,7 @@ func resourceNutanixProtectionRuleRead(d *schema.ResourceData, meta interface{}) return nil } -func resourceNutanixProtectionRuleUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixProtectionRuleUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API request := &v3.ProtectionRuleInput{} @@ -436,7 +402,7 @@ func resourceNutanixProtectionRuleUpdate(d *schema.ResourceData, meta interface{ if strings.Contains(fmt.Sprint(err), "ENTITY_NOT_FOUND") { d.SetId("") } - return fmt.Errorf("error retrieving for protection rule id (%s) :%+v", id, err) + return diag.Errorf("error retrieving for protection rule id (%s) :%+v", id, err) } if response.Metadata != nil { @@ -485,7 +451,7 @@ func resourceNutanixProtectionRuleUpdate(d *schema.ResourceData, meta interface{ resp, errUpdate := conn.V3.UpdateProtectionRule(d.Id(), request) if errUpdate != nil { - return fmt.Errorf("error updating protection_rule id %s): %s", d.Id(), errUpdate) + return diag.Errorf("error updating protection_rule id %s): %s", d.Id(), errUpdate) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -500,21 +466,21 @@ func resourceNutanixProtectionRuleUpdate(d *schema.ResourceData, meta interface{ MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for protection rule (%s) to update: %s", d.Id(), err) } - return resourceNutanixProtectionRuleRead(d, meta) + return resourceNutanixProtectionRuleRead(ctx, d, meta) } -func resourceNutanixProtectionRuleDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixProtectionRuleDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API resp, err := conn.V3.DeleteProtectionRule(d.Id()) if err != nil { - return fmt.Errorf("error deleting protection_rule id %s): %s", d.Id(), err) + return diag.Errorf("error deleting protection_rule id %s): %s", d.Id(), err) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -529,8 +495,8 @@ func resourceNutanixProtectionRuleDelete(d *schema.ResourceData, meta interface{ MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for protection_rule (%s) to delete: %s", d.Id(), err) } diff --git a/nutanix/resource_nutanix_protection_rule_test.go b/nutanix/resource_nutanix_protection_rule_test.go index 989fc9b88..094b3052b 100644 --- a/nutanix/resource_nutanix_protection_rule_test.go +++ b/nutanix/resource_nutanix_protection_rule_test.go @@ -6,10 +6,10 @@ import ( "testing" "time" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixProtectionRule_basic(t *testing.T) { diff --git a/nutanix/resource_nutanix_recovery_plan.go b/nutanix/resource_nutanix_recovery_plan.go index b5b52800d..afa09853e 100644 --- a/nutanix/resource_nutanix_recovery_plan.go +++ b/nutanix/resource_nutanix_recovery_plan.go @@ -1,12 +1,14 @@ package nutanix import ( + "context" "fmt" "log" "strings" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/spf13/cast" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" @@ -14,12 +16,12 @@ import ( func resourceNutanixRecoveryPlan() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixRecoveryPlanCreate, - Read: resourceNutanixRecoveryPlanRead, - Update: resourceNutanixRecoveryPlanUpdate, - Delete: resourceNutanixRecoveryPlanDelete, + CreateContext: resourceNutanixRecoveryPlanCreate, + ReadContext: resourceNutanixRecoveryPlanRead, + UpdateContext: resourceNutanixRecoveryPlanUpdate, + DeleteContext: resourceNutanixRecoveryPlanDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, SchemaVersion: 1, Schema: map[string]*schema.Schema{ @@ -35,44 +37,8 @@ func resourceNutanixRecoveryPlan() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -646,7 +612,7 @@ func resourceNutanixRecoveryPlan() *schema.Resource { } } -func resourceNutanixRecoveryPlanCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixRecoveryPlanCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API request := &v3.RecoveryPlanInput{} @@ -658,11 +624,11 @@ func resourceNutanixRecoveryPlanCreate(d *schema.ResourceData, meta interface{}) desc, descok := d.GetOk("description") if !nok { - return fmt.Errorf("please provide the required attributes `name`") + return diag.Errorf("please provide the required attributes `name`") } if err := getMetadataAttributes(d, metadata, "recovery_plan"); err != nil { - return err + return diag.FromErr(err) } getRecoveryPlanResources(d, recoveryPlan) @@ -673,11 +639,11 @@ func resourceNutanixRecoveryPlanCreate(d *schema.ResourceData, meta interface{}) recoveryUUID, err := resourceNutanixRecoveryPlanExists(conn, d.Get("name").(string)) if err != nil { - return fmt.Errorf("error checking if recovery_plan already exists %+v", err) + return diag.Errorf("error checking if recovery_plan already exists %+v", err) } if recoveryUUID != nil { - return fmt.Errorf("recovery_plan already with name %s exists , UUID %s", d.Get("name").(string), *recoveryUUID) + return diag.Errorf("recovery_plan already with name %s exists , UUID %s", d.Get("name").(string), *recoveryUUID) } spec.Name = n.(string) @@ -687,7 +653,7 @@ func resourceNutanixRecoveryPlanCreate(d *schema.ResourceData, meta interface{}) resp, err := conn.V3.CreateRecoveryPlan(request) if err != nil { - return fmt.Errorf("error creating Nutanix RecoveryPlan %s: %+v", spec.Name, err) + return diag.Errorf("error creating Nutanix RecoveryPlan %s: %+v", spec.Name, err) } d.SetId(*resp.Metadata.UUID) @@ -704,19 +670,19 @@ func resourceNutanixRecoveryPlanCreate(d *schema.ResourceData, meta interface{}) MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { + if _, err := stateConf.WaitForStateContext(ctx); err != nil { id := d.Id() d.SetId("") - return fmt.Errorf("error waiting for recovery_plan id (%s) to create: %+v", id, err) + return diag.Errorf("error waiting for recovery_plan id (%s) to create: %+v", id, err) } // Setting Description because in Get request is not present. d.Set("description", resp.Spec.Description) - return resourceNutanixRecoveryPlanRead(d, meta) + return resourceNutanixRecoveryPlanRead(ctx, d, meta) } -func resourceNutanixRecoveryPlanRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixRecoveryPlanRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API id := d.Id() resp, err := conn.V3.GetRecoveryPlan(id) @@ -730,31 +696,31 @@ func resourceNutanixRecoveryPlanRead(d *schema.ResourceData, meta interface{}) e m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValuesList(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValuesList(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("name", resp.Spec.Name); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("description", resp.Spec.Description); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("stage_list", flattenStageList(resp.Spec.Resources.StageList)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("parameters", flattenParameters(resp.Spec.Resources.Parameters)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("state", resp.Status.State); err != nil { - return err + return diag.FromErr(err) } d.SetId(*resp.Metadata.UUID) @@ -762,7 +728,7 @@ func resourceNutanixRecoveryPlanRead(d *schema.ResourceData, meta interface{}) e return nil } -func resourceNutanixRecoveryPlanUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixRecoveryPlanUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API request := &v3.RecoveryPlanInput{} @@ -777,7 +743,7 @@ func resourceNutanixRecoveryPlanUpdate(d *schema.ResourceData, meta interface{}) if strings.Contains(fmt.Sprint(err), "RECOVERY_PLAN_NOT_FOUND") { d.SetId("") } - return fmt.Errorf("error retrieving for protection rule id (%s) :%+v", id, err) + return diag.Errorf("error retrieving for protection rule id (%s) :%+v", id, err) } if response.Metadata != nil { @@ -821,7 +787,7 @@ func resourceNutanixRecoveryPlanUpdate(d *schema.ResourceData, meta interface{}) resp, errUpdate := conn.V3.UpdateRecoveryPlan(d.Id(), request) if errUpdate != nil { - return fmt.Errorf("error recovery_plan subnet id %s): %s", d.Id(), errUpdate) + return diag.Errorf("error recovery_plan subnet id %s): %s", d.Id(), errUpdate) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -836,21 +802,21 @@ func resourceNutanixRecoveryPlanUpdate(d *schema.ResourceData, meta interface{}) MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for protection rule (%s) to update: %s", d.Id(), err) } - return resourceNutanixRecoveryPlanRead(d, meta) + return resourceNutanixRecoveryPlanRead(ctx, d, meta) } -func resourceNutanixRecoveryPlanDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixRecoveryPlanDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API resp, err := conn.V3.DeleteRecoveryPlan(d.Id()) if err != nil { - return fmt.Errorf("error deleting protection_rule id %s): %s", d.Id(), err) + return diag.Errorf("error deleting protection_rule id %s): %s", d.Id(), err) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -865,8 +831,8 @@ func resourceNutanixRecoveryPlanDelete(d *schema.ResourceData, meta interface{}) MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for recovery_plan (%s) to delete: %s", d.Id(), err) } diff --git a/nutanix/resource_nutanix_recovery_plan_test.go b/nutanix/resource_nutanix_recovery_plan_test.go index 3195efe5e..18addede5 100644 --- a/nutanix/resource_nutanix_recovery_plan_test.go +++ b/nutanix/resource_nutanix_recovery_plan_test.go @@ -6,10 +6,10 @@ import ( "testing" "time" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNutanixRecoveryPlanWithStageList_basic(t *testing.T) { diff --git a/nutanix/resource_nutanix_role.go b/nutanix/resource_nutanix_role.go index 72d6cf44c..da3474739 100644 --- a/nutanix/resource_nutanix_role.go +++ b/nutanix/resource_nutanix_role.go @@ -2,13 +2,13 @@ package nutanix import ( "bytes" + "context" "fmt" "strings" - "github.com/hashicorp/terraform-plugin-sdk/helper/hashcode" - - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/spf13/cast" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" @@ -16,12 +16,12 @@ import ( func resourceNutanixRole() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixRoleCreate, - Read: resourceNutanixRoleRead, - Update: resourceNutanixRoleUpdate, - Delete: resourceNutanixRoleDelete, + CreateContext: resourceNutanixRoleCreate, + ReadContext: resourceNutanixRoleRead, + UpdateContext: resourceNutanixRoleUpdate, + DeleteContext: resourceNutanixRoleDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, Schema: map[string]*schema.Schema{ "api_version": { @@ -36,44 +36,8 @@ func resourceNutanixRole() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -156,14 +120,14 @@ func resourceNutanixRole() *schema.Resource { m := v.(map[string]interface{}) buf.WriteString(fmt.Sprintf("%s-", m["kind"].(string))) buf.WriteString(fmt.Sprintf("%s-", m["uuid"].(string))) - return hashcode.String(buf.String()) + return utils.HashcodeString(buf.String()) }, }, }, } } -func resourceNutanixRoleCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixRoleCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API request := &v3.Role{} @@ -175,11 +139,11 @@ func resourceNutanixRoleCreate(d *schema.ResourceData, meta interface{}) error { permissions, permissionsOk := d.GetOk("permission_reference_list") if !nameOk && !permissionsOk { - return fmt.Errorf("please provide the required `name` and `permission_reference_list` attribute") + return diag.Errorf("please provide the required `name` and `permission_reference_list` attribute") } if err := getMetadataAttributesV2(d, metadata, "role"); err != nil { - return err + return diag.FromErr(err) } spec.Name = utils.StringPtr(name.(string)) @@ -197,7 +161,7 @@ func resourceNutanixRoleCreate(d *schema.ResourceData, meta interface{}) error { resp, err := conn.V3.CreateRole(request) if err != nil { - return fmt.Errorf("error creating Nutanix Role %s: %+v", utils.StringValue(spec.Name), err) + return diag.Errorf("error creating Nutanix Role %s: %+v", utils.StringValue(spec.Name), err) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -212,10 +176,10 @@ func resourceNutanixRoleCreate(d *schema.ResourceData, meta interface{}) error { MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { + if _, err := stateConf.WaitForStateContext(ctx); err != nil { id := d.Id() d.SetId("") - return fmt.Errorf("error waiting for role id (%s) to create: %+v", id, err) + return diag.Errorf("error waiting for role id (%s) to create: %+v", id, err) } // Setting Description because in Get request is not present. @@ -223,10 +187,10 @@ func resourceNutanixRoleCreate(d *schema.ResourceData, meta interface{}) error { d.SetId(utils.StringValue(resp.Metadata.UUID)) - return resourceNutanixRoleRead(d, meta) + return resourceNutanixRoleRead(ctx, d, meta) } -func resourceNutanixRoleRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixRoleRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API id := d.Id() resp, err := conn.V3.GetRole(id) @@ -235,44 +199,44 @@ func resourceNutanixRoleRead(d *schema.ResourceData, meta interface{}) error { d.SetId("") return nil } - errDel := resourceNutanixRoleDelete(d, meta) + errDel := resourceNutanixRoleDelete(ctx, d, meta) if errDel != nil { - return fmt.Errorf("error deleting role (%s) after read error: %+v", id, errDel) + return diag.Errorf("error deleting role (%s) after read error: %+v", id, errDel) } d.SetId("") - return fmt.Errorf("error reading role id (%s): %+v", id, err) + return diag.Errorf("error reading role id (%s): %+v", id, err) } m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValuesList(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValuesList(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } d.Set("api_version", resp.APIVersion) if status := resp.Status; status != nil { if err := d.Set("name", utils.StringValue(resp.Status.Name)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("description", utils.StringValue(resp.Status.Description)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("state", utils.StringValue(resp.Status.State)); err != nil { - return err + return diag.FromErr(err) } if res := status.Resources; res != nil { if err := d.Set("permission_reference_list", flattenArrayReferenceValues(status.Resources.PermissionReferenceList)); err != nil { - return err + return diag.FromErr(err) } } } @@ -280,7 +244,7 @@ func resourceNutanixRoleRead(d *schema.ResourceData, meta interface{}) error { return nil } -func resourceNutanixRoleUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixRoleUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API request := &v3.Role{} metadata := &v3.Metadata{} @@ -294,7 +258,7 @@ func resourceNutanixRoleUpdate(d *schema.ResourceData, meta interface{}) error { if strings.Contains(fmt.Sprint(err), "ENTITY_NOT_FOUND") { d.SetId("") } - return fmt.Errorf("error retrieving for role id (%s) :%+v", id, err) + return diag.Errorf("error retrieving for role id (%s) :%+v", id, err) } if response.Metadata != nil { @@ -335,7 +299,7 @@ func resourceNutanixRoleUpdate(d *schema.ResourceData, meta interface{}) error { resp, errUpdate := conn.V3.UpdateRole(d.Id(), request) if errUpdate != nil { - return fmt.Errorf("error updating role id %s): %s", d.Id(), errUpdate) + return diag.Errorf("error updating role id %s): %s", d.Id(), errUpdate) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -350,22 +314,22 @@ func resourceNutanixRoleUpdate(d *schema.ResourceData, meta interface{}) error { MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for role (%s) to update: %s", d.Id(), err) } // Setting Description because in Get request is not present. d.Set("description", utils.StringValue(resp.Spec.Description)) - return resourceNutanixRoleRead(d, meta) + return resourceNutanixRoleRead(ctx, d, meta) } -func resourceNutanixRoleDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixRoleDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API resp, err := conn.V3.DeleteRole(d.Id()) if err != nil { - return fmt.Errorf("error deleting role id %s): %s", d.Id(), err) + return diag.Errorf("error deleting role id %s): %s", d.Id(), err) } // Wait for the VM to be available @@ -378,8 +342,8 @@ func resourceNutanixRoleDelete(d *schema.ResourceData, meta interface{}) error { MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for role (%s) to update: %s", d.Id(), err) } diff --git a/nutanix/resource_nutanix_role_test.go b/nutanix/resource_nutanix_role_test.go index adfdc2b77..d2f0f107c 100644 --- a/nutanix/resource_nutanix_role_test.go +++ b/nutanix/resource_nutanix_role_test.go @@ -5,10 +5,10 @@ import ( "strings" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) const resourceRole = "nutanix_role.test" @@ -66,10 +66,10 @@ func TestAccNutanixRole_WithCategory(t *testing.T) { testAccCheckNutanixRoleExists(), testAccCheckNutanixCategories(resourceRole), resource.TestCheckResourceAttr(resourceRole, "categories.#", "1"), - resource.TestCheckResourceAttrSet(resourceRole, "categories.2228745532.name"), - resource.TestCheckResourceAttrSet(resourceRole, "categories.2228745532.value"), - resource.TestCheckResourceAttr(resourceRole, "categories.2228745532.name", "Environment"), - resource.TestCheckResourceAttr(resourceRole, "categories.2228745532.value", "Production"), + resource.TestCheckResourceAttrSet(resourceRole, "categories.0.name"), + resource.TestCheckResourceAttrSet(resourceRole, "categories.0.value"), + resource.TestCheckResourceAttr(resourceRole, "categories.0.name", "Environment"), + resource.TestCheckResourceAttr(resourceRole, "categories.0.value", "Production"), ), }, { @@ -77,10 +77,10 @@ func TestAccNutanixRole_WithCategory(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckNutanixRoleExists(), resource.TestCheckResourceAttr(resourceRole, "categories.#", "1"), - resource.TestCheckResourceAttrSet(resourceRole, "categories.2940305446.name"), - resource.TestCheckResourceAttrSet(resourceRole, "categories.2940305446.value"), - resource.TestCheckResourceAttr(resourceRole, "categories.2940305446.name", "Environment"), - resource.TestCheckResourceAttr(resourceRole, "categories.2940305446.value", "Staging"), + resource.TestCheckResourceAttrSet(resourceRole, "categories.0.name"), + resource.TestCheckResourceAttrSet(resourceRole, "categories.0.value"), + resource.TestCheckResourceAttr(resourceRole, "categories.0.name", "Environment"), + resource.TestCheckResourceAttr(resourceRole, "categories.0.value", "Staging"), ), }, { diff --git a/nutanix/resource_nutanix_subnet.go b/nutanix/resource_nutanix_subnet.go index 13e1923c5..84c5b7114 100644 --- a/nutanix/resource_nutanix_subnet.go +++ b/nutanix/resource_nutanix_subnet.go @@ -1,15 +1,17 @@ package nutanix import ( + "context" "fmt" "log" "regexp" "strings" "time" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/helper/validation" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" ) @@ -22,12 +24,12 @@ var ( func resourceNutanixSubnet() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixSubnetCreate, - Read: resourceNutanixSubnetRead, - Update: resourceNutanixSubnetUpdate, - Delete: resourceNutanixSubnetDelete, + CreateContext: resourceNutanixSubnetCreate, + ReadContext: resourceNutanixSubnetRead, + UpdateContext: resourceNutanixSubnetUpdate, + DeleteContext: resourceNutanixSubnetDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, SchemaVersion: 1, StateUpgraders: []schema.StateUpgrader{ @@ -50,44 +52,8 @@ func resourceNutanixSubnet() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -95,42 +61,16 @@ func resourceNutanixSubnet() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -145,22 +85,8 @@ func resourceNutanixSubnet() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_uuid": { @@ -199,24 +125,8 @@ func resourceNutanixSubnet() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "dhcp_server_address_port": { @@ -241,24 +151,8 @@ func resourceNutanixSubnet() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "boot_file_name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "domain_name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "tftp_server_name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "dhcp_domain_name_server_list": { @@ -283,29 +177,15 @@ func resourceNutanixSubnet() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, } } -func resourceNutanixSubnetCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixSubnetCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API request := &v3.SubnetIntentInput{} @@ -319,14 +199,14 @@ func resourceNutanixSubnetCreate(d *schema.ResourceData, meta interface{}) error _, stok := d.GetOk("subnet_type") if !stok && !nok { - return fmt.Errorf("please provide the required attributes name, subnet_type") + return diag.Errorf("please provide the required attributes name, subnet_type") } if !nok { - return fmt.Errorf("please provide the required name attribute") + return diag.Errorf("please provide the required name attribute") } if err := getMetadataAttributes(d, metadata, "subnet"); err != nil { - return err + return diag.FromErr(err) } if azrok { @@ -348,7 +228,7 @@ func resourceNutanixSubnetCreate(d *schema.ResourceData, meta interface{}) error resp, err := conn.V3.CreateSubnet(request) if err != nil { - return fmt.Errorf("error creating Nutanix Subnet %s: %+v", utils.StringValue(spec.Name), err) + return diag.Errorf("error creating Nutanix Subnet %s: %+v", utils.StringValue(spec.Name), err) } d.SetId(*resp.Metadata.UUID) @@ -365,19 +245,19 @@ func resourceNutanixSubnetCreate(d *schema.ResourceData, meta interface{}) error MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { + if _, err := stateConf.WaitForStateContext(ctx); err != nil { id := d.Id() d.SetId("") - return fmt.Errorf("error waiting for subnet id (%s) to create: %+v", id, err) + return diag.Errorf("error waiting for subnet id (%s) to create: %+v", id, err) } // Setting Description because in Get request is not present. d.Set("description", utils.StringValue(resp.Spec.Description)) - return resourceNutanixSubnetRead(d, meta) + return resourceNutanixSubnetRead(ctx, d, meta) } -func resourceNutanixSubnetRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixSubnetRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API id := d.Id() resp, err := conn.V3.GetSubnet(id) @@ -386,33 +266,33 @@ func resourceNutanixSubnetRead(d *schema.ResourceData, meta interface{}) error { d.SetId("") return nil } - errDel := resourceNutanixSubnetDelete(d, meta) + errDel := resourceNutanixSubnetDelete(ctx, d, meta) if errDel != nil { - return fmt.Errorf("error deleting subnet (%s) after read error: %+v", id, errDel) + return diag.Errorf("error deleting subnet (%s) after read error: %+v", id, errDel) } d.SetId("") - return fmt.Errorf("error reading subnet id (%s): %+v", id, err) + return diag.Errorf("error reading subnet id (%s): %+v", id, err) } m, c := setRSEntityMetadata(resp.Metadata) if err := d.Set("metadata", m); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("categories", c); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("project_reference", flattenReferenceValues(resp.Metadata.ProjectReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return err + return diag.FromErr(err) } if err := d.Set("availability_zone_reference", flattenReferenceValues(resp.Status.AvailabilityZoneReference)); err != nil { - return err + return diag.FromErr(err) } if err := flattenClusterReference(resp.Status.ClusterReference, d); err != nil { - return err + return diag.FromErr(err) } dgIP := "" @@ -466,19 +346,19 @@ func resourceNutanixSubnetRead(d *schema.ResourceData, meta interface{}) error { } if err := d.Set("dhcp_server_address", dhcpSA); err != nil { - return fmt.Errorf("error setting attribute for subnet id (%s) dhcp_server_address: %s", d.Id(), err) + return diag.Errorf("error setting attribute for subnet id (%s) dhcp_server_address: %s", d.Id(), err) } if err := d.Set("ip_config_pool_list_ranges", ipcpl); err != nil { - return fmt.Errorf("error setting attribute for subnet id (%s) ip_config_pool_list_ranges: %s", d.Id(), err) + return diag.Errorf("error setting attribute for subnet id (%s) ip_config_pool_list_ranges: %s", d.Id(), err) } if err := d.Set("dhcp_options", dOptions); err != nil { - return fmt.Errorf("error setting attribute for subnet id (%s) dhcp_options: %s", d.Id(), err) + return diag.Errorf("error setting attribute for subnet id (%s) dhcp_options: %s", d.Id(), err) } if err := d.Set("dhcp_domain_name_server_list", dnsList); err != nil { - return fmt.Errorf("error setting attribute for subnet id (%s) dhcp_domain_name_server_list: %s", d.Id(), err) + return diag.Errorf("error setting attribute for subnet id (%s) dhcp_domain_name_server_list: %s", d.Id(), err) } if err := d.Set("dhcp_domain_search_list", dsList); err != nil { - return fmt.Errorf("error setting attribute for subnet id (%s) dhcp_domain_search_list: %s", d.Id(), err) + return diag.Errorf("error setting attribute for subnet id (%s) dhcp_domain_search_list: %s", d.Id(), err) } d.Set("api_version", utils.StringValue(resp.APIVersion)) @@ -512,7 +392,7 @@ func resourceNutanixSubnetRead(d *schema.ResourceData, meta interface{}) error { return nil } -func resourceNutanixSubnetUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixSubnetUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API request := &v3.SubnetIntentInput{} metadata := &v3.Metadata{} @@ -528,7 +408,7 @@ func resourceNutanixSubnetUpdate(d *schema.ResourceData, meta interface{}) error if strings.Contains(fmt.Sprint(err), "ENTITY_NOT_FOUND") { d.SetId("") } - return fmt.Errorf("error retrieving for subnet id (%s) :%+v", id, err) + return diag.Errorf("error retrieving for subnet id (%s) :%+v", id, err) } if response.Metadata != nil { @@ -641,7 +521,7 @@ func resourceNutanixSubnetUpdate(d *schema.ResourceData, meta interface{}) error resp, errUpdate := conn.V3.UpdateSubnet(d.Id(), request) if errUpdate != nil { - return fmt.Errorf("error updating subnet id %s): %s", d.Id(), errUpdate) + return diag.Errorf("error updating subnet id %s): %s", d.Id(), errUpdate) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -656,23 +536,23 @@ func resourceNutanixSubnetUpdate(d *schema.ResourceData, meta interface{}) error MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for subnet (%s) to update: %s", d.Id(), err) } // Setting Description because in Get request is not present. d.Set("description", utils.StringValue(resp.Spec.Description)) - return resourceNutanixSubnetRead(d, meta) + return resourceNutanixSubnetRead(ctx, d, meta) } -func resourceNutanixSubnetDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixSubnetDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API resp, err := conn.V3.DeleteSubnet(d.Id()) if err != nil { - return fmt.Errorf("error deleting subnet id %s): %s", d.Id(), err) + return diag.Errorf("error deleting subnet id %s): %s", d.Id(), err) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -687,8 +567,8 @@ func resourceNutanixSubnetDelete(d *schema.ResourceData, meta interface{}) error MinTimeout: subnetMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for subnet (%s) to delete: %s", d.Id(), err) } @@ -801,7 +681,7 @@ func getSubnetResources(d *schema.ResourceData, subnet *v3.SubnetResources) { subnet.IPConfig = ip } -func resourceSubnetInstanceStateUpgradeV0(is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { +func resourceSubnetInstanceStateUpgradeV0(ctx context.Context, is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { log.Printf("[DEBUG] Entering resourceSubnetInstanceStateUpgradeV0") return resourceNutanixCategoriesMigrateState(is, meta) } @@ -821,44 +701,8 @@ func resourceNutanixSubnetInstanceResourceV0() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "kind": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": { @@ -870,42 +714,16 @@ func resourceNutanixSubnetInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "name": { @@ -920,22 +738,8 @@ func resourceNutanixSubnetInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_uuid": { @@ -974,24 +778,8 @@ func resourceNutanixSubnetInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "ip": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "fqdn": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "ipv6": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "dhcp_server_address_port": { @@ -1016,24 +804,8 @@ func resourceNutanixSubnetInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "boot_file_name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "domain_name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "tftp_server_name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "dhcp_domain_name_server_list": { @@ -1058,22 +830,8 @@ func resourceNutanixSubnetInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, diff --git a/nutanix/resource_nutanix_subnet_test.go b/nutanix/resource_nutanix_subnet_test.go index 6f3b7fcbc..7f487d6e9 100644 --- a/nutanix/resource_nutanix_subnet_test.go +++ b/nutanix/resource_nutanix_subnet_test.go @@ -6,8 +6,8 @@ import ( "strings" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) const resourceNameSubnet = "nutanix_subnet.acctest-managed" @@ -93,10 +93,10 @@ func TestAccNutanixSubnet_WithCategory(t *testing.T) { testAccCheckNutanixSubnetExists(resourceName), testAccCheckNutanixCategories(resourceName), resource.TestCheckResourceAttr(resourceName, "categories.#", "1"), - resource.TestCheckResourceAttrSet(resourceName, "categories.2228745532.name"), - resource.TestCheckResourceAttrSet(resourceName, "categories.2228745532.value"), - resource.TestCheckResourceAttr(resourceName, "categories.2228745532.name", "Environment"), - resource.TestCheckResourceAttr(resourceName, "categories.2228745532.value", "Production"), + resource.TestCheckResourceAttrSet(resourceName, "categories.0.name"), + resource.TestCheckResourceAttrSet(resourceName, "categories.0.value"), + resource.TestCheckResourceAttr(resourceName, "categories.0.name", "Environment"), + resource.TestCheckResourceAttr(resourceName, "categories.0.value", "Production"), ), }, { @@ -104,10 +104,10 @@ func TestAccNutanixSubnet_WithCategory(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckNutanixSubnetExists(resourceName), resource.TestCheckResourceAttr(resourceName, "categories.#", "1"), - resource.TestCheckResourceAttrSet(resourceName, "categories.2940305446.name"), - resource.TestCheckResourceAttrSet(resourceName, "categories.2940305446.value"), - resource.TestCheckResourceAttr(resourceName, "categories.2940305446.name", "Environment"), - resource.TestCheckResourceAttr(resourceName, "categories.2940305446.value", "Staging"), + resource.TestCheckResourceAttrSet(resourceName, "categories.0.name"), + resource.TestCheckResourceAttrSet(resourceName, "categories.0.value"), + resource.TestCheckResourceAttr(resourceName, "categories.0.name", "Environment"), + resource.TestCheckResourceAttr(resourceName, "categories.0.value", "Staging"), ), }, { @@ -190,8 +190,8 @@ func testAccCheckNutanixCategories(n string) resource.TestCheckFunc { return fmt.Errorf("no ID is set") } - if val, ok := rs.Primary.Attributes["categories.2228745532.name"]; !ok || val == "" { - return fmt.Errorf("%s: manual Attribute '%s' expected to be set", n, "categories.2228745532.name") + if val, ok := rs.Primary.Attributes["categories.0.name"]; !ok || val == "" { + return fmt.Errorf("%s: manual Attribute '%s' expected to be set", n, "categories.0.name") } return nil diff --git a/nutanix/resource_nutanix_user.go b/nutanix/resource_nutanix_user.go index 6a2286b71..499026c9b 100644 --- a/nutanix/resource_nutanix_user.go +++ b/nutanix/resource_nutanix_user.go @@ -1,6 +1,7 @@ package nutanix import ( + "context" "fmt" "log" "reflect" @@ -10,8 +11,9 @@ import ( v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) const ( @@ -26,12 +28,12 @@ var ( func resourceNutanixUser() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixUserCreate, - Read: resourceNutanixUserRead, - Update: resourceNutanixUserUpdate, - Delete: resourceNutanixUserDelete, + CreateContext: resourceNutanixUserCreate, + ReadContext: resourceNutanixUserRead, + UpdateContext: resourceNutanixUserUpdate, + DeleteContext: resourceNutanixUserDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, Schema: map[string]*schema.Schema{ "api_version": { @@ -41,34 +43,8 @@ func resourceNutanixUser() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -76,41 +52,15 @@ func resourceNutanixUser() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "project_reference": { Type: schema.TypeMap, Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "directory_service_user": { @@ -255,7 +205,7 @@ func resourceNutanixUser() *schema.Resource { } } -func resourceNutanixUserCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixUserCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Creating User: %s", d.Get("name").(string)) client := meta.(*Client) conn := client.API @@ -270,7 +220,7 @@ func resourceNutanixUserCreate(d *schema.ResourceData, meta interface{}) error { metadata := &v3.Metadata{} if err := getMetadataAttributes(d, metadata, "user"); err != nil { - return err + return diag.FromErr(err) } spec := &v3.UserSpec{ @@ -286,7 +236,7 @@ func resourceNutanixUserCreate(d *schema.ResourceData, meta interface{}) error { // Make request to the API resp, err := conn.V3.CreateUser(request) if err != nil { - return fmt.Errorf("error creating Nutanix User: %+v", err) + return diag.Errorf("error creating Nutanix User: %+v", err) } UUID := *resp.Metadata.UUID @@ -305,18 +255,18 @@ func resourceNutanixUserCreate(d *schema.ResourceData, meta interface{}) error { MinTimeout: userMinTimeout, } - if _, errw := stateConf.WaitForState(); errw != nil { + if _, errw := stateConf.WaitForStateContext(ctx); errw != nil { // delErr := resourceNutanixUserDelete(d, meta) // if delErr != nil { - // return fmt.Errorf("error waiting for image (%s) to delete in creation: %s", d.Id(), delErr) + // return diag.Errorf("error waiting for image (%s) to delete in creation: %s", d.Id(), delErr) // } d.SetId("") - return fmt.Errorf("error waiting for user (%s) to create: %s", UUID, errw) + return diag.Errorf("error waiting for user (%s) to create: %s", UUID, errw) } - return resourceNutanixUserRead(d, meta) + return resourceNutanixUserRead(ctx, d, meta) } -func resourceNutanixUserRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixUserRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Reading User: %s", d.Id()) // Get client connection @@ -330,51 +280,51 @@ func resourceNutanixUserRead(d *schema.ResourceData, meta interface{}) error { d.SetId("") return nil } - return fmt.Errorf("error reading user UUID (%s) with error %s", uuid, err) + return diag.Errorf("error reading user UUID (%s) with error %s", uuid, err) } m, c := setRSEntityMetadata(resp.Metadata) if err = d.Set("metadata", m); err != nil { - return fmt.Errorf("error setting metadata for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting metadata for user UUID(%s), %s", d.Id(), err) } if err = d.Set("categories", c); err != nil { - return fmt.Errorf("error setting categories for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting categories for user UUID(%s), %s", d.Id(), err) } if err = d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return fmt.Errorf("error setting owner_reference for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting owner_reference for user UUID(%s), %s", d.Id(), err) } d.Set("api_version", utils.StringValue(resp.APIVersion)) d.Set("name", utils.StringValue(resp.Status.Name)) if err = d.Set("state", resp.Status.State); err != nil { - return fmt.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting state for user UUID(%s), %s", d.Id(), err) } if err = d.Set("directory_service_user", flattenDirectoryServiceUser(resp.Status.Resources.DirectoryServiceUser)); err != nil { - return fmt.Errorf("error setting directory_service_user for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting directory_service_user for user UUID(%s), %s", d.Id(), err) } //TODO: change to status when API is fixed if err = d.Set("identity_provider_user", flattenIdentityProviderUser(resp.Spec.Resources.IdentityProviderUser)); err != nil { - return fmt.Errorf("error setting identity_provider_user for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting identity_provider_user for user UUID(%s), %s", d.Id(), err) } if err = d.Set("user_type", resp.Status.Resources.UserType); err != nil { - return fmt.Errorf("error setting user_type for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting user_type for user UUID(%s), %s", d.Id(), err) } if err = d.Set("display_name", resp.Status.Resources.DisplayName); err != nil { - return fmt.Errorf("error setting display_name for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting display_name for user UUID(%s), %s", d.Id(), err) } if err := d.Set("project_reference_list", flattenArrayReferenceValues(resp.Status.Resources.ProjectsReferenceList)); err != nil { - return fmt.Errorf("error setting project_reference_list for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting project_reference_list for user UUID(%s), %s", d.Id(), err) } if err := d.Set("access_control_policy_reference_list", flattenArrayReferenceValues(resp.Status.Resources.AccessControlPolicyReferenceList)); err != nil { - return fmt.Errorf("error setting access_control_policy_reference_list for user UUID(%s), %s", d.Id(), err) + return diag.Errorf("error setting access_control_policy_reference_list for user UUID(%s), %s", d.Id(), err) } //TODO: @@ -383,7 +333,7 @@ func resourceNutanixUserRead(d *schema.ResourceData, meta interface{}) error { return nil } -func resourceNutanixUserUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixUserUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { client := meta.(*Client) conn := client.API timeout := client.WaitTimeout @@ -404,7 +354,7 @@ func resourceNutanixUserUpdate(d *schema.ResourceData, meta interface{}) error { if strings.Contains(fmt.Sprint(err), "ENTITY_NOT_FOUND") { d.SetId("") } - return err + return diag.FromErr(err) } if response.Metadata != nil { @@ -447,7 +397,7 @@ func resourceNutanixUserUpdate(d *schema.ResourceData, meta interface{}) error { resp, errUpdate := conn.V3.UpdateUser(d.Id(), request) if errUpdate != nil { - return fmt.Errorf("error updating user(%s) %s", d.Id(), errUpdate) + return diag.Errorf("error updating user(%s) %s", d.Id(), errUpdate) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -462,20 +412,20 @@ func resourceNutanixUserUpdate(d *schema.ResourceData, meta interface{}) error { MinTimeout: userMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { + if _, err := stateConf.WaitForStateContext(ctx); err != nil { // delErr := resourceNutanixUserDelete(d, meta) // if delErr != nil { - // return fmt.Errorf("error waiting for image (%s) to delete in update: %s", d.Id(), delErr) + // return diag.Errorf("error waiting for image (%s) to delete in update: %s", d.Id(), delErr) // } uuid := d.Id() d.SetId("") - return fmt.Errorf("error waiting for user (%s) to update: %s", uuid, err) + return diag.Errorf("error waiting for user (%s) to update: %s", uuid, err) } - return resourceNutanixUserRead(d, meta) + return resourceNutanixUserRead(ctx, d, meta) } -func resourceNutanixUserDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixUserDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { log.Printf("[DEBUG] Deleting User: %s", d.Get("display_name").(string)) client := meta.(*Client) @@ -493,7 +443,7 @@ func resourceNutanixUserDelete(d *schema.ResourceData, meta interface{}) error { if strings.Contains(fmt.Sprint(err), "ENTITY_NOT_FOUND") { d.SetId("") } - return err + return diag.FromErr(err) } taskUUID := resp.Status.ExecutionContext.TaskUUID.(string) @@ -508,9 +458,9 @@ func resourceNutanixUserDelete(d *schema.ResourceData, meta interface{}) error { MinTimeout: userMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { + if _, err := stateConf.WaitForStateContext(ctx); err != nil { d.SetId("") - return fmt.Errorf("error waiting for user (%s) to delete: %s", d.Id(), err) + return diag.Errorf("error waiting for user (%s) to delete: %s", d.Id(), err) } log.Printf("[DEBUG] USER DELETED") diff --git a/nutanix/resource_nutanix_user_test.go b/nutanix/resource_nutanix_user_test.go index 7b93def2c..e6da1b4b2 100644 --- a/nutanix/resource_nutanix_user_test.go +++ b/nutanix/resource_nutanix_user_test.go @@ -5,8 +5,8 @@ import ( "strings" "testing" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) const resourceNameUser = "nutanix_user.user" diff --git a/nutanix/resource_nutanix_virtual_machine.go b/nutanix/resource_nutanix_virtual_machine.go index 9c73cf53b..15a1df9df 100644 --- a/nutanix/resource_nutanix_virtual_machine.go +++ b/nutanix/resource_nutanix_virtual_machine.go @@ -1,6 +1,7 @@ package nutanix import ( + "context" "fmt" "log" "reflect" @@ -13,9 +14,10 @@ import ( v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/helper/validation" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" ) var ( @@ -28,14 +30,14 @@ var ( func resourceNutanixVirtualMachine() *schema.Resource { return &schema.Resource{ - Create: resourceNutanixVirtualMachineCreate, - Read: resourceNutanixVirtualMachineRead, - Update: resourceNutanixVirtualMachineUpdate, - Delete: resourceNutanixVirtualMachineDelete, + CreateContext: resourceNutanixVirtualMachineCreate, + ReadContext: resourceNutanixVirtualMachineRead, + UpdateContext: resourceNutanixVirtualMachineUpdate, + DeleteContext: resourceNutanixVirtualMachineDelete, Exists: resourceNutanixVirtualMachineExists, CustomizeDiff: resourceNutanixVirtualMachineDiff, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + StateContext: schema.ImportStatePassthroughContext, }, SchemaVersion: 1, StateUpgraders: []schema.StateUpgrader{ @@ -54,33 +56,8 @@ func resourceNutanixVirtualMachine() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": categoriesSchema(), @@ -88,45 +65,16 @@ func resourceNutanixVirtualMachine() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "api_version": { @@ -146,22 +94,8 @@ func resourceNutanixVirtualMachine() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_uuid": { @@ -183,21 +117,8 @@ func resourceNutanixVirtualMachine() *schema.Resource { "host_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "hypervisor_type": { @@ -252,21 +173,8 @@ func resourceNutanixVirtualMachine() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "subnet_uuid": { @@ -361,22 +269,8 @@ func resourceNutanixVirtualMachine() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "subnet_uuid": { @@ -409,49 +303,8 @@ func resourceNutanixVirtualMachine() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "state": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "ngt_state": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "version": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "iso_mount_state": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "available_version": { - Type: schema.TypeString, - Computed: true, - }, - "guest_os_version": { - Type: schema.TypeString, - Computed: true, - }, - "vss_snapshot_capable": { - Type: schema.TypeString, - Computed: true, - }, - "is_reachable": { - Type: schema.TypeString, - Computed: true, - }, - "vm_mobility_drivers_installed": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ngt_credentials": { @@ -531,22 +384,8 @@ func resourceNutanixVirtualMachine() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "memory_size_mib": { @@ -566,19 +405,8 @@ func resourceNutanixVirtualMachine() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "device_index": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "adapter_type": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "boot_device_mac_address": { @@ -633,19 +461,8 @@ func resourceNutanixVirtualMachine() *schema.Resource { Optional: true, Computed: true, ForceNew: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "install_type": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "unattend_xml": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "guest_customization_sysprep_custom_key_values": { @@ -753,19 +570,8 @@ func resourceNutanixVirtualMachine() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "device_index": { - Type: schema.TypeInt, - Optional: true, - Computed: true, - }, - "adapter_type": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -775,19 +581,8 @@ func resourceNutanixVirtualMachine() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "volume_group_reference": { @@ -795,24 +590,8 @@ func resourceNutanixVirtualMachine() *schema.Resource { Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -841,7 +620,7 @@ func resourceNutanixVirtualMachine() *schema.Resource { } } -func resourceNutanixVirtualMachineCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixVirtualMachineCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API setVMTimeout(meta) @@ -858,10 +637,10 @@ func resourceNutanixVirtualMachineCreate(d *schema.ResourceData, meta interface{ clusterUUID, crok := d.GetOk("cluster_uuid") if !nok { - return fmt.Errorf("please provide the required name attribute") + return diag.Errorf("please provide the required name attribute") } if err := getMetadataAttributes(d, metadata, "vm"); err != nil { - return fmt.Errorf("error reading metadata for Virtual Machine %s", err) + return diag.Errorf("error reading metadata for Virtual Machine %s", err) } if descok { spec.Description = utils.StringPtr(desc.(string)) @@ -875,7 +654,7 @@ func resourceNutanixVirtualMachineCreate(d *schema.ResourceData, meta interface{ } if err := getVMResources(d, res); err != nil { - return err + return diag.FromErr(err) } spec.Name = utils.StringPtr(n.(string)) @@ -886,7 +665,7 @@ func resourceNutanixVirtualMachineCreate(d *schema.ResourceData, meta interface{ // Make request to the API resp, err := conn.V3.CreateVM(request) if err != nil { - return err + return diag.FromErr(err) } uuid := *resp.Metadata.UUID @@ -902,8 +681,8 @@ func resourceNutanixVirtualMachineCreate(d *schema.ResourceData, meta interface{ MinTimeout: vmMinTimeout, } - if _, errWaitTask := stateConf.WaitForState(); errWaitTask != nil { - return fmt.Errorf("error waiting for vm (%s) to create: %s", uuid, errWaitTask) + if _, errWaitTask := stateConf.WaitForStateContext(ctx); errWaitTask != nil { + return diag.Errorf("error waiting for vm (%s) to create: %s", uuid, errWaitTask) } // Wait for IP available @@ -916,7 +695,7 @@ func resourceNutanixVirtualMachineCreate(d *schema.ResourceData, meta interface{ MinTimeout: vmMinTimeout, } - vmIntentResponse, err := waitIPConf.WaitForState() + vmIntentResponse, err := waitIPConf.WaitForStateContext(ctx) if err != nil { log.Printf("[WARN] could not get the IP for VM(%s): %s", uuid, err) } else { @@ -932,10 +711,10 @@ func resourceNutanixVirtualMachineCreate(d *schema.ResourceData, meta interface{ // Set terraform state id d.SetId(uuid) - return resourceNutanixVirtualMachineRead(d, meta) + return resourceNutanixVirtualMachineRead(ctx, d, meta) } -func resourceNutanixVirtualMachineRead(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixVirtualMachineRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // Get client connection conn := meta.(*Client).API setVMTimeout(meta) @@ -949,7 +728,7 @@ func resourceNutanixVirtualMachineRead(d *schema.ResourceData, meta interface{}) d.SetId("") return nil } - return fmt.Errorf("error reading Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error reading Virtual Machine %s: %s", d.Id(), err) } // Added check for deletion. Re-running TF right after VM deletion, can cause an error because the ID is still present in API. @@ -960,61 +739,61 @@ func resourceNutanixVirtualMachineRead(d *schema.ResourceData, meta interface{}) } if err = flattenClusterReference(resp.Status.ClusterReference, d); err != nil { - return fmt.Errorf("error setting cluster information for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting cluster information for Virtual Machine %s: %s", d.Id(), err) } m, c := setRSEntityMetadata(resp.Metadata) if err = d.Set("metadata", m); err != nil { - return fmt.Errorf("error setting metadata for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting metadata for Virtual Machine %s: %s", d.Id(), err) } if err = d.Set("categories", c); err != nil { - return fmt.Errorf("error setting categories for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting categories for Virtual Machine %s: %s", d.Id(), err) } if err = d.Set("project_reference", flattenReferenceValues(resp.Metadata.ProjectReference)); err != nil { - return fmt.Errorf("error setting project_reference for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting project_reference for Virtual Machine %s: %s", d.Id(), err) } if err = d.Set("owner_reference", flattenReferenceValues(resp.Metadata.OwnerReference)); err != nil { - return fmt.Errorf("error setting owner_reference for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting owner_reference for Virtual Machine %s: %s", d.Id(), err) } if err = d.Set("availability_zone_reference", flattenReferenceValues(resp.Status.AvailabilityZoneReference)); err != nil { - return fmt.Errorf("error setting availability_zone_reference for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting availability_zone_reference for Virtual Machine %s: %s", d.Id(), err) } if err = d.Set("nic_list", flattenNicList(resp.Spec.Resources.NicList)); err != nil { - return fmt.Errorf("error setting nic_list for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting nic_list for Virtual Machine %s: %s", d.Id(), err) } if err = d.Set("nic_list_status", flattenNicListStatus(resp.Status.Resources.NicList)); err != nil { - return fmt.Errorf("error setting nic_list_status for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting nic_list_status for Virtual Machine %s: %s", d.Id(), err) } flatDiskList, err := flattenDiskListFilterCloudInit(d, resp.Spec.Resources.DiskList) if err != nil { - return fmt.Errorf("error flattening disk list for vm %s: %s", d.Id(), err) + return diag.Errorf("error flattening disk list for vm %s: %s", d.Id(), err) } if err = d.Set("disk_list", flatDiskList); err != nil { - return fmt.Errorf("error setting disk_list for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting disk_list for Virtual Machine %s: %s", d.Id(), err) } if err = d.Set("serial_port_list", flattenSerialPortList(resp.Status.Resources.SerialPortList)); err != nil { - return fmt.Errorf("error setting serial_port_list for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting serial_port_list for Virtual Machine %s: %s", d.Id(), err) } if err = d.Set("host_reference", flattenReferenceValues(resp.Status.Resources.HostReference)); err != nil { - return fmt.Errorf("error setting host_reference for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting host_reference for Virtual Machine %s: %s", d.Id(), err) } if err = flattenNutanixGuestTools(d, resp.Status.Resources.GuestTools); err != nil { - return fmt.Errorf("error setting nutanix_guest_tools for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting nutanix_guest_tools for Virtual Machine %s: %s", d.Id(), err) } if err = d.Set("gpu_list", flattenGPUList(resp.Status.Resources.GpuList)); err != nil { - return fmt.Errorf("error setting gpu_list for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting gpu_list for Virtual Machine %s: %s", d.Id(), err) } if err = d.Set("parent_reference", flattenReferenceValues(resp.Status.Resources.ParentReference)); err != nil { - return fmt.Errorf("error setting parent_reference for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting parent_reference for Virtual Machine %s: %s", d.Id(), err) } if uha, ok := d.GetOkExists("use_hot_add"); ok { useHotAdd = uha.(bool) } if err = d.Set("use_hot_add", useHotAdd); err != nil { - return fmt.Errorf("error setting use_hot_add for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting use_hot_add for Virtual Machine %s: %s", d.Id(), err) } diskAddress := make(map[string]interface{}) @@ -1042,7 +821,7 @@ func resourceNutanixVirtualMachineRead(d *schema.ResourceData, meta interface{}) } if err = d.Set("boot_device_order_list", b); err != nil { - return fmt.Errorf("error setting boot_device_order_list %s", err) + return diag.Errorf("error setting boot_device_order_list %s", err) } d.Set("boot_device_disk_address", diskAddress) @@ -1080,13 +859,13 @@ func resourceNutanixVirtualMachineRead(d *schema.ResourceData, meta interface{}) } } if err := d.Set("guest_customization_cloud_init_custom_key_values", cloudInitCV); err != nil { - return fmt.Errorf("error setting guest_customization_cloud_init_custom_key_values for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting guest_customization_cloud_init_custom_key_values for Virtual Machine %s: %s", d.Id(), err) } if err := d.Set("guest_customization_sysprep_custom_key_values", sysprepCV); err != nil { - return fmt.Errorf("error setting guest_customization_sysprep_custom_key_values for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting guest_customization_sysprep_custom_key_values for Virtual Machine %s: %s", d.Id(), err) } if err := d.Set("guest_customization_sysprep", sysprep); err != nil { - return fmt.Errorf("error setting guest_customization_sysprep for Virtual Machine %s: %s", d.Id(), err) + return diag.Errorf("error setting guest_customization_sysprep for Virtual Machine %s: %s", d.Id(), err) } d.Set("enable_cpu_passthrough", resp.Status.Resources.EnableCPUPassthrough) @@ -1114,7 +893,7 @@ func resourceNutanixVirtualMachineRead(d *schema.ResourceData, meta interface{}) return nil } -func resourceNutanixVirtualMachineUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixVirtualMachineUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API setVMTimeout(meta) hotPlugChange := true @@ -1142,7 +921,7 @@ func resourceNutanixVirtualMachineUpdate(d *schema.ResourceData, meta interface{ d.SetId("") return nil } - return err + return diag.FromErr(err) } if response.Metadata != nil { @@ -1335,12 +1114,12 @@ func resourceNutanixVirtualMachineUpdate(d *schema.ResourceData, meta interface{ if d.HasChange("disk_list") { preCdromCount, err := CountDiskListCdrom(res.DiskList) if err != nil { - return err + return diag.FromErr(err) } res.DiskList = expandDiskListUpdate(d, response) postCdromCount, err := CountDiskListCdrom(res.DiskList) if err != nil { - return err + return diag.FromErr(err) } if preCdromCount != postCdromCount { hotPlugChange = false @@ -1383,13 +1162,13 @@ func resourceNutanixVirtualMachineUpdate(d *schema.ResourceData, meta interface{ // If there are non-hotPlug changes, then poweroff is needed if !hotPlugChange { - if err := changePowerState(conn, d.Id(), "OFF"); err != nil { - return fmt.Errorf("internal error: cannot shut down the VM with UUID(%s): %s", d.Id(), err) + if err := changePowerState(ctx, conn, d.Id(), "OFF"); err != nil { + return diag.Errorf("internal error: cannot shut down the VM with UUID(%s): %s", d.Id(), err) } // SpecVersion has changed due previous poweroff specVersion, specErr := getVMSpecVersion(conn, d.Id()) if specErr != nil { - return fmt.Errorf("error getting spec for Virtual Machine UUID(%s): %s", d.Id(), specErr) + return diag.Errorf("error getting spec for Virtual Machine UUID(%s): %s", d.Id(), specErr) } metadata.SpecVersion = specVersion } @@ -1402,7 +1181,7 @@ func resourceNutanixVirtualMachineUpdate(d *schema.ResourceData, meta interface{ resp, err2 := conn.V3.UpdateVM(d.Id(), request) if err2 != nil { - return fmt.Errorf("error updating Virtual Machine UUID(%s): %s", d.Id(), err2) + return diag.Errorf("error updating Virtual Machine UUID(%s): %s", d.Id(), err2) } stateConf := &resource.StateChangeConf{ @@ -1414,17 +1193,17 @@ func resourceNutanixVirtualMachineUpdate(d *schema.ResourceData, meta interface{ MinTimeout: vmMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for vm (%s) to update: %s", d.Id(), err) } // Then, Turn On the VM. - if err := changePowerState(conn, d.Id(), "ON"); err != nil { - return fmt.Errorf("internal error: cannot turn ON the VM with UUID(%s): %s", d.Id(), err) + if err := changePowerState(ctx, conn, d.Id(), "ON"); err != nil { + return diag.Errorf("internal error: cannot turn ON the VM with UUID(%s): %s", d.Id(), err) } - return resourceNutanixVirtualMachineRead(d, meta) + return resourceNutanixVirtualMachineRead(ctx, d, meta) } func getVMSpecVersion(conn *v3.Client, vmID string) (*int64, error) { @@ -1484,7 +1263,7 @@ func bootConfigHasChange(boot *v3.VMBootConfig, d *schema.ResourceData) (*v3.VMB return boot, hotPlugChange } -func changePowerState(conn *v3.Client, id string, powerState string) error { +func changePowerState(ctx context.Context, conn *v3.Client, id string, powerState string) error { request := &v3.VMIntentInput{} metadata := &v3.Metadata{} res := &v3.VMResources{} @@ -1551,7 +1330,7 @@ func changePowerState(conn *v3.Client, id string, powerState string) error { MinTimeout: vmMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { + if _, err := stateConf.WaitForStateContext(ctx); err != nil { return fmt.Errorf( "error waiting for vm (%s) to update: %s", id, err) } @@ -1566,7 +1345,7 @@ func changePowerState(conn *v3.Client, id string, powerState string) error { MinTimeout: vmMinTimeout, } - if _, err := stateConfVM.WaitForState(); err != nil { + if _, err := stateConfVM.WaitForStateContext(ctx); err != nil { return fmt.Errorf( "error waiting for vm (%s) to update: %s", id, err) } @@ -1591,7 +1370,7 @@ func taskVMStateRefreshFunc(client *v3.Client, vmUUID string, powerState string) } } -func resourceNutanixVirtualMachineDelete(d *schema.ResourceData, meta interface{}) error { +func resourceNutanixVirtualMachineDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*Client).API setVMTimeout(meta) log.Printf("[DEBUG] Deleting Virtual Machine: %s, %s", d.Get("name").(string), d.Id()) @@ -1601,7 +1380,7 @@ func resourceNutanixVirtualMachineDelete(d *schema.ResourceData, meta interface{ d.SetId("") return nil } - return fmt.Errorf("error while deleting Virtual Machine UUID(%s): %s", d.Id(), err) + return diag.Errorf("error while deleting Virtual Machine UUID(%s): %s", d.Id(), err) } stateConf := &resource.StateChangeConf{ @@ -1613,8 +1392,8 @@ func resourceNutanixVirtualMachineDelete(d *schema.ResourceData, meta interface{ MinTimeout: vmMinTimeout, } - if _, err := stateConf.WaitForState(); err != nil { - return fmt.Errorf( + if _, err := stateConf.WaitForStateContext(ctx); err != nil { + return diag.Errorf( "error waiting for vm (%s) to delete: %s", d.Id(), err) } @@ -2209,7 +1988,7 @@ func CountDiskListCdrom(dl []*v3.VMDisk) (int, error) { return counter, nil } -func resourceVirtualMachineInstanceStateUpgradeV0(is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { +func resourceVirtualMachineInstanceStateUpgradeV0(ctx context.Context, is map[string]interface{}, meta interface{}) (map[string]interface{}, error) { log.Printf("[DEBUG] Entering resourceVirtualMachineInstanceStateUpgradeV0") return resourceNutanixCategoriesMigrateState(is, meta) } @@ -2221,7 +2000,7 @@ func setVMTimeout(meta interface{}) { } } -func resourceNutanixVirtualMachineDiff(d *schema.ResourceDiff, m interface{}) error { +func resourceNutanixVirtualMachineDiff(ctx context.Context, d *schema.ResourceDiff, m interface{}) error { if cloudInitCdromUUID, ok := d.GetOk("cloud_init_cdrom_uuid"); !ok { usesGuestCustomization := usesGuestCustomizationDiff(d) if usesGuestCustomization { @@ -2257,33 +2036,8 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { "metadata": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "last_update_time": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - "creation_time": { - Type: schema.TypeString, - Computed: true, - }, - "spec_version": { - Type: schema.TypeString, - Computed: true, - }, - "spec_hash": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "categories": { @@ -2295,45 +2049,16 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "owner_reference": { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "api_version": { @@ -2353,22 +2078,8 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "cluster_uuid": { @@ -2390,21 +2101,8 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { "host_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "hypervisor_type": { @@ -2459,21 +2157,8 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { "network_function_chain_reference": { Type: schema.TypeMap, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "subnet_uuid": { @@ -2563,22 +2248,8 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "subnet_uuid": { @@ -2611,49 +2282,8 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "state": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "ngt_state": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "version": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "iso_mount_state": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "available_version": { - Type: schema.TypeString, - Computed: true, - }, - "guest_os_version": { - Type: schema.TypeString, - Computed: true, - }, - "vss_snapshot_capable": { - Type: schema.TypeString, - Computed: true, - }, - "is_reachable": { - Type: schema.TypeString, - Computed: true, - }, - "vm_mobility_drivers_installed": { - Type: schema.TypeString, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "ngt_credentials": { @@ -2733,22 +2363,8 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Required: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "memory_size_mib": { @@ -2766,19 +2382,8 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "device_index": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "adapter_type": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "boot_device_mac_address": { @@ -2821,19 +2426,8 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { Optional: true, Computed: true, ForceNew: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "install_type": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "unattend_xml": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "guest_customization_sysprep_custom_key_values": { @@ -2898,19 +2492,8 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "device_index": { - Type: schema.TypeInt, - Optional: true, - Computed: true, - }, - "adapter_type": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -2920,19 +2503,8 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { Type: schema.TypeMap, Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, "volume_group_reference": { @@ -2940,24 +2512,8 @@ func resourceNutanixVirtualMachineInstanceResourceV0() *schema.Resource { Optional: true, Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kind": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "uuid": { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - }, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, diff --git a/nutanix/resource_nutanix_virtual_machine_test.go b/nutanix/resource_nutanix_virtual_machine_test.go index a6db89155..21547a8ca 100644 --- a/nutanix/resource_nutanix_virtual_machine_test.go +++ b/nutanix/resource_nutanix_virtual_machine_test.go @@ -7,9 +7,9 @@ import ( "testing" "time" - "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" "github.com/spf13/cast" ) diff --git a/nutanix/structure.go b/nutanix/structure.go index d1b944805..b7de6c499 100644 --- a/nutanix/structure.go +++ b/nutanix/structure.go @@ -4,7 +4,7 @@ import ( "fmt" "strconv" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/spf13/cast" v3 "github.com/terraform-providers/terraform-provider-nutanix/client/v3" "github.com/terraform-providers/terraform-provider-nutanix/utils" diff --git a/utils/utils.go b/utils/utils.go index 9570fa311..a68e37722 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -1,9 +1,11 @@ package utils import ( + "bytes" "crypto/rand" "encoding/json" "fmt" + "hash/crc32" "log" "net/http" "net/http/httputil" @@ -71,3 +73,31 @@ func GenUUID() string { return uuid } + +// String hashes a string to a unique hashcode. +// +// crc32 returns a uint32, but for our use we need +// and non negative integer. Here we cast to an integer +// and invert it if the result is negative. +func HashcodeString(s string) int { + v := int(crc32.ChecksumIEEE([]byte(s))) + if v >= 0 { + return v + } + if -v >= 0 { + return -v + } + // v == MinInt + return 0 +} + +// Strings hashes a list of strings to a unique hashcode. +func HashcodeStrings(strings []string) string { + var buf bytes.Buffer + + for _, s := range strings { + buf.WriteString(fmt.Sprintf("%s-", s)) + } + + return fmt.Sprintf("%d", HashcodeString(buf.String())) +}