From 368cb0a3044bc616601058d42d037b661b6551c0 Mon Sep 17 00:00:00 2001 From: dahn Date: Sat, 20 Apr 2024 07:14:33 +0200 Subject: [PATCH 01/46] Update hash generation (#108) md5 deprecated sha512 use specific tool for easy validation --- performrelease.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/performrelease.sh b/performrelease.sh index f21a679e..e733da96 100755 --- a/performrelease.sh +++ b/performrelease.sh @@ -102,11 +102,8 @@ else gpg -v --default-key $certid --armor --output apache-cloudstack-terraform-provider-$version-src.tar.bz2.asc --detach-sig apache-cloudstack-terraform-provider-$version-src.tar.bz2 fi -echo 'md5' -gpg -v --print-md MD5 apache-cloudstack-terraform-provider-$version-src.tar.bz2 > apache-cloudstack-terraform-provider-$version-src.tar.bz2.md5 - echo 'sha512' -gpg -v --print-md SHA512 apache-cloudstack-terraform-provider-$version-src.tar.bz2 > apache-cloudstack-terraform-provider-$version-src.tar.bz2.sha512 +sha512sum apache-cloudstack-terraform-provider-$version-src.tar.bz2 > apache-cloudstack-terraform-provider-$version-src.tar.bz2.sha512 echo 'verify' gpg -v --verify apache-cloudstack-terraform-provider-$version-src.tar.bz2.asc apache-cloudstack-terraform-provider-$version-src.tar.bz2 From e4c986131f08ada761ea92c9f9e85c6dab5faa74 Mon Sep 17 00:00:00 2001 From: StepSecurity Bot Date: Thu, 25 Apr 2024 21:26:41 -0700 Subject: [PATCH 02/46] [StepSecurity] ci: Harden GitHub Actions (#103) Signed-off-by: StepSecurity Bot --- .github/workflows/build.yml | 3 +++ .github/workflows/testacc.yml | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f2acf05b..0d13ff5b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,6 +23,9 @@ concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true +permissions: + contents: read + jobs: build: runs-on: ubuntu-22.04 diff --git a/.github/workflows/testacc.yml b/.github/workflows/testacc.yml index e2adc435..25344855 100644 --- a/.github/workflows/testacc.yml +++ b/.github/workflows/testacc.yml @@ -23,6 +23,9 @@ concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-testacc cancel-in-progress: true +permissions: + contents: read + jobs: testacc: name: Acceptance Test From ae7858c02d98c7c7c29beb345f1c44756cb4db2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 11:36:47 +0000 Subject: [PATCH 03/46] chore(deps): update terraform sdk version --- .../data_source_cloudstack_common_schema.go | 2 +- cloudstack/data_source_cloudstack_instance.go | 2 +- .../data_source_cloudstack_instance_test.go | 2 +- .../data_source_cloudstack_ipaddress.go | 2 +- .../data_source_cloudstack_ipaddress_test.go | 2 +- ...data_source_cloudstack_network_offering.go | 2 +- ...source_cloudstack_network_offering_test.go | 2 +- cloudstack/data_source_cloudstack_pod.go | 2 +- cloudstack/data_source_cloudstack_pod_test.go | 2 +- ...data_source_cloudstack_service_offering.go | 2 +- ...source_cloudstack_service_offering_test.go | 2 +- .../data_source_cloudstack_ssh_keypair.go | 2 +- ...data_source_cloudstack_ssh_keypair_test.go | 2 +- cloudstack/data_source_cloudstack_template.go | 2 +- cloudstack/data_source_cloudstack_user.go | 2 +- .../data_source_cloudstack_user_test.go | 2 +- cloudstack/data_source_cloudstack_volume.go | 2 +- .../data_source_cloudstack_volume_test.go | 2 +- cloudstack/data_source_cloudstack_vpc.go | 2 +- cloudstack/data_source_cloudstack_vpc_test.go | 2 +- .../data_source_cloudstack_vpn_connection.go | 2 +- cloudstack/data_source_cloudstack_zone.go | 2 +- .../data_source_cloudstack_zone_test.go | 2 +- cloudstack/metadata.go | 2 +- cloudstack/provider.go | 5 +- cloudstack/provider_test.go | 13 +- cloudstack/resource_cloudstack_account.go | 2 +- .../resource_cloudstack_affinity_group.go | 2 +- ...resource_cloudstack_affinity_group_test.go | 4 +- .../resource_cloudstack_attach_volume.go | 2 +- .../resource_cloudstack_attach_volume_test.go | 2 +- ...esource_cloudstack_autoscale_vm_profile.go | 2 +- ...ce_cloudstack_autoscale_vm_profile_test.go | 4 +- cloudstack/resource_cloudstack_disk.go | 18 +- .../resource_cloudstack_disk_offering.go | 2 +- cloudstack/resource_cloudstack_disk_test.go | 4 +- cloudstack/resource_cloudstack_domain.go | 2 +- .../resource_cloudstack_egress_firewall.go | 2 +- ...esource_cloudstack_egress_firewall_test.go | 4 +- cloudstack/resource_cloudstack_firewall.go | 2 +- .../resource_cloudstack_firewall_test.go | 4 +- cloudstack/resource_cloudstack_host.go | 2 +- cloudstack/resource_cloudstack_host_test.go | 4 +- cloudstack/resource_cloudstack_instance.go | 11 +- .../resource_cloudstack_instance_test.go | 4 +- cloudstack/resource_cloudstack_ipaddress.go | 2 +- .../resource_cloudstack_ipaddress_test.go | 4 +- .../resource_cloudstack_kubernetes_cluster.go | 9 +- .../resource_cloudstack_kubernetes_version.go | 3 +- ...urce_cloudstack_kubernetes_version_test.go | 4 +- .../resource_cloudstack_loadbalancer_rule.go | 12 +- ...ource_cloudstack_loadbalancer_rule_test.go | 4 +- cloudstack/resource_cloudstack_network.go | 20 +- cloudstack/resource_cloudstack_network_acl.go | 2 +- .../resource_cloudstack_network_acl_rule.go | 2 +- ...source_cloudstack_network_acl_rule_test.go | 4 +- .../resource_cloudstack_network_acl_test.go | 4 +- .../resource_cloudstack_network_offering.go | 6 +- .../resource_cloudstack_network_test.go | 4 +- cloudstack/resource_cloudstack_nic.go | 2 +- cloudstack/resource_cloudstack_nic_test.go | 4 +- .../resource_cloudstack_port_forward.go | 2 +- .../resource_cloudstack_port_forward_test.go | 4 +- .../resource_cloudstack_private_gateway.go | 2 +- ...esource_cloudstack_private_gateway_test.go | 4 +- ...resource_cloudstack_secondary_ipaddress.go | 2 +- ...rce_cloudstack_secondary_ipaddress_test.go | 4 +- .../resource_cloudstack_security_group.go | 2 +- ...resource_cloudstack_security_group_rule.go | 2 +- ...rce_cloudstack_security_group_rule_test.go | 4 +- ...resource_cloudstack_security_group_test.go | 4 +- .../resource_cloudstack_service_offering.go | 5 +- ...source_cloudstack_service_offering_test.go | 4 +- cloudstack/resource_cloudstack_ssh_keypair.go | 2 +- .../resource_cloudstack_ssh_keypair_test.go | 4 +- cloudstack/resource_cloudstack_static_nat.go | 2 +- .../resource_cloudstack_static_nat_test.go | 4 +- .../resource_cloudstack_static_route.go | 2 +- .../resource_cloudstack_static_route_test.go | 4 +- cloudstack/resource_cloudstack_template.go | 2 +- .../resource_cloudstack_template_test.go | 4 +- cloudstack/resource_cloudstack_user.go | 2 +- cloudstack/resource_cloudstack_volume.go | 2 +- cloudstack/resource_cloudstack_vpc.go | 3 +- cloudstack/resource_cloudstack_vpc_test.go | 4 +- .../resource_cloudstack_vpn_connection.go | 2 +- ...resource_cloudstack_vpn_connection_test.go | 4 +- ...esource_cloudstack_vpn_customer_gateway.go | 2 +- ...ce_cloudstack_vpn_customer_gateway_test.go | 4 +- cloudstack/resource_cloudstack_vpn_gateway.go | 2 +- .../resource_cloudstack_vpn_gateway_test.go | 4 +- cloudstack/resource_cloudstack_zone.go | 2 +- cloudstack/resources.go | 2 +- cloudstack/tags.go | 2 +- cloudstack/tags_test.go | 4 +- go.mod | 105 ++- go.sum | 662 ++++++++++++++++-- scripts/errcheck.sh | 2 +- 98 files changed, 847 insertions(+), 253 deletions(-) diff --git a/cloudstack/data_source_cloudstack_common_schema.go b/cloudstack/data_source_cloudstack_common_schema.go index 73210e2d..516721f0 100644 --- a/cloudstack/data_source_cloudstack_common_schema.go +++ b/cloudstack/data_source_cloudstack_common_schema.go @@ -20,7 +20,7 @@ package cloudstack import ( - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceFiltersSchema() *schema.Schema { diff --git a/cloudstack/data_source_cloudstack_instance.go b/cloudstack/data_source_cloudstack_instance.go index a78f39b1..63bb78f0 100644 --- a/cloudstack/data_source_cloudstack_instance.go +++ b/cloudstack/data_source_cloudstack_instance.go @@ -28,7 +28,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceCloudstackInstance() *schema.Resource { diff --git a/cloudstack/data_source_cloudstack_instance_test.go b/cloudstack/data_source_cloudstack_instance_test.go index 14616488..8ab170ae 100644 --- a/cloudstack/data_source_cloudstack_instance_test.go +++ b/cloudstack/data_source_cloudstack_instance_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) // basic acceptance to check if the display_name attribute has same value in diff --git a/cloudstack/data_source_cloudstack_ipaddress.go b/cloudstack/data_source_cloudstack_ipaddress.go index ad7b1085..7c56b270 100644 --- a/cloudstack/data_source_cloudstack_ipaddress.go +++ b/cloudstack/data_source_cloudstack_ipaddress.go @@ -28,7 +28,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceCloudstackIPAddress() *schema.Resource { diff --git a/cloudstack/data_source_cloudstack_ipaddress_test.go b/cloudstack/data_source_cloudstack_ipaddress_test.go index 2e32b618..35926efc 100644 --- a/cloudstack/data_source_cloudstack_ipaddress_test.go +++ b/cloudstack/data_source_cloudstack_ipaddress_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccIPAddressDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_network_offering.go b/cloudstack/data_source_cloudstack_network_offering.go index 8e57fae2..fff5f56c 100644 --- a/cloudstack/data_source_cloudstack_network_offering.go +++ b/cloudstack/data_source_cloudstack_network_offering.go @@ -28,7 +28,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceCloudstackNetworkOffering() *schema.Resource { diff --git a/cloudstack/data_source_cloudstack_network_offering_test.go b/cloudstack/data_source_cloudstack_network_offering_test.go index 0101b318..fa955e99 100644 --- a/cloudstack/data_source_cloudstack_network_offering_test.go +++ b/cloudstack/data_source_cloudstack_network_offering_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccNetworkOfferingDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_pod.go b/cloudstack/data_source_cloudstack_pod.go index d6d211ef..77a8ca70 100644 --- a/cloudstack/data_source_cloudstack_pod.go +++ b/cloudstack/data_source_cloudstack_pod.go @@ -27,7 +27,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceCloudstackPod() *schema.Resource { diff --git a/cloudstack/data_source_cloudstack_pod_test.go b/cloudstack/data_source_cloudstack_pod_test.go index 815e57e5..49fa2ebd 100644 --- a/cloudstack/data_source_cloudstack_pod_test.go +++ b/cloudstack/data_source_cloudstack_pod_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccPodDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_service_offering.go b/cloudstack/data_source_cloudstack_service_offering.go index 4b339032..8c1272a3 100644 --- a/cloudstack/data_source_cloudstack_service_offering.go +++ b/cloudstack/data_source_cloudstack_service_offering.go @@ -28,7 +28,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceCloudstackServiceOffering() *schema.Resource { diff --git a/cloudstack/data_source_cloudstack_service_offering_test.go b/cloudstack/data_source_cloudstack_service_offering_test.go index d7455396..c07a8120 100644 --- a/cloudstack/data_source_cloudstack_service_offering_test.go +++ b/cloudstack/data_source_cloudstack_service_offering_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccServiceOfferingDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_ssh_keypair.go b/cloudstack/data_source_cloudstack_ssh_keypair.go index c7696cbb..1cb2734f 100644 --- a/cloudstack/data_source_cloudstack_ssh_keypair.go +++ b/cloudstack/data_source_cloudstack_ssh_keypair.go @@ -27,7 +27,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceCloudstackSSHKeyPair() *schema.Resource { diff --git a/cloudstack/data_source_cloudstack_ssh_keypair_test.go b/cloudstack/data_source_cloudstack_ssh_keypair_test.go index 32bd3fd0..701058fd 100644 --- a/cloudstack/data_source_cloudstack_ssh_keypair_test.go +++ b/cloudstack/data_source_cloudstack_ssh_keypair_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccSshKeyPairDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_template.go b/cloudstack/data_source_cloudstack_template.go index 0025f64b..5040f9bb 100644 --- a/cloudstack/data_source_cloudstack_template.go +++ b/cloudstack/data_source_cloudstack_template.go @@ -28,7 +28,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceCloudstackTemplate() *schema.Resource { diff --git a/cloudstack/data_source_cloudstack_user.go b/cloudstack/data_source_cloudstack_user.go index a40862aa..23516f1c 100644 --- a/cloudstack/data_source_cloudstack_user.go +++ b/cloudstack/data_source_cloudstack_user.go @@ -28,7 +28,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceCloudstackUser() *schema.Resource { diff --git a/cloudstack/data_source_cloudstack_user_test.go b/cloudstack/data_source_cloudstack_user_test.go index aa9c14d0..de3a3c29 100644 --- a/cloudstack/data_source_cloudstack_user_test.go +++ b/cloudstack/data_source_cloudstack_user_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccUserDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_volume.go b/cloudstack/data_source_cloudstack_volume.go index e8c6bdb0..2e548eb0 100644 --- a/cloudstack/data_source_cloudstack_volume.go +++ b/cloudstack/data_source_cloudstack_volume.go @@ -28,7 +28,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceCloudstackVolume() *schema.Resource { diff --git a/cloudstack/data_source_cloudstack_volume_test.go b/cloudstack/data_source_cloudstack_volume_test.go index 810ecdff..b2188eea 100644 --- a/cloudstack/data_source_cloudstack_volume_test.go +++ b/cloudstack/data_source_cloudstack_volume_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccVolumeDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_vpc.go b/cloudstack/data_source_cloudstack_vpc.go index a473d99c..b0a0c88c 100644 --- a/cloudstack/data_source_cloudstack_vpc.go +++ b/cloudstack/data_source_cloudstack_vpc.go @@ -28,7 +28,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceCloudstackVPC() *schema.Resource { diff --git a/cloudstack/data_source_cloudstack_vpc_test.go b/cloudstack/data_source_cloudstack_vpc_test.go index 40d3f86d..2ae9bd7c 100644 --- a/cloudstack/data_source_cloudstack_vpc_test.go +++ b/cloudstack/data_source_cloudstack_vpc_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccVPCDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_vpn_connection.go b/cloudstack/data_source_cloudstack_vpn_connection.go index c0015bf6..90bbeedc 100644 --- a/cloudstack/data_source_cloudstack_vpn_connection.go +++ b/cloudstack/data_source_cloudstack_vpn_connection.go @@ -28,7 +28,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceCloudstackVPNConnection() *schema.Resource { diff --git a/cloudstack/data_source_cloudstack_zone.go b/cloudstack/data_source_cloudstack_zone.go index 296c887c..9fb211b2 100644 --- a/cloudstack/data_source_cloudstack_zone.go +++ b/cloudstack/data_source_cloudstack_zone.go @@ -27,7 +27,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourceCloudStackZone() *schema.Resource { diff --git a/cloudstack/data_source_cloudstack_zone_test.go b/cloudstack/data_source_cloudstack_zone_test.go index b02bb48b..a8af5c2a 100644 --- a/cloudstack/data_source_cloudstack_zone_test.go +++ b/cloudstack/data_source_cloudstack_zone_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccZoneDataSource_basic(t *testing.T) { diff --git a/cloudstack/metadata.go b/cloudstack/metadata.go index 59f68018..635e7666 100644 --- a/cloudstack/metadata.go +++ b/cloudstack/metadata.go @@ -23,7 +23,7 @@ import ( "log" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) // metadataSchema returns the schema to use for metadata diff --git a/cloudstack/provider.go b/cloudstack/provider.go index c35a263c..ac4aab5b 100644 --- a/cloudstack/provider.go +++ b/cloudstack/provider.go @@ -23,12 +23,11 @@ import ( "errors" "github.com/go-ini/ini" - "github.com/hashicorp/terraform/helper/schema" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) // Provider returns a terraform.ResourceProvider. -func Provider() terraform.ResourceProvider { +func Provider() *schema.Provider { return &schema.Provider{ Schema: map[string]*schema.Schema{ "api_url": { diff --git a/cloudstack/provider_test.go b/cloudstack/provider_test.go index d6726b77..8594b32b 100644 --- a/cloudstack/provider_test.go +++ b/cloudstack/provider_test.go @@ -23,30 +23,29 @@ import ( "os" "testing" - "github.com/hashicorp/terraform/helper/schema" - "github.com/hashicorp/terraform/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 var cloudStackTemplateURL = os.Getenv("CLOUDSTACK_TEMPLATE_URL") func init() { - testAccProvider = Provider().(*schema.Provider) - testAccProviders = map[string]terraform.ResourceProvider{ + testAccProvider = Provider() + testAccProviders = map[string]*schema.Provider{ "cloudstack": 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 testSetValueOnResourceData(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_account.go b/cloudstack/resource_cloudstack_account.go index a0d950f9..2c1bea62 100644 --- a/cloudstack/resource_cloudstack_account.go +++ b/cloudstack/resource_cloudstack_account.go @@ -24,7 +24,7 @@ import ( "log" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackAccount() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_affinity_group.go b/cloudstack/resource_cloudstack_affinity_group.go index 7b64fbe9..bb473d34 100644 --- a/cloudstack/resource_cloudstack_affinity_group.go +++ b/cloudstack/resource_cloudstack_affinity_group.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackAffinityGroup() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_affinity_group_test.go b/cloudstack/resource_cloudstack_affinity_group_test.go index 9b1eb8b4..9c64bb11 100644 --- a/cloudstack/resource_cloudstack_affinity_group_test.go +++ b/cloudstack/resource_cloudstack_affinity_group_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackAffinityGroup_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_attach_volume.go b/cloudstack/resource_cloudstack_attach_volume.go index 07892f27..5880c912 100644 --- a/cloudstack/resource_cloudstack_attach_volume.go +++ b/cloudstack/resource_cloudstack_attach_volume.go @@ -21,7 +21,7 @@ package cloudstack import ( "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackAttachVolume() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_attach_volume_test.go b/cloudstack/resource_cloudstack_attach_volume_test.go index cb79a34c..9e8a1d64 100644 --- a/cloudstack/resource_cloudstack_attach_volume_test.go +++ b/cloudstack/resource_cloudstack_attach_volume_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccCloudstackAttachVolume_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_autoscale_vm_profile.go b/cloudstack/resource_cloudstack_autoscale_vm_profile.go index f9d7cde4..4b3d0ab6 100644 --- a/cloudstack/resource_cloudstack_autoscale_vm_profile.go +++ b/cloudstack/resource_cloudstack_autoscale_vm_profile.go @@ -27,7 +27,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackAutoScaleVMProfile() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_autoscale_vm_profile_test.go b/cloudstack/resource_cloudstack_autoscale_vm_profile_test.go index 06d60ac5..c534563c 100644 --- a/cloudstack/resource_cloudstack_autoscale_vm_profile_test.go +++ b/cloudstack/resource_cloudstack_autoscale_vm_profile_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackAutoscaleVMProfile_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_disk.go b/cloudstack/resource_cloudstack_disk.go index 24535835..3f9cd457 100644 --- a/cloudstack/resource_cloudstack_disk.go +++ b/cloudstack/resource_cloudstack_disk.go @@ -24,7 +24,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackDisk() *schema.Resource { @@ -145,14 +145,6 @@ func resourceCloudStackDiskCreate(d *schema.ResourceData, meta interface{}) erro return fmt.Errorf("Error creating the new disk %s: %s", name, err) } - d.SetPartial("name") - d.SetPartial("device_id") - d.SetPartial("disk_offering") - d.SetPartial("size") - d.SetPartial("virtual_machine_id") - d.SetPartial("project") - d.SetPartial("zone") - // Set the volume ID and partials d.SetId(r.Id) @@ -161,7 +153,6 @@ func resourceCloudStackDiskCreate(d *schema.ResourceData, meta interface{}) erro if err != nil { return fmt.Errorf("Error setting tags on the new disk %s: %s", name, err) } - d.SetPartial("tags") if d.Get("attach").(bool) { if err := resourceCloudStackDiskAttach(d, meta); err != nil { @@ -169,7 +160,6 @@ func resourceCloudStackDiskCreate(d *schema.ResourceData, meta interface{}) erro } // Set the additional partial - d.SetPartial("attach") } d.Partial(false) @@ -257,8 +247,6 @@ func resourceCloudStackDiskUpdate(d *schema.ResourceData, meta interface{}) erro // Update the volume ID and set partials d.SetId(r.Id) - d.SetPartial("disk_offering") - d.SetPartial("size") } // If the device ID changed, just detach here so we can re-attach the @@ -278,9 +266,6 @@ func resourceCloudStackDiskUpdate(d *schema.ResourceData, meta interface{}) erro } // Set the additional partials - d.SetPartial("attach") - d.SetPartial("device_id") - d.SetPartial("virtual_machine_id") } else { // Detach the volume if err := resourceCloudStackDiskDetach(d, meta); err != nil { @@ -294,7 +279,6 @@ func resourceCloudStackDiskUpdate(d *schema.ResourceData, meta interface{}) erro if err != nil { return fmt.Errorf("Error updating tags on disk %s: %s", name, err) } - d.SetPartial("tags") } d.Partial(false) diff --git a/cloudstack/resource_cloudstack_disk_offering.go b/cloudstack/resource_cloudstack_disk_offering.go index daa6b889..197eaf4b 100644 --- a/cloudstack/resource_cloudstack_disk_offering.go +++ b/cloudstack/resource_cloudstack_disk_offering.go @@ -23,7 +23,7 @@ import ( "log" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackDiskOffering() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_disk_test.go b/cloudstack/resource_cloudstack_disk_test.go index 3d182a12..538ed802 100644 --- a/cloudstack/resource_cloudstack_disk_test.go +++ b/cloudstack/resource_cloudstack_disk_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackDisk_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_domain.go b/cloudstack/resource_cloudstack_domain.go index 4123a6e6..3e11b1a7 100644 --- a/cloudstack/resource_cloudstack_domain.go +++ b/cloudstack/resource_cloudstack_domain.go @@ -24,7 +24,7 @@ import ( "log" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackDomain() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_egress_firewall.go b/cloudstack/resource_cloudstack_egress_firewall.go index 5994cdd0..9b7f3946 100644 --- a/cloudstack/resource_cloudstack_egress_firewall.go +++ b/cloudstack/resource_cloudstack_egress_firewall.go @@ -28,7 +28,7 @@ import ( "github.com/apache/cloudstack-go/v2/cloudstack" "github.com/hashicorp/go-multierror" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackEgressFirewall() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_egress_firewall_test.go b/cloudstack/resource_cloudstack_egress_firewall_test.go index 6a5de880..031aea33 100644 --- a/cloudstack/resource_cloudstack_egress_firewall_test.go +++ b/cloudstack/resource_cloudstack_egress_firewall_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackEgressFirewall_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_firewall.go b/cloudstack/resource_cloudstack_firewall.go index dbd922b6..b7ba7e0b 100644 --- a/cloudstack/resource_cloudstack_firewall.go +++ b/cloudstack/resource_cloudstack_firewall.go @@ -28,7 +28,7 @@ import ( "github.com/apache/cloudstack-go/v2/cloudstack" "github.com/hashicorp/go-multierror" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackFirewall() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_firewall_test.go b/cloudstack/resource_cloudstack_firewall_test.go index 8fd66068..d417c227 100644 --- a/cloudstack/resource_cloudstack_firewall_test.go +++ b/cloudstack/resource_cloudstack_firewall_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackFirewall_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_host.go b/cloudstack/resource_cloudstack_host.go index 46fc8e2b..3e88d728 100644 --- a/cloudstack/resource_cloudstack_host.go +++ b/cloudstack/resource_cloudstack_host.go @@ -28,7 +28,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackHost() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_host_test.go b/cloudstack/resource_cloudstack_host_test.go index 8da6f58c..62ad0079 100644 --- a/cloudstack/resource_cloudstack_host_test.go +++ b/cloudstack/resource_cloudstack_host_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackHost_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_instance.go b/cloudstack/resource_cloudstack_instance.go index bd69e838..20ef6cf9 100644 --- a/cloudstack/resource_cloudstack_instance.go +++ b/cloudstack/resource_cloudstack_instance.go @@ -28,7 +28,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackInstance() *schema.Resource { @@ -519,7 +519,6 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) "Error updating the display name for instance %s: %s", name, err) } - d.SetPartial("display_name") } // Check if the group is changed and if so, update the virtual machine @@ -539,7 +538,6 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) "Error updating the group for instance %s: %s", name, err) } - d.SetPartial("group") } // Attributes that require reboot to update @@ -570,7 +568,6 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) "Error updating the name for instance %s: %s", name, err) } - d.SetPartial("name") } // Check if the service offering is changed and if so, update the offering @@ -592,7 +589,6 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) return fmt.Errorf( "Error changing the service offering for instance %s: %s", name, err) } - d.SetPartial("service_offering") } // Check if the affinity group IDs have changed and if so, update the IDs @@ -615,7 +611,6 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) return fmt.Errorf( "Error updating the affinity groups for instance %s: %s", name, err) } - d.SetPartial("affinity_group_ids") } // Check if the affinity group names have changed and if so, update the names @@ -638,7 +633,6 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) return fmt.Errorf( "Error updating the affinity groups for instance %s: %s", name, err) } - d.SetPartial("affinity_group_names") } // Check if the keypair has changed and if so, update the keypair @@ -657,7 +651,6 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) return fmt.Errorf( "Error changing the SSH keypair for instance %s: %s", name, err) } - d.SetPartial("keypair") } // Check if the user data has changed and if so, update the user data @@ -676,7 +669,6 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) return fmt.Errorf( "Error updating user_data for instance %s: %s", name, err) } - d.SetPartial("user_data") } // Start the virtual machine again @@ -693,7 +685,6 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) if err := updateTags(cs, d, "UserVm"); err != nil { return fmt.Errorf("Error updating tags on instance %s: %s", name, err) } - d.SetPartial("tags") } // Check if the details have changed and if so, update the details diff --git a/cloudstack/resource_cloudstack_instance_test.go b/cloudstack/resource_cloudstack_instance_test.go index 86e8fbc2..a4b8f7ae 100644 --- a/cloudstack/resource_cloudstack_instance_test.go +++ b/cloudstack/resource_cloudstack_instance_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackInstance_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_ipaddress.go b/cloudstack/resource_cloudstack_ipaddress.go index 10a7c73a..c7db4ac0 100644 --- a/cloudstack/resource_cloudstack_ipaddress.go +++ b/cloudstack/resource_cloudstack_ipaddress.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackIPAddress() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_ipaddress_test.go b/cloudstack/resource_cloudstack_ipaddress_test.go index 98a32f6b..bbd70e01 100644 --- a/cloudstack/resource_cloudstack_ipaddress_test.go +++ b/cloudstack/resource_cloudstack_ipaddress_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackIPAddress_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_kubernetes_cluster.go b/cloudstack/resource_cloudstack_kubernetes_cluster.go index e182ea3d..0a1633a5 100644 --- a/cloudstack/resource_cloudstack_kubernetes_cluster.go +++ b/cloudstack/resource_cloudstack_kubernetes_cluster.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackKubernetesCluster() *schema.Resource { @@ -274,8 +274,6 @@ func resourceCloudStackKubernetesClusterUpdate(d *schema.ResourceData, meta inte return fmt.Errorf( "Error Scaling Kubernetes Cluster %s: %s", d.Id(), err) } - d.SetPartial("service_offering") - d.SetPartial("size") } if d.HasChange("autoscaling_enabled") || d.HasChange("min_size") || d.HasChange("max_size") { @@ -283,9 +281,6 @@ func resourceCloudStackKubernetesClusterUpdate(d *schema.ResourceData, meta inte if err != nil { return err } - d.SetPartial("autoscaling_enabled") - d.SetPartial("min_size") - d.SetPartial("max_size") } if d.HasChange("kubernetes_version") { @@ -299,7 +294,6 @@ func resourceCloudStackKubernetesClusterUpdate(d *schema.ResourceData, meta inte return fmt.Errorf( "Error Upgrading Kubernetes Cluster %s: %s", d.Id(), err) } - d.SetPartial("kubernetes_version") } if d.HasChange("state") { @@ -322,7 +316,6 @@ func resourceCloudStackKubernetesClusterUpdate(d *schema.ResourceData, meta inte default: return fmt.Errorf("State must either be 'Running' or 'Stopped'") } - d.SetPartial("state") } d.Partial(false) diff --git a/cloudstack/resource_cloudstack_kubernetes_version.go b/cloudstack/resource_cloudstack_kubernetes_version.go index 098ab904..4101e65e 100644 --- a/cloudstack/resource_cloudstack_kubernetes_version.go +++ b/cloudstack/resource_cloudstack_kubernetes_version.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackKubernetesVersion() *schema.Resource { @@ -178,7 +178,6 @@ func resourceCloudStackKubernetesVersionUpdate(d *schema.ResourceData, meta inte return fmt.Errorf( "Error Updating Kubernetes Version %s: %s", d.Id(), err) } - d.SetPartial("state") } d.Partial(false) diff --git a/cloudstack/resource_cloudstack_kubernetes_version_test.go b/cloudstack/resource_cloudstack_kubernetes_version_test.go index 182de0d4..0a553f32 100644 --- a/cloudstack/resource_cloudstack_kubernetes_version_test.go +++ b/cloudstack/resource_cloudstack_kubernetes_version_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackKubernetesVersion_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_loadbalancer_rule.go b/cloudstack/resource_cloudstack_loadbalancer_rule.go index 4eb0a0dd..3504d769 100644 --- a/cloudstack/resource_cloudstack_loadbalancer_rule.go +++ b/cloudstack/resource_cloudstack_loadbalancer_rule.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackLoadBalancerRule() *schema.Resource { @@ -155,14 +155,6 @@ func resourceCloudStackLoadBalancerRuleCreate(d *schema.ResourceData, meta inter // Set the load balancer rule ID and set partials d.SetId(r.Id) - d.SetPartial("name") - d.SetPartial("description") - d.SetPartial("ip_address_id") - d.SetPartial("network_id") - d.SetPartial("algorithm") - d.SetPartial("private_port") - d.SetPartial("public_port") - d.SetPartial("protocol") if certificateID, ok := d.GetOk("certificate_id"); ok { // Create a new parameter struct @@ -171,7 +163,6 @@ func resourceCloudStackLoadBalancerRuleCreate(d *schema.ResourceData, meta inter return err } } - d.SetPartial("certificate_id") // Create a new parameter struct mp := cs.LoadBalancer.NewAssignToLoadBalancerRuleParams(r.Id) @@ -188,7 +179,6 @@ func resourceCloudStackLoadBalancerRuleCreate(d *schema.ResourceData, meta inter return err } - d.SetPartial("member_ids") d.Partial(false) return resourceCloudStackLoadBalancerRuleRead(d, meta) diff --git a/cloudstack/resource_cloudstack_loadbalancer_rule_test.go b/cloudstack/resource_cloudstack_loadbalancer_rule_test.go index 3351a4ca..762f51c6 100644 --- a/cloudstack/resource_cloudstack_loadbalancer_rule_test.go +++ b/cloudstack/resource_cloudstack_loadbalancer_rule_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackLoadBalancerRule_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_network.go b/cloudstack/resource_cloudstack_network.go index 405b9a22..d07fc566 100644 --- a/cloudstack/resource_cloudstack_network.go +++ b/cloudstack/resource_cloudstack_network.go @@ -27,7 +27,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) const none = "none" @@ -242,27 +242,12 @@ func resourceCloudStackNetworkCreate(d *schema.ResourceData, meta interface{}) e return fmt.Errorf("Error creating network %s: %s", name, err) } - d.SetPartial("name") - d.SetPartial("display_text") - d.SetPartial("cidr") - d.SetPartial("gateway") - d.SetPartial("startip") - d.SetPartial("endip") - d.SetPartial("network_domain") - d.SetPartial("network_offering") - d.SetPartial("vlan") - d.SetPartial("vpc_id") - d.SetPartial("acl_id") - d.SetPartial("project") - d.SetPartial("zone") - d.SetId(r.Id) // Set tags if necessary if err = setTags(cs, d, "network"); err != nil { return fmt.Errorf("Error setting tags: %v", err) } - d.SetPartial("tags") if d.Get("source_nat_ip").(bool) { // Create a new parameter struct @@ -291,9 +276,6 @@ func resourceCloudStackNetworkCreate(d *schema.ResourceData, meta interface{}) e d.Set("source_nat_ip_id", ip.Id) // Set the additional partial - d.SetPartial("source_nat_ip") - d.SetPartial("source_nat_ip_address") - d.SetPartial("source_nat_ip_id") } d.Partial(false) diff --git a/cloudstack/resource_cloudstack_network_acl.go b/cloudstack/resource_cloudstack_network_acl.go index 2c5a5674..a895d332 100644 --- a/cloudstack/resource_cloudstack_network_acl.go +++ b/cloudstack/resource_cloudstack_network_acl.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackNetworkACL() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_network_acl_rule.go b/cloudstack/resource_cloudstack_network_acl_rule.go index f2daac74..8740df00 100644 --- a/cloudstack/resource_cloudstack_network_acl_rule.go +++ b/cloudstack/resource_cloudstack_network_acl_rule.go @@ -29,7 +29,7 @@ import ( "github.com/apache/cloudstack-go/v2/cloudstack" "github.com/hashicorp/go-multierror" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackNetworkACLRule() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_network_acl_rule_test.go b/cloudstack/resource_cloudstack_network_acl_rule_test.go index 8eb76aa5..cfd006c4 100644 --- a/cloudstack/resource_cloudstack_network_acl_rule_test.go +++ b/cloudstack/resource_cloudstack_network_acl_rule_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackNetworkACLRule_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_network_acl_test.go b/cloudstack/resource_cloudstack_network_acl_test.go index 2e534f60..f1e21ce6 100644 --- a/cloudstack/resource_cloudstack_network_acl_test.go +++ b/cloudstack/resource_cloudstack_network_acl_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackNetworkACL_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_network_offering.go b/cloudstack/resource_cloudstack_network_offering.go index 4f141ccf..62a2e75f 100644 --- a/cloudstack/resource_cloudstack_network_offering.go +++ b/cloudstack/resource_cloudstack_network_offering.go @@ -24,7 +24,7 @@ import ( "log" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackNetworkOffering() *schema.Resource { @@ -105,7 +105,6 @@ func resourceCloudStackNetworkOfferingUpdate(d *schema.ResourceData, meta interf "Error updating the name for network offering %s: %s", name, err) } - d.SetPartial("name") } // Check if the display text is changed and if so, update the virtual machine @@ -125,7 +124,6 @@ func resourceCloudStackNetworkOfferingUpdate(d *schema.ResourceData, meta interf "Error updating the display text for network offering %s: %s", name, err) } - d.SetPartial("display_text") } // Check if the guest ip type is changed and if so, update the virtual machine @@ -145,7 +143,6 @@ func resourceCloudStackNetworkOfferingUpdate(d *schema.ResourceData, meta interf "Error updating the guest ip type for network offering %s: %s", name, err) } - d.SetPartial("guest_ip_type") } // Check if the traffic type is changed and if so, update the virtual machine @@ -165,7 +162,6 @@ func resourceCloudStackNetworkOfferingUpdate(d *schema.ResourceData, meta interf "Error updating the traffic type for network offering %s: %s", name, err) } - d.SetPartial("traffic_type") } d.Partial(false) diff --git a/cloudstack/resource_cloudstack_network_test.go b/cloudstack/resource_cloudstack_network_test.go index e389dbdd..1a3cdc85 100644 --- a/cloudstack/resource_cloudstack_network_test.go +++ b/cloudstack/resource_cloudstack_network_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackNetwork_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_nic.go b/cloudstack/resource_cloudstack_nic.go index cc75840e..82f455ee 100644 --- a/cloudstack/resource_cloudstack_nic.go +++ b/cloudstack/resource_cloudstack_nic.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackNIC() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_nic_test.go b/cloudstack/resource_cloudstack_nic_test.go index d5122e0f..fda6e9ba 100644 --- a/cloudstack/resource_cloudstack_nic_test.go +++ b/cloudstack/resource_cloudstack_nic_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackNIC_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_port_forward.go b/cloudstack/resource_cloudstack_port_forward.go index 0ada0f32..cd934318 100644 --- a/cloudstack/resource_cloudstack_port_forward.go +++ b/cloudstack/resource_cloudstack_port_forward.go @@ -29,7 +29,7 @@ import ( "github.com/apache/cloudstack-go/v2/cloudstack" "github.com/hashicorp/go-multierror" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackPortForward() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_port_forward_test.go b/cloudstack/resource_cloudstack_port_forward_test.go index 0333ed18..ba69f171 100644 --- a/cloudstack/resource_cloudstack_port_forward_test.go +++ b/cloudstack/resource_cloudstack_port_forward_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackPortForward_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_private_gateway.go b/cloudstack/resource_cloudstack_private_gateway.go index c4b6c82a..df0c21b3 100644 --- a/cloudstack/resource_cloudstack_private_gateway.go +++ b/cloudstack/resource_cloudstack_private_gateway.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackPrivateGateway() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_private_gateway_test.go b/cloudstack/resource_cloudstack_private_gateway_test.go index 66af8c39..7e067273 100644 --- a/cloudstack/resource_cloudstack_private_gateway_test.go +++ b/cloudstack/resource_cloudstack_private_gateway_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackPrivateGateway_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_secondary_ipaddress.go b/cloudstack/resource_cloudstack_secondary_ipaddress.go index 4f8c6dec..db65f6ef 100644 --- a/cloudstack/resource_cloudstack_secondary_ipaddress.go +++ b/cloudstack/resource_cloudstack_secondary_ipaddress.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackSecondaryIPAddress() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_secondary_ipaddress_test.go b/cloudstack/resource_cloudstack_secondary_ipaddress_test.go index 1daf054b..8728d29d 100644 --- a/cloudstack/resource_cloudstack_secondary_ipaddress_test.go +++ b/cloudstack/resource_cloudstack_secondary_ipaddress_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackSecondaryIPAddress_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_security_group.go b/cloudstack/resource_cloudstack_security_group.go index c2d2f10f..a4ecbcdc 100644 --- a/cloudstack/resource_cloudstack_security_group.go +++ b/cloudstack/resource_cloudstack_security_group.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackSecurityGroup() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_security_group_rule.go b/cloudstack/resource_cloudstack_security_group_rule.go index 9b81e05b..a1b21dd6 100644 --- a/cloudstack/resource_cloudstack_security_group_rule.go +++ b/cloudstack/resource_cloudstack_security_group_rule.go @@ -29,7 +29,7 @@ import ( "github.com/apache/cloudstack-go/v2/cloudstack" multierror "github.com/hashicorp/go-multierror" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) type authorizeSecurityGroupParams interface { diff --git a/cloudstack/resource_cloudstack_security_group_rule_test.go b/cloudstack/resource_cloudstack_security_group_rule_test.go index 768c89f1..0ac3c5d6 100644 --- a/cloudstack/resource_cloudstack_security_group_rule_test.go +++ b/cloudstack/resource_cloudstack_security_group_rule_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackSecurityGroupRule_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_security_group_test.go b/cloudstack/resource_cloudstack_security_group_test.go index 174bea4c..3b3de35d 100644 --- a/cloudstack/resource_cloudstack_security_group_test.go +++ b/cloudstack/resource_cloudstack_security_group_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackSecurityGroup_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_service_offering.go b/cloudstack/resource_cloudstack_service_offering.go index 25dad334..56ea53d5 100644 --- a/cloudstack/resource_cloudstack_service_offering.go +++ b/cloudstack/resource_cloudstack_service_offering.go @@ -24,7 +24,7 @@ import ( "log" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackServiceOffering() *schema.Resource { @@ -209,7 +209,6 @@ func resourceCloudStackServiceOfferingUpdate(d *schema.ResourceData, meta interf "Error updating the name for service offering %s: %s", name, err) } - d.SetPartial("name") } // Check if the display text is changed and if so, update seervice offering @@ -229,7 +228,6 @@ func resourceCloudStackServiceOfferingUpdate(d *schema.ResourceData, meta interf "Error updating the display text for service offering %s: %s", name, err) } - d.SetPartial("display_text") } if d.HasChange("host_tags") { @@ -248,7 +246,6 @@ func resourceCloudStackServiceOfferingUpdate(d *schema.ResourceData, meta interf "Error updating the host tags for service offering %s: %s", name, err) } - d.SetPartial("host_tags") } d.Partial(false) diff --git a/cloudstack/resource_cloudstack_service_offering_test.go b/cloudstack/resource_cloudstack_service_offering_test.go index 1e1d6ccf..e5bbcdaa 100644 --- a/cloudstack/resource_cloudstack_service_offering_test.go +++ b/cloudstack/resource_cloudstack_service_offering_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackServiceOffering_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_ssh_keypair.go b/cloudstack/resource_cloudstack_ssh_keypair.go index 2ed8f680..cf44677d 100644 --- a/cloudstack/resource_cloudstack_ssh_keypair.go +++ b/cloudstack/resource_cloudstack_ssh_keypair.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackSSHKeyPair() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_ssh_keypair_test.go b/cloudstack/resource_cloudstack_ssh_keypair_test.go index 44ef1d02..9f6cc425 100644 --- a/cloudstack/resource_cloudstack_ssh_keypair_test.go +++ b/cloudstack/resource_cloudstack_ssh_keypair_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackSSHKeyPair_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_static_nat.go b/cloudstack/resource_cloudstack_static_nat.go index c3dbd226..2b2c4027 100644 --- a/cloudstack/resource_cloudstack_static_nat.go +++ b/cloudstack/resource_cloudstack_static_nat.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackStaticNAT() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_static_nat_test.go b/cloudstack/resource_cloudstack_static_nat_test.go index 39d6cde2..2360b3e3 100644 --- a/cloudstack/resource_cloudstack_static_nat_test.go +++ b/cloudstack/resource_cloudstack_static_nat_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackStaticNAT_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_static_route.go b/cloudstack/resource_cloudstack_static_route.go index ddcdc472..09705324 100644 --- a/cloudstack/resource_cloudstack_static_route.go +++ b/cloudstack/resource_cloudstack_static_route.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackStaticRoute() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_static_route_test.go b/cloudstack/resource_cloudstack_static_route_test.go index c9f321c4..a7a82e76 100644 --- a/cloudstack/resource_cloudstack_static_route_test.go +++ b/cloudstack/resource_cloudstack_static_route_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackStaticRoute_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_template.go b/cloudstack/resource_cloudstack_template.go index c1a4f877..edf41c12 100644 --- a/cloudstack/resource_cloudstack_template.go +++ b/cloudstack/resource_cloudstack_template.go @@ -26,7 +26,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackTemplate() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_template_test.go b/cloudstack/resource_cloudstack_template_test.go index da185520..476613db 100644 --- a/cloudstack/resource_cloudstack_template_test.go +++ b/cloudstack/resource_cloudstack_template_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackTemplate_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_user.go b/cloudstack/resource_cloudstack_user.go index aabb7b20..74fb84a9 100644 --- a/cloudstack/resource_cloudstack_user.go +++ b/cloudstack/resource_cloudstack_user.go @@ -24,7 +24,7 @@ import ( "log" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackUser() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_volume.go b/cloudstack/resource_cloudstack_volume.go index a2fb725d..2f1a88f1 100644 --- a/cloudstack/resource_cloudstack_volume.go +++ b/cloudstack/resource_cloudstack_volume.go @@ -24,7 +24,7 @@ import ( "log" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackVolume() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_vpc.go b/cloudstack/resource_cloudstack_vpc.go index d5710119..b8cf46f2 100644 --- a/cloudstack/resource_cloudstack_vpc.go +++ b/cloudstack/resource_cloudstack_vpc.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackVPC() *schema.Resource { @@ -264,7 +264,6 @@ func resourceCloudStackVPCUpdate(d *schema.ResourceData, meta interface{}) error if err != nil { return fmt.Errorf("Error updating tags on VPC %s: %s", name, err) } - d.SetPartial("tags") } return resourceCloudStackVPCRead(d, meta) diff --git a/cloudstack/resource_cloudstack_vpc_test.go b/cloudstack/resource_cloudstack_vpc_test.go index 8516f221..31c887fa 100644 --- a/cloudstack/resource_cloudstack_vpc_test.go +++ b/cloudstack/resource_cloudstack_vpc_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackVPC_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_vpn_connection.go b/cloudstack/resource_cloudstack_vpn_connection.go index 5beadb6c..a493e16d 100644 --- a/cloudstack/resource_cloudstack_vpn_connection.go +++ b/cloudstack/resource_cloudstack_vpn_connection.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackVPNConnection() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_vpn_connection_test.go b/cloudstack/resource_cloudstack_vpn_connection_test.go index 064233bd..f7bb7210 100644 --- a/cloudstack/resource_cloudstack_vpn_connection_test.go +++ b/cloudstack/resource_cloudstack_vpn_connection_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackVPNConnection_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_vpn_customer_gateway.go b/cloudstack/resource_cloudstack_vpn_customer_gateway.go index fb59ddbe..c1f67380 100644 --- a/cloudstack/resource_cloudstack_vpn_customer_gateway.go +++ b/cloudstack/resource_cloudstack_vpn_customer_gateway.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackVPNCustomerGateway() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_vpn_customer_gateway_test.go b/cloudstack/resource_cloudstack_vpn_customer_gateway_test.go index 5fada1c4..80117036 100644 --- a/cloudstack/resource_cloudstack_vpn_customer_gateway_test.go +++ b/cloudstack/resource_cloudstack_vpn_customer_gateway_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackVPNCustomerGateway_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_vpn_gateway.go b/cloudstack/resource_cloudstack_vpn_gateway.go index 7fe8443a..e35565ec 100644 --- a/cloudstack/resource_cloudstack_vpn_gateway.go +++ b/cloudstack/resource_cloudstack_vpn_gateway.go @@ -25,7 +25,7 @@ import ( "strings" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackVPNGateway() *schema.Resource { diff --git a/cloudstack/resource_cloudstack_vpn_gateway_test.go b/cloudstack/resource_cloudstack_vpn_gateway_test.go index ed39ae30..4eb539e2 100644 --- a/cloudstack/resource_cloudstack_vpn_gateway_test.go +++ b/cloudstack/resource_cloudstack_vpn_gateway_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccCloudStackVPNGateway_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_zone.go b/cloudstack/resource_cloudstack_zone.go index a259f656..d7433df9 100644 --- a/cloudstack/resource_cloudstack_zone.go +++ b/cloudstack/resource_cloudstack_zone.go @@ -24,7 +24,7 @@ import ( "log" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceCloudStackZone() *schema.Resource { diff --git a/cloudstack/resources.go b/cloudstack/resources.go index 1b299589..0fedb70c 100644 --- a/cloudstack/resources.go +++ b/cloudstack/resources.go @@ -27,7 +27,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) // Define a regexp for parsing the port diff --git a/cloudstack/tags.go b/cloudstack/tags.go index 3aa38e1a..b65ea85e 100644 --- a/cloudstack/tags.go +++ b/cloudstack/tags.go @@ -23,7 +23,7 @@ import ( "log" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) // tagsSchema returns the schema to use for tags diff --git a/cloudstack/tags_test.go b/cloudstack/tags_test.go index 3bdfb724..edddd97b 100644 --- a/cloudstack/tags_test.go +++ b/cloudstack/tags_test.go @@ -25,8 +25,8 @@ import ( "reflect" "testing" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestDiffTags(t *testing.T) { diff --git a/go.mod b/go.mod index 59cdcb3e..314868fa 100644 --- a/go.mod +++ b/go.mod @@ -4,10 +4,107 @@ require ( github.com/apache/cloudstack-go/v2 v2.13.2 github.com/go-ini/ini v1.67.0 github.com/hashicorp/go-multierror v1.1.1 - github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/terraform v0.12.0 - golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d // indirect - golang.org/x/sys v0.0.0-20211004093028-2c5d950f24ef // indirect + github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0 +) + +require ( + cloud.google.com/go v0.110.10 // indirect + cloud.google.com/go/compute v1.23.3 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v1.1.5 // indirect + cloud.google.com/go/storage v1.30.1 // indirect + github.com/Masterminds/goutils v1.1.1 // indirect + github.com/Masterminds/semver/v3 v3.2.0 // indirect + github.com/Masterminds/sprig/v3 v3.2.3 // indirect + github.com/ProtonMail/go-crypto v1.1.0-alpha.0 // indirect + github.com/agext/levenshtein v1.2.2 // indirect + github.com/apparentlymart/go-cidr v1.0.0 // indirect + github.com/apparentlymart/go-textseg v1.0.0 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/armon/go-radix v1.0.0 // indirect + github.com/aws/aws-sdk-go v1.19.18 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/bgentry/speakeasy v0.1.0 // indirect + github.com/blang/semver v3.5.1+incompatible // indirect + github.com/cloudflare/circl v1.3.7 // indirect + github.com/fatih/color v1.16.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/mock v1.6.0 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.4.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hashicorp/go-checkpoint v0.5.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect + github.com/hashicorp/go-getter v1.3.0 // indirect + github.com/hashicorp/go-hclog v1.5.0 // indirect + github.com/hashicorp/go-plugin v1.6.0 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/hc-install v0.6.3 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/hcl/v2 v2.19.1 // indirect + github.com/hashicorp/hcl2 v0.0.0-20190515223218-4b22149b7cef // indirect + github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 // indirect + github.com/hashicorp/logutils v1.0.0 // indirect + github.com/hashicorp/terraform-exec v0.20.0 // indirect + github.com/hashicorp/terraform-json v0.21.0 // indirect + github.com/hashicorp/terraform-plugin-go v0.22.0 // indirect + github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect + github.com/hashicorp/terraform-registry-address v0.2.3 // indirect + github.com/hashicorp/terraform-svchost v0.1.1 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect + github.com/huandu/xstrings v1.3.3 // indirect + github.com/imdario/mergo v0.3.15 // indirect + github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mitchellh/cli v1.1.5 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/go-homedir v1.0.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/go-wordwrap v1.0.0 // indirect + github.com/mitchellh/hashstructure v1.0.0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/oklog/run v1.0.0 // indirect + github.com/posener/complete v1.2.3 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/shopspring/decimal v1.2.0 // indirect + github.com/spf13/afero v1.9.2 // indirect + github.com/spf13/cast v1.3.1 // indirect + github.com/stretchr/testify v1.8.4 // indirect + github.com/ulikunitz/xz v0.5.5 // indirect + github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect + github.com/zclconf/go-cty v1.14.2 // indirect + go.opencensus.io v0.24.0 // indirect + golang.org/x/crypto v0.19.0 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/net v0.19.0 // indirect + golang.org/x/oauth2 v0.14.0 // indirect + golang.org/x/sync v0.5.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/api v0.149.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/grpc v1.61.1 // indirect + google.golang.org/protobuf v1.32.0 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect ) -go 1.16 +go 1.21 + +toolchain go1.21.6 diff --git a/go.sum b/go.sum index 866938d5..e0552bfd 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,56 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.36.0 h1:+aCSj7tOo2LODWVEuZDZeGCckdt6MlSF+X/rB3wUiS8= cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +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.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= +cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= +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/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +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/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +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= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= @@ -12,7 +59,20 @@ github.com/Azure/azure-sdk-for-go v21.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9mo github.com/Azure/go-autorest v10.15.4+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= 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/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= +github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= +github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= +github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= +github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= +github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= +github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/ProtonMail/go-crypto v1.1.0-alpha.0 h1:nHGfwXmFvJrSR9xu8qL7BkO4DqTHXE9N5vPhgY2I+j0= +github.com/ProtonMail/go-crypto v1.1.0-alpha.0/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292/go.mod h1:KYCjqMOeHpNuTOiFQU6WEcTG7poCJrUs0YgyHNtn1no= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= @@ -31,6 +91,9 @@ 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/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -50,16 +113,28 @@ github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/bsm/go-vlq v0.0.0-20150828105119-ec6e8d4f5f4e/go.mod h1:N+BjUcTjSxc2mtRGSCPsat1kze3CUtvJN3/jTXlp29k= +github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= +github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= 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-20161106042343-c914be64f07d/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +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/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/coreos/bbolt v1.3.0/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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= @@ -69,43 +144,125 @@ github.com/dnaeon/go-vcr v0.0.0-20180920040454-5637cf3d8a31/go.mod h1:aBB1+wY4s9 github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ= github.com/dylanmei/winrmtest v0.0.0-20190225150635-99b7fe2fddf1/go.mod h1:lcy9/2gH1jn/VCLouHA6tOEwLoNVd4GW6zhuKLmHC2Y= -github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +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/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= 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.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= +github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= +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-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= -github.com/go-test/deep v1.0.1 h1:UQhStjbkDClarlmv0am7OXXO4/GaPdCGiUiMTvi28sg= github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= +github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -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-20180513044358-24b0969c4cb7/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/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= 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/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/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= 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.0 h1:kbxbvI4Un1LUWKxufD+BiE6AEExYYgkQLQmLFqA1LFk= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +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/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +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.1/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.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= 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/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/googleapis/gax-go v2.0.0+incompatible h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU= +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/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +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/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go/v2 v2.0.3 h1:siORttZ36U2R/WjiJuDz8znElWBiAlO9rVt+mqJt0Cc= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gophercloud/gophercloud v0.0.0-20190208042652-bc37892e1968/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= github.com/gophercloud/utils v0.0.0-20190128072930-fbb6ab446f01/go.mod h1:wjDF8z83zTeg5eMLml5EBSlAhbF7G8DobyI1YsMuyzw= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -121,22 +278,28 @@ github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357/go.mod h1:YH+1FK 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-azure-helpers v0.0.0-20190129193224-166dfd221bb2/go.mod h1:lu62V//auUow6k0IykxLK2DCNW8qTmpm8KqhYVWattA= +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 h1:wvCrVc9TjDls6+YGAF2hAifE1E5U1+b4tH6KdvN3Gig= github.com/hashicorp/go-cleanhttp v0.5.0/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.3.0 h1:pFMSFlI9l5NaeuzkpE3L7BYk9qQ9juTAgXW/H0cqxcU= github.com/hashicorp/go-getter v1.3.0/go.mod h1:/O1k/AizTN0QmfEKknCYGvICeyKUDqCYA8vvWtGWDeQ= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= -github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f h1:Yv9YzBlAETjy6AOX9eLBZ3nshNVRREgerT/3nvxlGho= github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= +github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v0.0.0-20180129170900-7f3cd4390caa/go.mod h1:6ij3Z20p+OhOkCSrA0gImAWoHYQRGbnlcuk6XYTiaRw= github.com/hashicorp/go-msgpack v0.5.4/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20180717150148-3d5d8f294aa0/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= 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-0.20190430211030-5692942914bb h1:Zg2pmmk0lrLFL85lQGt08bOUBpIBaVs6/psiAyx0c4w= github.com/hashicorp/go-plugin v1.0.1-0.20190430211030-5692942914bb/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= +github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= github.com/hashicorp/go-retryablehttp v0.5.2/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= @@ -145,14 +308,21 @@ github.com/hashicorp/go-slug v0.3.0/go.mod h1:I5tq5Lv0E2xcNXNkmx7BSfzi1PsJ2cNjs3 github.com/hashicorp/go-sockaddr v0.0.0-20180320115054-6d291a969b86/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-tfe v0.3.16/go.mod h1:SuPHR+OcxvzBZNye7nGPfwZTEyd3rWPfLVbCgyZPezM= 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-version v1.1.0 h1:bPIoEKD27tNdebFGGxxYwcL4nepeY4j1QP23PFRGzg0= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hc-install v0.6.3 h1:yE/r1yJvWbtrJ0STwScgEnCanb0U9v7zp0Gbkmcoxqs= +github.com/hashicorp/hc-install v0.6.3/go.mod h1:KamGdbodYzlufbWh4r9NRo8y6GLHWZP2GBtdnms1Ln0= 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.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= +github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= github.com/hashicorp/hcl2 v0.0.0-20181208003705-670926858200/go.mod h1:ShfpTh661oAaxo7VcNxg0zcZW6jvMa7Moy2oFx7e5dE= github.com/hashicorp/hcl2 v0.0.0-20190515223218-4b22149b7cef h1:xZRvbcwHY8zhaxDwgkmpAp2emwZkVn7p3gat0zhq2X0= github.com/hashicorp/hcl2 v0.0.0-20190515223218-4b22149b7cef/go.mod h1:4oI94iqF3GB10QScn46WqbG0kgTUpha97SAzzg2+2ec= @@ -166,71 +336,119 @@ github.com/hashicorp/terraform v0.12.0 h1:It2vmod2dBMB4+r+aUW2Afx0HlftyUwzNsNH3I github.com/hashicorp/terraform v0.12.0/go.mod h1:Ke0ig9gGZ8rhV6OddAhBYt5nXmpvXsuNQQ8w9qYBZfU= github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70 h1:oZm5nE11yhzsTRz/YrUyDMSvixePqjoZihwn8ipuOYI= github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70/go.mod h1:ItvqtvbC3K23FFET62ZwnkwtpbKZm8t8eMcWjmVVjD8= +github.com/hashicorp/terraform-exec v0.20.0 h1:DIZnPsqzPGuUnq6cH8jWcPunBfY+C+M8JyYF3vpnuEo= +github.com/hashicorp/terraform-exec v0.20.0/go.mod h1:ckKGkJWbsNqFKV1itgMnE0hY9IYf1HoiekpuN0eWoDw= +github.com/hashicorp/terraform-json v0.21.0 h1:9NQxbLNqPbEMze+S6+YluEdXgJmhQykRyRNd+zTI05U= +github.com/hashicorp/terraform-json v0.21.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= +github.com/hashicorp/terraform-plugin-go v0.22.0 h1:1OS1Jk5mO0f5hrziWJGXXIxBrMe2j/B8E+DVGw43Xmc= +github.com/hashicorp/terraform-plugin-go v0.22.0/go.mod h1:mPULV91VKss7sik6KFEcEu7HuTogMLLO/EvWCuFkRVE= +github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= +github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0 h1:qHprzXy/As0rxedphECBEQAh3R4yp6pKksKHcqZx5G8= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0/go.mod h1:H+8tjs9TjV2w57QFVSMBQacf8k/E1XwLXGCARgViC6A= +github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI= +github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM= +github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= +github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= github.com/hashicorp/vault v0.10.4/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0= -github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb h1:b5rjCoWHc7eqmAS4/qyk21ZsHyb6Mxv/jykxvNTkU4M= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= +github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= +github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/joyent/triton-go v0.0.0-20180313100802-d8f9c0314926/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA= +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.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/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/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= 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/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lusis/go-artifactory v0.0.0-20160115162124-7e4ce345df82/go.mod h1:y54tfGmO3NKssKveTEFFzH8C/akrSOy/iW9qEAUDV84= github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= github.com/masterzen/winrm v0.0.0-20190223112901-5e5c9a7fe54b/go.mod h1:wr1VqkwW0AB5JS0QLy5GpVMS9E3VtRoSYXUYyVk46KY= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.1 h1:G1f5SKeVxmagw/IyvzvtZE4Gybcc4Tr1tf7I8z0XgOg= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.5 h1:tHXDdz1cpzGaovsTB+TVB8q90WEokoVmfMqoVcrLUgw= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-shellwords v1.0.4/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.0.8/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -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/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= +github.com/mitchellh/cli v1.1.5 h1:OxRIeJXpAMztws/XHlN2vu6imG5Dpq+j61AzAX5fLng= +github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4= 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 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-linereader v0.0.0-20190213213312-1b945b3263eb/go.mod h1:OaY7UOoTkkrX3wRwjpYRKafIkkyeD0UtweSHAWWiqQM= 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.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= github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/panicwrap v0.0.0-20190213213626-17011010aaa4/go.mod h1:YYMf4xtQnR8LRC0vKi3afvQ5QwRPQ17zjcpkBCufb+I= github.com/mitchellh/prefixedio v0.0.0-20190213213902-5733675afd51/go.mod h1:kB1naBgV9ORnkiTVeyJOI1DavaJkG4oNIq0Af6ZVKUo= -github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/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/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= @@ -242,21 +460,35 @@ github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.0.0-20170505043639-c605e284fe17/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= 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= -github.com/posener/complete v1.2.1 h1:LrvDIY//XNo65Lq84G/akBuMGlawHvGBABv8f/ZN6DI= github.com/posener/complete v1.2.1/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E= +github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -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.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= @@ -280,18 +512,34 @@ github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go. github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= +github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= +github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= -github.com/spf13/afero v1.2.1 h1:qgMbHoJbPbw579P+1zVY+6n4nIFuIchaIjzZ/I/Yq8M= github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/svanharmelen/jsonapi v0.0.0-20180618144545-0c0828c3f16d/go.mod h1:BSTlc8jOjh0niykqEGVXOLXdi9o0r0kR8tCYiMvjFgw= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/terraform-providers/terraform-provider-openstack v1.15.0/go.mod h1:2aQ6n/BtChAl1y2S60vebhyJyZXBsuAI5G4+lHrT1Ew= @@ -300,18 +548,38 @@ github.com/ugorji/go v0.0.0-20180813092308-00b869d2f4a5/go.mod h1:hnLbHMwcvSihnD github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok= github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= 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/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +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/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v0.0.0-20181129180422-88fbe721e0f8/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v0.0.0-20190426224007-b18a157db9e2/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= -github.com/zclconf/go-cty v0.0.0-20190516203816-4fecf87372ec h1:MSeYjmyjucsFbecMTxg63ASg23lcSARP/kr9sClTFfk= github.com/zclconf/go-cty v0.0.0-20190516203816-4fecf87372ec/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= -go.opencensus.io v0.18.0 h1:Mk5rgZcggtbvtAun5aJzAtjKKN/t0R3jJPlWILlv938= +github.com/zclconf/go-cty v1.14.2 h1:kTG7lqmBou0Zkx35r6HJHUQTvaRPr5bIAf3AoHS0izI= +github.com/zclconf/go-cty v1.14.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +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.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.uber.org/atomic v1.3.2/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.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= @@ -325,12 +593,56 @@ golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/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-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/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-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= 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-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= 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/lint v0.0.0-20201208152925-83fdc39ff7b5/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/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 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= @@ -341,24 +653,69 @@ golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190502183928-7f726cade0ab/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +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-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/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-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d h1:20cMwl2fHAzkJMEA+8J4JgqBQcQGzbisXo31MIeenXI= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190220154721-9b3c75971fc9 h1:pfyU+l9dEu0vZzDDMsdAKa1gZbJYEn6urYXj/+Xkz7s= golang.org/x/oauth2 v0.0.0-20190220154721-9b3c75971fc9/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +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/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= 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-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +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/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= @@ -369,64 +726,275 @@ golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5h 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= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +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-20191001151750-bb3f8db39f24/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-20200116001909-b77594299b42/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-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211004093028-2c5d950f24ef h1:fPxZ3Umkct3LZ8gK9nbk+DWDJ9fstZa2grBn+lWVKPs= -golang.org/x/sys v0.0.0-20211004093028-2c5d950f24ef/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/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/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.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +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-20190816200558-6889da9d5479/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-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-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-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-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.1.0 h1:K6z2u68e86TPdSdefXdzvXgR1zEMa+459vBSfWYAZkI= google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +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/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY= +google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= 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/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= -google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922 h1:mBVYJnbrXLA/ZCBTCe7PtEgAUP+1bg92qTaFoPHdz+8= google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4= +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= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +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-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.18.0 h1:IZl7mfBGfbhYx2p2rKRtYgDFw6SBz+kclmxYrCksPPA= google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +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.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= +google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +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/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +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/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= 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= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +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/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/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= +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/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/scripts/errcheck.sh b/scripts/errcheck.sh index 9c589f77..761a3774 100755 --- a/scripts/errcheck.sh +++ b/scripts/errcheck.sh @@ -28,7 +28,7 @@ if ! which errcheck > /dev/null; then fi err_files=$(errcheck -ignoretests \ - -ignore 'github.com/hashicorp/terraform/helper/schema:Set' \ + -ignore 'github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema:Set' \ -ignore 'bytes:.*' \ -ignore 'io:Close|Write' \ $(go list ./...| grep -v /vendor/)) From 53f5191659fd30ee38339eae17f4403aab8732ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 12:04:29 +0000 Subject: [PATCH 04/46] chore: implement muxing for terraform sdk --- cloudstack/provider.go | 3 +- cloudstack/provider_test.go | 6 +- go.mod | 53 +-- go.sum | 780 +----------------------------------- main.go | 44 +- 5 files changed, 58 insertions(+), 828 deletions(-) diff --git a/cloudstack/provider.go b/cloudstack/provider.go index ac4aab5b..6d7b7b53 100644 --- a/cloudstack/provider.go +++ b/cloudstack/provider.go @@ -26,8 +26,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -// Provider returns a terraform.ResourceProvider. -func Provider() *schema.Provider { +func New() *schema.Provider { return &schema.Provider{ Schema: map[string]*schema.Schema{ "api_url": { diff --git a/cloudstack/provider_test.go b/cloudstack/provider_test.go index 8594b32b..0ff1ab33 100644 --- a/cloudstack/provider_test.go +++ b/cloudstack/provider_test.go @@ -32,20 +32,20 @@ var testAccProvider *schema.Provider var cloudStackTemplateURL = os.Getenv("CLOUDSTACK_TEMPLATE_URL") func init() { - testAccProvider = Provider() + testAccProvider = New() testAccProviders = map[string]*schema.Provider{ "cloudstack": testAccProvider, } } func TestProvider(t *testing.T) { - if err := Provider().InternalValidate(); err != nil { + if err := New().InternalValidate(); err != nil { t.Fatalf("err: %s", err) } } func TestProvider_impl(t *testing.T) { - var _ *schema.Provider = Provider() + var _ *schema.Provider = New() } func testSetValueOnResourceData(t *testing.T) { diff --git a/go.mod b/go.mod index 314868fa..32abc660 100644 --- a/go.mod +++ b/go.mod @@ -4,103 +4,60 @@ require ( github.com/apache/cloudstack-go/v2 v2.13.2 github.com/go-ini/ini v1.67.0 github.com/hashicorp/go-multierror v1.1.1 - github.com/hashicorp/terraform v0.12.0 + github.com/hashicorp/terraform-plugin-go v0.22.0 + github.com/hashicorp/terraform-plugin-mux v0.15.0 github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0 ) require ( - cloud.google.com/go v0.110.10 // indirect - cloud.google.com/go/compute v1.23.3 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.5 // indirect - cloud.google.com/go/storage v1.30.1 // indirect - github.com/Masterminds/goutils v1.1.1 // indirect - github.com/Masterminds/semver/v3 v3.2.0 // indirect - github.com/Masterminds/sprig/v3 v3.2.3 // indirect github.com/ProtonMail/go-crypto v1.1.0-alpha.0 // indirect github.com/agext/levenshtein v1.2.2 // indirect - github.com/apparentlymart/go-cidr v1.0.0 // indirect - github.com/apparentlymart/go-textseg v1.0.0 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/armon/go-radix v1.0.0 // indirect - github.com/aws/aws-sdk-go v1.19.18 // indirect - github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/bgentry/speakeasy v0.1.0 // indirect - github.com/blang/semver v3.5.1+incompatible // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/fatih/color v1.16.0 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.4.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/hashicorp/errwrap v1.0.0 // indirect github.com/hashicorp/go-checkpoint v0.5.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect - github.com/hashicorp/go-getter v1.3.0 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-plugin v1.6.0 // indirect - github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hc-install v0.6.3 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/hcl/v2 v2.19.1 // indirect - github.com/hashicorp/hcl2 v0.0.0-20190515223218-4b22149b7cef // indirect - github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 // indirect github.com/hashicorp/logutils v1.0.0 // indirect github.com/hashicorp/terraform-exec v0.20.0 // indirect github.com/hashicorp/terraform-json v0.21.0 // indirect - github.com/hashicorp/terraform-plugin-go v0.22.0 // indirect github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect github.com/hashicorp/terraform-registry-address v0.2.3 // indirect github.com/hashicorp/terraform-svchost v0.1.1 // indirect github.com/hashicorp/yamux v0.1.1 // indirect - github.com/huandu/xstrings v1.3.3 // indirect - github.com/imdario/mergo v0.3.15 // indirect - github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af // indirect github.com/kr/pretty v0.3.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mitchellh/cli v1.1.5 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/go-homedir v1.0.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/go-wordwrap v1.0.0 // indirect - github.com/mitchellh/hashstructure v1.0.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/oklog/run v1.0.0 // indirect - github.com/posener/complete v1.2.3 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect - github.com/shopspring/decimal v1.2.0 // indirect - github.com/spf13/afero v1.9.2 // indirect - github.com/spf13/cast v1.3.1 // indirect github.com/stretchr/testify v1.8.4 // indirect - github.com/ulikunitz/xz v0.5.5 // indirect github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/zclconf/go-cty v1.14.2 // indirect - go.opencensus.io v0.24.0 // indirect golang.org/x/crypto v0.19.0 // indirect golang.org/x/mod v0.15.0 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/oauth2 v0.14.0 // indirect - golang.org/x/sync v0.5.0 // indirect + golang.org/x/net v0.20.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.149.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect - google.golang.org/grpc v1.61.1 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/grpc v1.62.0 // indirect google.golang.org/protobuf v1.32.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect ) diff --git a/go.sum b/go.sum index e0552bfd..b3ab7861 100644 --- a/go.sum +++ b/go.sum @@ -1,283 +1,56 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -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.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= -cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= -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/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= -cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -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/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= -cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= -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= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= -cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= -dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= -dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= -git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= -github.com/Azure/azure-sdk-for-go v21.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/go-autorest v10.15.4+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= -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/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= -github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= -github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= -github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= -github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= -github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/ProtonMail/go-crypto v1.1.0-alpha.0 h1:nHGfwXmFvJrSR9xu8qL7BkO4DqTHXE9N5vPhgY2I+j0= github.com/ProtonMail/go-crypto v1.1.0-alpha.0/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= -github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292/go.mod h1:KYCjqMOeHpNuTOiFQU6WEcTG7poCJrUs0YgyHNtn1no= -github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= -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-20150830182803-278e1ec8e8a6/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= -github.com/antchfx/xpath v0.0.0-20190129040759-c8489ed3251e/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk= -github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M= github.com/apache/cloudstack-go/v2 v2.13.2 h1:Y06CXNle++Gs24YjeNI7Ot8ZUQjLix2oPn/CMuVr/TU= github.com/apache/cloudstack-go/v2 v2.13.2/go.mod h1:aosD8Svfu5nhH5Sp4zcsVV1hT5UGt3mTgRXM8YqTKe0= -github.com/apparentlymart/go-cidr v1.0.0 h1:lGDvXx8Lv9QHjrAVP7jyzleG4F9+FkRhJcEsDFxeb8w= -github.com/apparentlymart/go-cidr v1.0.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= -github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= -github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I= -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/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= -github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -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/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= -github.com/aws/aws-sdk-go v1.16.36/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.19.18 h1:Hb3+b9HCqrOrbAtFstUWg7H5TQ+/EcklJtE8VShVs8o= -github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= -github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= -github.com/bsm/go-vlq v0.0.0-20150828105119-ec6e8d4f5f4e/go.mod h1:N+BjUcTjSxc2mtRGSCPsat1kze3CUtvJN3/jTXlp29k= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -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-20161106042343-c914be64f07d/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -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/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/coreos/bbolt v1.3.0/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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/dimchansky/utfbom v1.0.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= -github.com/dnaeon/go-vcr v0.0.0-20180920040454-5637cf3d8a31/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ= -github.com/dylanmei/winrmtest v0.0.0-20190225150635-99b7fe2fddf1/go.mod h1:lcy9/2gH1jn/VCLouHA6tOEwLoNVd4GW6zhuKLmHC2Y= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -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/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -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.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= -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-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= -github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/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/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= -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/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/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= 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.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -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/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= 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.1/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.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -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/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -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/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= -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/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gophercloud/gophercloud v0.0.0-20190208042652-bc37892e1968/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= -github.com/gophercloud/utils v0.0.0-20190128072930-fbb6ab446f01/go.mod h1:wjDF8z83zTeg5eMLml5EBSlAhbF7G8DobyI1YsMuyzw= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= -github.com/grpc-ecosystem/grpc-gateway v1.5.1/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= -github.com/hashicorp/aws-sdk-go-base v0.2.0/go.mod h1:ZIWACGGi0N7a4DZbf15yuE1JQORmWLtBcVM6F5SXNFU= -github.com/hashicorp/consul v0.0.0-20171026175957-610f3c86a089/go.mod h1:mFrjN1mfidgJfYP1xrJCF+AfRhr6Eaqhb2+sfyn/OOI= -github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= 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-azure-helpers v0.0.0-20190129193224-166dfd221bb2/go.mod h1:lu62V//auUow6k0IykxLK2DCNW8qTmpm8KqhYVWattA= 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= @@ -285,57 +58,23 @@ github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9n 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.3.0 h1:pFMSFlI9l5NaeuzkpE3L7BYk9qQ9juTAgXW/H0cqxcU= -github.com/hashicorp/go-getter v1.3.0/go.mod h1:/O1k/AizTN0QmfEKknCYGvICeyKUDqCYA8vvWtGWDeQ= -github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= -github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-immutable-radix v0.0.0-20180129170900-7f3cd4390caa/go.mod h1:6ij3Z20p+OhOkCSrA0gImAWoHYQRGbnlcuk6XYTiaRw= -github.com/hashicorp/go-msgpack v0.5.4/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v0.0.0-20180717150148-3d5d8f294aa0/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= -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-0.20190430211030-5692942914bb/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= -github.com/hashicorp/go-retryablehttp v0.5.2/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -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-slug v0.3.0/go.mod h1:I5tq5Lv0E2xcNXNkmx7BSfzi1PsJ2cNjs3cC3LwyhK8= -github.com/hashicorp/go-sockaddr v0.0.0-20180320115054-6d291a969b86/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-tfe v0.3.16/go.mod h1:SuPHR+OcxvzBZNye7nGPfwZTEyd3rWPfLVbCgyZPezM= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hc-install v0.6.3 h1:yE/r1yJvWbtrJ0STwScgEnCanb0U9v7zp0Gbkmcoxqs= github.com/hashicorp/hc-install v0.6.3/go.mod h1:KamGdbodYzlufbWh4r9NRo8y6GLHWZP2GBtdnms1Ln0= -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.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcl2 v0.0.0-20181208003705-670926858200/go.mod h1:ShfpTh661oAaxo7VcNxg0zcZW6jvMa7Moy2oFx7e5dE= -github.com/hashicorp/hcl2 v0.0.0-20190515223218-4b22149b7cef h1:xZRvbcwHY8zhaxDwgkmpAp2emwZkVn7p3gat0zhq2X0= -github.com/hashicorp/hcl2 v0.0.0-20190515223218-4b22149b7cef/go.mod h1:4oI94iqF3GB10QScn46WqbG0kgTUpha97SAzzg2+2ec= -github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 h1:2yzhWGdgQUWZUCNK+AoO35V+HTsgEmcM4J9IkArh7PI= -github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE= 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/memberlist v0.1.0/go.mod h1:ncdBp14cuox2iFOq3kDiquKU6fqsTBc3W6JvZwjxxsE= -github.com/hashicorp/serf v0.0.0-20160124182025-e4ec8cc423bb/go.mod h1:h/Ru6tmZazX7WO/GDmwdpS975F019L4t5ng5IgwbNrE= -github.com/hashicorp/terraform v0.12.0 h1:It2vmod2dBMB4+r+aUW2Afx0HlftyUwzNsNH3I2vrJ8= -github.com/hashicorp/terraform v0.12.0/go.mod h1:Ke0ig9gGZ8rhV6OddAhBYt5nXmpvXsuNQQ8w9qYBZfU= -github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70 h1:oZm5nE11yhzsTRz/YrUyDMSvixePqjoZihwn8ipuOYI= -github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70/go.mod h1:ItvqtvbC3K23FFET62ZwnkwtpbKZm8t8eMcWjmVVjD8= github.com/hashicorp/terraform-exec v0.20.0 h1:DIZnPsqzPGuUnq6cH8jWcPunBfY+C+M8JyYF3vpnuEo= github.com/hashicorp/terraform-exec v0.20.0/go.mod h1:ckKGkJWbsNqFKV1itgMnE0hY9IYf1HoiekpuN0eWoDw= github.com/hashicorp/terraform-json v0.21.0 h1:9NQxbLNqPbEMze+S6+YluEdXgJmhQykRyRNd+zTI05U= @@ -344,422 +83,108 @@ github.com/hashicorp/terraform-plugin-go v0.22.0 h1:1OS1Jk5mO0f5hrziWJGXXIxBrMe2 github.com/hashicorp/terraform-plugin-go v0.22.0/go.mod h1:mPULV91VKss7sik6KFEcEu7HuTogMLLO/EvWCuFkRVE= github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= +github.com/hashicorp/terraform-plugin-mux v0.15.0 h1:+/+lDx0WUsIOpkAmdwBIoFU8UP9o2eZASoOnLsWbKME= +github.com/hashicorp/terraform-plugin-mux v0.15.0/go.mod h1:9ezplb1Dyq394zQ+ldB0nvy/qbNAz3mMoHHseMTMaKo= github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0 h1:qHprzXy/As0rxedphECBEQAh3R4yp6pKksKHcqZx5G8= github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0/go.mod h1:H+8tjs9TjV2w57QFVSMBQacf8k/E1XwLXGCARgViC6A= github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI= github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= -github.com/hashicorp/vault v0.10.4/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0= -github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= -github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= -github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/joyent/triton-go v0.0.0-20180313100802-d8f9c0314926/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA= -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.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= -github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/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/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= 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/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lusis/go-artifactory v0.0.0-20160115162124-7e4ce345df82/go.mod h1:y54tfGmO3NKssKveTEFFzH8C/akrSOy/iW9qEAUDV84= -github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= -github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= -github.com/masterzen/winrm v0.0.0-20190223112901-5e5c9a7fe54b/go.mod h1:wr1VqkwW0AB5JS0QLy5GpVMS9E3VtRoSYXUYyVk46KY= -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.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-shellwords v1.0.4/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= -github.com/miekg/dns v1.0.8/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.5 h1:OxRIeJXpAMztws/XHlN2vu6imG5Dpq+j61AzAX5fLng= -github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4= -github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= -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 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-linereader v0.0.0-20190213213312-1b945b3263eb/go.mod h1:OaY7UOoTkkrX3wRwjpYRKafIkkyeD0UtweSHAWWiqQM= -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/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= -github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= -github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/panicwrap v0.0.0-20190213213626-17011010aaa4/go.mod h1:YYMf4xtQnR8LRC0vKi3afvQ5QwRPQ17zjcpkBCufb+I= -github.com/mitchellh/prefixedio v0.0.0-20190213213902-5733675afd51/go.mod h1:kB1naBgV9ORnkiTVeyJOI1DavaJkG4oNIq0Af6ZVKUo= -github.com/mitchellh/reflectwalk v1.0.0/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/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= -github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= -github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= -github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.0.0-20170505043639-c605e284fe17/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= 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= -github.com/posener/complete v1.2.1/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E= -github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= -github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= -github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= -github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= -github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= -github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= -github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= -github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= -github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= -github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= -github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= -github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= -github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= -github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= -github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= -github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= -github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= -github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= -github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= -github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= -github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= -github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= -github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/svanharmelen/jsonapi v0.0.0-20180618144545-0c0828c3f16d/go.mod h1:BSTlc8jOjh0niykqEGVXOLXdi9o0r0kR8tCYiMvjFgw= -github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -github.com/terraform-providers/terraform-provider-openstack v1.15.0/go.mod h1:2aQ6n/BtChAl1y2S60vebhyJyZXBsuAI5G4+lHrT1Ew= -github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v0.0.0-20180813092308-00b869d2f4a5/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= -github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok= -github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -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/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -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/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v0.0.0-20181129180422-88fbe721e0f8/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= -github.com/zclconf/go-cty v0.0.0-20190426224007-b18a157db9e2/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= -github.com/zclconf/go-cty v0.0.0-20190516203816-4fecf87372ec/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.14.2 h1:kTG7lqmBou0Zkx35r6HJHUQTvaRPr5bIAf3AoHS0izI= github.com/zclconf/go-cty v1.14.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -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.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.uber.org/atomic v1.3.2/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.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= -golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= -golang.org/x/crypto v0.0.0-20180816225734-aabede6cba87/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/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= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/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-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -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-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -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/lint v0.0.0-20201208152925-83fdc39ff7b5/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/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -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= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190502183928-7f726cade0ab/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -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-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/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-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190220154721-9b3c75971fc9/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -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/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= -golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= -golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= 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/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -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= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181213200352-4d1cda033e06/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= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-20191001151750-bb3f8db39f24/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-20200116001909-b77594299b42/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-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -768,77 +193,20 @@ golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/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/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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -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-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -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-20190816200558-6889da9d5479/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-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-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-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-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= @@ -847,121 +215,13 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -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/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY= -google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -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/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= -google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4= -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= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -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-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= -google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -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.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= -google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= -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/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= +google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= @@ -970,31 +230,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= 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/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -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= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -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/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/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= -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/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= -sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/main.go b/main.go index 6552b582..0ec51629 100644 --- a/main.go +++ b/main.go @@ -20,11 +20,49 @@ package main import ( - "github.com/hashicorp/terraform/plugin" + "context" + "flag" + "log" + + "github.com/hashicorp/terraform-plugin-go/tfprotov5" + "github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server" + "github.com/hashicorp/terraform-plugin-mux/tf5muxserver" + "github.com/terraform-providers/terraform-provider-cloudstack/cloudstack" ) func main() { - plugin.Serve(&plugin.ServeOpts{ - ProviderFunc: cloudstack.Provider}) + ctx := context.Background() + + var debug bool + + flag.BoolVar(&debug, "debug", false, "set to true to run the provider with support for debuggers like delve") + flag.Parse() + + providers := []func() tfprotov5.ProviderServer{ + cloudstack.New().GRPCProvider, + } + + muxServer, err := tf5muxserver.NewMuxServer(ctx, providers...) + + if err != nil { + log.Fatal(err) + } + + var serveOpts []tf5server.ServeOpt + + if debug { + serveOpts = append(serveOpts, tf5server.WithManagedDebug()) + } + + err = tf5server.Serve( + "registry.terraform.io/cloudstack/cloudstack", + muxServer.ProviderServer, + serveOpts..., + ) + + if err != nil { + log.Fatal(err) + } + } From 5735094f646ae711f0185d7ea7a86aaa39a1f807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 12:06:58 +0000 Subject: [PATCH 05/46] ci: update go version --- .github/workflows/build.yml | 29 ++++++++++++++--------------- .github/workflows/testacc.yml | 2 +- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0d13ff5b..318dfe0a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,25 +22,24 @@ on: [push, pull_request] concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true - permissions: contents: read jobs: build: runs-on: ubuntu-22.04 - + steps: - - uses: actions/checkout@v3 - - - name: Set up Go - uses: actions/setup-go@v3 - with: - go-version: 1.19.x - - - name: Build - run: | - make build - - - name: Test - run: make test + - uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.21.x + + - name: Build + run: | + make build + + - name: Test + run: make test diff --git a/.github/workflows/testacc.yml b/.github/workflows/testacc.yml index 25344855..5fcb5a97 100644 --- a/.github/workflows/testacc.yml +++ b/.github/workflows/testacc.yml @@ -37,7 +37,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: 1.19.x + go-version: 1.21.x - name: Wait Cloudstack to be ready run: | echo "Starting Cloudstack health check" From daca68884e385052515753afd065a6e0395ba823 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 15:11:56 +0000 Subject: [PATCH 06/46] chore: add tagsToMap function --- cloudstack/data_source_cloudstack_instance.go | 6 +----- cloudstack/data_source_cloudstack_ipaddress.go | 2 +- cloudstack/data_source_cloudstack_vpc.go | 2 +- cloudstack/resource_cloudstack_instance.go | 6 +----- cloudstack/tags.go | 8 ++++++++ 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cloudstack/data_source_cloudstack_instance.go b/cloudstack/data_source_cloudstack_instance.go index 63bb78f0..5c909c8a 100644 --- a/cloudstack/data_source_cloudstack_instance.go +++ b/cloudstack/data_source_cloudstack_instance.go @@ -155,11 +155,7 @@ func instanceDescriptionAttributes(d *schema.ResourceData, instance *cloudstack. d.Set("zone_id", instance.Zoneid) d.Set("nic", []interface{}{map[string]string{"ip_address": instance.Nic[0].Ipaddress}}) - tags := make(map[string]interface{}) - for _, tag := range instance.Tags { - tags[tag.Key] = tag.Value - } - d.Set("tags", tags) + d.Set("tags", tagsToMap(instance.Tags)) return nil } diff --git a/cloudstack/data_source_cloudstack_ipaddress.go b/cloudstack/data_source_cloudstack_ipaddress.go index 7c56b270..997a3a26 100644 --- a/cloudstack/data_source_cloudstack_ipaddress.go +++ b/cloudstack/data_source_cloudstack_ipaddress.go @@ -124,7 +124,7 @@ func ipAddressDescriptionAttributes(d *schema.ResourceData, publicIpAddress *clo d.Set("project", publicIpAddress.Project) d.Set("ip_address", publicIpAddress.Ipaddress) d.Set("is_source_nat", publicIpAddress.Issourcenat) - d.Set("tags", publicIpAddress.Tags) + d.Set("tags", tagsToMap(publicIpAddress.Tags)) return nil } diff --git a/cloudstack/data_source_cloudstack_vpc.go b/cloudstack/data_source_cloudstack_vpc.go index b0a0c88c..287acf4e 100644 --- a/cloudstack/data_source_cloudstack_vpc.go +++ b/cloudstack/data_source_cloudstack_vpc.go @@ -123,7 +123,7 @@ func vpcDescriptionAttributes(d *schema.ResourceData, vpc *cloudstack.VPC) error d.Set("network_domain", vpc.Networkdomain) d.Set("project", vpc.Project) d.Set("zone_name", vpc.Zonename) - d.Set("tags", vpc.Tags) + d.Set("tags", tagsToMap(vpc.Tags)) return nil } diff --git a/cloudstack/resource_cloudstack_instance.go b/cloudstack/resource_cloudstack_instance.go index 20ef6cf9..6cc72502 100644 --- a/cloudstack/resource_cloudstack_instance.go +++ b/cloudstack/resource_cloudstack_instance.go @@ -482,11 +482,7 @@ func resourceCloudStackInstanceRead(d *schema.ResourceData, meta interface{}) er d.Set("security_group_names", groups) } - tags := make(map[string]interface{}) - for _, tag := range vm.Tags { - tags[tag.Key] = tag.Value - } - d.Set("tags", tags) + d.Set("tags", tagsToMap(vm.Tags)) setValueOrID(d, "service_offering", vm.Serviceofferingname, vm.Serviceofferingid) setValueOrID(d, "template", vm.Templatename, vm.Templateid) diff --git a/cloudstack/tags.go b/cloudstack/tags.go index b65ea85e..4f519fdc 100644 --- a/cloudstack/tags.go +++ b/cloudstack/tags.go @@ -111,3 +111,11 @@ func tagsFromSchema(m map[string]interface{}) map[string]string { } return result } + +func tagsToMap(tags []cloudstack.Tags) map[string]string { + result := make(map[string]string, len(tags)) + for _, tag := range tags { + result[tag.Key] = tag.Value + } + return result +} From ae01a55728b1db514d50e8db81ba0da594ea99a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 15:19:51 +0000 Subject: [PATCH 07/46] chore(deps): update cloudstack sdk to v2.15.0 --- ...esource_cloudstack_autoscale_vm_profile.go | 29 ++++++------------- ...ce_cloudstack_autoscale_vm_profile_test.go | 10 +++++-- cloudstack/resource_cloudstack_instance.go | 6 +++- .../resource_cloudstack_loadbalancer_rule.go | 15 ++++++++-- cloudstack/resource_cloudstack_network.go | 12 ++++---- .../resource_cloudstack_private_gateway.go | 1 - go.mod | 2 +- go.sum | 4 +-- 8 files changed, 42 insertions(+), 37 deletions(-) diff --git a/cloudstack/resource_cloudstack_autoscale_vm_profile.go b/cloudstack/resource_cloudstack_autoscale_vm_profile.go index 4b3d0ab6..04fc5d5f 100644 --- a/cloudstack/resource_cloudstack_autoscale_vm_profile.go +++ b/cloudstack/resource_cloudstack_autoscale_vm_profile.go @@ -22,7 +22,6 @@ package cloudstack import ( "fmt" "log" - "net/url" "strings" "time" @@ -101,16 +100,15 @@ func resourceCloudStackAutoScaleVMProfileCreate(d *schema.ResourceData, meta int if err != nil { return err } - p.SetDestroyvmgraceperiod(int(duration.Seconds())) + p.SetExpungevmgraceperiod(int(duration.Seconds())) } if v, ok := d.GetOk("other_deploy_params"); ok { - otherMap := v.(map[string]interface{}) - result := url.Values{} - for k, v := range otherMap { - result.Set(k, fmt.Sprint(v)) + nv := make(map[string]string) + for k, v := range v.(map[string]interface{}) { + nv[k] = v.(string) } - p.SetOtherdeployparams(result.Encode()) + p.SetOtherdeployparams(nv) } // Create the new vm profile @@ -164,19 +162,10 @@ func resourceCloudStackAutoScaleVMProfileRead(d *schema.ResourceData, meta inter setValueOrID(d, "template", template.Name, p.Templateid) setValueOrID(d, "zone", zone.Name, p.Zoneid) - d.Set("destroy_vm_grace_period", (time.Duration(p.Destroyvmgraceperiod) * time.Second).String()) + d.Set("destroy_vm_grace_period", (time.Duration(p.Expungevmgraceperiod) * time.Second).String()) - if p.Otherdeployparams != "" { - var values url.Values - values, err = url.ParseQuery(p.Otherdeployparams) - if err != nil { - return err - } - otherParams := make(map[string]interface{}, len(values)) - for key := range values { - otherParams[key] = values.Get(key) - } - d.Set("other_deploy_params", otherParams) + if p.Otherdeployparams != nil { + d.Set("other_deploy_params", p.Otherdeployparams) } metadata, err := getMetadata(cs, d, "AutoScaleVmProfile") @@ -211,7 +200,7 @@ func resourceCloudStackAutoScaleVMProfileUpdate(d *schema.ResourceData, meta int if err != nil { return err } - p.SetDestroyvmgraceperiod(int(duration.Seconds())) + p.SetExpungevmgraceperiod(int(duration.Seconds())) } _, err := cs.AutoScale.UpdateAutoScaleVmProfile(p) diff --git a/cloudstack/resource_cloudstack_autoscale_vm_profile_test.go b/cloudstack/resource_cloudstack_autoscale_vm_profile_test.go index c534563c..a3fb13fd 100644 --- a/cloudstack/resource_cloudstack_autoscale_vm_profile_test.go +++ b/cloudstack/resource_cloudstack_autoscale_vm_profile_test.go @@ -21,6 +21,7 @@ package cloudstack import ( "fmt" + "reflect" "testing" "github.com/apache/cloudstack-go/v2/cloudstack" @@ -162,7 +163,10 @@ func testAccCheckCloudStackAutoscaleVMProfileBasicAttributes( return fmt.Errorf("Bad zone: %s", vmProfile.Zoneid) } - if vmProfile.Otherdeployparams != "displayname=display1&networkids=net1" { + if reflect.DeepEqual(vmProfile.Otherdeployparams, map[string]string{ + "displayname": "display1", + "networkids": "net1", + }) { return fmt.Errorf("Bad otherdeployparams: %s", vmProfile.Otherdeployparams) } @@ -174,8 +178,8 @@ func testAccCheckCloudStackAutoscaleVMProfileUpdatedAttributes( vmProfile *cloudstack.AutoScaleVmProfile) resource.TestCheckFunc { return func(s *terraform.State) error { - if vmProfile.Destroyvmgraceperiod != 10 { - return fmt.Errorf("Bad destroy_vm_grace_period: %d", vmProfile.Destroyvmgraceperiod) + if vmProfile.Expungevmgraceperiod != 10 { + return fmt.Errorf("Bad destroy_vm_grace_period: %d", vmProfile.Expungevmgraceperiod) } return nil diff --git a/cloudstack/resource_cloudstack_instance.go b/cloudstack/resource_cloudstack_instance.go index 6cc72502..34f1fea8 100644 --- a/cloudstack/resource_cloudstack_instance.go +++ b/cloudstack/resource_cloudstack_instance.go @@ -635,7 +635,11 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) if d.HasChange("keypair") { log.Printf("[DEBUG] SSH keypair changed for %s, starting update", name) - p := cs.SSH.NewResetSSHKeyForVirtualMachineParams(d.Id(), d.Get("keypair").(string)) + p := cs.SSH.NewResetSSHKeyForVirtualMachineParams(d.Id()) + + if keypair, ok := d.GetOk("keypair"); ok { + p.SetKeypair(keypair.(string)) + } // If there is a project supplied, we retrieve and set the project id if err := setProjectid(p, cs, d); err != nil { diff --git a/cloudstack/resource_cloudstack_loadbalancer_rule.go b/cloudstack/resource_cloudstack_loadbalancer_rule.go index 3504d769..857022bd 100644 --- a/cloudstack/resource_cloudstack_loadbalancer_rule.go +++ b/cloudstack/resource_cloudstack_loadbalancer_rule.go @@ -22,6 +22,7 @@ package cloudstack import ( "fmt" "log" + "strconv" "strings" "github.com/apache/cloudstack-go/v2/cloudstack" @@ -202,11 +203,21 @@ func resourceCloudStackLoadBalancerRuleRead(d *schema.ResourceData, meta interfa return err } + public_port, err := strconv.Atoi(lb.Publicport) + if err != nil { + return err + } + + private_port, err := strconv.Atoi(lb.Privateport) + if err != nil { + return err + } + d.Set("name", lb.Name) d.Set("ip_address_id", lb.Publicipid) d.Set("algorithm", lb.Algorithm) - d.Set("public_port", lb.Publicport) - d.Set("private_port", lb.Privateport) + d.Set("public_port", public_port) + d.Set("private_port", private_port) d.Set("protocol", lb.Protocol) // Only set network if user specified it to avoid spurious diffs diff --git a/cloudstack/resource_cloudstack_network.go b/cloudstack/resource_cloudstack_network.go index d07fc566..7e8a503f 100644 --- a/cloudstack/resource_cloudstack_network.go +++ b/cloudstack/resource_cloudstack_network.go @@ -176,14 +176,12 @@ func resourceCloudStackNetworkCreate(d *schema.ResourceData, meta interface{}) e return e.Error() } - // Compute/set the display text - displaytext, ok := d.GetOk("display_text") - if !ok { - displaytext = name - } - // Create a new parameter struct - p := cs.Network.NewCreateNetworkParams(displaytext.(string), name, networkofferingid, zoneid) + p := cs.Network.NewCreateNetworkParams(name, networkofferingid, zoneid) + + if displaytext, ok := d.GetOk("display_text"); ok { + p.SetDisplaytext(displaytext.(string)) + } // Get the network offering to check if it supports specifying IP ranges no, _, err := cs.NetworkOffering.GetNetworkOfferingByID(networkofferingid) diff --git a/cloudstack/resource_cloudstack_private_gateway.go b/cloudstack/resource_cloudstack_private_gateway.go index df0c21b3..0a77d528 100644 --- a/cloudstack/resource_cloudstack_private_gateway.go +++ b/cloudstack/resource_cloudstack_private_gateway.go @@ -100,7 +100,6 @@ func resourceCloudStackPrivateGatewayCreate(d *schema.ResourceData, meta interfa d.Get("gateway").(string), ipaddress, d.Get("netmask").(string), - d.Get("vlan").(string), d.Get("vpc_id").(string), ) diff --git a/go.mod b/go.mod index 32abc660..0fc936d1 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,7 @@ module github.com/terraform-providers/terraform-provider-cloudstack require ( - github.com/apache/cloudstack-go/v2 v2.13.2 + github.com/apache/cloudstack-go/v2 v2.15.0 github.com/go-ini/ini v1.67.0 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/terraform-plugin-go v0.22.0 diff --git a/go.sum b/go.sum index b3ab7861..79a55cca 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/ProtonMail/go-crypto v1.1.0-alpha.0 h1:nHGfwXmFvJrSR9xu8qL7BkO4DqTHXE github.com/ProtonMail/go-crypto v1.1.0-alpha.0/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= 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/apache/cloudstack-go/v2 v2.13.2 h1:Y06CXNle++Gs24YjeNI7Ot8ZUQjLix2oPn/CMuVr/TU= -github.com/apache/cloudstack-go/v2 v2.13.2/go.mod h1:aosD8Svfu5nhH5Sp4zcsVV1hT5UGt3mTgRXM8YqTKe0= +github.com/apache/cloudstack-go/v2 v2.15.0 h1:oojn1qx0+wBwrFSSmA2rL8XjWd4BXqwYo0RVCrAXoHk= +github.com/apache/cloudstack-go/v2 v2.15.0/go.mod h1:Mc+tXpujtslBuZFk5atoGT2LanVxOrXS2GGgidAoz1A= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= From aa872a38ff3b993622be8e3b92358ccdd2f77e46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 16:10:51 +0000 Subject: [PATCH 08/46] chore: remove partials --- cloudstack/resource_cloudstack_disk.go | 5 ----- cloudstack/resource_cloudstack_instance.go | 3 --- cloudstack/resource_cloudstack_kubernetes_cluster.go | 2 -- cloudstack/resource_cloudstack_kubernetes_version.go | 2 -- cloudstack/resource_cloudstack_loadbalancer_rule.go | 4 ---- cloudstack/resource_cloudstack_network.go | 2 -- cloudstack/resource_cloudstack_network_offering.go | 3 --- cloudstack/resource_cloudstack_service_offering.go | 3 --- 8 files changed, 24 deletions(-) diff --git a/cloudstack/resource_cloudstack_disk.go b/cloudstack/resource_cloudstack_disk.go index 3f9cd457..dc325bca 100644 --- a/cloudstack/resource_cloudstack_disk.go +++ b/cloudstack/resource_cloudstack_disk.go @@ -105,7 +105,6 @@ func resourceCloudStackDisk() *schema.Resource { func resourceCloudStackDiskCreate(d *schema.ResourceData, meta interface{}) error { cs := meta.(*cloudstack.CloudStackClient) - d.Partial(true) name := d.Get("name").(string) @@ -162,7 +161,6 @@ func resourceCloudStackDiskCreate(d *schema.ResourceData, meta interface{}) erro // Set the additional partial } - d.Partial(false) return resourceCloudStackDiskRead(d, meta) } @@ -207,7 +205,6 @@ func resourceCloudStackDiskRead(d *schema.ResourceData, meta interface{}) error func resourceCloudStackDiskUpdate(d *schema.ResourceData, meta interface{}) error { cs := meta.(*cloudstack.CloudStackClient) - d.Partial(true) name := d.Get("name").(string) @@ -281,8 +278,6 @@ func resourceCloudStackDiskUpdate(d *schema.ResourceData, meta interface{}) erro } } - d.Partial(false) - return resourceCloudStackDiskRead(d, meta) } diff --git a/cloudstack/resource_cloudstack_instance.go b/cloudstack/resource_cloudstack_instance.go index 34f1fea8..a4e2caec 100644 --- a/cloudstack/resource_cloudstack_instance.go +++ b/cloudstack/resource_cloudstack_instance.go @@ -494,7 +494,6 @@ func resourceCloudStackInstanceRead(d *schema.ResourceData, meta interface{}) er func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) error { cs := meta.(*cloudstack.CloudStackClient) - d.Partial(true) name := d.Get("name").(string) @@ -699,8 +698,6 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) p.SetDetails(vmDetails) } - d.Partial(false) - return resourceCloudStackInstanceRead(d, meta) } diff --git a/cloudstack/resource_cloudstack_kubernetes_cluster.go b/cloudstack/resource_cloudstack_kubernetes_cluster.go index 0a1633a5..18a07b50 100644 --- a/cloudstack/resource_cloudstack_kubernetes_cluster.go +++ b/cloudstack/resource_cloudstack_kubernetes_cluster.go @@ -259,7 +259,6 @@ func autoscaleKubernetesCluster(d *schema.ResourceData, meta interface{}) error func resourceCloudStackKubernetesClusterUpdate(d *schema.ResourceData, meta interface{}) error { cs := meta.(*cloudstack.CloudStackClient) - d.Partial(true) if d.HasChange("service_offering") || d.HasChange("size") { p := cs.Kubernetes.NewScaleKubernetesClusterParams(d.Id()) @@ -318,7 +317,6 @@ func resourceCloudStackKubernetesClusterUpdate(d *schema.ResourceData, meta inte } } - d.Partial(false) return resourceCloudStackKubernetesClusterRead(d, meta) } diff --git a/cloudstack/resource_cloudstack_kubernetes_version.go b/cloudstack/resource_cloudstack_kubernetes_version.go index 4101e65e..a389d3a1 100644 --- a/cloudstack/resource_cloudstack_kubernetes_version.go +++ b/cloudstack/resource_cloudstack_kubernetes_version.go @@ -169,7 +169,6 @@ func resourceCloudStackKubernetesVersionRead(d *schema.ResourceData, meta interf func resourceCloudStackKubernetesVersionUpdate(d *schema.ResourceData, meta interface{}) error { cs := meta.(*cloudstack.CloudStackClient) - d.Partial(true) if d.HasChange("state") { p := cs.Kubernetes.NewUpdateKubernetesSupportedVersionParams(d.Id(), d.Get("state").(string)) @@ -180,7 +179,6 @@ func resourceCloudStackKubernetesVersionUpdate(d *schema.ResourceData, meta inte } } - d.Partial(false) return resourceCloudStackKubernetesVersionRead(d, meta) } diff --git a/cloudstack/resource_cloudstack_loadbalancer_rule.go b/cloudstack/resource_cloudstack_loadbalancer_rule.go index 857022bd..381352c3 100644 --- a/cloudstack/resource_cloudstack_loadbalancer_rule.go +++ b/cloudstack/resource_cloudstack_loadbalancer_rule.go @@ -115,8 +115,6 @@ func resourceCloudStackLoadBalancerRuleCreate(d *schema.ResourceData, meta inter return err } - d.Partial(true) - // Create a new parameter struct p := cs.LoadBalancer.NewCreateLoadBalancerRuleParams( d.Get("algorithm").(string), @@ -180,8 +178,6 @@ func resourceCloudStackLoadBalancerRuleCreate(d *schema.ResourceData, meta inter return err } - d.Partial(false) - return resourceCloudStackLoadBalancerRuleRead(d, meta) } diff --git a/cloudstack/resource_cloudstack_network.go b/cloudstack/resource_cloudstack_network.go index 7e8a503f..9a4f829f 100644 --- a/cloudstack/resource_cloudstack_network.go +++ b/cloudstack/resource_cloudstack_network.go @@ -160,7 +160,6 @@ func resourceCloudStackNetwork() *schema.Resource { func resourceCloudStackNetworkCreate(d *schema.ResourceData, meta interface{}) error { cs := meta.(*cloudstack.CloudStackClient) - d.Partial(true) name := d.Get("name").(string) @@ -276,7 +275,6 @@ func resourceCloudStackNetworkCreate(d *schema.ResourceData, meta interface{}) e // Set the additional partial } - d.Partial(false) return resourceCloudStackNetworkRead(d, meta) } diff --git a/cloudstack/resource_cloudstack_network_offering.go b/cloudstack/resource_cloudstack_network_offering.go index 62a2e75f..a418b144 100644 --- a/cloudstack/resource_cloudstack_network_offering.go +++ b/cloudstack/resource_cloudstack_network_offering.go @@ -84,7 +84,6 @@ func resourceCloudStackNetworkOfferingCreate(d *schema.ResourceData, meta interf func resourceCloudStackNetworkOfferingUpdate(d *schema.ResourceData, meta interface{}) error { cs := meta.(*cloudstack.CloudStackClient) - d.Partial(true) name := d.Get("name").(string) @@ -164,8 +163,6 @@ func resourceCloudStackNetworkOfferingUpdate(d *schema.ResourceData, meta interf } - d.Partial(false) - return resourceCloudStackInstanceRead(d, meta) } diff --git a/cloudstack/resource_cloudstack_service_offering.go b/cloudstack/resource_cloudstack_service_offering.go index 56ea53d5..170e05e0 100644 --- a/cloudstack/resource_cloudstack_service_offering.go +++ b/cloudstack/resource_cloudstack_service_offering.go @@ -188,7 +188,6 @@ func resourceCloudStackServiceOfferingRead(d *schema.ResourceData, meta interfac func resourceCloudStackServiceOfferingUpdate(d *schema.ResourceData, meta interface{}) error { cs := meta.(*cloudstack.CloudStackClient) - d.Partial(true) name := d.Get("name").(string) @@ -248,8 +247,6 @@ func resourceCloudStackServiceOfferingUpdate(d *schema.ResourceData, meta interf } - d.Partial(false) - return resourceCloudStackServiceOfferingRead(d, meta) } From b89c9f4b7bf313a8e186dce9f07c7b1e5f695a6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 17:02:59 +0000 Subject: [PATCH 09/46] chore(tests): migrate to terraform-plugin-testing --- .../data_source_cloudstack_instance_test.go | 2 +- .../data_source_cloudstack_ipaddress_test.go | 2 +- ...source_cloudstack_network_offering_test.go | 2 +- cloudstack/data_source_cloudstack_pod_test.go | 2 +- ...source_cloudstack_service_offering_test.go | 2 +- ...data_source_cloudstack_ssh_keypair_test.go | 2 +- .../data_source_cloudstack_user_test.go | 2 +- .../data_source_cloudstack_volume_test.go | 2 +- cloudstack/data_source_cloudstack_vpc_test.go | 2 +- .../data_source_cloudstack_zone_test.go | 2 +- ...resource_cloudstack_affinity_group_test.go | 4 +- .../resource_cloudstack_attach_volume_test.go | 2 +- ...ce_cloudstack_autoscale_vm_profile_test.go | 4 +- cloudstack/resource_cloudstack_disk_test.go | 4 +- ...esource_cloudstack_egress_firewall_test.go | 4 +- .../resource_cloudstack_firewall_test.go | 4 +- cloudstack/resource_cloudstack_host_test.go | 4 +- .../resource_cloudstack_instance_test.go | 4 +- .../resource_cloudstack_ipaddress_test.go | 4 +- ...urce_cloudstack_kubernetes_version_test.go | 4 +- ...ource_cloudstack_loadbalancer_rule_test.go | 74 +++++++++---------- ...source_cloudstack_network_acl_rule_test.go | 4 +- .../resource_cloudstack_network_acl_test.go | 4 +- .../resource_cloudstack_network_test.go | 4 +- cloudstack/resource_cloudstack_nic_test.go | 4 +- .../resource_cloudstack_port_forward_test.go | 4 +- ...esource_cloudstack_private_gateway_test.go | 4 +- ...rce_cloudstack_secondary_ipaddress_test.go | 4 +- ...rce_cloudstack_security_group_rule_test.go | 4 +- ...resource_cloudstack_security_group_test.go | 4 +- ...source_cloudstack_service_offering_test.go | 4 +- .../resource_cloudstack_ssh_keypair_test.go | 4 +- .../resource_cloudstack_static_nat_test.go | 4 +- .../resource_cloudstack_static_route_test.go | 4 +- .../resource_cloudstack_template_test.go | 4 +- cloudstack/resource_cloudstack_vpc_test.go | 4 +- ...resource_cloudstack_vpn_connection_test.go | 4 +- ...ce_cloudstack_vpn_customer_gateway_test.go | 4 +- .../resource_cloudstack_vpn_gateway_test.go | 4 +- cloudstack/tags_test.go | 4 +- go.mod | 14 ++-- go.sum | 28 ++++--- 42 files changed, 128 insertions(+), 122 deletions(-) diff --git a/cloudstack/data_source_cloudstack_instance_test.go b/cloudstack/data_source_cloudstack_instance_test.go index 8ab170ae..6d2cc427 100644 --- a/cloudstack/data_source_cloudstack_instance_test.go +++ b/cloudstack/data_source_cloudstack_instance_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) // basic acceptance to check if the display_name attribute has same value in diff --git a/cloudstack/data_source_cloudstack_ipaddress_test.go b/cloudstack/data_source_cloudstack_ipaddress_test.go index 35926efc..91fe09d0 100644 --- a/cloudstack/data_source_cloudstack_ipaddress_test.go +++ b/cloudstack/data_source_cloudstack_ipaddress_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) func TestAccIPAddressDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_network_offering_test.go b/cloudstack/data_source_cloudstack_network_offering_test.go index fa955e99..481bc82e 100644 --- a/cloudstack/data_source_cloudstack_network_offering_test.go +++ b/cloudstack/data_source_cloudstack_network_offering_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) func TestAccNetworkOfferingDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_pod_test.go b/cloudstack/data_source_cloudstack_pod_test.go index 49fa2ebd..36334ebc 100644 --- a/cloudstack/data_source_cloudstack_pod_test.go +++ b/cloudstack/data_source_cloudstack_pod_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) func TestAccPodDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_service_offering_test.go b/cloudstack/data_source_cloudstack_service_offering_test.go index c07a8120..ebeac6e1 100644 --- a/cloudstack/data_source_cloudstack_service_offering_test.go +++ b/cloudstack/data_source_cloudstack_service_offering_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) func TestAccServiceOfferingDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_ssh_keypair_test.go b/cloudstack/data_source_cloudstack_ssh_keypair_test.go index 701058fd..f2f84c2e 100644 --- a/cloudstack/data_source_cloudstack_ssh_keypair_test.go +++ b/cloudstack/data_source_cloudstack_ssh_keypair_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) func TestAccSshKeyPairDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_user_test.go b/cloudstack/data_source_cloudstack_user_test.go index de3a3c29..cbeee228 100644 --- a/cloudstack/data_source_cloudstack_user_test.go +++ b/cloudstack/data_source_cloudstack_user_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) func TestAccUserDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_volume_test.go b/cloudstack/data_source_cloudstack_volume_test.go index b2188eea..40565619 100644 --- a/cloudstack/data_source_cloudstack_volume_test.go +++ b/cloudstack/data_source_cloudstack_volume_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) func TestAccVolumeDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_vpc_test.go b/cloudstack/data_source_cloudstack_vpc_test.go index 2ae9bd7c..38b84c2d 100644 --- a/cloudstack/data_source_cloudstack_vpc_test.go +++ b/cloudstack/data_source_cloudstack_vpc_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) func TestAccVPCDataSource_basic(t *testing.T) { diff --git a/cloudstack/data_source_cloudstack_zone_test.go b/cloudstack/data_source_cloudstack_zone_test.go index a8af5c2a..413f07e9 100644 --- a/cloudstack/data_source_cloudstack_zone_test.go +++ b/cloudstack/data_source_cloudstack_zone_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) func TestAccZoneDataSource_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_affinity_group_test.go b/cloudstack/resource_cloudstack_affinity_group_test.go index 9c64bb11..e4c8738e 100644 --- a/cloudstack/resource_cloudstack_affinity_group_test.go +++ b/cloudstack/resource_cloudstack_affinity_group_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackAffinityGroup_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_attach_volume_test.go b/cloudstack/resource_cloudstack_attach_volume_test.go index 9e8a1d64..22cbb7ea 100644 --- a/cloudstack/resource_cloudstack_attach_volume_test.go +++ b/cloudstack/resource_cloudstack_attach_volume_test.go @@ -22,7 +22,7 @@ package cloudstack import ( "testing" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) func TestAccCloudstackAttachVolume_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_autoscale_vm_profile_test.go b/cloudstack/resource_cloudstack_autoscale_vm_profile_test.go index a3fb13fd..f417f45c 100644 --- a/cloudstack/resource_cloudstack_autoscale_vm_profile_test.go +++ b/cloudstack/resource_cloudstack_autoscale_vm_profile_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackAutoscaleVMProfile_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_disk_test.go b/cloudstack/resource_cloudstack_disk_test.go index 538ed802..08a2a43c 100644 --- a/cloudstack/resource_cloudstack_disk_test.go +++ b/cloudstack/resource_cloudstack_disk_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackDisk_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_egress_firewall_test.go b/cloudstack/resource_cloudstack_egress_firewall_test.go index 031aea33..1a647d89 100644 --- a/cloudstack/resource_cloudstack_egress_firewall_test.go +++ b/cloudstack/resource_cloudstack_egress_firewall_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackEgressFirewall_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_firewall_test.go b/cloudstack/resource_cloudstack_firewall_test.go index d417c227..13f23ffa 100644 --- a/cloudstack/resource_cloudstack_firewall_test.go +++ b/cloudstack/resource_cloudstack_firewall_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackFirewall_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_host_test.go b/cloudstack/resource_cloudstack_host_test.go index 62ad0079..da91b8ab 100644 --- a/cloudstack/resource_cloudstack_host_test.go +++ b/cloudstack/resource_cloudstack_host_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackHost_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_instance_test.go b/cloudstack/resource_cloudstack_instance_test.go index a4b8f7ae..6f2e7010 100644 --- a/cloudstack/resource_cloudstack_instance_test.go +++ b/cloudstack/resource_cloudstack_instance_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackInstance_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_ipaddress_test.go b/cloudstack/resource_cloudstack_ipaddress_test.go index bbd70e01..94a0467b 100644 --- a/cloudstack/resource_cloudstack_ipaddress_test.go +++ b/cloudstack/resource_cloudstack_ipaddress_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackIPAddress_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_kubernetes_version_test.go b/cloudstack/resource_cloudstack_kubernetes_version_test.go index 0a553f32..a80c8139 100644 --- a/cloudstack/resource_cloudstack_kubernetes_version_test.go +++ b/cloudstack/resource_cloudstack_kubernetes_version_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackKubernetesVersion_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_loadbalancer_rule_test.go b/cloudstack/resource_cloudstack_loadbalancer_rule_test.go index 762f51c6..9acd16ba 100644 --- a/cloudstack/resource_cloudstack_loadbalancer_rule_test.go +++ b/cloudstack/resource_cloudstack_loadbalancer_rule_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackLoadBalancerRule_basic(t *testing.T) { @@ -269,26 +269,26 @@ resource "cloudstack_network" "foo" { } resource "cloudstack_ipaddress" "foo" { - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id } resource "cloudstack_instance" "foobar1" { name = "terraform-server1" display_name = "terraform" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" - zone = "${cloudstack_network.foo.zone}" + zone = cloudstack_network.foo.zone expunge = true } resource "cloudstack_loadbalancer_rule" "foo" { name = "terraform-lb" - ip_address_id = "${cloudstack_ipaddress.foo.id}" + ip_address_id = cloudstack_ipaddress.foo.id algorithm = "roundrobin" public_port = 80 private_port = 80 - member_ids = ["${cloudstack_instance.foobar1.id}"] + member_ids = [cloudstack_instance.foobar1.id] }` const testAccCloudStackLoadBalancerRule_update = ` @@ -301,26 +301,26 @@ resource "cloudstack_network" "foo" { } resource "cloudstack_ipaddress" "foo" { - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id } resource "cloudstack_instance" "foobar1" { name = "terraform-server1" display_name = "terraform" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" - zone = "${cloudstack_network.foo.zone}" + zone = cloudstack_network.foo.zone expunge = true } resource "cloudstack_loadbalancer_rule" "foo" { name = "terraform-lb-update" - ip_address_id = "${cloudstack_ipaddress.foo.id}" + ip_address_id = cloudstack_ipaddress.foo.id algorithm = "leastconn" public_port = 80 private_port = 80 - member_ids = ["${cloudstack_instance.foobar1.id}"] + member_ids = [cloudstack_instance.foobar1.id] }` const testAccCloudStackLoadBalancerRule_forcenew = ` @@ -333,27 +333,27 @@ resource "cloudstack_network" "foo" { } resource "cloudstack_ipaddress" "foo" { - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id } resource "cloudstack_instance" "foobar1" { name = "terraform-server1" display_name = "terraform" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" - zone = "${cloudstack_network.foo.zone}" + zone = cloudstack_network.foo.zone expunge = true } resource "cloudstack_loadbalancer_rule" "foo" { name = "terraform-lb-update" - ip_address_id = "${cloudstack_ipaddress.foo.id}" + ip_address_id = cloudstack_ipaddress.foo.id algorithm = "leastconn" public_port = 443 private_port = 443 protocol = "tcp-proxy" - member_ids = ["${cloudstack_instance.foobar1.id}"] + member_ids = [cloudstack_instance.foobar1.id] }` const testAccCloudStackLoadBalancerRule_vpc = ` @@ -368,33 +368,33 @@ resource "cloudstack_network" "foo" { name = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" - vpc_id = "${cloudstack_vpc.foo.id}" - zone = "${cloudstack_vpc.foo.zone}" + vpc_id = cloudstack_vpc.foo.id + zone = cloudstack_vpc.foo.zone } resource "cloudstack_ipaddress" "foo" { - vpc_id = "${cloudstack_vpc.foo.id}" - zone = "${cloudstack_vpc.foo.zone}" + vpc_id = cloudstack_vpc.foo.id + zone = cloudstack_vpc.foo.zone } resource "cloudstack_instance" "foobar1" { name = "terraform-server1" display_name = "terraform" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" - zone = "${cloudstack_network.foo.zone}" + zone = cloudstack_network.foo.zone expunge = true } resource "cloudstack_loadbalancer_rule" "foo" { name = "terraform-lb" - ip_address_id = "${cloudstack_ipaddress.foo.id}" + ip_address_id = cloudstack_ipaddress.foo.id algorithm = "roundrobin" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id public_port = 80 private_port = 80 - member_ids = ["${cloudstack_instance.foobar1.id}"] + member_ids = [cloudstack_instance.foobar1.id] }` const testAccCloudStackLoadBalancerRule_vpc_update = ` @@ -409,22 +409,22 @@ resource "cloudstack_network" "foo" { name = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" - vpc_id = "${cloudstack_vpc.foo.id}" - zone = "${cloudstack_vpc.foo.zone}" + vpc_id = cloudstack_vpc.foo.id + zone = cloudstack_vpc.foo.zone } resource "cloudstack_ipaddress" "foo" { - vpc_id = "${cloudstack_vpc.foo.id}" - zone = "${cloudstack_vpc.foo.zone}" + vpc_id = cloudstack_vpc.foo.id + zone = cloudstack_vpc.foo.zone } resource "cloudstack_instance" "foobar1" { name = "terraform-server1" display_name = "terraform" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" - zone = "${cloudstack_network.foo.zone}" + zone = cloudstack_network.foo.zone expunge = true } @@ -432,18 +432,18 @@ resource "cloudstack_instance" "foobar2" { name = "terraform-server2" display_name = "terraform" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" - zone = "${cloudstack_network.foo.zone}" + zone = cloudstack_network.foo.zone expunge = true } resource "cloudstack_loadbalancer_rule" "foo" { name = "terraform-lb-update" - ip_address_id = "${cloudstack_ipaddress.foo.id}" + ip_address_id = cloudstack_ipaddress.foo.id algorithm = "leastconn" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id public_port = 443 private_port = 443 - member_ids = ["${cloudstack_instance.foobar1.id}", "${cloudstack_instance.foobar2.id}"] + member_ids = [cloudstack_instance.foobar1.id, cloudstack_instance.foobar2.id] }` diff --git a/cloudstack/resource_cloudstack_network_acl_rule_test.go b/cloudstack/resource_cloudstack_network_acl_rule_test.go index cfd006c4..6d421e67 100644 --- a/cloudstack/resource_cloudstack_network_acl_rule_test.go +++ b/cloudstack/resource_cloudstack_network_acl_rule_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackNetworkACLRule_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_network_acl_test.go b/cloudstack/resource_cloudstack_network_acl_test.go index f1e21ce6..6c99da5c 100644 --- a/cloudstack/resource_cloudstack_network_acl_test.go +++ b/cloudstack/resource_cloudstack_network_acl_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackNetworkACL_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_network_test.go b/cloudstack/resource_cloudstack_network_test.go index 1a3cdc85..93e4ef7b 100644 --- a/cloudstack/resource_cloudstack_network_test.go +++ b/cloudstack/resource_cloudstack_network_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackNetwork_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_nic_test.go b/cloudstack/resource_cloudstack_nic_test.go index fda6e9ba..f96da6d5 100644 --- a/cloudstack/resource_cloudstack_nic_test.go +++ b/cloudstack/resource_cloudstack_nic_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackNIC_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_port_forward_test.go b/cloudstack/resource_cloudstack_port_forward_test.go index ba69f171..b84df438 100644 --- a/cloudstack/resource_cloudstack_port_forward_test.go +++ b/cloudstack/resource_cloudstack_port_forward_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackPortForward_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_private_gateway_test.go b/cloudstack/resource_cloudstack_private_gateway_test.go index 7e067273..06861f4a 100644 --- a/cloudstack/resource_cloudstack_private_gateway_test.go +++ b/cloudstack/resource_cloudstack_private_gateway_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackPrivateGateway_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_secondary_ipaddress_test.go b/cloudstack/resource_cloudstack_secondary_ipaddress_test.go index 8728d29d..ba02dc9b 100644 --- a/cloudstack/resource_cloudstack_secondary_ipaddress_test.go +++ b/cloudstack/resource_cloudstack_secondary_ipaddress_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackSecondaryIPAddress_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_security_group_rule_test.go b/cloudstack/resource_cloudstack_security_group_rule_test.go index 0ac3c5d6..e806e4a5 100644 --- a/cloudstack/resource_cloudstack_security_group_rule_test.go +++ b/cloudstack/resource_cloudstack_security_group_rule_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackSecurityGroupRule_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_security_group_test.go b/cloudstack/resource_cloudstack_security_group_test.go index 3b3de35d..b75776ca 100644 --- a/cloudstack/resource_cloudstack_security_group_test.go +++ b/cloudstack/resource_cloudstack_security_group_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackSecurityGroup_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_service_offering_test.go b/cloudstack/resource_cloudstack_service_offering_test.go index e5bbcdaa..fc29628c 100644 --- a/cloudstack/resource_cloudstack_service_offering_test.go +++ b/cloudstack/resource_cloudstack_service_offering_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackServiceOffering_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_ssh_keypair_test.go b/cloudstack/resource_cloudstack_ssh_keypair_test.go index 9f6cc425..7e7b25dd 100644 --- a/cloudstack/resource_cloudstack_ssh_keypair_test.go +++ b/cloudstack/resource_cloudstack_ssh_keypair_test.go @@ -25,8 +25,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackSSHKeyPair_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_static_nat_test.go b/cloudstack/resource_cloudstack_static_nat_test.go index 2360b3e3..6b07b400 100644 --- a/cloudstack/resource_cloudstack_static_nat_test.go +++ b/cloudstack/resource_cloudstack_static_nat_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackStaticNAT_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_static_route_test.go b/cloudstack/resource_cloudstack_static_route_test.go index a7a82e76..045b98b4 100644 --- a/cloudstack/resource_cloudstack_static_route_test.go +++ b/cloudstack/resource_cloudstack_static_route_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackStaticRoute_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_template_test.go b/cloudstack/resource_cloudstack_template_test.go index 476613db..510906a3 100644 --- a/cloudstack/resource_cloudstack_template_test.go +++ b/cloudstack/resource_cloudstack_template_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackTemplate_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_vpc_test.go b/cloudstack/resource_cloudstack_vpc_test.go index 31c887fa..73218fea 100644 --- a/cloudstack/resource_cloudstack_vpc_test.go +++ b/cloudstack/resource_cloudstack_vpc_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackVPC_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_vpn_connection_test.go b/cloudstack/resource_cloudstack_vpn_connection_test.go index f7bb7210..dcec50b9 100644 --- a/cloudstack/resource_cloudstack_vpn_connection_test.go +++ b/cloudstack/resource_cloudstack_vpn_connection_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackVPNConnection_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_vpn_customer_gateway_test.go b/cloudstack/resource_cloudstack_vpn_customer_gateway_test.go index 80117036..3a4fbc03 100644 --- a/cloudstack/resource_cloudstack_vpn_customer_gateway_test.go +++ b/cloudstack/resource_cloudstack_vpn_customer_gateway_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackVPNCustomerGateway_basic(t *testing.T) { diff --git a/cloudstack/resource_cloudstack_vpn_gateway_test.go b/cloudstack/resource_cloudstack_vpn_gateway_test.go index 4eb539e2..7a1050f0 100644 --- a/cloudstack/resource_cloudstack_vpn_gateway_test.go +++ b/cloudstack/resource_cloudstack_vpn_gateway_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/apache/cloudstack-go/v2/cloudstack" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestAccCloudStackVPNGateway_basic(t *testing.T) { diff --git a/cloudstack/tags_test.go b/cloudstack/tags_test.go index edddd97b..e19cd044 100644 --- a/cloudstack/tags_test.go +++ b/cloudstack/tags_test.go @@ -25,8 +25,8 @@ import ( "reflect" "testing" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" ) func TestDiffTags(t *testing.T) { diff --git a/go.mod b/go.mod index 0fc936d1..11bd89f8 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ require ( github.com/hashicorp/terraform-plugin-go v0.22.0 github.com/hashicorp/terraform-plugin-mux v0.15.0 github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0 + github.com/hashicorp/terraform-plugin-testing v1.7.0 ) require ( @@ -22,12 +23,12 @@ require ( github.com/hashicorp/go-checkpoint v0.5.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect - github.com/hashicorp/go-hclog v1.5.0 // indirect + github.com/hashicorp/go-hclog v1.6.2 // indirect github.com/hashicorp/go-plugin v1.6.0 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hc-install v0.6.3 // indirect - github.com/hashicorp/hcl/v2 v2.19.1 // indirect + github.com/hashicorp/hcl/v2 v2.20.0 // indirect github.com/hashicorp/logutils v1.0.0 // indirect github.com/hashicorp/terraform-exec v0.20.0 // indirect github.com/hashicorp/terraform-json v0.21.0 // indirect @@ -49,12 +50,13 @@ require ( github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - github.com/zclconf/go-cty v1.14.2 // indirect - golang.org/x/crypto v0.19.0 // indirect + github.com/zclconf/go-cty v1.14.3 // indirect + golang.org/x/crypto v0.21.0 // indirect golang.org/x/mod v0.15.0 // indirect - golang.org/x/net v0.20.0 // indirect - golang.org/x/sys v0.17.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect + golang.org/x/tools v0.13.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect google.golang.org/grpc v1.62.0 // indirect diff --git a/go.sum b/go.sum index 79a55cca..f96b7b3e 100644 --- a/go.sum +++ b/go.sum @@ -58,8 +58,8 @@ github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9n 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-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= -github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-hclog v1.6.2 h1:NOtoftovWkDheyUM/8JW3QMiXyxJK3uHRK7wV04nD2I= +github.com/hashicorp/go-hclog v1.6.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= 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.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= @@ -71,8 +71,8 @@ github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mO github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/hc-install v0.6.3 h1:yE/r1yJvWbtrJ0STwScgEnCanb0U9v7zp0Gbkmcoxqs= github.com/hashicorp/hc-install v0.6.3/go.mod h1:KamGdbodYzlufbWh4r9NRo8y6GLHWZP2GBtdnms1Ln0= -github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= -github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= +github.com/hashicorp/hcl/v2 v2.20.0 h1:l++cRs/5jQOiKVvqXZm/P1ZEfVXJmvLS9WSVxkaeTb4= +github.com/hashicorp/hcl/v2 v2.20.0/go.mod h1:WmcD/Ym72MDOOx5F62Ly+leloeu6H7m0pG7VBiU6pQk= 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-exec v0.20.0 h1:DIZnPsqzPGuUnq6cH8jWcPunBfY+C+M8JyYF3vpnuEo= @@ -87,6 +87,8 @@ github.com/hashicorp/terraform-plugin-mux v0.15.0 h1:+/+lDx0WUsIOpkAmdwBIoFU8UP9 github.com/hashicorp/terraform-plugin-mux v0.15.0/go.mod h1:9ezplb1Dyq394zQ+ldB0nvy/qbNAz3mMoHHseMTMaKo= github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0 h1:qHprzXy/As0rxedphECBEQAh3R4yp6pKksKHcqZx5G8= github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0/go.mod h1:H+8tjs9TjV2w57QFVSMBQacf8k/E1XwLXGCARgViC6A= +github.com/hashicorp/terraform-plugin-testing v1.7.0 h1:I6aeCyZ30z4NiI3tzyDoO6fS7YxP5xSL1ceOon3gTe8= +github.com/hashicorp/terraform-plugin-testing v1.7.0/go.mod h1:sbAreCleJNOCz+y5vVHV8EJkIWZKi/t4ndKiUjM9vao= github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI= github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= @@ -157,13 +159,13 @@ github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.14.2 h1:kTG7lqmBou0Zkx35r6HJHUQTvaRPr5bIAf3AoHS0izI= -github.com/zclconf/go-cty v1.14.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.14.3 h1:1JXy1XroaGrzZuG6X9dt7HL6s9AwbY+l4UNL8o5B6ho= +github.com/zclconf/go-cty v1.14.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= @@ -173,12 +175,14 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= -golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/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-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -194,8 +198,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 86843efb8d4807945db3a1a7415b877d0618685d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 17:26:20 +0000 Subject: [PATCH 10/46] chore(tests): remove ExpectNonEmptyPlan As those are single tests, create and data source getting the value on the same execution, the plan after apply is expected to be empty (unless Cloudstack returns some change on the API) --- cloudstack/data_source_cloudstack_instance_test.go | 1 - cloudstack/data_source_cloudstack_ipaddress_test.go | 1 - cloudstack/data_source_cloudstack_network_offering_test.go | 1 - cloudstack/data_source_cloudstack_service_offering_test.go | 1 - cloudstack/data_source_cloudstack_ssh_keypair_test.go | 1 - cloudstack/data_source_cloudstack_user_test.go | 1 - cloudstack/data_source_cloudstack_volume_test.go | 1 - cloudstack/data_source_cloudstack_zone_test.go | 1 - 8 files changed, 8 deletions(-) diff --git a/cloudstack/data_source_cloudstack_instance_test.go b/cloudstack/data_source_cloudstack_instance_test.go index 6d2cc427..04ec4bf9 100644 --- a/cloudstack/data_source_cloudstack_instance_test.go +++ b/cloudstack/data_source_cloudstack_instance_test.go @@ -40,7 +40,6 @@ func TestAccInstanceDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(datasourceName, "display_name", resourceName, "display_name"), ), - ExpectNonEmptyPlan: true, }, }, }) diff --git a/cloudstack/data_source_cloudstack_ipaddress_test.go b/cloudstack/data_source_cloudstack_ipaddress_test.go index 91fe09d0..a64a8c08 100644 --- a/cloudstack/data_source_cloudstack_ipaddress_test.go +++ b/cloudstack/data_source_cloudstack_ipaddress_test.go @@ -38,7 +38,6 @@ func TestAccIPAddressDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(datasourceName, "zone_name", resourceName, "zone"), ), - ExpectNonEmptyPlan: true, }, }, }) diff --git a/cloudstack/data_source_cloudstack_network_offering_test.go b/cloudstack/data_source_cloudstack_network_offering_test.go index 481bc82e..d8d235dd 100644 --- a/cloudstack/data_source_cloudstack_network_offering_test.go +++ b/cloudstack/data_source_cloudstack_network_offering_test.go @@ -38,7 +38,6 @@ func TestAccNetworkOfferingDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(datasourceName, "name", resourceName, "name"), ), - ExpectNonEmptyPlan: true, }, }, }) diff --git a/cloudstack/data_source_cloudstack_service_offering_test.go b/cloudstack/data_source_cloudstack_service_offering_test.go index ebeac6e1..afe94d5e 100644 --- a/cloudstack/data_source_cloudstack_service_offering_test.go +++ b/cloudstack/data_source_cloudstack_service_offering_test.go @@ -38,7 +38,6 @@ func TestAccServiceOfferingDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(datasourceName, "name", resourceName, "name"), ), - ExpectNonEmptyPlan: true, }, }, }) diff --git a/cloudstack/data_source_cloudstack_ssh_keypair_test.go b/cloudstack/data_source_cloudstack_ssh_keypair_test.go index f2f84c2e..aa4bb97f 100644 --- a/cloudstack/data_source_cloudstack_ssh_keypair_test.go +++ b/cloudstack/data_source_cloudstack_ssh_keypair_test.go @@ -38,7 +38,6 @@ func TestAccSshKeyPairDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(datasourceName, "id", resourceName, "id"), ), - ExpectNonEmptyPlan: true, }, }, }) diff --git a/cloudstack/data_source_cloudstack_user_test.go b/cloudstack/data_source_cloudstack_user_test.go index cbeee228..59b33ce3 100644 --- a/cloudstack/data_source_cloudstack_user_test.go +++ b/cloudstack/data_source_cloudstack_user_test.go @@ -38,7 +38,6 @@ func TestAccUserDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(datasourceName, "first_name", resourceName, "first_name"), ), - ExpectNonEmptyPlan: true, }, }, }) diff --git a/cloudstack/data_source_cloudstack_volume_test.go b/cloudstack/data_source_cloudstack_volume_test.go index 40565619..787ee209 100644 --- a/cloudstack/data_source_cloudstack_volume_test.go +++ b/cloudstack/data_source_cloudstack_volume_test.go @@ -38,7 +38,6 @@ func TestAccVolumeDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(datasourceName, "name", resourceName, "name"), ), - ExpectNonEmptyPlan: true, }, }, }) diff --git a/cloudstack/data_source_cloudstack_zone_test.go b/cloudstack/data_source_cloudstack_zone_test.go index 413f07e9..c51948c2 100644 --- a/cloudstack/data_source_cloudstack_zone_test.go +++ b/cloudstack/data_source_cloudstack_zone_test.go @@ -38,7 +38,6 @@ func TestAccZoneDataSource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair(datasourceName, "name", resourceName, "name"), ), - ExpectNonEmptyPlan: true, }, }, }) From fd0731e0315062ae509e2637329b945aeb71d46f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 18:01:49 +0000 Subject: [PATCH 11/46] chore(tests): fixes indexes on TypeSet --- ...esource_cloudstack_egress_firewall_test.go | 26 ++--- .../resource_cloudstack_firewall_test.go | 52 +++++----- ...source_cloudstack_network_acl_rule_test.go | 94 +++++++++---------- ...rce_cloudstack_security_group_rule_test.go | 68 +++++++------- 4 files changed, 120 insertions(+), 120 deletions(-) diff --git a/cloudstack/resource_cloudstack_egress_firewall_test.go b/cloudstack/resource_cloudstack_egress_firewall_test.go index 1a647d89..de8baa90 100644 --- a/cloudstack/resource_cloudstack_egress_firewall_test.go +++ b/cloudstack/resource_cloudstack_egress_firewall_test.go @@ -42,11 +42,11 @@ func TestAccCloudStackEgressFirewall_basic(t *testing.T) { resource.TestCheckResourceAttr( "cloudstack_egress_firewall.foo", "rule.#", "1"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.3342666485.cidr_list.140834516", "10.1.1.10/32"), + "cloudstack_egress_firewall.foo", "rule.0.cidr_list.0", "10.1.1.10/32"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.3342666485.protocol", "tcp"), + "cloudstack_egress_firewall.foo", "rule.0.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.3342666485.ports.32925333", "8080"), + "cloudstack_egress_firewall.foo", "rule.0.ports.0", "8080"), ), }, }, @@ -66,11 +66,11 @@ func TestAccCloudStackEgressFirewall_update(t *testing.T) { resource.TestCheckResourceAttr( "cloudstack_egress_firewall.foo", "rule.#", "1"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.3342666485.cidr_list.140834516", "10.1.1.10/32"), + "cloudstack_egress_firewall.foo", "rule.0.cidr_list.0", "10.1.1.10/32"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.3342666485.protocol", "tcp"), + "cloudstack_egress_firewall.foo", "rule.0.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.3342666485.ports.32925333", "8080"), + "cloudstack_egress_firewall.foo", "rule.0.ports.0", "8080"), ), }, @@ -81,19 +81,19 @@ func TestAccCloudStackEgressFirewall_update(t *testing.T) { resource.TestCheckResourceAttr( "cloudstack_egress_firewall.foo", "rule.#", "2"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.1558935996.cidr_list.140834516", "10.1.1.10/32"), + "cloudstack_egress_firewall.foo", "rule.0.cidr_list.0", "10.1.1.10/32"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.1558935996.cidr_list.2966983089", "10.1.1.11/32"), + "cloudstack_egress_firewall.foo", "rule.0.cidr_list.1", "10.1.1.11/32"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.1558935996.protocol", "tcp"), + "cloudstack_egress_firewall.foo", "rule.0.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.1558935996.ports.32925333", "8080"), + "cloudstack_egress_firewall.foo", "rule.0.ports.0", "8080"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.2961518528.cidr_list.140834516", "10.1.1.10/32"), + "cloudstack_egress_firewall.foo", "rule.1.cidr_list.0", "10.1.1.10/32"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.2961518528.protocol", "tcp"), + "cloudstack_egress_firewall.foo", "rule.1.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_egress_firewall.foo", "rule.2961518528.ports.1889509032", "80"), + "cloudstack_egress_firewall.foo", "rule.1.ports.1", "80"), ), }, }, diff --git a/cloudstack/resource_cloudstack_firewall_test.go b/cloudstack/resource_cloudstack_firewall_test.go index 13f23ffa..1cbe5cce 100644 --- a/cloudstack/resource_cloudstack_firewall_test.go +++ b/cloudstack/resource_cloudstack_firewall_test.go @@ -42,19 +42,19 @@ func TestAccCloudStackFirewall_basic(t *testing.T) { resource.TestCheckResourceAttr( "cloudstack_firewall.foo", "rule.#", "2"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.2263505090.cidr_list.3482919157", "10.0.0.0/24"), + "cloudstack_firewall.foo", "rule.1.cidr_list.0", "10.0.0.0/24"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.2263505090.protocol", "tcp"), + "cloudstack_firewall.foo", "rule.1.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.2263505090.ports.32925333", "8080"), + "cloudstack_firewall.foo", "rule.1.ports.0", "8080"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3782201428.cidr_list.3482919157", "10.0.0.0/24"), + "cloudstack_firewall.foo", "rule.0.cidr_list.0", "10.0.0.0/24"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3782201428.protocol", "tcp"), + "cloudstack_firewall.foo", "rule.0.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3782201428.ports.1209010669", "1000-2000"), + "cloudstack_firewall.foo", "rule.0.ports.0", "1000-2000"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3782201428.ports.1889509032", "80"), + "cloudstack_firewall.foo", "rule.0.ports.1", "80"), ), }, }, @@ -74,19 +74,19 @@ func TestAccCloudStackFirewall_update(t *testing.T) { resource.TestCheckResourceAttr( "cloudstack_firewall.foo", "rule.#", "2"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.2263505090.cidr_list.3482919157", "10.0.0.0/24"), + "cloudstack_firewall.foo", "rule.1.cidr_list.0", "10.0.0.0/24"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.2263505090.protocol", "tcp"), + "cloudstack_firewall.foo", "rule.1.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.2263505090.ports.32925333", "8080"), + "cloudstack_firewall.foo", "rule.1.ports.0", "8080"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3782201428.cidr_list.3482919157", "10.0.0.0/24"), + "cloudstack_firewall.foo", "rule.0.cidr_list.0", "10.0.0.0/24"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3782201428.protocol", "tcp"), + "cloudstack_firewall.foo", "rule.0.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3782201428.ports.1209010669", "1000-2000"), + "cloudstack_firewall.foo", "rule.0.ports.0", "1000-2000"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3782201428.ports.1889509032", "80"), + "cloudstack_firewall.foo", "rule.0.ports.1", "80"), ), }, @@ -97,29 +97,29 @@ func TestAccCloudStackFirewall_update(t *testing.T) { resource.TestCheckResourceAttr( "cloudstack_firewall.foo", "rule.#", "3"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3529885171.cidr_list.80081744", "10.0.1.0/24"), + "cloudstack_firewall.foo", "rule.0.cidr_list.1", "10.0.1.0/24"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3529885171.cidr_list.3482919157", "10.0.0.0/24"), + "cloudstack_firewall.foo", "rule.0.cidr_list.0", "10.0.0.0/24"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3529885171.protocol", "tcp"), + "cloudstack_firewall.foo", "rule.0.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3529885171.ports.32925333", "8080"), + "cloudstack_firewall.foo", "rule.0.ports.0", "8080"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3782201428.cidr_list.3482919157", "10.0.0.0/24"), + "cloudstack_firewall.foo", "rule.1.cidr_list.0", "10.0.0.0/24"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3782201428.protocol", "tcp"), + "cloudstack_firewall.foo", "rule.1.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3782201428.ports.1209010669", "1000-2000"), + "cloudstack_firewall.foo", "rule.1.ports.0", "1000-2000"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.3782201428.ports.1889509032", "80"), + "cloudstack_firewall.foo", "rule.1.ports.1", "80"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.4160426500.cidr_list.2835005819", "172.16.100.0/24"), + "cloudstack_firewall.foo", "rule.2.cidr_list.0", "172.16.100.0/24"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.4160426500.protocol", "tcp"), + "cloudstack_firewall.foo", "rule.2.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.4160426500.ports.1889509032", "80"), + "cloudstack_firewall.foo", "rule.2.ports.1", "80"), resource.TestCheckResourceAttr( - "cloudstack_firewall.foo", "rule.4160426500.ports.3638101695", "443"), + "cloudstack_firewall.foo", "rule.2.ports.0", "443"), ), }, }, diff --git a/cloudstack/resource_cloudstack_network_acl_rule_test.go b/cloudstack/resource_cloudstack_network_acl_rule_test.go index 6d421e67..8317b691 100644 --- a/cloudstack/resource_cloudstack_network_acl_rule_test.go +++ b/cloudstack/resource_cloudstack_network_acl_rule_test.go @@ -42,31 +42,31 @@ func TestAccCloudStackNetworkACLRule_basic(t *testing.T) { resource.TestCheckResourceAttr( "cloudstack_network_acl_rule.foo", "rule.#", "3"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.action", "allow"), + "cloudstack_network_acl_rule.foo", "rule.0.action", "allow"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.cidr_list.2835005819", "172.16.100.0/24"), + "cloudstack_network_acl_rule.foo", "rule.0.cidr_list.0", "172.16.100.0/24"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.protocol", "tcp"), + "cloudstack_network_acl_rule.foo", "rule.0.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.ports.#", "2"), + "cloudstack_network_acl_rule.foo", "rule.0.ports.#", "2"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.ports.1889509032", "80"), + "cloudstack_network_acl_rule.foo", "rule.0.ports.1", "80"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.ports.3638101695", "443"), + "cloudstack_network_acl_rule.foo", "rule.0.ports.0", "443"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.traffic_type", "ingress"), + "cloudstack_network_acl_rule.foo", "rule.0.traffic_type", "ingress"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1480917538.action", "allow"), + "cloudstack_network_acl_rule.foo", "rule.1.action", "allow"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1480917538.cidr_list.#", "1"), + "cloudstack_network_acl_rule.foo", "rule.1.cidr_list.#", "1"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1480917538.cidr_list.3056857544", "172.18.100.0/24"), + "cloudstack_network_acl_rule.foo", "rule.1.cidr_list.0", "172.18.100.0/24"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1480917538.icmp_code", "-1"), + "cloudstack_network_acl_rule.foo", "rule.1.icmp_code", "-1"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1480917538.icmp_type", "-1"), + "cloudstack_network_acl_rule.foo", "rule.1.icmp_type", "-1"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1480917538.traffic_type", "ingress"), + "cloudstack_network_acl_rule.foo", "rule.1.traffic_type", "ingress"), ), }, }, @@ -86,31 +86,31 @@ func TestAccCloudStackNetworkACLRule_update(t *testing.T) { resource.TestCheckResourceAttr( "cloudstack_network_acl_rule.foo", "rule.#", "3"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.action", "allow"), + "cloudstack_network_acl_rule.foo", "rule.0.action", "allow"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.cidr_list.2835005819", "172.16.100.0/24"), + "cloudstack_network_acl_rule.foo", "rule.0.cidr_list.0", "172.16.100.0/24"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.protocol", "tcp"), + "cloudstack_network_acl_rule.foo", "rule.0.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.ports.#", "2"), + "cloudstack_network_acl_rule.foo", "rule.0.ports.#", "2"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.ports.1889509032", "80"), + "cloudstack_network_acl_rule.foo", "rule.0.ports.1", "80"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.ports.3638101695", "443"), + "cloudstack_network_acl_rule.foo", "rule.0.ports.0", "443"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2898748868.traffic_type", "ingress"), + "cloudstack_network_acl_rule.foo", "rule.0.traffic_type", "ingress"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1480917538.action", "allow"), + "cloudstack_network_acl_rule.foo", "rule.1.action", "allow"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1480917538.cidr_list.#", "1"), + "cloudstack_network_acl_rule.foo", "rule.1.cidr_list.#", "1"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1480917538.cidr_list.3056857544", "172.18.100.0/24"), + "cloudstack_network_acl_rule.foo", "rule.1.cidr_list.0", "172.18.100.0/24"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1480917538.icmp_code", "-1"), + "cloudstack_network_acl_rule.foo", "rule.1.icmp_code", "-1"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1480917538.icmp_type", "-1"), + "cloudstack_network_acl_rule.foo", "rule.1.icmp_type", "-1"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1480917538.traffic_type", "ingress"), + "cloudstack_network_acl_rule.foo", "rule.1.traffic_type", "ingress"), ), }, @@ -121,47 +121,47 @@ func TestAccCloudStackNetworkACLRule_update(t *testing.T) { resource.TestCheckResourceAttr( "cloudstack_network_acl_rule.foo", "rule.#", "4"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1724235854.action", "deny"), + "cloudstack_network_acl_rule.foo", "rule.1.action", "deny"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1724235854.cidr_list.3482919157", "10.0.0.0/24"), + "cloudstack_network_acl_rule.foo", "rule.1.cidr_list.0", "10.0.0.0/24"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1724235854.protocol", "tcp"), + "cloudstack_network_acl_rule.foo", "rule.1.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1724235854.ports.#", "2"), + "cloudstack_network_acl_rule.foo", "rule.1.ports.#", "2"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1724235854.ports.1209010669", "1000-2000"), + "cloudstack_network_acl_rule.foo", "rule.1.ports.0", "1000-2000"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1724235854.ports.1889509032", "80"), + "cloudstack_network_acl_rule.foo", "rule.1.ports.1", "80"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.1724235854.traffic_type", "egress"), + "cloudstack_network_acl_rule.foo", "rule.1.traffic_type", "egress"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2090315355.action", "deny"), + "cloudstack_network_acl_rule.foo", "rule.2.action", "deny"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2090315355.cidr_list.#", "2"), + "cloudstack_network_acl_rule.foo", "rule.2.cidr_list.#", "2"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2090315355.cidr_list.2104435309", "172.18.101.0/24"), + "cloudstack_network_acl_rule.foo", "rule.2.cidr_list.1", "172.18.101.0/24"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2090315355.cidr_list.3056857544", "172.18.100.0/24"), + "cloudstack_network_acl_rule.foo", "rule.2.cidr_list.0", "172.18.100.0/24"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2090315355.icmp_code", "-1"), + "cloudstack_network_acl_rule.foo", "rule.2.icmp_code", "-1"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2090315355.icmp_type", "-1"), + "cloudstack_network_acl_rule.foo", "rule.2.icmp_type", "-1"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2090315355.traffic_type", "ingress"), + "cloudstack_network_acl_rule.foo", "rule.2.traffic_type", "ingress"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2576683033.action", "allow"), + "cloudstack_network_acl_rule.foo", "rule.0.action", "allow"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2576683033.cidr_list.3056857544", "172.18.100.0/24"), + "cloudstack_network_acl_rule.foo", "rule.0.cidr_list.0", "172.18.100.0/24"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2576683033.protocol", "tcp"), + "cloudstack_network_acl_rule.foo", "rule.0.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2576683033.ports.#", "2"), + "cloudstack_network_acl_rule.foo", "rule.0.ports.#", "2"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2576683033.ports.1889509032", "80"), + "cloudstack_network_acl_rule.foo", "rule.0.ports.1", "80"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2576683033.ports.3638101695", "443"), + "cloudstack_network_acl_rule.foo", "rule.0.ports.0", "443"), resource.TestCheckResourceAttr( - "cloudstack_network_acl_rule.foo", "rule.2576683033.traffic_type", "ingress"), + "cloudstack_network_acl_rule.foo", "rule.0.traffic_type", "ingress"), ), }, }, diff --git a/cloudstack/resource_cloudstack_security_group_rule_test.go b/cloudstack/resource_cloudstack_security_group_rule_test.go index e806e4a5..21c93ccb 100644 --- a/cloudstack/resource_cloudstack_security_group_rule_test.go +++ b/cloudstack/resource_cloudstack_security_group_rule_test.go @@ -42,25 +42,25 @@ func TestAccCloudStackSecurityGroupRule_basic(t *testing.T) { resource.TestCheckResourceAttr( "cloudstack_security_group_rule.foo", "rule.#", "2"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1322309156.cidr_list.3056857544", "172.18.100.0/24"), + "cloudstack_security_group_rule.foo", "rule.0.cidr_list.0", "172.18.100.0/24"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1322309156.protocol", "tcp"), + "cloudstack_security_group_rule.foo", "rule.0.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1322309156.ports.#", "1"), + "cloudstack_security_group_rule.foo", "rule.0.ports.#", "1"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1322309156.ports.1889509032", "80"), + "cloudstack_security_group_rule.foo", "rule.0.ports.0", "80"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1322309156.traffic_type", "ingress"), + "cloudstack_security_group_rule.foo", "rule.0.traffic_type", "ingress"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3666289950.protocol", "tcp"), + "cloudstack_security_group_rule.foo", "rule.1.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3666289950.ports.1889509032", "80"), + "cloudstack_security_group_rule.foo", "rule.1.ports.1", "80"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3666289950.ports.3638101695", "443"), + "cloudstack_security_group_rule.foo", "rule.1.ports.0", "443"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3666289950.traffic_type", "egress"), + "cloudstack_security_group_rule.foo", "rule.1.traffic_type", "egress"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3666289950.user_security_group_list.1089118859", "terraform-security-group-bar"), + "cloudstack_security_group_rule.foo", "rule.1.user_security_group_list.0", "terraform-security-group-bar"), ), }, }, @@ -80,25 +80,25 @@ func TestAccCloudStackSecurityGroupRule_update(t *testing.T) { resource.TestCheckResourceAttr( "cloudstack_security_group_rule.foo", "rule.#", "2"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1322309156.cidr_list.3056857544", "172.18.100.0/24"), + "cloudstack_security_group_rule.foo", "rule.0.cidr_list.0", "172.18.100.0/24"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1322309156.protocol", "tcp"), + "cloudstack_security_group_rule.foo", "rule.0.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1322309156.ports.#", "1"), + "cloudstack_security_group_rule.foo", "rule.0.ports.#", "1"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1322309156.ports.1889509032", "80"), + "cloudstack_security_group_rule.foo", "rule.0.ports.0", "80"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1322309156.traffic_type", "ingress"), + "cloudstack_security_group_rule.foo", "rule.0.traffic_type", "ingress"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3666289950.protocol", "tcp"), + "cloudstack_security_group_rule.foo", "rule.1.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3666289950.ports.1889509032", "80"), + "cloudstack_security_group_rule.foo", "rule.1.ports.1", "80"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3666289950.ports.3638101695", "443"), + "cloudstack_security_group_rule.foo", "rule.1.ports.0", "443"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3666289950.traffic_type", "egress"), + "cloudstack_security_group_rule.foo", "rule.1.traffic_type", "egress"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3666289950.user_security_group_list.1089118859", "terraform-security-group-bar"), + "cloudstack_security_group_rule.foo", "rule.1.user_security_group_list.0", "terraform-security-group-bar"), ), }, @@ -109,33 +109,33 @@ func TestAccCloudStackSecurityGroupRule_update(t *testing.T) { resource.TestCheckResourceAttr( "cloudstack_security_group_rule.foo", "rule.#", "3"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3156342770.cidr_list.3056857544", "172.18.100.0/24"), + "cloudstack_security_group_rule.foo", "rule.0.cidr_list.0", "172.18.100.0/24"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3156342770.cidr_list.951907883", "172.18.200.0/24"), + "cloudstack_security_group_rule.foo", "rule.0.cidr_list.1", "172.18.200.0/24"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3156342770.protocol", "tcp"), + "cloudstack_security_group_rule.foo", "rule.0.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3156342770.ports.1889509032", "80"), + "cloudstack_security_group_rule.foo", "rule.0.ports.1", "80"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3156342770.ports.3638101695", "443"), + "cloudstack_security_group_rule.foo", "rule.0.ports.0", "443"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3839437815.cidr_list.#", "1"), + "cloudstack_security_group_rule.foo", "rule.1.cidr_list.#", "1"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3839437815.cidr_list.3056857544", "172.18.100.0/24"), + "cloudstack_security_group_rule.foo", "rule.1.cidr_list.0", "172.18.100.0/24"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3839437815.icmp_code", "-1"), + "cloudstack_security_group_rule.foo", "rule.1.icmp_code", "-1"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.3839437815.icmp_type", "-1"), + "cloudstack_security_group_rule.foo", "rule.1.icmp_type", "-1"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1804489748.protocol", "tcp"), + "cloudstack_security_group_rule.foo", "rule.2.protocol", "tcp"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1804489748.ports.#", "1"), + "cloudstack_security_group_rule.foo", "rule.2.ports.#", "1"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1804489748.ports.1889509032", "80"), + "cloudstack_security_group_rule.foo", "rule.2.ports.0", "80"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1804489748.traffic_type", "egress"), + "cloudstack_security_group_rule.foo", "rule.2.traffic_type", "egress"), resource.TestCheckResourceAttr( - "cloudstack_security_group_rule.foo", "rule.1804489748.user_security_group_list.1089118859", "terraform-security-group-bar"), + "cloudstack_security_group_rule.foo", "rule.2.user_security_group_list.0", "terraform-security-group-bar"), ), }, }, From 81e5c55ea5118422d5fa80ad25f518100659a486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 18:14:34 +0000 Subject: [PATCH 12/46] ci: use go.mod to get go version --- .github/workflows/build.yml | 2 +- .github/workflows/testacc.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 318dfe0a..6408ca3a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,7 +35,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: 1.21.x + go-version-file: 'go.mod' - name: Build run: | diff --git a/.github/workflows/testacc.yml b/.github/workflows/testacc.yml index 5fcb5a97..24a6bd6c 100644 --- a/.github/workflows/testacc.yml +++ b/.github/workflows/testacc.yml @@ -37,7 +37,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: 1.21.x + go-version-file: 'go.mod' - name: Wait Cloudstack to be ready run: | echo "Starting Cloudstack health check" From 99ecdd416ba103066096f93b1a6a7dbe04eaa0d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 18:15:22 +0000 Subject: [PATCH 13/46] ci: test multiple versions of terraform --- .../workflows/{testacc.yml => acceptance.yml} | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) rename .github/workflows/{testacc.yml => acceptance.yml} (85%) diff --git a/.github/workflows/testacc.yml b/.github/workflows/acceptance.yml similarity index 85% rename from .github/workflows/testacc.yml rename to .github/workflows/acceptance.yml index 24a6bd6c..2122725d 100644 --- a/.github/workflows/testacc.yml +++ b/.github/workflows/acceptance.yml @@ -20,15 +20,15 @@ name: Acceptance Test on: [push, pull_request] concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-testacc + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-acceptance cancel-in-progress: true permissions: contents: read jobs: - testacc: - name: Acceptance Test + acceptance: + name: Acceptance Tests (Terraform ${{ matrix.terraform-version }}, Cloudstack ${{ matrix.cloudstack-version }}) runs-on: ubuntu-22.04 env: CLOUDSTACK_API_URL: http://localhost:8080/client/api @@ -76,18 +76,35 @@ jobs: - name: Create extra resources run: | cmk -u $CLOUDSTACK_API_URL -k $CLOUDSTACK_API_KEY -s $CLOUDSTACK_SECRET_KEY -o json create project name=terraform displaytext=terraform + - uses: hashicorp/setup-terraform@v2 + with: + terraform_version: ${{ matrix.terraform-version }} + terraform_wrapper: false - name: Run acceptance test run: | make testacc services: cloudstack-simulator: - image: apache/cloudstack-simulator:${{ matrix.cloudstack_version }} + image: apache/cloudstack-simulator:${{ matrix.cloudstack-version }} ports: - 8080:5050 strategy: fail-fast: false matrix: - cloudstack_version: + terraform-version: + - '0.12.*' + - '0.13.*' + - '0.14.*' + - '0.15.*' + - '1.0.*' + - '1.1.*' + - '1.2.*' + - '1.3.*' + - '1.4.*' + - '1.5.*' + - '1.6.*' + - '1.7.*' + cloudstack-version: - 4.17.2.0 - 4.18.1.0 - 4.19.0.0 From 1e1e211019e61c35062bd7dc95df13413ff9e480 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 18:43:06 +0000 Subject: [PATCH 14/46] chore(deps): update cloudstack sdk to v2.16.0 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 11bd89f8..01b48a33 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,7 @@ module github.com/terraform-providers/terraform-provider-cloudstack require ( - github.com/apache/cloudstack-go/v2 v2.15.0 + github.com/apache/cloudstack-go/v2 v2.16.0 github.com/go-ini/ini v1.67.0 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/terraform-plugin-go v0.22.0 diff --git a/go.sum b/go.sum index f96b7b3e..05e3e588 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/ProtonMail/go-crypto v1.1.0-alpha.0 h1:nHGfwXmFvJrSR9xu8qL7BkO4DqTHXE github.com/ProtonMail/go-crypto v1.1.0-alpha.0/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= 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/apache/cloudstack-go/v2 v2.15.0 h1:oojn1qx0+wBwrFSSmA2rL8XjWd4BXqwYo0RVCrAXoHk= -github.com/apache/cloudstack-go/v2 v2.15.0/go.mod h1:Mc+tXpujtslBuZFk5atoGT2LanVxOrXS2GGgidAoz1A= +github.com/apache/cloudstack-go/v2 v2.16.0 h1:qK4/mtgmhzFU99WHAHM/1FhAM3cWV8gplOAGODwHyPM= +github.com/apache/cloudstack-go/v2 v2.16.0/go.mod h1:EPMwvwKMvmIFajmDCqSR747l/439DuKvKY8jbFOE/qE= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= From 3bf94b7832501246e2209ecdbc4e34ca61cc5c67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 19:14:41 +0000 Subject: [PATCH 15/46] ci: changes trigger for acceptance test --- .github/workflows/acceptance.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 2122725d..a63980a3 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -17,7 +17,17 @@ name: Acceptance Test -on: [push, pull_request] +on: + pull_request: + paths: + - .github/workflows/acceptance.yml + - '*.go' + push: + branches-ignore: + - main + paths: + - .github/workflows/acceptance.yml + - '*.go' concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-acceptance From 252e0b3da4795fa48057d1e7e1c3e92859077add Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 19:54:47 +0000 Subject: [PATCH 16/46] chore(tests): change hcl syntax --- .../data_source_cloudstack_ipaddress_test.go | 2 +- .../data_source_cloudstack_user_test.go | 2 +- .../data_source_cloudstack_volume_test.go | 4 ++-- cloudstack/data_source_cloudstack_vpc_test.go | 2 +- .../resource_cloudstack_attach_volume_test.go | 6 ++--- cloudstack/resource_cloudstack_disk_test.go | 8 +++---- ...esource_cloudstack_egress_firewall_test.go | 4 ++-- .../resource_cloudstack_firewall_test.go | 4 ++-- .../resource_cloudstack_instance_test.go | 16 ++++++------- .../resource_cloudstack_ipaddress_test.go | 12 +++++----- ...source_cloudstack_network_acl_rule_test.go | 8 +++---- .../resource_cloudstack_network_acl_test.go | 2 +- .../resource_cloudstack_network_test.go | 20 ++++++++-------- cloudstack/resource_cloudstack_nic_test.go | 12 +++++----- .../resource_cloudstack_port_forward_test.go | 14 +++++------ ...esource_cloudstack_private_gateway_test.go | 6 ++--- ...rce_cloudstack_secondary_ipaddress_test.go | 8 +++---- ...rce_cloudstack_security_group_rule_test.go | 4 ++-- .../resource_cloudstack_static_nat_test.go | 10 ++++---- .../resource_cloudstack_static_route_test.go | 8 +++---- ...resource_cloudstack_vpn_connection_test.go | 20 ++++++++-------- ...ce_cloudstack_vpn_customer_gateway_test.go | 24 +++++++++---------- .../resource_cloudstack_vpn_gateway_test.go | 2 +- 23 files changed, 99 insertions(+), 99 deletions(-) diff --git a/cloudstack/data_source_cloudstack_ipaddress_test.go b/cloudstack/data_source_cloudstack_ipaddress_test.go index a64a8c08..bb576bcf 100644 --- a/cloudstack/data_source_cloudstack_ipaddress_test.go +++ b/cloudstack/data_source_cloudstack_ipaddress_test.go @@ -59,6 +59,6 @@ resource "cloudstack_ipaddress" "ipaddress-resource" { } output "ipaddress-output" { - value = "${data.cloudstack_ipaddress.ipaddress-data-source}" + value = data.cloudstack_ipaddress.ipaddress-data-source } ` diff --git a/cloudstack/data_source_cloudstack_user_test.go b/cloudstack/data_source_cloudstack_user_test.go index 59b33ce3..0e063b9f 100644 --- a/cloudstack/data_source_cloudstack_user_test.go +++ b/cloudstack/data_source_cloudstack_user_test.go @@ -64,6 +64,6 @@ data "cloudstack_user" "user-data-source"{ } output "user-output" { - value = "${data.cloudstack_user.user-data-source}" + value = data.cloudstack_user.user-data-source } ` diff --git a/cloudstack/data_source_cloudstack_volume_test.go b/cloudstack/data_source_cloudstack_volume_test.go index 787ee209..2c0cfac1 100644 --- a/cloudstack/data_source_cloudstack_volume_test.go +++ b/cloudstack/data_source_cloudstack_volume_test.go @@ -59,8 +59,8 @@ data "cloudstack_zone" "zone-data-source" { resource "cloudstack_volume" "volume-resource"{ name = "TestVolume" - disk_offering_id = "${cloudstack_disk_offering.disk-offering.id}" - zone_id = "${data.cloudstack_zone.zone-data-source.id}" + disk_offering_id = cloudstack_disk_offering.disk-offering.id + zone_id = data.cloudstack_zone.zone-data-source.id } data "cloudstack_volume" "volume-data-source"{ diff --git a/cloudstack/data_source_cloudstack_vpc_test.go b/cloudstack/data_source_cloudstack_vpc_test.go index 38b84c2d..2ac57dd1 100644 --- a/cloudstack/data_source_cloudstack_vpc_test.go +++ b/cloudstack/data_source_cloudstack_vpc_test.go @@ -67,6 +67,6 @@ data "cloudstack_vpc" "vpc-data-source"{ } output "vpc-output" { -value = "${data.cloudstack_vpc.vpc-data-source}" +value = data.cloudstack_vpc.vpc-data-source } ` diff --git a/cloudstack/resource_cloudstack_attach_volume_test.go b/cloudstack/resource_cloudstack_attach_volume_test.go index 22cbb7ea..c8ed6b45 100644 --- a/cloudstack/resource_cloudstack_attach_volume_test.go +++ b/cloudstack/resource_cloudstack_attach_volume_test.go @@ -52,16 +52,16 @@ resource "cloudstack_network" "foo" { name = "terraform-test" display_name = "terraform" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" - zone = "${cloudstack_network.foo.zone}" + zone = cloudstack_network.foo.zone expunge = true } resource "cloudstack_disk" "foo" { name = "terraform-disk" disk_offering = "Small" - zone = "${cloudstack_instance.foobar.zone}" + zone = cloudstack_instance.foobar.zone } resource "cloudstack_attach_volume" "foo" { diff --git a/cloudstack/resource_cloudstack_disk_test.go b/cloudstack/resource_cloudstack_disk_test.go index 08a2a43c..90f7405c 100644 --- a/cloudstack/resource_cloudstack_disk_test.go +++ b/cloudstack/resource_cloudstack_disk_test.go @@ -237,9 +237,9 @@ resource "cloudstack_instance" "foobar" { name = "terraform-test" display_name = "terraform" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" - zone = "${cloudstack_network.foo.zone}" + zone = cloudstack_network.foo.zone expunge = true } @@ -248,6 +248,6 @@ resource "cloudstack_disk" "foo" { attach = true device_id = 4 disk_offering = "Small" - virtual_machine_id = "${cloudstack_instance.foobar.id}" - zone = "${cloudstack_instance.foobar.zone}" + virtual_machine_id = cloudstack_instance.foobar.id + zone = cloudstack_instance.foobar.zone }` diff --git a/cloudstack/resource_cloudstack_egress_firewall_test.go b/cloudstack/resource_cloudstack_egress_firewall_test.go index de8baa90..ad5b77dc 100644 --- a/cloudstack/resource_cloudstack_egress_firewall_test.go +++ b/cloudstack/resource_cloudstack_egress_firewall_test.go @@ -168,7 +168,7 @@ resource "cloudstack_network" "foo" { } resource "cloudstack_egress_firewall" "foo" { - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id rule { cidr_list = ["10.1.1.10/32"] @@ -186,7 +186,7 @@ resource "cloudstack_network" "foo" { } resource "cloudstack_egress_firewall" "foo" { - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id rule { cidr_list = ["10.1.1.10/32", "10.1.1.11/32"] diff --git a/cloudstack/resource_cloudstack_firewall_test.go b/cloudstack/resource_cloudstack_firewall_test.go index 1cbe5cce..87631870 100644 --- a/cloudstack/resource_cloudstack_firewall_test.go +++ b/cloudstack/resource_cloudstack_firewall_test.go @@ -195,7 +195,7 @@ resource "cloudstack_network" "foo" { } resource "cloudstack_firewall" "foo" { - ip_address_id = "${cloudstack_network.foo.source_nat_ip_id}" + ip_address_id = cloudstack_network.foo.source_nat_ip_id rule { cidr_list = ["10.0.0.0/24"] @@ -220,7 +220,7 @@ resource "cloudstack_network" "foo" { } resource "cloudstack_firewall" "foo" { - ip_address_id = "${cloudstack_network.foo.source_nat_ip_id}" + ip_address_id = cloudstack_network.foo.source_nat_ip_id rule { cidr_list = ["10.0.0.0/24", "10.0.1.0/24"] diff --git a/cloudstack/resource_cloudstack_instance_test.go b/cloudstack/resource_cloudstack_instance_test.go index 6f2e7010..6a0fd21c 100644 --- a/cloudstack/resource_cloudstack_instance_test.go +++ b/cloudstack/resource_cloudstack_instance_test.go @@ -321,7 +321,7 @@ resource "cloudstack_instance" "foobar" { name = "terraform-test" display_name = "terraform-test" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" zone = "Sandbox-simulator" user_data = "foobar\nfoo\nbar" @@ -343,7 +343,7 @@ resource "cloudstack_instance" "foobar" { name = "terraform-test" display_name = "terraform-test" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" zone = "Sandbox-simulator" start_vm = false @@ -362,7 +362,7 @@ resource "cloudstack_instance" "foobar" { name = "terraform-updated" display_name = "terraform-updated" service_offering= "Medium Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" zone = "Sandbox-simulator" user_data = "foobar\nfoo\nbar" @@ -381,7 +381,7 @@ resource "cloudstack_instance" "foobar" { name = "terraform-test" display_name = "terraform-test" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id ip_address = "10.1.1.123" template = "CentOS 5.6 (64-bit) no GUI (Simulator)" zone = "Sandbox-simulator" @@ -404,10 +404,10 @@ resource "cloudstack_instance" "foobar" { name = "terraform-test" display_name = "terraform-test" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" zone = "Sandbox-simulator" - keypair = "${cloudstack_ssh_keypair.foo.name}" + keypair = cloudstack_ssh_keypair.foo.name expunge = true }` @@ -424,9 +424,9 @@ resource "cloudstack_instance" "foobar" { name = "terraform-test" display_name = "terraform-test" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" project = "terraform" - zone = "${cloudstack_network.foo.zone}" + zone = cloudstack_network.foo.zone expunge = true }` diff --git a/cloudstack/resource_cloudstack_ipaddress_test.go b/cloudstack/resource_cloudstack_ipaddress_test.go index 94a0467b..f662fad0 100644 --- a/cloudstack/resource_cloudstack_ipaddress_test.go +++ b/cloudstack/resource_cloudstack_ipaddress_test.go @@ -144,7 +144,7 @@ resource "cloudstack_network" "foo" { } resource "cloudstack_ipaddress" "foo" { - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id tags = { terraform-tag = "true" } @@ -159,8 +159,8 @@ resource "cloudstack_vpc" "foo" { } resource "cloudstack_ipaddress" "foo" { - vpc_id = "${cloudstack_vpc.foo.id}" - zone = "${cloudstack_vpc.foo.zone}" + vpc_id = cloudstack_vpc.foo.id + zone = cloudstack_vpc.foo.zone }` const testAccCloudStackIPAddress_vpcid_with_network_id = ` @@ -180,7 +180,7 @@ resource "cloudstack_network" "foo" { } resource "cloudstack_ipaddress" "foo" { - vpc_id = "${cloudstack_vpc.foo.id}" - network_id = "${cloudstack_network.foo.id}" - zone = "${cloudstack_vpc.foo.zone}" + vpc_id = cloudstack_vpc.foo.id + network_id = cloudstack_network.foo.id + zone = cloudstack_vpc.foo.zone }` diff --git a/cloudstack/resource_cloudstack_network_acl_rule_test.go b/cloudstack/resource_cloudstack_network_acl_rule_test.go index 8317b691..0fcc6916 100644 --- a/cloudstack/resource_cloudstack_network_acl_rule_test.go +++ b/cloudstack/resource_cloudstack_network_acl_rule_test.go @@ -238,11 +238,11 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network_acl" "foo" { name = "terraform-acl" description = "terraform-acl-text" - vpc_id = "${cloudstack_vpc.foo.id}" + vpc_id = cloudstack_vpc.foo.id } resource "cloudstack_network_acl_rule" "foo" { - acl_id = "${cloudstack_network_acl.foo.id}" + acl_id = cloudstack_network_acl.foo.id rule { action = "allow" @@ -279,11 +279,11 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network_acl" "foo" { name = "terraform-acl" description = "terraform-acl-text" - vpc_id = "${cloudstack_vpc.foo.id}" + vpc_id = cloudstack_vpc.foo.id } resource "cloudstack_network_acl_rule" "foo" { - acl_id = "${cloudstack_network_acl.foo.id}" + acl_id = cloudstack_network_acl.foo.id rule { action = "deny" diff --git a/cloudstack/resource_cloudstack_network_acl_test.go b/cloudstack/resource_cloudstack_network_acl_test.go index 6c99da5c..b252a5a5 100644 --- a/cloudstack/resource_cloudstack_network_acl_test.go +++ b/cloudstack/resource_cloudstack_network_acl_test.go @@ -142,5 +142,5 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network_acl" "foo" { name = "terraform-acl" description = "terraform-acl-text" - vpc_id = "${cloudstack_vpc.foo.id}" + vpc_id = cloudstack_vpc.foo.id }` diff --git a/cloudstack/resource_cloudstack_network_test.go b/cloudstack/resource_cloudstack_network_test.go index 93e4ef7b..92a5eb7a 100644 --- a/cloudstack/resource_cloudstack_network_test.go +++ b/cloudstack/resource_cloudstack_network_test.go @@ -290,8 +290,8 @@ resource "cloudstack_network" "foo" { name = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" - vpc_id = "${cloudstack_vpc.foo.id}" - zone = "${cloudstack_vpc.foo.zone}" + vpc_id = cloudstack_vpc.foo.id + zone = cloudstack_vpc.foo.zone }` const testAccCloudStackNetwork_acl = ` @@ -304,16 +304,16 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network_acl" "foo" { name = "foo" - vpc_id = "${cloudstack_vpc.foo.id}" + vpc_id = cloudstack_vpc.foo.id } resource "cloudstack_network" "foo" { name = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" - vpc_id = "${cloudstack_vpc.foo.id}" - acl_id = "${cloudstack_network_acl.foo.id}" - zone = "${cloudstack_vpc.foo.zone}" + vpc_id = cloudstack_vpc.foo.id + acl_id = cloudstack_network_acl.foo.id + zone = cloudstack_vpc.foo.zone }` const testAccCloudStackNetwork_updateACL = ` @@ -326,14 +326,14 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network_acl" "bar" { name = "bar" - vpc_id = "${cloudstack_vpc.foo.id}" + vpc_id = cloudstack_vpc.foo.id } resource "cloudstack_network" "foo" { name = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" - vpc_id = "${cloudstack_vpc.foo.id}" - acl_id = "${cloudstack_network_acl.bar.id}" - zone = "${cloudstack_vpc.foo.zone}" + vpc_id = cloudstack_vpc.foo.id + acl_id = cloudstack_network_acl.bar.id + zone = cloudstack_vpc.foo.zone }` diff --git a/cloudstack/resource_cloudstack_nic_test.go b/cloudstack/resource_cloudstack_nic_test.go index f96da6d5..7b9a2b53 100644 --- a/cloudstack/resource_cloudstack_nic_test.go +++ b/cloudstack/resource_cloudstack_nic_test.go @@ -187,15 +187,15 @@ resource "cloudstack_instance" "foobar" { name = "terraform-test" display_name = "terraform" service_offering= "Medium Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" zone = "Sandbox-simulator" expunge = true } resource "cloudstack_nic" "foo" { - network_id = "${cloudstack_network.bar.id}" - virtual_machine_id = "${cloudstack_instance.foobar.id}" + network_id = cloudstack_network.bar.id + virtual_machine_id = cloudstack_instance.foobar.id }` const testAccCloudStackNIC_ipaddress = ` @@ -217,14 +217,14 @@ resource "cloudstack_instance" "foobar" { name = "terraform-test" display_name = "terraform" service_offering= "Medium Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" zone = "Sandbox-simulator" expunge = true } resource "cloudstack_nic" "foo" { - network_id = "${cloudstack_network.bar.id}" - virtual_machine_id = "${cloudstack_instance.foobar.id}" + network_id = cloudstack_network.bar.id + virtual_machine_id = cloudstack_instance.foobar.id ip_address = "10.1.2.123" }` diff --git a/cloudstack/resource_cloudstack_port_forward_test.go b/cloudstack/resource_cloudstack_port_forward_test.go index b84df438..382e5c16 100644 --- a/cloudstack/resource_cloudstack_port_forward_test.go +++ b/cloudstack/resource_cloudstack_port_forward_test.go @@ -146,20 +146,20 @@ resource "cloudstack_instance" "foobar" { name = "terraform-test" display_name = "terraform-updated" service_offering= "Medium Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" zone = "Sandbox-simulator" expunge = true } resource "cloudstack_port_forward" "foo" { - ip_address_id = "${cloudstack_network.foo.source_nat_ip_id}" + ip_address_id = cloudstack_network.foo.source_nat_ip_id forward { protocol = "tcp" private_port = 443 public_port = 8443 - virtual_machine_id = "${cloudstack_instance.foobar.id}" + virtual_machine_id = cloudstack_instance.foobar.id } }` @@ -176,26 +176,26 @@ resource "cloudstack_instance" "foobar" { name = "terraform-test" display_name = "terraform-updated" service_offering= "Medium Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" zone = "Sandbox-simulator" expunge = true } resource "cloudstack_port_forward" "foo" { - ip_address_id = "${cloudstack_network.foo.source_nat_ip_id}" + ip_address_id = cloudstack_network.foo.source_nat_ip_id forward { protocol = "tcp" private_port = 443 public_port = 8443 - virtual_machine_id = "${cloudstack_instance.foobar.id}" + virtual_machine_id = cloudstack_instance.foobar.id } forward { protocol = "tcp" private_port = 80 public_port = 8080 - virtual_machine_id = "${cloudstack_instance.foobar.id}" + virtual_machine_id = cloudstack_instance.foobar.id } }` diff --git a/cloudstack/resource_cloudstack_private_gateway_test.go b/cloudstack/resource_cloudstack_private_gateway_test.go index 06861f4a..a20a8141 100644 --- a/cloudstack/resource_cloudstack_private_gateway_test.go +++ b/cloudstack/resource_cloudstack_private_gateway_test.go @@ -147,7 +147,7 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network_acl" "foo" { name = "terraform-acl" - vpc_id = "${cloudstack_vpc.foo.id}" + vpc_id = cloudstack_vpc.foo.id depends_on = ["cloudstack_vpc.foo"] } @@ -156,7 +156,7 @@ resource "cloudstack_private_gateway" "foo" { ip_address = "192.168.0.1" netmask = "255.255.255.0" vlan = "1" - vpc_id = "${cloudstack_vpc.foo.id}" - acl_id = "${cloudstack_network_acl.foo.id}" + vpc_id = cloudstack_vpc.foo.id + acl_id = cloudstack_network_acl.foo.id depends_on = ["cloudstack_vpc.foo","cloudstack_network_acl.foo"] }` diff --git a/cloudstack/resource_cloudstack_secondary_ipaddress_test.go b/cloudstack/resource_cloudstack_secondary_ipaddress_test.go index ba02dc9b..6dad5148 100644 --- a/cloudstack/resource_cloudstack_secondary_ipaddress_test.go +++ b/cloudstack/resource_cloudstack_secondary_ipaddress_test.go @@ -229,14 +229,14 @@ resource "cloudstack_network" "foo" { resource "cloudstack_instance" "foobar" { name = "terraform-test" service_offering= "Medium Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" zone = "Sandbox-simulator" expunge = true } resource "cloudstack_secondary_ipaddress" "foo" { - virtual_machine_id = "${cloudstack_instance.foobar.id}" + virtual_machine_id = cloudstack_instance.foobar.id } ` const testAccCloudStackSecondaryIPAddress_fixedIP = ` @@ -250,7 +250,7 @@ resource "cloudstack_network" "foo" { resource "cloudstack_instance" "foobar" { name = "terraform-test" service_offering= "Medium Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" zone = "Sandbox-simulator" expunge = true @@ -258,5 +258,5 @@ resource "cloudstack_instance" "foobar" { resource "cloudstack_secondary_ipaddress" "foo" { ip_address = "10.1.1.123" - virtual_machine_id = "${cloudstack_instance.foobar.id}" + virtual_machine_id = cloudstack_instance.foobar.id }` diff --git a/cloudstack/resource_cloudstack_security_group_rule_test.go b/cloudstack/resource_cloudstack_security_group_rule_test.go index 21c93ccb..804a4a80 100644 --- a/cloudstack/resource_cloudstack_security_group_rule_test.go +++ b/cloudstack/resource_cloudstack_security_group_rule_test.go @@ -236,7 +236,7 @@ resource "cloudstack_security_group" "bar" { } resource "cloudstack_security_group_rule" "foo" { - security_group_id = "${cloudstack_security_group.foo.id}" + security_group_id = cloudstack_security_group.foo.id rule { cidr_list = ["172.18.100.0/24"] @@ -266,7 +266,7 @@ resource "cloudstack_security_group" "bar" { } resource "cloudstack_security_group_rule" "foo" { - security_group_id = "${cloudstack_security_group.foo.id}" + security_group_id = cloudstack_security_group.foo.id rule { cidr_list = ["172.18.100.0/24", "172.18.200.0/24"] diff --git a/cloudstack/resource_cloudstack_static_nat_test.go b/cloudstack/resource_cloudstack_static_nat_test.go index 6b07b400..bed4c9ee 100644 --- a/cloudstack/resource_cloudstack_static_nat_test.go +++ b/cloudstack/resource_cloudstack_static_nat_test.go @@ -127,17 +127,17 @@ resource "cloudstack_instance" "foobar" { name = "terraform-test" display_name = "terraform" service_offering= "Small Instance" - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" - zone = "${cloudstack_network.foo.zone}" + zone = cloudstack_network.foo.zone expunge = true } resource "cloudstack_ipaddress" "foo" { - network_id = "${cloudstack_network.foo.id}" + network_id = cloudstack_network.foo.id } resource "cloudstack_static_nat" "foo" { - ip_address_id = "${cloudstack_ipaddress.foo.id}" - virtual_machine_id = "${cloudstack_instance.foobar.id}" + ip_address_id = cloudstack_ipaddress.foo.id + virtual_machine_id = cloudstack_instance.foobar.id }` diff --git a/cloudstack/resource_cloudstack_static_route_test.go b/cloudstack/resource_cloudstack_static_route_test.go index 045b98b4..dcf754d1 100644 --- a/cloudstack/resource_cloudstack_static_route_test.go +++ b/cloudstack/resource_cloudstack_static_route_test.go @@ -120,7 +120,7 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network_acl" "foo" { name = "terraform-acl" - vpc_id = "${cloudstack_vpc.foo.id}" + vpc_id = cloudstack_vpc.foo.id } resource "cloudstack_private_gateway" "foo" { @@ -128,11 +128,11 @@ resource "cloudstack_private_gateway" "foo" { ip_address = "192.168.0.1" netmask = "255.255.255.0" vlan = "1" - vpc_id = "${cloudstack_vpc.foo.id}" - acl_id = "${cloudstack_network_acl.foo.id}" + vpc_id = cloudstack_vpc.foo.id + acl_id = cloudstack_network_acl.foo.id } resource "cloudstack_static_route" "foo" { cidr = "172.16.0.0/16" - gateway_id = "${cloudstack_private_gateway.foo.id}" + gateway_id = cloudstack_private_gateway.foo.id }` diff --git a/cloudstack/resource_cloudstack_vpn_connection_test.go b/cloudstack/resource_cloudstack_vpn_connection_test.go index dcec50b9..55d42a75 100644 --- a/cloudstack/resource_cloudstack_vpn_connection_test.go +++ b/cloudstack/resource_cloudstack_vpn_connection_test.go @@ -115,37 +115,37 @@ resource "cloudstack_vpc" "bar" { } resource "cloudstack_vpn_gateway" "foo" { - vpc_id = "${cloudstack_vpc.foo.id}" + vpc_id = cloudstack_vpc.foo.id } resource "cloudstack_vpn_gateway" "bar" { - vpc_id = "${cloudstack_vpc.bar.id}" + vpc_id = cloudstack_vpc.bar.id } resource "cloudstack_vpn_customer_gateway" "foo" { name = "terraform-foo" - cidr = "${cloudstack_vpc.foo.cidr}" + cidr = cloudstack_vpc.foo.cidr esp_policy = "aes256-sha1" - gateway = "${cloudstack_vpn_gateway.foo.public_ip}" + gateway = cloudstack_vpn_gateway.foo.public_ip ike_policy = "aes256-sha1;modp1536" ipsec_psk = "terraform" } resource "cloudstack_vpn_customer_gateway" "bar" { name = "terraform-bar" - cidr = "${cloudstack_vpc.bar.cidr}" + cidr = cloudstack_vpc.bar.cidr esp_policy = "aes256-sha1" - gateway = "${cloudstack_vpn_gateway.bar.public_ip}" + gateway = cloudstack_vpn_gateway.bar.public_ip ike_policy = "aes256-sha1;modp1536" ipsec_psk = "terraform" } resource "cloudstack_vpn_connection" "foo-bar" { - customer_gateway_id = "${cloudstack_vpn_customer_gateway.foo.id}" - vpn_gateway_id = "${cloudstack_vpn_gateway.bar.id}" + customer_gateway_id = cloudstack_vpn_customer_gateway.foo.id + vpn_gateway_id = cloudstack_vpn_gateway.bar.id } resource "cloudstack_vpn_connection" "bar-foo" { - customer_gateway_id = "${cloudstack_vpn_customer_gateway.bar.id}" - vpn_gateway_id = "${cloudstack_vpn_gateway.foo.id}" + customer_gateway_id = cloudstack_vpn_customer_gateway.bar.id + vpn_gateway_id = cloudstack_vpn_gateway.foo.id }` diff --git a/cloudstack/resource_cloudstack_vpn_customer_gateway_test.go b/cloudstack/resource_cloudstack_vpn_customer_gateway_test.go index 3a4fbc03..8df06662 100644 --- a/cloudstack/resource_cloudstack_vpn_customer_gateway_test.go +++ b/cloudstack/resource_cloudstack_vpn_customer_gateway_test.go @@ -226,27 +226,27 @@ resource "cloudstack_vpc" "bar" { } resource "cloudstack_vpn_gateway" "foo" { - vpc_id = "${cloudstack_vpc.foo.id}" + vpc_id = cloudstack_vpc.foo.id } resource "cloudstack_vpn_gateway" "bar" { - vpc_id = "${cloudstack_vpc.bar.id}" + vpc_id = cloudstack_vpc.bar.id } resource "cloudstack_vpn_customer_gateway" "foo" { name = "terraform-foo" - cidr = "${cloudstack_vpc.foo.cidr}" + cidr = cloudstack_vpc.foo.cidr esp_policy = "aes256-sha1" - gateway = "${cloudstack_vpn_gateway.foo.public_ip}" + gateway = cloudstack_vpn_gateway.foo.public_ip ike_policy = "aes256-sha1;modp1536" ipsec_psk = "terraform" } resource "cloudstack_vpn_customer_gateway" "bar" { name = "terraform-bar" - cidr = "${cloudstack_vpc.bar.cidr}" + cidr = cloudstack_vpc.bar.cidr esp_policy = "aes256-sha1" - gateway = "${cloudstack_vpn_gateway.bar.public_ip}" + gateway = cloudstack_vpn_gateway.bar.public_ip ike_policy = "aes256-sha1;modp1536" ipsec_psk = "terraform" }` @@ -267,27 +267,27 @@ resource "cloudstack_vpc" "bar" { } resource "cloudstack_vpn_gateway" "foo" { - vpc_id = "${cloudstack_vpc.foo.id}" + vpc_id = cloudstack_vpc.foo.id } resource "cloudstack_vpn_gateway" "bar" { - vpc_id = "${cloudstack_vpc.bar.id}" + vpc_id = cloudstack_vpc.bar.id } resource "cloudstack_vpn_customer_gateway" "foo" { name = "terraform-foo-bar" - cidr = "${cloudstack_vpc.foo.cidr}" + cidr = cloudstack_vpc.foo.cidr esp_policy = "3des-md5" - gateway = "${cloudstack_vpn_gateway.foo.public_ip}" + gateway = cloudstack_vpn_gateway.foo.public_ip ike_policy = "3des-md5;modp1536" ipsec_psk = "terraform" } resource "cloudstack_vpn_customer_gateway" "bar" { name = "terraform-bar-foo" - cidr = "${cloudstack_vpc.bar.cidr}" + cidr = cloudstack_vpc.bar.cidr esp_policy = "3des-md5" - gateway = "${cloudstack_vpn_gateway.bar.public_ip}" + gateway = cloudstack_vpn_gateway.bar.public_ip ike_policy = "3des-md5;modp1536" ipsec_psk = "terraform" }` diff --git a/cloudstack/resource_cloudstack_vpn_gateway_test.go b/cloudstack/resource_cloudstack_vpn_gateway_test.go index 7a1050f0..4c88156e 100644 --- a/cloudstack/resource_cloudstack_vpn_gateway_test.go +++ b/cloudstack/resource_cloudstack_vpn_gateway_test.go @@ -125,5 +125,5 @@ resource "cloudstack_vpc" "foo" { } resource "cloudstack_vpn_gateway" "foo" { - vpc_id = "${cloudstack_vpc.foo.id}" + vpc_id = cloudstack_vpc.foo.id }` From 1edf0cf312fb44b243a4429edea812a615fba971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 19:58:20 +0000 Subject: [PATCH 17/46] fix: set vlan in private network --- cloudstack/resource_cloudstack_private_gateway.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cloudstack/resource_cloudstack_private_gateway.go b/cloudstack/resource_cloudstack_private_gateway.go index 0a77d528..6d4e0078 100644 --- a/cloudstack/resource_cloudstack_private_gateway.go +++ b/cloudstack/resource_cloudstack_private_gateway.go @@ -102,6 +102,7 @@ func resourceCloudStackPrivateGatewayCreate(d *schema.ResourceData, meta interfa d.Get("netmask").(string), d.Get("vpc_id").(string), ) + p.SetVlan(d.Get("vlan").(string)) // Retrieve the network_offering ID if networkofferingid != "" { From ce542cad71cb199f1b12a74da3232a10aff44a25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 20:39:24 +0000 Subject: [PATCH 18/46] chore(tests): add display_text in cloudstack_network test to support cloudstack v4.17 --- cloudstack/resource_cloudstack_attach_volume_test.go | 1 + cloudstack/resource_cloudstack_disk_test.go | 1 + cloudstack/resource_cloudstack_egress_firewall_test.go | 2 ++ cloudstack/resource_cloudstack_firewall_test.go | 2 ++ cloudstack/resource_cloudstack_instance_test.go | 6 ++++++ cloudstack/resource_cloudstack_ipaddress_test.go | 2 ++ cloudstack/resource_cloudstack_loadbalancer_rule_test.go | 5 +++++ cloudstack/resource_cloudstack_network_test.go | 5 +++++ cloudstack/resource_cloudstack_nic_test.go | 4 ++++ cloudstack/resource_cloudstack_port_forward_test.go | 2 ++ cloudstack/resource_cloudstack_secondary_ipaddress_test.go | 2 ++ cloudstack/resource_cloudstack_static_nat_test.go | 1 + 12 files changed, 33 insertions(+) diff --git a/cloudstack/resource_cloudstack_attach_volume_test.go b/cloudstack/resource_cloudstack_attach_volume_test.go index c8ed6b45..c9af51cc 100644 --- a/cloudstack/resource_cloudstack_attach_volume_test.go +++ b/cloudstack/resource_cloudstack_attach_volume_test.go @@ -43,6 +43,7 @@ func TestAccCloudstackAttachVolume_basic(t *testing.T) { const testAccCloudstackAttachVolume_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" diff --git a/cloudstack/resource_cloudstack_disk_test.go b/cloudstack/resource_cloudstack_disk_test.go index 90f7405c..d94b6273 100644 --- a/cloudstack/resource_cloudstack_disk_test.go +++ b/cloudstack/resource_cloudstack_disk_test.go @@ -228,6 +228,7 @@ resource "cloudstack_disk" "foo" { const testAccCloudStackDisk_deviceID = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" diff --git a/cloudstack/resource_cloudstack_egress_firewall_test.go b/cloudstack/resource_cloudstack_egress_firewall_test.go index ad5b77dc..8974ee2d 100644 --- a/cloudstack/resource_cloudstack_egress_firewall_test.go +++ b/cloudstack/resource_cloudstack_egress_firewall_test.go @@ -162,6 +162,7 @@ func testAccCheckCloudStackEgressFirewallDestroy(s *terraform.State) error { const testAccCloudStackEgressFirewall_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -180,6 +181,7 @@ resource "cloudstack_egress_firewall" "foo" { const testAccCloudStackEgressFirewall_update = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" diff --git a/cloudstack/resource_cloudstack_firewall_test.go b/cloudstack/resource_cloudstack_firewall_test.go index 87631870..dadb1047 100644 --- a/cloudstack/resource_cloudstack_firewall_test.go +++ b/cloudstack/resource_cloudstack_firewall_test.go @@ -188,6 +188,7 @@ func testAccCheckCloudStackFirewallDestroy(s *terraform.State) error { const testAccCloudStackFirewall_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true @@ -213,6 +214,7 @@ resource "cloudstack_firewall" "foo" { const testAccCloudStackFirewall_update = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true diff --git a/cloudstack/resource_cloudstack_instance_test.go b/cloudstack/resource_cloudstack_instance_test.go index 6a0fd21c..ccfa83f6 100644 --- a/cloudstack/resource_cloudstack_instance_test.go +++ b/cloudstack/resource_cloudstack_instance_test.go @@ -312,6 +312,7 @@ func testAccCheckCloudStackInstanceDestroy(s *terraform.State) error { const testAccCloudStackInstance_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -334,6 +335,7 @@ resource "cloudstack_instance" "foobar" { const testAccCloudStackInstance_stopped = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -353,6 +355,7 @@ resource "cloudstack_instance" "foobar" { const testAccCloudStackInstance_renameAndResize = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -372,6 +375,7 @@ resource "cloudstack_instance" "foobar" { const testAccCloudStackInstance_fixedIP = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -391,6 +395,7 @@ resource "cloudstack_instance" "foobar" { const testAccCloudStackInstance_keyPair = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -414,6 +419,7 @@ resource "cloudstack_instance" "foobar" { const testAccCloudStackInstance_project = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" project = "terraform" diff --git a/cloudstack/resource_cloudstack_ipaddress_test.go b/cloudstack/resource_cloudstack_ipaddress_test.go index f662fad0..464ee72c 100644 --- a/cloudstack/resource_cloudstack_ipaddress_test.go +++ b/cloudstack/resource_cloudstack_ipaddress_test.go @@ -137,6 +137,7 @@ func testAccCheckCloudStackIPAddressDestroy(s *terraform.State) error { const testAccCloudStackIPAddress_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true @@ -173,6 +174,7 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true diff --git a/cloudstack/resource_cloudstack_loadbalancer_rule_test.go b/cloudstack/resource_cloudstack_loadbalancer_rule_test.go index 9acd16ba..3519da19 100644 --- a/cloudstack/resource_cloudstack_loadbalancer_rule_test.go +++ b/cloudstack/resource_cloudstack_loadbalancer_rule_test.go @@ -262,6 +262,7 @@ func testAccCheckCloudStackLoadBalancerRuleDestroy(s *terraform.State) error { const testAccCloudStackLoadBalancerRule_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true @@ -294,6 +295,7 @@ resource "cloudstack_loadbalancer_rule" "foo" { const testAccCloudStackLoadBalancerRule_update = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true @@ -326,6 +328,7 @@ resource "cloudstack_loadbalancer_rule" "foo" { const testAccCloudStackLoadBalancerRule_forcenew = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true @@ -366,6 +369,7 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" vpc_id = cloudstack_vpc.foo.id @@ -407,6 +411,7 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" vpc_id = cloudstack_vpc.foo.id diff --git a/cloudstack/resource_cloudstack_network_test.go b/cloudstack/resource_cloudstack_network_test.go index 92a5eb7a..42c40d8b 100644 --- a/cloudstack/resource_cloudstack_network_test.go +++ b/cloudstack/resource_cloudstack_network_test.go @@ -261,6 +261,7 @@ func testAccCheckCloudStackNetworkDestroy(s *terraform.State) error { const testAccCloudStackNetwork_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -272,6 +273,7 @@ resource "cloudstack_network" "foo" { const testAccCloudStackNetwork_project = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" project = "terraform" @@ -288,6 +290,7 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" vpc_id = cloudstack_vpc.foo.id @@ -309,6 +312,7 @@ resource "cloudstack_network_acl" "foo" { resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" vpc_id = cloudstack_vpc.foo.id @@ -331,6 +335,7 @@ resource "cloudstack_network_acl" "bar" { resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" vpc_id = cloudstack_vpc.foo.id diff --git a/cloudstack/resource_cloudstack_nic_test.go b/cloudstack/resource_cloudstack_nic_test.go index 7b9a2b53..d189cf79 100644 --- a/cloudstack/resource_cloudstack_nic_test.go +++ b/cloudstack/resource_cloudstack_nic_test.go @@ -171,6 +171,7 @@ func testAccCheckCloudStackNICDestroy(s *terraform.State) error { const testAccCloudStackNIC_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -178,6 +179,7 @@ resource "cloudstack_network" "foo" { resource "cloudstack_network" "bar" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.2.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -201,6 +203,7 @@ resource "cloudstack_nic" "foo" { const testAccCloudStackNIC_ipaddress = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -208,6 +211,7 @@ resource "cloudstack_network" "foo" { resource "cloudstack_network" "bar" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.2.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" diff --git a/cloudstack/resource_cloudstack_port_forward_test.go b/cloudstack/resource_cloudstack_port_forward_test.go index 382e5c16..23c4e98d 100644 --- a/cloudstack/resource_cloudstack_port_forward_test.go +++ b/cloudstack/resource_cloudstack_port_forward_test.go @@ -136,6 +136,7 @@ func testAccCheckCloudStackPortForwardDestroy(s *terraform.State) error { const testAccCloudStackPortForward_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true @@ -166,6 +167,7 @@ resource "cloudstack_port_forward" "foo" { const testAccCloudStackPortForward_update = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true diff --git a/cloudstack/resource_cloudstack_secondary_ipaddress_test.go b/cloudstack/resource_cloudstack_secondary_ipaddress_test.go index 6dad5148..28ab1242 100644 --- a/cloudstack/resource_cloudstack_secondary_ipaddress_test.go +++ b/cloudstack/resource_cloudstack_secondary_ipaddress_test.go @@ -221,6 +221,7 @@ func testAccCheckCloudStackSecondaryIPAddressDestroy(s *terraform.State) error { const testAccCloudStackSecondaryIPAddress_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -242,6 +243,7 @@ resource "cloudstack_secondary_ipaddress" "foo" { const testAccCloudStackSecondaryIPAddress_fixedIP = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" diff --git a/cloudstack/resource_cloudstack_static_nat_test.go b/cloudstack/resource_cloudstack_static_nat_test.go index bed4c9ee..aa6e9e8d 100644 --- a/cloudstack/resource_cloudstack_static_nat_test.go +++ b/cloudstack/resource_cloudstack_static_nat_test.go @@ -117,6 +117,7 @@ func testAccCheckCloudStackStaticNATDestroy(s *terraform.State) error { const testAccCloudStackStaticNAT_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true From 14c382fa52dd7b43ce6aef4d69e836f438c83fad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 20:43:31 +0000 Subject: [PATCH 19/46] ci: ignore branch main on acceptance test --- .github/workflows/acceptance.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index a63980a3..12dd4230 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -23,8 +23,9 @@ on: - .github/workflows/acceptance.yml - '*.go' push: - branches-ignore: - - main + branches: + - '*' + - '!main' paths: - .github/workflows/acceptance.yml - '*.go' From c4f792bfd5144e16250998d07794a42759fcb883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 15 Mar 2024 20:47:42 +0000 Subject: [PATCH 20/46] ci: remove branch restriction --- .github/workflows/acceptance.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 12dd4230..4af818fe 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -23,9 +23,6 @@ on: - .github/workflows/acceptance.yml - '*.go' push: - branches: - - '*' - - '!main' paths: - .github/workflows/acceptance.yml - '*.go' From 1e6c4ba80731ece3f29d110b253a48caa44004ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Sat, 16 Mar 2024 14:16:47 +0000 Subject: [PATCH 21/46] chore(tests): fix network test --- .../resource_cloudstack_network_test.go | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/cloudstack/resource_cloudstack_network_test.go b/cloudstack/resource_cloudstack_network_test.go index 42c40d8b..127ee175 100644 --- a/cloudstack/resource_cloudstack_network_test.go +++ b/cloudstack/resource_cloudstack_network_test.go @@ -106,7 +106,6 @@ func TestAccCloudStackNetwork_updateACL(t *testing.T) { testAccCheckCloudStackNetworkVPCAttributes(&network), ), }, - { Config: testAccCloudStackNetwork_updateACL, Check: resource.ComposeTestCheckFunc( @@ -115,6 +114,14 @@ func TestAccCloudStackNetwork_updateACL(t *testing.T) { testAccCheckCloudStackNetworkVPCAttributes(&network), ), }, + { + Config: testAccCloudStackNetwork_updateACL_cleanup, + Check: resource.ComposeTestCheckFunc( + testAccCheckCloudStackNetworkExists( + "cloudstack_network.foo", &network), + testAccCheckCloudStackNetworkVPCAttributes(&network), + ), + }, }, }) } @@ -333,6 +340,34 @@ resource "cloudstack_network_acl" "bar" { vpc_id = cloudstack_vpc.foo.id } +resource "cloudstack_network_acl" "foo" { + name = "foo" + vpc_id = cloudstack_vpc.foo.id +} + +resource "cloudstack_network" "foo" { + name = "terraform-network" + display_text = "terraform-network" + cidr = "10.1.1.0/24" + network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" + vpc_id = cloudstack_vpc.foo.id + acl_id = cloudstack_network_acl.bar.id + zone = cloudstack_vpc.foo.zone +}` + +const testAccCloudStackNetwork_updateACL_cleanup = ` +resource "cloudstack_vpc" "foo" { + name = "terraform-vpc" + cidr = "10.0.0.0/8" + vpc_offering = "Default VPC offering" + zone = "Sandbox-simulator" +} + +resource "cloudstack_network_acl" "bar" { + name = "bar" + vpc_id = cloudstack_vpc.foo.id +} + resource "cloudstack_network" "foo" { name = "terraform-network" display_text = "terraform-network" From bed0afc65f6433aa5915c2066ad46da403d3d868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Sat, 16 Mar 2024 14:43:15 +0000 Subject: [PATCH 22/46] ci: fix trigger paths --- .github/workflows/acceptance.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 4af818fe..66e64ccc 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -21,11 +21,11 @@ on: pull_request: paths: - .github/workflows/acceptance.yml - - '*.go' + - '**.go' push: paths: - .github/workflows/acceptance.yml - - '*.go' + - '**.go' concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-acceptance From ac95b5d5fc870821bf1a1d29997fe29b2ce9baca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Sat, 16 Mar 2024 15:34:56 +0000 Subject: [PATCH 23/46] ci: update terraform action to v3 --- .github/workflows/acceptance.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 66e64ccc..9587d16c 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -84,7 +84,7 @@ jobs: - name: Create extra resources run: | cmk -u $CLOUDSTACK_API_URL -k $CLOUDSTACK_API_KEY -s $CLOUDSTACK_SECRET_KEY -o json create project name=terraform displaytext=terraform - - uses: hashicorp/setup-terraform@v2 + - uses: hashicorp/setup-terraform@v3 with: terraform_version: ${{ matrix.terraform-version }} terraform_wrapper: false From 3e4f2ffde933e6aa75937b8115c2d90211723dce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Sun, 17 Mar 2024 16:15:34 +0000 Subject: [PATCH 24/46] chore(tests): add mux server test --- cloudstack/provider_test.go | 56 ++++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/cloudstack/provider_test.go b/cloudstack/provider_test.go index 0ff1ab33..0a3acf02 100644 --- a/cloudstack/provider_test.go +++ b/cloudstack/provider_test.go @@ -20,10 +20,14 @@ package cloudstack import ( + "context" "os" "testing" + "github.com/hashicorp/terraform-plugin-go/tfprotov5" + "github.com/hashicorp/terraform-plugin-mux/tf5muxserver" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) var testAccProviders map[string]*schema.Provider @@ -48,27 +52,47 @@ func TestProvider_impl(t *testing.T) { var _ *schema.Provider = New() } -func testSetValueOnResourceData(t *testing.T) { - d := schema.ResourceData{} - d.Set("id", "name") +func TestMuxServer(t *testing.T) { + resource.Test(t, resource.TestCase{ + ProtoV5ProviderFactories: map[string]func() (tfprotov5.ProviderServer, error){ + "cloudstack": func() (tfprotov5.ProviderServer, error) { + ctx := context.Background() + providers := []func() tfprotov5.ProviderServer{ + New().GRPCProvider, + } - setValueOrID(&d, "id", "name", "54711781-274e-41b2-83c0-17194d0108f7") + muxServer, err := tf5muxserver.NewMuxServer(ctx, providers...) - if d.Get("id").(string) != "name" { - t.Fatal("err: 'id' does not match 'name'") - } -} + if err != nil { + return nil, err + } -func testSetIDOnResourceData(t *testing.T) { - d := schema.ResourceData{} - d.Set("id", "54711781-274e-41b2-83c0-17194d0108f7") + return muxServer.ProviderServer(), nil + }, + }, + Steps: []resource.TestStep{ + { + Config: testMuxServerConfig_basic, + }, + }, + }) +} - setValueOrID(&d, "id", "name", "54711781-274e-41b2-83c0-17194d0108f7") +const testMuxServerConfig_basic = ` +resource "cloudstack_zone" "zone_resource"{ + name = "TestZone" + dns1 = "8.8.8.8" + internal_dns1 = "172.20.0.1" + network_type = "Advanced" + } - if d.Get("id").(string) != "54711781-274e-41b2-83c0-17194d0108f7" { - t.Fatal("err: 'id' does not match '54711781-274e-41b2-83c0-17194d0108f7'") - } -} + data "cloudstack_zone" "zone_data_source"{ + filter{ + name = "name" + value = cloudstack_zone.zone_resource.name + } + } + ` func testAccPreCheck(t *testing.T) { if v := os.Getenv("CLOUDSTACK_API_URL"); v == "" { From ccdd0420fdb2692fb8541954febd26f3b2dcabc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Sun, 17 Mar 2024 16:40:32 +0000 Subject: [PATCH 25/46] docs: update readme --- README.md | 45 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index d7baa427..3d2844d0 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,13 @@ -CloudStack Terraform Provider -============================= +# CloudStack Terraform Provider -Requirements ------------- +## Requirements -- [Terraform](https://www.terraform.io/downloads.html) 1.0.x -- [Go](https://golang.org/doc/install) 1.20+ (to build the provider plugin) +- [Terraform](https://www.terraform.io/downloads.html) 1.0.x +- [Go](https://golang.org/doc/install) 1.20+ (to build the provider plugin) See wiki: https://github.com/apache/cloudstack-terraform-provider/wiki -Installing from Github Release ------------------------------- +## Installing from Github Release User can install the CloudStack Terraform Provider using the [Github Releases](https://github.com/apache/cloudstack-terraform-provider/releases) with the installation steps below. @@ -59,9 +56,10 @@ provider "cloudstack" { Note: this can be used when users are not able to install using the Terraform registry. -Installing from Terrafrom registry ----------------------------------- +## Installing from Terrafrom registry + To install the CloudStack provider, copy and paste the below code into your Terraform configuration. Then, run terraform init. + ```sh terraform { required_providers { @@ -79,15 +77,13 @@ provider "cloudstack" { User hitting installation issue using registry can install using the local install method. -Documentation -------------- +## Documentation For more details on how to use the provider, click [here](website/) or visit https://registry.terraform.io/providers/cloudstack/cloudstack/latest/docs -Developing the Provider ---------------------------- +## Developing the Provider -If you wish to work on the provider, you'll first need [Go](http://www.golang.org) installed on your machine (version 1.16+ is *required*). You'll also need to correctly setup a [GOPATH](http://golang.org/doc/code.html#GOPATH), as well as adding `$GOPATH/bin` to your `$PATH`. +If you wish to work on the provider, you'll first need [Go](http://www.golang.org) installed on your machine (version 1.16+ is _required_). You'll also need to correctly setup a [GOPATH](http://golang.org/doc/code.html#GOPATH), as well as adding `$GOPATH/bin` to your `$PATH`. Clone repository to: `$GOPATH/src/github.com/apache/cloudstack-terraform-provider` @@ -105,6 +101,7 @@ $ cd $GOPATH/src/github.com/apache/cloudstack-terraform-provider $ make build $ ls $GOPATH/bin/terraform-provider-cloudstack ``` + Once the build is ready, you have to copy the binary into Terraform locally (version appended). On Linux and Mac this path is at ~/.terraform.d/plugins, @@ -116,8 +113,7 @@ $ mkdir -p ~/.terraform.d/plugins/localdomain/provider/cloudstack/0.4.0/linux_a $ cp $GOPATH/bin/terraform-provider-cloudstack ~/.terraform.d/plugins/localdomain/provider/cloudstack/0.4.0/linux_amd64 ``` -Testing the Provider --------------------- +## Testing the Provider In order to test the provider, you can simply run `make test`. @@ -132,13 +128,13 @@ docker pull apache/cloudstack-simulator or pull it with a particular build tag -docker pull apache/cloudstack-simulator:4.17.2.0 +docker pull apache/cloudstack-simulator:4.19.0.0 docker run --name simulator -p 8080:5050 -d apache/cloudstack-simulator or -docker run --name simulator -p 8080:5050 -d apache/cloudstack-simulator:4.17.2.0 +docker run --name simulator -p 8080:5050 -d apache/cloudstack-simulator:4.19.0.0 ``` When Docker started the container you can go to http://localhost:8080/client and login to the CloudStack UI as user `admin` with password `password`. It can take a few minutes for the container is fully ready, so you probably need to wait and refresh the page for a few minutes before the login page is shown. @@ -163,8 +159,8 @@ In order for all the tests to pass, you will need to create a new (empty) projec $ make testacc ``` -Sample Terraform configuration when testing locally ------------------------------------------------------------- +## Sample Terraform configuration when testing locally + Below is an example configuration to initialize provider and create a Virtual Machine instance ```sh @@ -180,9 +176,9 @@ terraform { provider "cloudstack" { # Configuration options - api_url = "${var.cloudstack_api_url}" - api_key = "${var.cloudstack_api_key}" - secret_key = "${var.cloudstack_secret_key}" + api_url = var.cloudstack_api_url + api_key = var.cloudstack_api_key + secret_key = var.cloudstack_secret_key } resource "cloudstack_instance" "web" { @@ -193,6 +189,7 @@ resource "cloudstack_instance" "web" { zone = "2b61ed5d-e8bd-431d-bf52-d127655dffab" } ``` + ## History This codebase relicensed under APLv2 and donated to the Apache CloudStack From 9992df1f4bdcd0d9fc30acb5bf8bce52a86e943c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 26 Apr 2024 08:22:09 +0100 Subject: [PATCH 26/46] ci: remove eol terraform versions --- .github/workflows/acceptance.yml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 9587d16c..7b586eea 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -100,17 +100,6 @@ jobs: fail-fast: false matrix: terraform-version: - - '0.12.*' - - '0.13.*' - - '0.14.*' - - '0.15.*' - - '1.0.*' - - '1.1.*' - - '1.2.*' - - '1.3.*' - - '1.4.*' - - '1.5.*' - - '1.6.*' - '1.7.*' cloudstack-version: - 4.17.2.0 From 348c1f3ce17461e849491258c55ea6bd2b55ee6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 26 Apr 2024 08:23:43 +0100 Subject: [PATCH 27/46] ci: update cloustack versions --- .github/workflows/acceptance.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 7b586eea..ae5111a0 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -102,6 +102,5 @@ jobs: terraform-version: - '1.7.*' cloudstack-version: - - 4.17.2.0 - - 4.18.1.0 - - 4.19.0.0 + - 4.18.2.0 + - 4.19.0.1 From f247d099cf5246cb15af06d6a500a9260946d191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 26 Apr 2024 08:37:41 +0100 Subject: [PATCH 28/46] ci: add terraform 1.8 --- .github/workflows/acceptance.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index ae5111a0..100961f2 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -101,6 +101,7 @@ jobs: matrix: terraform-version: - '1.7.*' + - '1.8.*' cloudstack-version: - 4.18.2.0 - 4.19.0.1 From 5a612ad667738df3f25b2909b5b4c9f677d0dac0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 26 Apr 2024 18:39:45 +0100 Subject: [PATCH 29/46] ci: add reusable cloudstack-setup action --- .github/workflows/acceptance.yml | 74 +++++++---------- .github/workflows/setup-cloudstack/action.yml | 83 +++++++++++++++++++ 2 files changed, 111 insertions(+), 46 deletions(-) create mode 100644 .github/workflows/setup-cloudstack/action.yml diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 100961f2..80ab0e29 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -34,61 +34,45 @@ concurrency: permissions: contents: read +env: + CLOUDSTACK_API_URL: http://localhost:8080/client/api + CLOUDSTACK_VERSIONS: "['4.18.2.0', '4.19.0.1']" + jobs: - acceptance: - name: Acceptance Tests (Terraform ${{ matrix.terraform-version }}, Cloudstack ${{ matrix.cloudstack-version }}) - runs-on: ubuntu-22.04 - env: - CLOUDSTACK_API_URL: http://localhost:8080/client/api + prepare-matrix: + runs-on: ubuntu-latest + outputs: + cloudstack-versions: ${{ steps.set-versions.outputs.cloudstack-versions }} + steps: + - name: Set versions + id: set-versions + run: | + echo "cloudstack-versions=${{ env.CLOUDSTACK_VERSIONS }}" >> $GITHUB_OUTPUT + + acceptance-terraform: + name: Acceptance Tests - Terraform ${{ matrix.terraform-version }}, Cloudstack ${{ matrix.cloudstack-version }} + needs: [prepare-matrix] + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Go uses: actions/setup-go@v3 with: go-version-file: 'go.mod' - - name: Wait Cloudstack to be ready - run: | - echo "Starting Cloudstack health check" - T=0 - until [ $T -gt 20 ] || curl -sfL http://localhost:8080 --output /dev/null - do - echo "Waiting for Cloudstack to be ready..." - ((T+=1)) - sleep 30 - done - - name: Setting up Cloudstack - run: | - docker exec $(docker container ls --format=json -l | jq -r .ID) python /root/tools/marvin/marvin/deployDataCenter.py -i /root/setup/dev/advanced.cfg - curl -sf --location "${CLOUDSTACK_API_URL}" \ - --header 'Content-Type: application/x-www-form-urlencoded' \ - --data-urlencode 'command=login' \ - --data-urlencode 'username=admin' \ - --data-urlencode 'password=password' \ - --data-urlencode 'response=json' \ - --data-urlencode 'domain=/' -j -c cookies.txt --output /dev/null - - CLOUDSTACK_USER_ID=$(curl -fs "${CLOUDSTACK_API_URL}?command=listUsers&response=json" -b cookies.txt | jq -r '.listusersresponse.user[0].id') - CLOUDSTACK_API_KEY=$(curl -s "${CLOUDSTACK_API_URL}?command=getUserKeys&id=${CLOUDSTACK_USER_ID}&response=json" -b cookies.txt | jq -r '.getuserkeysresponse.userkeys.apikey') - CLOUDSTACK_SECRET_KEY=$(curl -fs "${CLOUDSTACK_API_URL}?command=getUserKeys&id=${CLOUDSTACK_USER_ID}&response=json" -b cookies.txt | jq -r '.getuserkeysresponse.userkeys.secretkey') - - echo "::add-mask::$CLOUDSTACK_API_KEY" - echo "::add-mask::$CLOUDSTACK_SECRET_KEY" - - echo "CLOUDSTACK_API_KEY=$CLOUDSTACK_API_KEY" >> $GITHUB_ENV - echo "CLOUDSTACK_SECRET_KEY=$CLOUDSTACK_SECRET_KEY" >> $GITHUB_ENV - echo "CLOUDSTACK_TEMPLATE_URL=http://dl.openvm.eu/cloudstack/macchinina/x86_64/macchinina-xen.vhd.bz2" >> $GITHUB_ENV - - name: Install CMK - run: | - curl -sfL https://github.com/apache/cloudstack-cloudmonkey/releases/download/6.3.0/cmk.linux.x86-64 -o /usr/local/bin/cmk - chmod +x /usr/local/bin/cmk - - name: Create extra resources - run: | - cmk -u $CLOUDSTACK_API_URL -k $CLOUDSTACK_API_KEY -s $CLOUDSTACK_SECRET_KEY -o json create project name=terraform displaytext=terraform + - name: Setup Cloudstack v${{ matrix.cloudstack-version }} + uses: ./.github/workflows/setup-cloudstack + id: setup-cloudstack + with: + cloudstack-version: ${{ matrix.cloudstack-version }} - uses: hashicorp/setup-terraform@v3 with: terraform_version: ${{ matrix.terraform-version }} terraform_wrapper: false - name: Run acceptance test + env: + CLOUDSTACK_USER_ID: ${{ steps.setup-cloudstack.outputs.CLOUDSTACK_USER_ID }} + CLOUDSTACK_API_KEY: ${{ steps.setup-cloudstack.outputs.CLOUDSTACK_API_KEY }} + CLOUDSTACK_SECRET_KEY: ${{ steps.setup-cloudstack.outputs.CLOUDSTACK_SECRET_KEY }} run: | make testacc services: @@ -102,6 +86,4 @@ jobs: terraform-version: - '1.7.*' - '1.8.*' - cloudstack-version: - - 4.18.2.0 - - 4.19.0.1 + cloudstack-version: ${{ fromJson(needs.prepare-matrix.outputs.cloudstack-versions) }} diff --git a/.github/workflows/setup-cloudstack/action.yml b/.github/workflows/setup-cloudstack/action.yml new file mode 100644 index 00000000..dcbdbbe4 --- /dev/null +++ b/.github/workflows/setup-cloudstack/action.yml @@ -0,0 +1,83 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: Setup Cloudstack + +inputs: + cloudstack-version: + description: 'Cloudstack version' + required: true +outputs: + CLOUDSTACK_USER_ID: + description: 'Cloudstack user id' + value: ${{ steps.setup-cloudstack.outputs.user_id }} + CLOUDSTACK_API_KEY: + description: 'Cloudstack api key' + value: ${{ steps.setup-cloudstack.outputs.api_key }} + CLOUDSTACK_SECRET_KEY: + description: 'Cloudstack secret key' + value: ${{ steps.setup-cloudstack.outputs.secret_key }} + CLOUDSTACK_API_URL: + description: 'Cloudstack API URL' + value: http://localhost:8080/client/api + +runs: + using: composite + steps: + - name: Wait Cloudstack to be ready + shell: bash + run: | + echo "Starting Cloudstack health check" + T=0 + until [ $T -gt 20 ] || curl -sfL http://localhost:8080 --output /dev/null + do + echo "Waiting for Cloudstack to be ready..." + ((T+=1)) + sleep 30 + done + - name: Setting up Cloudstack + id: setup-cloudstack + shell: bash + run: | + docker exec $(docker container ls --format=json -l | jq -r .ID) python /root/tools/marvin/marvin/deployDataCenter.py -i /root/setup/dev/advanced.cfg + curl -sf --location "${CLOUDSTACK_API_URL}" \ + --header 'Content-Type: application/x-www-form-urlencoded' \ + --data-urlencode 'command=login' \ + --data-urlencode 'username=admin' \ + --data-urlencode 'password=password' \ + --data-urlencode 'response=json' \ + --data-urlencode 'domain=/' -j -c cookies.txt --output /dev/null + + CLOUDSTACK_USER_ID=$(curl -fs "${CLOUDSTACK_API_URL}?command=listUsers&response=json" -b cookies.txt | jq -r '.listusersresponse.user[0].id') + CLOUDSTACK_API_KEY=$(curl -s "${CLOUDSTACK_API_URL}?command=getUserKeys&id=${CLOUDSTACK_USER_ID}&response=json" -b cookies.txt | jq -r '.getuserkeysresponse.userkeys.apikey') + CLOUDSTACK_SECRET_KEY=$(curl -fs "${CLOUDSTACK_API_URL}?command=getUserKeys&id=${CLOUDSTACK_USER_ID}&response=json" -b cookies.txt | jq -r '.getuserkeysresponse.userkeys.secretkey') + + echo "::add-mask::$CLOUDSTACK_API_KEY" + echo "::add-mask::$CLOUDSTACK_SECRET_KEY" + + echo "user_id=$CLOUDSTACK_USER_ID" >> $GITHUB_OUTPUT + echo "api_key=$CLOUDSTACK_API_KEY" >> $GITHUB_OUTPUT + echo "secret_key=$CLOUDSTACK_SECRET_KEY" >> $GITHUB_OUTPUT + - name: Install CMK + shell: bash + run: | + curl -sfL https://github.com/apache/cloudstack-cloudmonkey/releases/download/6.3.0/cmk.linux.x86-64 -o /usr/local/bin/cmk + chmod +x /usr/local/bin/cmk + - name: Create extra resources + shell: bash + run: | + cmk -u $CLOUDSTACK_API_URL -k $CLOUDSTACK_API_KEY -s $CLOUDSTACK_SECRET_KEY -o json create project name=terraform displaytext=terraform From 31903b5ff007a06c3005df5c89188244716a22f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Sat, 27 Apr 2024 09:38:29 +0100 Subject: [PATCH 30/46] ci: add opentofu acceptance test --- .github/workflows/acceptance.yml | 41 ++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 80ab0e29..7fb84538 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -50,7 +50,7 @@ jobs: echo "cloudstack-versions=${{ env.CLOUDSTACK_VERSIONS }}" >> $GITHUB_OUTPUT acceptance-terraform: - name: Acceptance Tests - Terraform ${{ matrix.terraform-version }}, Cloudstack ${{ matrix.cloudstack-version }} + name: Terraform ${{ matrix.terraform-version }} with Cloudstack ${{ matrix.cloudstack-version }} needs: [prepare-matrix] runs-on: ubuntu-latest steps: @@ -59,7 +59,7 @@ jobs: uses: actions/setup-go@v3 with: go-version-file: 'go.mod' - - name: Setup Cloudstack v${{ matrix.cloudstack-version }} + - name: Configure Cloudstack v${{ matrix.cloudstack-version }} uses: ./.github/workflows/setup-cloudstack id: setup-cloudstack with: @@ -87,3 +87,40 @@ jobs: - '1.7.*' - '1.8.*' cloudstack-version: ${{ fromJson(needs.prepare-matrix.outputs.cloudstack-versions) }} + + acceptance-opentofu: + name: OpenTofu ${{ matrix.opentofu-version }} with Cloudstack ${{ matrix.cloudstack-version }} + needs: [prepare-matrix] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version-file: 'go.mod' + - name: Configure Cloudstack v${{ matrix.cloudstack-version }} + uses: ./.github/workflows/setup-cloudstack + id: setup-cloudstack + with: + cloudstack-version: ${{ matrix.cloudstack-version }} + - uses: opentofu/setup-opentofu@v1 + with: + tofu_version: ${{ matrix.opentofu-version }} + - name: Run acceptance test + env: + CLOUDSTACK_USER_ID: ${{ steps.setup-cloudstack.outputs.CLOUDSTACK_USER_ID }} + CLOUDSTACK_API_KEY: ${{ steps.setup-cloudstack.outputs.CLOUDSTACK_API_KEY }} + CLOUDSTACK_SECRET_KEY: ${{ steps.setup-cloudstack.outputs.CLOUDSTACK_SECRET_KEY }} + run: | + make testacc + services: + cloudstack-simulator: + image: apache/cloudstack-simulator:${{ matrix.cloudstack-version }} + ports: + - 8080:5050 + strategy: + fail-fast: false + matrix: + opentofu-version: + - '1.6.*' + cloudstack-version: ${{ fromJson(needs.prepare-matrix.outputs.cloudstack-versions) }} From 4526a7bd93025b7764d4b3b54a736f91dd03b584 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Sat, 27 Apr 2024 10:18:11 +0100 Subject: [PATCH 31/46] ci: update actions --- .github/workflows/acceptance.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 7fb84538..003eeda2 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -54,9 +54,9 @@ jobs: needs: [prepare-matrix] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v5 with: go-version-file: 'go.mod' - name: Configure Cloudstack v${{ matrix.cloudstack-version }} @@ -93,9 +93,9 @@ jobs: needs: [prepare-matrix] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v5 with: go-version-file: 'go.mod' - name: Configure Cloudstack v${{ matrix.cloudstack-version }} From a2db5e1422b765c3c18f6a3706ee511127e2ab5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Sat, 27 Apr 2024 10:22:34 +0100 Subject: [PATCH 32/46] ci: add final job --- .github/workflows/acceptance.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 003eeda2..c3a790c8 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -124,3 +124,12 @@ jobs: opentofu-version: - '1.6.*' cloudstack-version: ${{ fromJson(needs.prepare-matrix.outputs.cloudstack-versions) }} + + all-jobs-passed: # Will succeed if it is skipped + runs-on: ubuntu-latest + needs: [acceptance-terraform, acceptance-opentofu] + # Only run if any of the previous jobs failed + if: ${{ failure() }} + steps: + - name: Previous jobs fails + run: exit 1 From 25d50d7537e42ce868a246dc62acec44b7c59a74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Sat, 27 Apr 2024 10:22:53 +0100 Subject: [PATCH 33/46] ci: add final job --- .github/workflows/acceptance.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index c3a790c8..14555dba 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -131,5 +131,5 @@ jobs: # Only run if any of the previous jobs failed if: ${{ failure() }} steps: - - name: Previous jobs fails + - name: Previous jobs failed run: exit 1 From 2033b3fa8cfedf27795b38112c82cdb1d5d9479a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 14 Jun 2024 17:46:06 +0100 Subject: [PATCH 34/46] fix: tests indentation --- .../resource_cloudstack_attach_volume_test.go | 2 +- cloudstack/resource_cloudstack_disk_test.go | 2 +- .../resource_cloudstack_egress_firewall_test.go | 4 ++-- cloudstack/resource_cloudstack_firewall_test.go | 8 ++++---- cloudstack/resource_cloudstack_instance_test.go | 14 +++++++------- cloudstack/resource_cloudstack_ipaddress_test.go | 4 ++-- .../resource_cloudstack_loadbalancer_rule_test.go | 12 ++++++------ cloudstack/resource_cloudstack_network_test.go | 12 ++++++------ cloudstack/resource_cloudstack_nic_test.go | 8 ++++---- .../resource_cloudstack_port_forward_test.go | 8 ++++---- ...resource_cloudstack_secondary_ipaddress_test.go | 8 ++++---- cloudstack/resource_cloudstack_static_nat_test.go | 6 +++--- 12 files changed, 44 insertions(+), 44 deletions(-) diff --git a/cloudstack/resource_cloudstack_attach_volume_test.go b/cloudstack/resource_cloudstack_attach_volume_test.go index c9af51cc..dcd3a780 100644 --- a/cloudstack/resource_cloudstack_attach_volume_test.go +++ b/cloudstack/resource_cloudstack_attach_volume_test.go @@ -43,7 +43,7 @@ func TestAccCloudstackAttachVolume_basic(t *testing.T) { const testAccCloudstackAttachVolume_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" diff --git a/cloudstack/resource_cloudstack_disk_test.go b/cloudstack/resource_cloudstack_disk_test.go index d94b6273..76031a62 100644 --- a/cloudstack/resource_cloudstack_disk_test.go +++ b/cloudstack/resource_cloudstack_disk_test.go @@ -228,7 +228,7 @@ resource "cloudstack_disk" "foo" { const testAccCloudStackDisk_deviceID = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" diff --git a/cloudstack/resource_cloudstack_egress_firewall_test.go b/cloudstack/resource_cloudstack_egress_firewall_test.go index 8974ee2d..28b664f7 100644 --- a/cloudstack/resource_cloudstack_egress_firewall_test.go +++ b/cloudstack/resource_cloudstack_egress_firewall_test.go @@ -162,7 +162,7 @@ func testAccCheckCloudStackEgressFirewallDestroy(s *terraform.State) error { const testAccCloudStackEgressFirewall_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -181,7 +181,7 @@ resource "cloudstack_egress_firewall" "foo" { const testAccCloudStackEgressFirewall_update = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" diff --git a/cloudstack/resource_cloudstack_firewall_test.go b/cloudstack/resource_cloudstack_firewall_test.go index dadb1047..f43e3a0d 100644 --- a/cloudstack/resource_cloudstack_firewall_test.go +++ b/cloudstack/resource_cloudstack_firewall_test.go @@ -188,10 +188,10 @@ func testAccCheckCloudStackFirewallDestroy(s *terraform.State) error { const testAccCloudStackFirewall_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" - source_nat_ip = true + source_nat_ip = true zone = "Sandbox-simulator" } @@ -214,10 +214,10 @@ resource "cloudstack_firewall" "foo" { const testAccCloudStackFirewall_update = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" - source_nat_ip = true + source_nat_ip = true zone = "Sandbox-simulator" } diff --git a/cloudstack/resource_cloudstack_instance_test.go b/cloudstack/resource_cloudstack_instance_test.go index ccfa83f6..38307dc3 100644 --- a/cloudstack/resource_cloudstack_instance_test.go +++ b/cloudstack/resource_cloudstack_instance_test.go @@ -312,7 +312,7 @@ func testAccCheckCloudStackInstanceDestroy(s *terraform.State) error { const testAccCloudStackInstance_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -335,7 +335,7 @@ resource "cloudstack_instance" "foobar" { const testAccCloudStackInstance_stopped = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -355,7 +355,7 @@ resource "cloudstack_instance" "foobar" { const testAccCloudStackInstance_renameAndResize = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -375,7 +375,7 @@ resource "cloudstack_instance" "foobar" { const testAccCloudStackInstance_fixedIP = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -395,7 +395,7 @@ resource "cloudstack_instance" "foobar" { const testAccCloudStackInstance_keyPair = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -412,14 +412,14 @@ resource "cloudstack_instance" "foobar" { network_id = cloudstack_network.foo.id template = "CentOS 5.6 (64-bit) no GUI (Simulator)" zone = "Sandbox-simulator" - keypair = cloudstack_ssh_keypair.foo.name + keypair = cloudstack_ssh_keypair.foo.name expunge = true }` const testAccCloudStackInstance_project = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" project = "terraform" diff --git a/cloudstack/resource_cloudstack_ipaddress_test.go b/cloudstack/resource_cloudstack_ipaddress_test.go index 464ee72c..82b8ffce 100644 --- a/cloudstack/resource_cloudstack_ipaddress_test.go +++ b/cloudstack/resource_cloudstack_ipaddress_test.go @@ -137,7 +137,7 @@ func testAccCheckCloudStackIPAddressDestroy(s *terraform.State) error { const testAccCloudStackIPAddress_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true @@ -174,7 +174,7 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true diff --git a/cloudstack/resource_cloudstack_loadbalancer_rule_test.go b/cloudstack/resource_cloudstack_loadbalancer_rule_test.go index 3519da19..276c7569 100644 --- a/cloudstack/resource_cloudstack_loadbalancer_rule_test.go +++ b/cloudstack/resource_cloudstack_loadbalancer_rule_test.go @@ -262,7 +262,7 @@ func testAccCheckCloudStackLoadBalancerRuleDestroy(s *terraform.State) error { const testAccCloudStackLoadBalancerRule_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true @@ -295,7 +295,7 @@ resource "cloudstack_loadbalancer_rule" "foo" { const testAccCloudStackLoadBalancerRule_update = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true @@ -328,7 +328,7 @@ resource "cloudstack_loadbalancer_rule" "foo" { const testAccCloudStackLoadBalancerRule_forcenew = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" source_nat_ip = true @@ -355,7 +355,7 @@ resource "cloudstack_loadbalancer_rule" "foo" { algorithm = "leastconn" public_port = 443 private_port = 443 - protocol = "tcp-proxy" + protocol = "tcp-proxy" member_ids = [cloudstack_instance.foobar1.id] }` @@ -369,7 +369,7 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" vpc_id = cloudstack_vpc.foo.id @@ -411,7 +411,7 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" vpc_id = cloudstack_vpc.foo.id diff --git a/cloudstack/resource_cloudstack_network_test.go b/cloudstack/resource_cloudstack_network_test.go index 127ee175..0b650ace 100644 --- a/cloudstack/resource_cloudstack_network_test.go +++ b/cloudstack/resource_cloudstack_network_test.go @@ -268,7 +268,7 @@ func testAccCheckCloudStackNetworkDestroy(s *terraform.State) error { const testAccCloudStackNetwork_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -280,7 +280,7 @@ resource "cloudstack_network" "foo" { const testAccCloudStackNetwork_project = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" project = "terraform" @@ -297,7 +297,7 @@ resource "cloudstack_vpc" "foo" { resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" vpc_id = cloudstack_vpc.foo.id @@ -319,7 +319,7 @@ resource "cloudstack_network_acl" "foo" { resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" vpc_id = cloudstack_vpc.foo.id @@ -347,7 +347,7 @@ resource "cloudstack_network_acl" "foo" { resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" vpc_id = cloudstack_vpc.foo.id @@ -370,7 +370,7 @@ resource "cloudstack_network_acl" "bar" { resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingForVpcNetworks" vpc_id = cloudstack_vpc.foo.id diff --git a/cloudstack/resource_cloudstack_nic_test.go b/cloudstack/resource_cloudstack_nic_test.go index d189cf79..7b666752 100644 --- a/cloudstack/resource_cloudstack_nic_test.go +++ b/cloudstack/resource_cloudstack_nic_test.go @@ -171,7 +171,7 @@ func testAccCheckCloudStackNICDestroy(s *terraform.State) error { const testAccCloudStackNIC_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -179,7 +179,7 @@ resource "cloudstack_network" "foo" { resource "cloudstack_network" "bar" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.2.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -203,7 +203,7 @@ resource "cloudstack_nic" "foo" { const testAccCloudStackNIC_ipaddress = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -211,7 +211,7 @@ resource "cloudstack_network" "foo" { resource "cloudstack_network" "bar" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.2.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" diff --git a/cloudstack/resource_cloudstack_port_forward_test.go b/cloudstack/resource_cloudstack_port_forward_test.go index 23c4e98d..3f9e5e37 100644 --- a/cloudstack/resource_cloudstack_port_forward_test.go +++ b/cloudstack/resource_cloudstack_port_forward_test.go @@ -136,10 +136,10 @@ func testAccCheckCloudStackPortForwardDestroy(s *terraform.State) error { const testAccCloudStackPortForward_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" - source_nat_ip = true + source_nat_ip = true zone = "Sandbox-simulator" } @@ -167,10 +167,10 @@ resource "cloudstack_port_forward" "foo" { const testAccCloudStackPortForward_update = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" - source_nat_ip = true + source_nat_ip = true zone = "Sandbox-simulator" } diff --git a/cloudstack/resource_cloudstack_secondary_ipaddress_test.go b/cloudstack/resource_cloudstack_secondary_ipaddress_test.go index 28ab1242..a991e004 100644 --- a/cloudstack/resource_cloudstack_secondary_ipaddress_test.go +++ b/cloudstack/resource_cloudstack_secondary_ipaddress_test.go @@ -221,7 +221,7 @@ func testAccCheckCloudStackSecondaryIPAddressDestroy(s *terraform.State) error { const testAccCloudStackSecondaryIPAddress_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" @@ -237,13 +237,13 @@ resource "cloudstack_instance" "foobar" { } resource "cloudstack_secondary_ipaddress" "foo" { - virtual_machine_id = cloudstack_instance.foobar.id -} ` + virtual_machine_id = cloudstack_instance.foobar.id +}` const testAccCloudStackSecondaryIPAddress_fixedIP = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" zone = "Sandbox-simulator" diff --git a/cloudstack/resource_cloudstack_static_nat_test.go b/cloudstack/resource_cloudstack_static_nat_test.go index aa6e9e8d..eebebcb0 100644 --- a/cloudstack/resource_cloudstack_static_nat_test.go +++ b/cloudstack/resource_cloudstack_static_nat_test.go @@ -117,10 +117,10 @@ func testAccCheckCloudStackStaticNATDestroy(s *terraform.State) error { const testAccCloudStackStaticNAT_basic = ` resource "cloudstack_network" "foo" { name = "terraform-network" - display_text = "terraform-network" + display_text = "terraform-network" cidr = "10.1.1.0/24" network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" - source_nat_ip = true + source_nat_ip = true zone = "Sandbox-simulator" } @@ -139,6 +139,6 @@ resource "cloudstack_ipaddress" "foo" { } resource "cloudstack_static_nat" "foo" { - ip_address_id = cloudstack_ipaddress.foo.id + ip_address_id = cloudstack_ipaddress.foo.id virtual_machine_id = cloudstack_instance.foobar.id }` From 8e2b79f5c59b6f9b3e861493cb7cd163f6333f58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Matavelli?= Date: Fri, 14 Jun 2024 17:47:17 +0100 Subject: [PATCH 35/46] chore: sets displaytext as name when null --- cloudstack/resource_cloudstack_network.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cloudstack/resource_cloudstack_network.go b/cloudstack/resource_cloudstack_network.go index 9a4f829f..e7329f82 100644 --- a/cloudstack/resource_cloudstack_network.go +++ b/cloudstack/resource_cloudstack_network.go @@ -180,6 +180,8 @@ func resourceCloudStackNetworkCreate(d *schema.ResourceData, meta interface{}) e if displaytext, ok := d.GetOk("display_text"); ok { p.SetDisplaytext(displaytext.(string)) + } else { + p.SetDisplaytext(name) } // Get the network offering to check if it supports specifying IP ranges From 5cc00a51824bcffe91c4b399a02bea5bdaab1340 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Tue, 2 Jul 2024 13:24:42 +0530 Subject: [PATCH 36/46] Update README.md --- README.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/README.md b/README.md index 3d2844d0..32dbae1c 100644 --- a/README.md +++ b/README.md @@ -190,6 +190,54 @@ resource "cloudstack_instance" "web" { } ``` +## Releasing Terraform Provider + +The CloudStack Terraform Provider release process requires `goreleaser` to be performed +by a committer or a PMC member of the project: https://goreleaser.com/install + +Check and ensure TF provider passes builds, GA and run this for local checks: +``` +goreleaser release --snapshot --clean +``` + +Next, create a personalised Github token:
 https://github.com/settings/tokens/new?scopes=repo,write:packages + +``` +export GITHUB_TOKEN="YOUR_GH_TOKEN" +``` + +Note: Due to how the Terraform registry works, it require the repo to be named in a certain way. +For this reason, the builds are published via https://github.com/cloudstack/terraform-provider-cloudstack/releases + +To do this, add the following remote for publishing builds: + +``` +git remote add cloudstack git@github.com:cloudstack/terraform-provider-cloudstack.git +``` + +Finally tag the release, for example and push to Github: + +``` +git tag -a v0.5.0-pre -m "v0.5.0-pre Alpha Release for testing purposes" +git push cloudstack v0.5.0-pre +``` + +Run goreleaser to release them: +``` +goreleaser release --clean +``` + +Or, just release using: +``` +goreleaser release +``` + +For testing or to push on other repos, you need to fix repo path in the +`.goreleaser.yml` and run: +``` +goreleaser release --clean --skip-validate +``` + ## History This codebase relicensed under APLv2 and donated to the Apache CloudStack From 849dd54d754afc1341127fda02fed03ad831ca2c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 13:37:26 +0530 Subject: [PATCH 37/46] Bump github.com/apache/cloudstack-go/v2 from 2.13.2 to 2.16.1 (#119) Bumps [github.com/apache/cloudstack-go/v2](https://github.com/apache/cloudstack-go) from 2.13.2 to 2.16.1. - [Release notes](https://github.com/apache/cloudstack-go/releases) - [Commits](https://github.com/apache/cloudstack-go/compare/v2.13.2...v2.16.1) --- updated-dependencies: - dependency-name: github.com/apache/cloudstack-go/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 01b48a33..7a552443 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,7 @@ module github.com/terraform-providers/terraform-provider-cloudstack require ( - github.com/apache/cloudstack-go/v2 v2.16.0 + github.com/apache/cloudstack-go/v2 v2.16.1 github.com/go-ini/ini v1.67.0 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/terraform-plugin-go v0.22.0 @@ -53,7 +53,7 @@ require ( github.com/zclconf/go-cty v1.14.3 // indirect golang.org/x/crypto v0.21.0 // indirect golang.org/x/mod v0.15.0 // indirect - golang.org/x/net v0.21.0 // indirect + golang.org/x/net v0.23.0 // indirect golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.13.0 // indirect diff --git a/go.sum b/go.sum index 05e3e588..010e7b87 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/ProtonMail/go-crypto v1.1.0-alpha.0 h1:nHGfwXmFvJrSR9xu8qL7BkO4DqTHXE github.com/ProtonMail/go-crypto v1.1.0-alpha.0/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= 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/apache/cloudstack-go/v2 v2.16.0 h1:qK4/mtgmhzFU99WHAHM/1FhAM3cWV8gplOAGODwHyPM= -github.com/apache/cloudstack-go/v2 v2.16.0/go.mod h1:EPMwvwKMvmIFajmDCqSR747l/439DuKvKY8jbFOE/qE= +github.com/apache/cloudstack-go/v2 v2.16.1 h1:2wOE4RKEjWPRZNO7ZNnZYmR3JJ+JJPQwhoc7W1fkiK4= +github.com/apache/cloudstack-go/v2 v2.16.1/go.mod h1:cZsgFe+VmrgLBm7QjeHTJBXYe8E5+yGYkdfwGb+Pu9c= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= @@ -175,8 +175,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/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-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From b16c94fbe748e30602a82915e192996ccf988c58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Matavelli?= Date: Tue, 2 Jul 2024 05:08:52 -0300 Subject: [PATCH 38/46] chore: protect main branch with mandatory checks (#123) --- .asf.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.asf.yaml b/.asf.yaml index 3c7ed7bc..b8ff7083 100644 --- a/.asf.yaml +++ b/.asf.yaml @@ -10,6 +10,13 @@ github: issues: true projects: true + protected_branches: + main: + required_status_checks: + contexts: + - build + - all-jobs-passed + collaborators: - kiranchavala - vishesh92 From 37ebe496fcc292cb12b4ff4d05b7ddc0e9a87e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Matavelli?= Date: Tue, 2 Jul 2024 06:02:51 -0300 Subject: [PATCH 39/46] ci: runs acc test on every change (#127) --- .github/workflows/acceptance.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 14555dba..d1a8eb16 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -19,13 +19,7 @@ name: Acceptance Test on: pull_request: - paths: - - .github/workflows/acceptance.yml - - '**.go' push: - paths: - - .github/workflows/acceptance.yml - - '**.go' concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-acceptance From bf3bcec771a7ef569a86be7af19b204e46a14561 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Tue, 2 Jul 2024 15:54:21 +0530 Subject: [PATCH 40/46] Update .asf.yaml (#128) Grant triaging role to @fabiomatavelli @CodeBleu so they can run tests themselves and use the Github repo better --- .asf.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.asf.yaml b/.asf.yaml index b8ff7083..c0623c86 100644 --- a/.asf.yaml +++ b/.asf.yaml @@ -20,3 +20,5 @@ github: collaborators: - kiranchavala - vishesh92 + - fabiomatavelli + - CodeBleu From e6bcc7489e84db74e30117146b6dec8f76461eeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Matavelli?= Date: Thu, 25 Jul 2024 01:36:50 -0300 Subject: [PATCH 41/46] feat: migrate to terraform plugin framework (#113) --- cloudstack/provider.go | 4 +- cloudstack/provider_test.go | 82 ++++++++++++++----- cloudstack/provider_v6.go | 155 ++++++++++++++++++++++++++++++++++++ cloudstack/resources.go | 23 ++++++ go.mod | 8 +- go.sum | 16 ++-- main.go | 32 +++++--- 7 files changed, 280 insertions(+), 40 deletions(-) create mode 100644 cloudstack/provider_v6.go diff --git a/cloudstack/provider.go b/cloudstack/provider.go index 6d7b7b53..5aad7c55 100644 --- a/cloudstack/provider.go +++ b/cloudstack/provider.go @@ -26,7 +26,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func New() *schema.Provider { +func Provider() *schema.Provider { return &schema.Provider{ Schema: map[string]*schema.Schema{ "api_url": { @@ -41,6 +41,7 @@ func New() *schema.Provider { Optional: true, DefaultFunc: schema.EnvDefaultFunc("CLOUDSTACK_API_KEY", nil), ConflictsWith: []string{"config", "profile"}, + Sensitive: true, }, "secret_key": { @@ -48,6 +49,7 @@ func New() *schema.Provider { Optional: true, DefaultFunc: schema.EnvDefaultFunc("CLOUDSTACK_SECRET_KEY", nil), ConflictsWith: []string{"config", "profile"}, + Sensitive: true, }, "config": { diff --git a/cloudstack/provider_test.go b/cloudstack/provider_test.go index 0a3acf02..fb868e4b 100644 --- a/cloudstack/provider_test.go +++ b/cloudstack/provider_test.go @@ -22,10 +22,13 @@ package cloudstack import ( "context" "os" + "regexp" "testing" - "github.com/hashicorp/terraform-plugin-go/tfprotov5" - "github.com/hashicorp/terraform-plugin-mux/tf5muxserver" + "github.com/hashicorp/terraform-plugin-framework/providerserver" + "github.com/hashicorp/terraform-plugin-go/tfprotov6" + "github.com/hashicorp/terraform-plugin-mux/tf5to6server" + "github.com/hashicorp/terraform-plugin-mux/tf6muxserver" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) @@ -33,44 +36,65 @@ import ( var testAccProviders map[string]*schema.Provider var testAccProvider *schema.Provider +var testAccMuxProvider map[string]func() (tfprotov6.ProviderServer, error) + var cloudStackTemplateURL = os.Getenv("CLOUDSTACK_TEMPLATE_URL") func init() { - testAccProvider = New() + testAccProvider = Provider() testAccProviders = map[string]*schema.Provider{ "cloudstack": testAccProvider, } + + testAccMuxProvider = map[string]func() (tfprotov6.ProviderServer, error){ + "cloudstack": func() (tfprotov6.ProviderServer, error) { + ctx := context.Background() + + upgradedSdkServer, err := tf5to6server.UpgradeServer( + ctx, + Provider().GRPCProvider, + ) + + if err != nil { + return nil, err + } + + providers := []func() tfprotov6.ProviderServer{ + providerserver.NewProtocol6(New()), + func() tfprotov6.ProviderServer { + return upgradedSdkServer + }, + } + + muxServer, err := tf6muxserver.NewMuxServer(ctx, providers...) + + if err != nil { + return nil, err + } + + return muxServer.ProviderServer(), nil + }, + } } func TestProvider(t *testing.T) { - if err := New().InternalValidate(); err != nil { + if err := Provider().InternalValidate(); err != nil { t.Fatalf("err: %s", err) } } func TestProvider_impl(t *testing.T) { - var _ *schema.Provider = New() + var _ *schema.Provider = Provider() } func TestMuxServer(t *testing.T) { resource.Test(t, resource.TestCase{ - ProtoV5ProviderFactories: map[string]func() (tfprotov5.ProviderServer, error){ - "cloudstack": func() (tfprotov5.ProviderServer, error) { - ctx := context.Background() - providers := []func() tfprotov5.ProviderServer{ - New().GRPCProvider, - } - - muxServer, err := tf5muxserver.NewMuxServer(ctx, providers...) - - if err != nil { - return nil, err - } - - return muxServer.ProviderServer(), nil - }, - }, + ProtoV6ProviderFactories: testAccMuxProvider, Steps: []resource.TestStep{ + { + Config: testMuxServerConfig_conflict, + ExpectError: regexp.MustCompile("Invalid Attribute Combination"), + }, { Config: testMuxServerConfig_basic, }, @@ -94,6 +118,22 @@ resource "cloudstack_zone" "zone_resource"{ } ` +const testMuxServerConfig_conflict = ` +provider "cloudstack" { + api_url = "http://localhost:8080/client/api" + api_key = "xxxxx" + secret_key = "xxxxx" + config = "cloudstack.ini" +} + +data "cloudstack_zone" "zone_data_source"{ + filter{ + name = "name" + value = "test" + } +} + ` + func testAccPreCheck(t *testing.T) { if v := os.Getenv("CLOUDSTACK_API_URL"); v == "" { t.Fatal("CLOUDSTACK_API_URL must be set for acceptance tests") diff --git a/cloudstack/provider_v6.go b/cloudstack/provider_v6.go new file mode 100644 index 00000000..339e4b37 --- /dev/null +++ b/cloudstack/provider_v6.go @@ -0,0 +1,155 @@ +package cloudstack + +import ( + "context" + "fmt" + "os" + "strconv" + + "github.com/hashicorp/terraform-plugin-framework-validators/providervalidator" + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/provider" + "github.com/hashicorp/terraform-plugin-framework/provider/schema" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +type CloudstackProvider struct{} + +type CloudstackProviderModel struct { + ApiUrl types.String `tfsdk:"api_url"` + ApiKey types.String `tfsdk:"api_key"` + SecretKey types.String `tfsdk:"secret_key"` + Config types.String `tfsdk:"config"` + Profile types.String `tfsdk:"profile"` + HttpGetOnly types.Bool `tfsdk:"http_get_only"` + Timeout types.Int64 `tfsdk:"timeout"` +} + +var _ provider.Provider = (*CloudstackProvider)(nil) + +func New() provider.Provider { + return &CloudstackProvider{} +} + +func (p *CloudstackProvider) Metadata(ctx context.Context, req provider.MetadataRequest, resp *provider.MetadataResponse) { + resp.TypeName = "cloudstack" +} + +func (p *CloudstackProvider) Schema(ctx context.Context, req provider.SchemaRequest, resp *provider.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "api_url": schema.StringAttribute{ + Optional: true, + }, + "api_key": schema.StringAttribute{ + Optional: true, + Sensitive: true, + }, + "secret_key": schema.StringAttribute{ + Optional: true, + Sensitive: true, + }, + "config": schema.StringAttribute{ + Optional: true, + }, + "profile": schema.StringAttribute{ + Optional: true, + }, + "http_get_only": schema.BoolAttribute{ + Optional: true, + }, + "timeout": schema.Int64Attribute{ + Optional: true, + }, + }, + } +} + +func (p *CloudstackProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + apiUrl := os.Getenv("CLOUDSTACK_API_URL") + apiKey := os.Getenv("CLOUDSTACK_API_KEY") + secretKey := os.Getenv("CLOUDSTACK_SECRET_KEY") + httpGetOnly, _ := strconv.ParseBool(os.Getenv("CLOUDSTACK_HTTP_GET_ONLY")) + timeout, _ := strconv.ParseInt(os.Getenv("CLOUDSTACK_TIMEOUT"), 2, 64) + + var data CloudstackProviderModel + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + if data.ApiUrl.ValueString() != "" { + apiUrl = data.ApiUrl.ValueString() + } + + if data.ApiKey.ValueString() != "" { + apiKey = data.ApiKey.ValueString() + } + + if data.SecretKey.ValueString() != "" { + secretKey = data.SecretKey.ValueString() + } + + if data.HttpGetOnly.ValueBool() { + httpGetOnly = true + } + + if data.Timeout.ValueInt64() != 0 { + timeout = data.Timeout.ValueInt64() + } + + cfg := Config{ + APIURL: apiUrl, + APIKey: apiKey, + SecretKey: secretKey, + HTTPGETOnly: httpGetOnly, + Timeout: timeout, + } + + client, err := cfg.NewClient() + + if err != nil { + resp.Diagnostics.AddError("cloudstack", fmt.Sprintf("failed to create client: %T", err)) + return + } + + resp.ResourceData = client + resp.DataSourceData = client +} + +func (p *CloudstackProvider) ConfigValidators(ctx context.Context) []provider.ConfigValidator { + return []provider.ConfigValidator{ + providervalidator.Conflicting( + path.MatchRoot("api_url"), + path.MatchRoot("config"), + ), + providervalidator.Conflicting( + path.MatchRoot("api_url"), + path.MatchRoot("profile"), + ), + providervalidator.Conflicting( + path.MatchRoot("api_key"), + path.MatchRoot("config"), + ), + providervalidator.Conflicting( + path.MatchRoot("api_key"), + path.MatchRoot("profile"), + ), + providervalidator.Conflicting( + path.MatchRoot("secret_key"), + path.MatchRoot("config"), + ), + providervalidator.Conflicting( + path.MatchRoot("secret_key"), + path.MatchRoot("profile"), + ), + } +} + +func (p *CloudstackProvider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource{} +} + +func (p *CloudstackProvider) DataSources(ctx context.Context) []func() datasource.DataSource { + return []func() datasource.DataSource{} +} diff --git a/cloudstack/resources.go b/cloudstack/resources.go index 0fedb70c..22b2adcc 100644 --- a/cloudstack/resources.go +++ b/cloudstack/resources.go @@ -20,6 +20,7 @@ package cloudstack import ( + "context" "fmt" "log" "regexp" @@ -27,6 +28,7 @@ import ( "time" "github.com/apache/cloudstack-go/v2/cloudstack" + "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) @@ -170,3 +172,24 @@ func importStatePassthrough(d *schema.ResourceData, meta interface{}) ([]*schema return []*schema.ResourceData{d}, nil } + +type ResourceWithConfigure struct { + client *cloudstack.CloudStackClient +} + +func (r *ResourceWithConfigure) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*cloudstack.CloudStackClient) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Resource Configure Type", + fmt.Sprintf("Expected *cloudstack.CloudStackClient, got %T", req.ProviderData), + ) + } + + r.client = client +} diff --git a/go.mod b/go.mod index 7a552443..8952c350 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,9 @@ require ( github.com/apache/cloudstack-go/v2 v2.16.1 github.com/go-ini/ini v1.67.0 github.com/hashicorp/go-multierror v1.1.1 - github.com/hashicorp/terraform-plugin-go v0.22.0 + github.com/hashicorp/terraform-plugin-framework v1.7.0 + github.com/hashicorp/terraform-plugin-framework-validators v0.12.0 + github.com/hashicorp/terraform-plugin-go v0.22.1 github.com/hashicorp/terraform-plugin-mux v0.15.0 github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0 github.com/hashicorp/terraform-plugin-testing v1.7.0 @@ -59,8 +61,8 @@ require ( golang.org/x/tools v0.13.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect - google.golang.org/grpc v1.62.0 // indirect - google.golang.org/protobuf v1.32.0 // indirect + google.golang.org/grpc v1.62.1 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect ) diff --git a/go.sum b/go.sum index 010e7b87..51980c36 100644 --- a/go.sum +++ b/go.sum @@ -79,8 +79,12 @@ github.com/hashicorp/terraform-exec v0.20.0 h1:DIZnPsqzPGuUnq6cH8jWcPunBfY+C+M8J github.com/hashicorp/terraform-exec v0.20.0/go.mod h1:ckKGkJWbsNqFKV1itgMnE0hY9IYf1HoiekpuN0eWoDw= github.com/hashicorp/terraform-json v0.21.0 h1:9NQxbLNqPbEMze+S6+YluEdXgJmhQykRyRNd+zTI05U= github.com/hashicorp/terraform-json v0.21.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= -github.com/hashicorp/terraform-plugin-go v0.22.0 h1:1OS1Jk5mO0f5hrziWJGXXIxBrMe2j/B8E+DVGw43Xmc= -github.com/hashicorp/terraform-plugin-go v0.22.0/go.mod h1:mPULV91VKss7sik6KFEcEu7HuTogMLLO/EvWCuFkRVE= +github.com/hashicorp/terraform-plugin-framework v1.7.0 h1:wOULbVmfONnJo9iq7/q+iBOBJul5vRovaYJIu2cY/Pw= +github.com/hashicorp/terraform-plugin-framework v1.7.0/go.mod h1:jY9Id+3KbZ17OMpulgnWLSfwxNVYSoYBQFTgsx044CI= +github.com/hashicorp/terraform-plugin-framework-validators v0.12.0 h1:HOjBuMbOEzl7snOdOoUfE2Jgeto6JOjLVQ39Ls2nksc= +github.com/hashicorp/terraform-plugin-framework-validators v0.12.0/go.mod h1:jfHGE/gzjxYz6XoUwi/aYiiKrJDeutQNUtGQXkaHklg= +github.com/hashicorp/terraform-plugin-go v0.22.1 h1:iTS7WHNVrn7uhe3cojtvWWn83cm2Z6ryIUDTRO0EV7w= +github.com/hashicorp/terraform-plugin-go v0.22.1/go.mod h1:qrjnqRghvQ6KnDbB12XeZ4FluclYwptntoWCr9QaXTI= github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= github.com/hashicorp/terraform-plugin-mux v0.15.0 h1:+/+lDx0WUsIOpkAmdwBIoFU8UP9o2eZASoOnLsWbKME= @@ -224,12 +228,12 @@ google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAs google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= -google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= -google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/main.go b/main.go index 0ec51629..b018e6ae 100644 --- a/main.go +++ b/main.go @@ -24,10 +24,12 @@ import ( "flag" "log" - "github.com/hashicorp/terraform-plugin-go/tfprotov5" - "github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server" - "github.com/hashicorp/terraform-plugin-mux/tf5muxserver" + "github.com/hashicorp/terraform-plugin-go/tfprotov6" + "github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server" + "github.com/hashicorp/terraform-plugin-mux/tf6muxserver" + "github.com/hashicorp/terraform-plugin-framework/providerserver" + "github.com/hashicorp/terraform-plugin-mux/tf5to6server" "github.com/terraform-providers/terraform-provider-cloudstack/cloudstack" ) @@ -39,23 +41,35 @@ func main() { flag.BoolVar(&debug, "debug", false, "set to true to run the provider with support for debuggers like delve") flag.Parse() - providers := []func() tfprotov5.ProviderServer{ - cloudstack.New().GRPCProvider, + updatedSdkServer, err := tf5to6server.UpgradeServer( + ctx, + cloudstack.Provider().GRPCProvider, + ) + + if err != nil { + log.Fatal(err) + } + + providers := []func() tfprotov6.ProviderServer{ + providerserver.NewProtocol6(cloudstack.New()), + func() tfprotov6.ProviderServer { + return updatedSdkServer + }, } - muxServer, err := tf5muxserver.NewMuxServer(ctx, providers...) + muxServer, err := tf6muxserver.NewMuxServer(ctx, providers...) if err != nil { log.Fatal(err) } - var serveOpts []tf5server.ServeOpt + var serveOpts []tf6server.ServeOpt if debug { - serveOpts = append(serveOpts, tf5server.WithManagedDebug()) + serveOpts = append(serveOpts, tf6server.WithManagedDebug()) } - err = tf5server.Serve( + err = tf6server.Serve( "registry.terraform.io/cloudstack/cloudstack", muxServer.ProviderServer, serveOpts..., From 3cb0d3a5218e77c58161ecc0cfb71a3d27618b2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Matavelli?= Date: Tue, 30 Jul 2024 04:15:44 -0300 Subject: [PATCH 42/46] ci: update terraform, opentofu and cloudstack versions (#130) * ci: update terraform and opentofu versions * ci: update cloudstack versions --- .github/workflows/acceptance.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index d1a8eb16..4915d5dd 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -30,7 +30,7 @@ permissions: env: CLOUDSTACK_API_URL: http://localhost:8080/client/api - CLOUDSTACK_VERSIONS: "['4.18.2.0', '4.19.0.1']" + CLOUDSTACK_VERSIONS: "['4.18.2.1', '4.19.0.2']" jobs: prepare-matrix: @@ -78,8 +78,8 @@ jobs: fail-fast: false matrix: terraform-version: - - '1.7.*' - '1.8.*' + - '1.9.*' cloudstack-version: ${{ fromJson(needs.prepare-matrix.outputs.cloudstack-versions) }} acceptance-opentofu: @@ -117,6 +117,7 @@ jobs: matrix: opentofu-version: - '1.6.*' + - '1.7.*' cloudstack-version: ${{ fromJson(needs.prepare-matrix.outputs.cloudstack-versions) }} all-jobs-passed: # Will succeed if it is skipped From 997dbb21211c551469b98ca13cbee430c4fcd49e Mon Sep 17 00:00:00 2001 From: CodeBleu <400979+CodeBleu@users.noreply.github.com> Date: Tue, 30 Jul 2024 03:16:06 -0400 Subject: [PATCH 43/46] Fix: #117 - Allow Multiple SSH Keypairs (#122) --- cloudstack/resource_cloudstack_instance.go | 53 +++++++++-- .../resource_cloudstack_instance_test.go | 89 +++++++++++++++++++ website/docs/r/instance.html.markdown | 7 +- 3 files changed, 140 insertions(+), 9 deletions(-) diff --git a/cloudstack/resource_cloudstack_instance.go b/cloudstack/resource_cloudstack_instance.go index a4e2caec..09e345d6 100644 --- a/cloudstack/resource_cloudstack_instance.go +++ b/cloudstack/resource_cloudstack_instance.go @@ -139,9 +139,17 @@ func resourceCloudStackInstance() *schema.Resource { ForceNew: true, }, - "keypair": { - Type: schema.TypeString, - Optional: true, + "keypair": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ConflictsWith: []string{"keypairs"}, + }, + + "keypairs": { + Type: schema.TypeList, + Optional: true, + Elem: &schema.Schema{Type: schema.TypeString}, + ConflictsWith: []string{"keypair"}, }, "host_id": { @@ -213,6 +221,7 @@ func resourceCloudStackInstance() *schema.Resource { } func resourceCloudStackInstanceCreate(d *schema.ResourceData, meta interface{}) error { + cs := meta.(*cloudstack.CloudStackClient) // Retrieve the service_offering ID @@ -354,6 +363,14 @@ func resourceCloudStackInstanceCreate(d *schema.ResourceData, meta interface{}) p.SetKeypair(keypair.(string)) } + if keypairs, ok := d.GetOk("keypairs"); ok { + var keypairStrings []string + for _, kp := range keypairs.([]interface{}) { + keypairStrings = append(keypairStrings, fmt.Sprintf("%v", kp)) + } + p.SetKeypairs(keypairStrings) + } + // If a host_id is supplied, add it to the parameter struct if hostid, ok := d.GetOk("host_id"); ok { @@ -493,6 +510,7 @@ func resourceCloudStackInstanceRead(d *schema.ResourceData, meta interface{}) er } func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) error { + cs := meta.(*cloudstack.CloudStackClient) name := d.Get("name").(string) @@ -537,7 +555,8 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) // Attributes that require reboot to update if d.HasChange("name") || d.HasChange("service_offering") || d.HasChange("affinity_group_ids") || - d.HasChange("affinity_group_names") || d.HasChange("keypair") || d.HasChange("user_data") { + d.HasChange("affinity_group_names") || d.HasChange("keypair") || d.HasChange("keypairs") || d.HasChange("user_data") { + // Before we can actually make these changes, the virtual machine must be stopped _, err := cs.VirtualMachine.StopVirtualMachine( cs.VirtualMachine.NewStopVirtualMachineParams(d.Id())) @@ -631,8 +650,8 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) } // Check if the keypair has changed and if so, update the keypair - if d.HasChange("keypair") { - log.Printf("[DEBUG] SSH keypair changed for %s, starting update", name) + if d.HasChange("keypair") || d.HasChange("keypairs") { + log.Printf("[DEBUG] SSH keypair(s) changed for %s, starting update", name) p := cs.SSH.NewResetSSHKeyForVirtualMachineParams(d.Id()) @@ -640,6 +659,26 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) p.SetKeypair(keypair.(string)) } + if keypairs, ok := d.GetOk("keypairs"); ok { + + // Convert keypairsInterface to []interface{} + keypairsInterfaces := keypairs.([]interface{}) + + // Now, safely convert []interface{} to []string with error handling + strKeyPairs := make([]string, len(keypairsInterfaces)) + + for i, v := range keypairsInterfaces { + switch v := v.(type) { + case string: + strKeyPairs[i] = v + default: + log.Printf("Value at index %d is not a string: %v", i, v) + continue + } + } + p.SetKeypairs(strKeyPairs) + } + // If there is a project supplied, we retrieve and set the project id if err := setProjectid(p, cs, d); err != nil { return err @@ -648,7 +687,7 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) _, err = cs.SSH.ResetSSHKeyForVirtualMachine(p) if err != nil { return fmt.Errorf( - "Error changing the SSH keypair for instance %s: %s", name, err) + "Error changing the SSH keypair(s) for instance %s: %s", name, err) } } diff --git a/cloudstack/resource_cloudstack_instance_test.go b/cloudstack/resource_cloudstack_instance_test.go index 38307dc3..d7eeada2 100644 --- a/cloudstack/resource_cloudstack_instance_test.go +++ b/cloudstack/resource_cloudstack_instance_test.go @@ -150,6 +150,68 @@ func TestAccCloudStackInstance_keyPair(t *testing.T) { }) } +func TestAccCloudStackInstance_keyPairs(t *testing.T) { + var instance cloudstack.VirtualMachine + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckCloudStackInstanceDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCloudStackInstance_keyPairs, + Check: resource.ComposeTestCheckFunc( + testAccCheckCloudStackInstanceExists("cloudstack_instance.foobar", &instance), + resource.TestCheckResourceAttr("cloudstack_instance.foobar", "keypairs.#", "2"), // Expecting 2 key pairs + resource.TestCheckResourceAttr("cloudstack_instance.foobar", "keypairs.0", "terraform-test-keypair-foo"), + resource.TestCheckResourceAttr("cloudstack_instance.foobar", "keypairs.1", "terraform-test-keypair-bar"), + ), + }, + }, + }) +} + +func TestAccCloudStackInstance_keyPair_update(t *testing.T) { + var instance cloudstack.VirtualMachine + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckCloudStackInstanceDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCloudStackInstance_keyPair, + Check: resource.ComposeTestCheckFunc( + testAccCheckCloudStackInstanceExists( + "cloudstack_instance.foobar", &instance), + resource.TestCheckResourceAttr( + "cloudstack_instance.foobar", "keypair", "terraform-test-keypair"), + ), + }, + + { + Config: testAccCloudStackInstance_keyPairs, + Check: resource.ComposeTestCheckFunc( + testAccCheckCloudStackInstanceExists("cloudstack_instance.foobar", &instance), + resource.TestCheckResourceAttr("cloudstack_instance.foobar", "keypairs.#", "2"), // Expecting 2 key pairs + resource.TestCheckResourceAttr("cloudstack_instance.foobar", "keypairs.0", "terraform-test-keypair-foo"), + resource.TestCheckResourceAttr("cloudstack_instance.foobar", "keypairs.1", "terraform-test-keypair-bar"), + ), + }, + + { + Config: testAccCloudStackInstance_keyPair, + Check: resource.ComposeTestCheckFunc( + testAccCheckCloudStackInstanceExists( + "cloudstack_instance.foobar", &instance), + resource.TestCheckResourceAttr( + "cloudstack_instance.foobar", "keypair", "terraform-test-keypair"), + ), + }, + }, + }) +} + func TestAccCloudStackInstance_project(t *testing.T) { var instance cloudstack.VirtualMachine @@ -416,6 +478,33 @@ resource "cloudstack_instance" "foobar" { expunge = true }` +const testAccCloudStackInstance_keyPairs = ` +resource "cloudstack_network" "foo" { + name = "terraform-network" + cidr = "10.1.1.0/24" + network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" + zone = "Sandbox-simulator" +} + +resource "cloudstack_ssh_keypair" "foo" { + name = "terraform-test-keypair-foo" +} + +resource "cloudstack_ssh_keypair" "bar" { + name = "terraform-test-keypair-bar" +} + +resource "cloudstack_instance" "foobar" { + name = "terraform-test" + display_name = "terraform-test" + service_offering= "Small Instance" + network_id = "${cloudstack_network.foo.id}" + template = "CentOS 5.6 (64-bit) no GUI (Simulator)" + zone = "Sandbox-simulator" + keypairs = ["${cloudstack_ssh_keypair.foo.name}", "${cloudstack_ssh_keypair.bar.name}"] + expunge = true +}` + const testAccCloudStackInstance_project = ` resource "cloudstack_network" "foo" { name = "terraform-network" diff --git a/website/docs/r/instance.html.markdown b/website/docs/r/instance.html.markdown index ee21f692..d4d61872 100644 --- a/website/docs/r/instance.html.markdown +++ b/website/docs/r/instance.html.markdown @@ -34,7 +34,7 @@ The following arguments are supported: * `service_offering` - (Required) The name or ID of the service offering used for this instance. -* `host_id` - (Optional) destination Host ID to deploy the VM to - parameter available +* `host_id` - (Optional) destination Host ID to deploy the VM to - parameter available for root admin only * `pod_id` - (Optional) destination Pod ID to deploy the VM to - parameter available for root admin only @@ -82,7 +82,10 @@ The following arguments are supported: instance. This can be either plain text or base64 encoded text. * `keypair` - (Optional) The name of the SSH key pair that will be used to - access this instance. + access this instance. (Mutual exclusive with keypairs) + +* `keypairs` - (Optional) A list of SSH key pair names that will be used to + access this instance. (Mutual exclusive with keypair) * `expunge` - (Optional) This determines if the instance is expunged when it is destroyed (defaults false) From 02058b4f545131d52a42dbe6d5795d3f06d9a54c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Matavelli?= Date: Tue, 30 Jul 2024 04:16:55 -0300 Subject: [PATCH 44/46] fix: remove user-data conditional (#121) --- cloudstack/resource_cloudstack_instance.go | 20 ++------ .../resource_cloudstack_instance_test.go | 51 +++++++++++++++++++ 2 files changed, 54 insertions(+), 17 deletions(-) diff --git a/cloudstack/resource_cloudstack_instance.go b/cloudstack/resource_cloudstack_instance.go index 09e345d6..fdf77ee9 100644 --- a/cloudstack/resource_cloudstack_instance.go +++ b/cloudstack/resource_cloudstack_instance.go @@ -390,7 +390,7 @@ func resourceCloudStackInstanceCreate(d *schema.ResourceData, meta interface{}) } if userData, ok := d.GetOk("user_data"); ok { - ud, err := getUserData(userData.(string), cs.HTTPGETOnly) + ud, err := getUserData(userData.(string)) if err != nil { return err } @@ -695,7 +695,7 @@ func resourceCloudStackInstanceUpdate(d *schema.ResourceData, meta interface{}) if d.HasChange("user_data") { log.Printf("[DEBUG] user_data changed for %s, starting update", name) - ud, err := getUserData(d.Get("user_data").(string), cs.HTTPGETOnly) + ud, err := getUserData(d.Get("user_data").(string)) if err != nil { return err } @@ -772,25 +772,11 @@ func resourceCloudStackInstanceImport(d *schema.ResourceData, meta interface{}) } // getUserData returns the user data as a base64 encoded string -func getUserData(userData string, httpGetOnly bool) (string, error) { +func getUserData(userData string) (string, error) { ud := userData if _, err := base64.StdEncoding.DecodeString(ud); err != nil { ud = base64.StdEncoding.EncodeToString([]byte(userData)) } - // deployVirtualMachine uses POST by default, so max userdata is 32K - maxUD := 32768 - - if httpGetOnly { - // deployVirtualMachine using GET instead, so max userdata is 2K - maxUD = 2048 - } - - if len(ud) > maxUD { - return "", fmt.Errorf( - "The supplied user_data contains %d bytes after encoding, "+ - "this exceeds the limit of %d bytes", len(ud), maxUD) - } - return ud, nil } diff --git a/cloudstack/resource_cloudstack_instance_test.go b/cloudstack/resource_cloudstack_instance_test.go index d7eeada2..5979aaaf 100644 --- a/cloudstack/resource_cloudstack_instance_test.go +++ b/cloudstack/resource_cloudstack_instance_test.go @@ -21,6 +21,7 @@ package cloudstack import ( "fmt" + "regexp" "testing" "github.com/apache/cloudstack-go/v2/cloudstack" @@ -274,6 +275,26 @@ func TestAccCloudStackInstance_importProject(t *testing.T) { }) } +func TestAccCloudStackInstance_userData(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckCloudStackInstanceDestroy, + ExternalProviders: map[string]resource.ExternalProvider{ + "random": { + VersionConstraint: ">= 3.6.0", + Source: "hashicorp/random", + }, + }, + Steps: []resource.TestStep{ + { + Config: testAccCloudStackInstance_userData, + ExpectError: regexp.MustCompile("User data has exceeded configurable max length"), + }, + }, + }) +} + func testAccCheckCloudStackInstanceExists( n string, instance *cloudstack.VirtualMachine) resource.TestCheckFunc { return func(s *terraform.State) error { @@ -525,3 +546,33 @@ resource "cloudstack_instance" "foobar" { zone = cloudstack_network.foo.zone expunge = true }` + +const testAccCloudStackInstance_userData = ` +resource "random_bytes" "string" { + length = 32768 +} + +resource "cloudstack_network" "foo" { + name = "terraform-network" + display_text = "terraform-network" + cidr = "10.1.1.0/24" + network_offering = "DefaultIsolatedNetworkOfferingWithSourceNatService" + zone = "Sandbox-simulator" +} + +resource "cloudstack_instance" "foobar" { + name = "terraform-test" + display_name = "terraform-test" + service_offering= "Small Instance" + network_id = cloudstack_network.foo.id + template = "CentOS 5.6 (64-bit) no GUI (Simulator)" + zone = cloudstack_network.foo.zone + expunge = true + user_data = <<-EOFTF +#!/bin/bash + +echo < Date: Sun, 20 Oct 2024 12:52:14 +0530 Subject: [PATCH 45/46] added domainid parameter to account resource (#136) --- cloudstack/resource_cloudstack_account.go | 6 ++++++ website/docs/r/account.html.markdown | 1 + 2 files changed, 7 insertions(+) diff --git a/cloudstack/resource_cloudstack_account.go b/cloudstack/resource_cloudstack_account.go index 2c1bea62..cc5d9c04 100644 --- a/cloudstack/resource_cloudstack_account.go +++ b/cloudstack/resource_cloudstack_account.go @@ -66,6 +66,10 @@ func resourceCloudStackAccount() *schema.Resource { Type: schema.TypeString, Optional: true, }, + "domainid": { + Type: schema.TypeString, + Optional: true, + }, }, } } @@ -80,6 +84,7 @@ func resourceCloudStackAccountCreate(d *schema.ResourceData, meta interface{}) e role_id := d.Get("role_id").(string) account_type := d.Get("account_type").(int) account := d.Get("account").(string) + domainid := d.Get("domainid").(string) // Create a new parameter struct p := cs.Account.NewCreateAccountParams(email, first_name, last_name, password, username) @@ -90,6 +95,7 @@ func resourceCloudStackAccountCreate(d *schema.ResourceData, meta interface{}) e } else { p.SetAccount(username) } + p.SetDomainid(domainid) log.Printf("[DEBUG] Creating Account %s", account) a, err := cs.Account.CreateAccount(p) diff --git a/website/docs/r/account.html.markdown b/website/docs/r/account.html.markdown index 5d555a38..53b1f755 100644 --- a/website/docs/r/account.html.markdown +++ b/website/docs/r/account.html.markdown @@ -36,6 +36,7 @@ The following arguments are supported: * `account_type` - (Required) The account type. Possible values are `0` for regular user, `1` for admin, and `2` for domain admin. * `role_id` - (Required) The ID of the role associated with the account. * `account` - (Optional) The account name. If not specified, the username will be used as the account name. +* `domainid` - (Optional) Creates the user under the specified domain ## Attributes Reference From 84d412850b00759d1aaa08a2178f04bc9e6a8abb Mon Sep 17 00:00:00 2001 From: sulaim Date: Thu, 2 Jan 2025 01:29:37 +0530 Subject: [PATCH 46/46] cloudstack: add port range support for port forwarding rules (#157) Add support for port ranges in port forwarding rules by introducing optional private_end_port and public_end_port fields. This allows users to specify port ranges instead of just single ports when creating port forwarding rules. - Add private_end_port and public_end_port fields as optional parameters - Update createPortForward to handle end port configuration - Modify read function to properly manage end port state - Maintain backward compatibility with existing configurations Fixes #157 --- .../resource_cloudstack_port_forward.go | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/cloudstack/resource_cloudstack_port_forward.go b/cloudstack/resource_cloudstack_port_forward.go index cd934318..e62c8e43 100644 --- a/cloudstack/resource_cloudstack_port_forward.go +++ b/cloudstack/resource_cloudstack_port_forward.go @@ -73,10 +73,19 @@ func resourceCloudStackPortForward() *schema.Resource { Required: true, }, + "private_end_port": { + Type: schema.TypeInt, + Optional: true, + }, + "public_port": { Type: schema.TypeInt, Required: true, }, + "public_end_port": { + Type: schema.TypeInt, + Optional: true, + }, "virtual_machine_id": { Type: schema.TypeString, @@ -198,7 +207,13 @@ func createPortForward(d *schema.ResourceData, meta interface{}, forward map[str // If no guest IP is configured, use the primary NIC p.SetNetworkid(vm.Nic[0].Networkid) } + if privateEndPort, ok := forward["private_end_port"]; ok && privateEndPort.(int) != 0 { + p.SetPrivateendport(privateEndPort.(int)) + } + if publicEndPort, ok := forward["public_end_port"]; ok && publicEndPort.(int) != 0 { + p.SetPublicendport(publicEndPort.(int)) + } // Do not open the firewall automatically in any case p.SetOpenfirewall(false) @@ -227,7 +242,6 @@ func resourceCloudStackPortForwardRead(d *schema.ResourceData, meta interface{}) d.SetId("") return nil } - return err } @@ -290,6 +304,28 @@ func resourceCloudStackPortForwardRead(d *schema.ResourceData, meta interface{}) forward["public_port"] = pubPort forward["virtual_machine_id"] = f.Virtualmachineid + // Handle private end port + if f.Privateendport != "" { + privEndPort, err := strconv.Atoi(f.Privateendport) + if err != nil { + return err + } + forward["private_end_port"] = privEndPort + } else { + forward["private_end_port"] = privPort // Default to start port if not set + } + + // Handle public end port + if f.Publicendport != "" { + pubEndPort, err := strconv.Atoi(f.Publicendport) + if err != nil { + return err + } + forward["public_end_port"] = pubEndPort + } else { + forward["public_end_port"] = pubPort // Default to start port if not set + } + // This one is a bit tricky. We only want to update this optional value // if we've set one ourselves. If not this would become a computed value // and that would mess up the calculated hash of the set item. @@ -310,6 +346,8 @@ func resourceCloudStackPortForwardRead(d *schema.ResourceData, meta interface{}) "protocol": uuid, "private_port": 0, "public_port": 0, + "private_end_port": 0, + "public_end_port": 0, "virtual_machine_id": uuid, "uuid": uuid, } @@ -327,7 +365,6 @@ func resourceCloudStackPortForwardRead(d *schema.ResourceData, meta interface{}) return nil } - func resourceCloudStackPortForwardUpdate(d *schema.ResourceData, meta interface{}) error { // Check if the forward set as a whole has changed if d.HasChange("forward") {