diff --git a/.gitmodules b/.gitmodules
index a28dcdb7..cc0f31c5 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,4 +1,4 @@
[submodule "upstream"]
path = upstream
url = https://github.com/equinix/terraform-provider-equinix.git
- ignore = dirty
+ ignore = dirty
diff --git a/examples/go.mod b/examples/go.mod
index 74824697..3a291b97 100644
--- a/examples/go.mod
+++ b/examples/go.mod
@@ -2,51 +2,47 @@ module github.com/equinix/pulumi-equinix/examples
go 1.21
-require github.com/pulumi/pulumi/pkg/v3 v3.94.2
+require github.com/pulumi/pulumi/pkg/v3 v3.107.0
require (
- cloud.google.com/go v0.110.4 // indirect
- cloud.google.com/go/compute v1.20.1 // indirect
+ 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.1 // indirect
- cloud.google.com/go/kms v1.12.1 // indirect
- cloud.google.com/go/logging v1.7.0 // indirect
- cloud.google.com/go/longrunning v0.5.1 // indirect
- cloud.google.com/go/storage v1.30.1 // indirect
+ cloud.google.com/go/iam v1.1.5 // indirect
+ cloud.google.com/go/kms v1.15.5 // indirect
+ cloud.google.com/go/logging v1.8.1 // indirect
+ cloud.google.com/go/longrunning v0.5.4 // indirect
+ cloud.google.com/go/storage v1.35.1 // indirect
dario.cat/mergo v1.0.0 // indirect
- github.com/Azure/azure-sdk-for-go v66.0.0+incompatible // indirect
- github.com/Azure/go-autorest v14.2.0+incompatible // indirect
- github.com/Azure/go-autorest/autorest v0.11.28 // indirect
- github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect
- github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 // indirect
- github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 // indirect
- github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
- github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
- github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
- github.com/Azure/go-autorest/logger v0.2.1 // indirect
- github.com/Azure/go-autorest/tracing v0.6.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect
+ github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect
- github.com/acomagu/bufpipe v1.0.4 // indirect
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect
github.com/agext/levenshtein v1.2.3 // indirect
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
- github.com/armon/go-metrics v0.4.0 // indirect
+ github.com/armon/go-metrics v0.4.1 // indirect
github.com/armon/go-radix v1.0.0 // indirect
github.com/atotto/clipboard v0.1.4 // indirect
- github.com/aws/aws-sdk-go v1.44.298 // indirect
- github.com/aws/aws-sdk-go-v2 v1.17.3 // indirect
- github.com/aws/aws-sdk-go-v2/config v1.15.15 // indirect
- github.com/aws/aws-sdk-go-v2/credentials v1.12.10 // indirect
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9 // indirect
- github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.27 // indirect
- github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.21 // indirect
- github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9 // indirect
- github.com/aws/aws-sdk-go-v2/service/kms v1.18.1 // indirect
- github.com/aws/aws-sdk-go-v2/service/sso v1.11.13 // indirect
- github.com/aws/aws-sdk-go-v2/service/sts v1.16.10 // indirect
- github.com/aws/smithy-go v1.13.5 // indirect
+ github.com/aws/aws-sdk-go v1.49.0 // indirect
+ github.com/aws/aws-sdk-go-v2 v1.24.0 // indirect
+ github.com/aws/aws-sdk-go-v2/config v1.26.1 // indirect
+ github.com/aws/aws-sdk-go-v2/credentials v1.16.12 // indirect
+ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/ini v1.7.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9 // indirect
+ github.com/aws/aws-sdk-go-v2/service/kms v1.27.5 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sso v1.18.5 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sts v1.26.5 // indirect
+ github.com/aws/smithy-go v1.19.0 // indirect
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/blang/semver v3.5.1+incompatible // indirect
github.com/cenkalti/backoff/v3 v3.2.2 // indirect
@@ -54,33 +50,32 @@ require (
github.com/charmbracelet/bubbletea v0.24.2 // indirect
github.com/charmbracelet/lipgloss v0.7.1 // indirect
github.com/cheggaaa/pb v1.0.29 // indirect
- github.com/cloudflare/circl v1.3.3 // indirect
+ github.com/cloudflare/circl v1.3.7 // indirect
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
github.com/cyphar/filepath-securejoin v0.2.4 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/dimchansky/utfbom v1.1.1 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
+ github.com/deckarep/golang-set/v2 v2.5.0 // indirect
github.com/djherbis/times v1.5.0 // indirect
github.com/edsrzf/mmap-go v1.1.0 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
- github.com/fatih/color v1.13.0 // indirect
+ github.com/fatih/color v1.16.0 // indirect
github.com/frankban/quicktest v1.14.5 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.5.0 // indirect
- github.com/go-git/go-git/v5 v5.9.0 // indirect
+ github.com/go-git/go-git/v5 v5.11.0 // indirect
github.com/gofrs/uuid v4.2.0+incompatible // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang-jwt/jwt/v4 v4.4.2 // indirect
- github.com/golang/glog v1.1.0 // indirect
+ github.com/golang-jwt/jwt/v5 v5.1.0 // indirect
+ github.com/golang/glog v1.1.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/snappy v0.0.4 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
github.com/google/go-querystring v1.1.0 // indirect
- github.com/google/s2a-go v0.1.4 // indirect
- github.com/google/uuid v1.4.0 // indirect
+ github.com/google/s2a-go v0.1.7 // indirect
+ github.com/google/uuid v1.5.0 // indirect
github.com/google/wire v0.5.0 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
- github.com/googleapis/gax-go/v2 v2.11.0 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
+ github.com/googleapis/gax-go/v2 v2.12.0 // indirect
github.com/gorilla/mux v1.8.0 // indirect
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
@@ -88,7 +83,7 @@ require (
github.com/hashicorp/go-hclog v1.5.0 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
- github.com/hashicorp/go-plugin v1.5.1 // indirect
+ github.com/hashicorp/go-plugin v1.6.0 // indirect
github.com/hashicorp/go-retryablehttp v0.7.5 // indirect
github.com/hashicorp/go-rootcerts v1.0.2 // indirect
github.com/hashicorp/go-secure-stdlib/mlock v0.1.2 // indirect
@@ -97,7 +92,7 @@ require (
github.com/hashicorp/go-sockaddr v1.0.2 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
- github.com/hashicorp/golang-lru v0.5.4 // indirect
+ github.com/hashicorp/golang-lru v0.6.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/hashicorp/hcl/v2 v2.19.1 // indirect
github.com/hashicorp/vault/api v1.8.2 // indirect
@@ -108,11 +103,12 @@ require (
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
+ github.com/kylelemons/godebug v1.1.0 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
- github.com/mattn/go-isatty v0.0.18 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-localereader v0.0.1 // indirect
- github.com/mattn/go-runewidth v0.0.14 // indirect
+ github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/go-ps v1.0.0 // indirect
@@ -122,22 +118,25 @@ require (
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect
+ github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
github.com/muesli/reflow v0.3.0 // indirect
- github.com/muesli/termenv v0.15.1 // indirect
+ github.com/muesli/termenv v0.15.2 // indirect
github.com/natefinch/atomic v1.0.1 // indirect
github.com/oklog/run v1.1.0 // indirect
github.com/opentracing/basictracer-go v1.1.0 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
+ github.com/pgavlin/fx v0.1.6 // indirect
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 // indirect
github.com/pierrec/lz4 v2.6.1+incompatible // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect
+ github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pkg/term v1.1.0 // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/pulumi/esc v0.6.0 // indirect
- github.com/pulumi/pulumi/sdk/v3 v3.94.2 // indirect
+ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
+ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect
+ github.com/pulumi/esc v0.6.2 // indirect
+ github.com/pulumi/pulumi/sdk/v3 v3.107.0 // indirect
github.com/rivo/uniseg v0.4.4 // indirect
github.com/rogpeppe/go-internal v1.11.0 // indirect
github.com/ryanuber/go-glob v1.0.0 // indirect
@@ -146,7 +145,7 @@ require (
github.com/segmentio/asm v1.1.3 // indirect
github.com/segmentio/encoding v0.3.5 // indirect
github.com/sergi/go-diff v1.3.1 // indirect
- github.com/skeema/knownhosts v1.2.0 // indirect
+ github.com/skeema/knownhosts v1.2.1 // indirect
github.com/spf13/cobra v1.7.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/stretchr/testify v1.8.4 // indirect
@@ -158,33 +157,32 @@ require (
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
- github.com/zclconf/go-cty v1.14.1 // indirect
+ github.com/zclconf/go-cty v1.14.2 // indirect
go.opencensus.io v0.24.0 // indirect
- go.uber.org/atomic v1.9.0 // indirect
- gocloud.dev v0.27.0 // indirect
+ go.uber.org/atomic v1.11.0 // indirect
+ gocloud.dev v0.36.0 // indirect
gocloud.dev/secrets/hashivault v0.27.0 // indirect
- golang.org/x/crypto v0.15.0 // indirect
- golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
+ golang.org/x/crypto v0.18.0 // indirect
+ golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect
golang.org/x/mod v0.14.0 // indirect
- golang.org/x/net v0.18.0 // indirect
- golang.org/x/oauth2 v0.14.0 // indirect
+ golang.org/x/net v0.19.0 // indirect
+ golang.org/x/oauth2 v0.15.0 // indirect
golang.org/x/sync v0.5.0 // indirect
- golang.org/x/sys v0.14.0 // indirect
- golang.org/x/term v0.14.0 // indirect
+ golang.org/x/sys v0.16.0 // indirect
+ golang.org/x/term v0.16.0 // indirect
golang.org/x/text v0.14.0 // indirect
- golang.org/x/time v0.3.0 // indirect
- golang.org/x/tools v0.15.0 // indirect
- golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
- google.golang.org/api v0.126.0 // indirect
- google.golang.org/appengine v1.6.7 // indirect
- google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 // indirect
- google.golang.org/grpc v1.57.1 // indirect
- google.golang.org/protobuf v1.31.0 // indirect
+ golang.org/x/time v0.4.0 // indirect
+ golang.org/x/tools v0.16.0 // indirect
+ golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
+ google.golang.org/api v0.151.0 // indirect
+ google.golang.org/appengine v1.6.8 // indirect
+ google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect
+ google.golang.org/grpc v1.61.0 // indirect
+ google.golang.org/protobuf v1.32.0 // indirect
gopkg.in/square/go-jose.v2 v2.6.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
lukechampine.com/frand v1.4.2 // indirect
- sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 // indirect
)
diff --git a/examples/go.sum b/examples/go.sum
index 8b01330f..2f222502 100644
--- a/examples/go.sum
+++ b/examples/go.sum
@@ -34,8 +34,7 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9
cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=
cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=
cloud.google.com/go v0.103.0/go.mod h1:vwLx1nqLrzLX/fpwSMOXmFIqBOyHsvHbnAdbGSJ+mKk=
-cloud.google.com/go v0.110.4 h1:1JYyxKMN9hd5dR2MYTPWkGUgcoxVVhg0LKNKEo0qvmk=
-cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI=
+cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y=
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=
@@ -48,8 +47,7 @@ cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6m
cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s=
cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
-cloud.google.com/go/compute v1.20.1 h1:6aKEtlUiwEpJzM001l0yFkpXmUVXaN8W+fbkb2AZNbg=
-cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM=
+cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
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=
@@ -58,15 +56,11 @@ cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqCl
cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY=
cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c=
cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
-cloud.google.com/go/iam v1.1.1 h1:lW7fzj15aVIXYHREOqjRBV9PsH0Z6u8Y46a1YGvQP4Y=
-cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU=
+cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA=
-cloud.google.com/go/kms v1.12.1 h1:xZmZuwy2cwzsocmKDOPu4BL7umg8QXagQx6fKVmf45U=
-cloud.google.com/go/kms v1.12.1/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM=
-cloud.google.com/go/logging v1.7.0 h1:CJYxlNNNNAMkHp9em/YEXcfJg+rPDg7YfwoRpMU+t5I=
-cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M=
-cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI=
-cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc=
+cloud.google.com/go/kms v1.15.5 h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM=
+cloud.google.com/go/logging v1.8.1 h1:26skQWPeYhvIasWKm48+Eq7oUqdcdbwsCVwz5Ys0FvU=
+cloud.google.com/go/longrunning v0.5.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg=
cloud.google.com/go/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4=
cloud.google.com/go/monitoring v1.5.0/go.mod h1:/o9y8NYX5j91JjD/JvGLYbi86kL11OjyJXq2XziLJu4=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
@@ -83,8 +77,7 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc=
cloud.google.com/go/storage v1.24.0/go.mod h1:3xrJEFMXBsQLgxwThyjuD3aYlroL0TMRec1ypGUQ0KE=
-cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM=
-cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E=
+cloud.google.com/go/storage v1.35.1 h1:B59ahL//eDfx2IIKFBeT5Atm9wnNmj3+8xG/W4WB//w=
cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A=
cloud.google.com/go/trace v1.2.0/go.mod h1:Wc8y/uYyOhPy12KEnXG9XGrvfMz5F5SrYecQlbW1rwM=
code.cloudfoundry.org/clock v0.0.0-20180518195852-02e53af36e6c/go.mod h1:QD9Lzhd/ux6eNQVUDVRJX/RKTigpewimNYBi7ivZKY8=
@@ -99,15 +92,19 @@ github.com/Azure/azure-amqp-common-go/v3 v3.2.3/go.mod h1:7rPmbSfszeovxGfc5fSAXE
github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go v63.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
-github.com/Azure/azure-sdk-for-go v66.0.0+incompatible h1:bmmC38SlE8/E81nNADlgmVGurPWMHDX2YNXVQMrBpEE=
github.com/Azure/azure-sdk-for-go v66.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0/go.mod h1:+6sju8gk8FRmSajX3Oz4G5Gm7P+mbqE9FVaXXFYTkCM=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI=
github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs=
+github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM=
+github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw=
github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.0.2/go.mod h1:LH9XQnMr2ZYxQdVdCrzLO9mxeDyrDFa6wbSI3x5zCZk=
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1/go.mod h1:eZ4g6GUvXiGulfIbbhh1Xr4XwUYaYaWMqzGD/284wCA=
github.com/Azure/go-amqp v0.17.0/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg=
@@ -116,43 +113,33 @@ github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX
github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
-github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw=
github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA=
github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc=
github.com/Azure/go-autorest/autorest v0.11.25/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U=
github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U=
-github.com/Azure/go-autorest/autorest v0.11.28 h1:ndAExarwr5Y+GaHE6VCaY1kyS/HwwGGyuimVhWsHOEM=
github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA=
github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg=
github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A=
github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=
github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
github.com/Azure/go-autorest/autorest/adal v0.9.20/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
-github.com/Azure/go-autorest/autorest/adal v0.9.21 h1:jjQnVFXPfekaqb8vIsv2G1lxshoW+oGv4MDlhRtnYZk=
github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U=
-github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 h1:P6bYXFoao05z5uhOQzbC3Qd8JqF3jUoocoTeIxkp2cA=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg=
-github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 h1:w77/uPk80ZET2F+AfQExZyEWtn+0Rk/uw17m9fv5Ajc=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0=
-github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=
github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
-github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw=
github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU=
-github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk=
github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE=
-github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac=
github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E=
github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
-github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=
github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
-github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 h1:hVeq+yCyUi+MsoO/CU95yqCIcdzra5ovzk8Q2BBpV2M=
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/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
@@ -199,8 +186,6 @@ github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:H
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
-github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
-github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY=
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA=
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
@@ -226,8 +211,8 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=
github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=
-github.com/armon/go-metrics v0.4.0 h1:yCQqn7dwca4ITXb+CbubHmedzaQYHhNhrEXLYUeEe8Q=
github.com/armon/go-metrics v0.4.0/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4=
+github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA=
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=
@@ -248,57 +233,53 @@ github.com/aws/aws-sdk-go v1.43.11/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4
github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
github.com/aws/aws-sdk-go v1.44.45/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
github.com/aws/aws-sdk-go v1.44.68/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
-github.com/aws/aws-sdk-go v1.44.298 h1:5qTxdubgV7PptZJmp/2qDwD2JL187ePL7VOxsSh1i3g=
-github.com/aws/aws-sdk-go v1.44.298/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
+github.com/aws/aws-sdk-go v1.49.0 h1:g9BkW1fo9GqKfwg2+zCD+TW/D36Ux+vtfJ8guF4AYmY=
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
github.com/aws/aws-sdk-go-v2 v1.16.8/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw=
-github.com/aws/aws-sdk-go-v2 v1.17.3 h1:shN7NlnVzvDUgPQ+1rLMSxY8OWRNDRYtiqe0p/PgrhY=
-github.com/aws/aws-sdk-go-v2 v1.17.3/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
-github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3 h1:S/ZBwevQkr7gv5YxONYpGQxlMFFYSRfz3RMcjsC9Qhk=
+github.com/aws/aws-sdk-go-v2 v1.24.0 h1:890+mqQ+hTpNuw0gGP6/4akolQkSToDJgHfQE7AwGuk=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3/go.mod h1:gNsR5CaXKmQSSzrmGxmwmct/r+ZBfbxorAuXYsj/M5Y=
-github.com/aws/aws-sdk-go-v2/config v1.15.15 h1:yBV+J7Au5KZwOIrIYhYkTGJbifZPCkAnCFSvGsF3ui8=
+github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 h1:OCs21ST2LrepDfD3lwlQiOqIGp6JiEUqG84GzTDoyJs=
github.com/aws/aws-sdk-go-v2/config v1.15.15/go.mod h1:A1Lzyy/o21I5/s2FbyX5AevQfSVXpvvIDCoVFD0BC4E=
-github.com/aws/aws-sdk-go-v2/credentials v1.12.10 h1:7gGcMQePejwiKoDWjB9cWnpfVdnz/e5JwJFuT6OrroI=
+github.com/aws/aws-sdk-go-v2/config v1.26.1 h1:z6DqMxclFGL3Zfo+4Q0rLnAZ6yVkzCRxhRMsiRQnD1o=
github.com/aws/aws-sdk-go-v2/credentials v1.12.10/go.mod h1:g5eIM5XRs/OzIIK81QMBl+dAuDyoLN0VYaLP+tBqEOk=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9 h1:hz8tc+OW17YqxyFFPSkvfSikbqWcyyHRyPVSTzC0+aI=
+github.com/aws/aws-sdk-go-v2/credentials v1.16.12 h1:v/WgB8NxprNvr5inKIiVVrXPuuTegM+K8nncFkr1usU=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9/go.mod h1:KDCCm4ONIdHtUloDcFvK2+vshZvx4Zmj7UMDfusuz5s=
-github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21 h1:bpiKFJ9aC0xTVpygSRRRL/YHC1JZ+pHQHENATHuoiwo=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10 h1:w98BT5w+ao1/r5sUuiH6JkVzjowOKeOJRHERyy1vh58=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21/go.mod h1:iIYPrQ2rYfZiB/iADYlhj9HHZ9TTi6PqKQPAqygohbE=
+github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.15.7 h1:FnLf60PtjXp8ZOzQfhJVsqF0OtYKQZWQfqOLshh8YXg=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15/go.mod h1:pWrr2OoHlT7M/Pd2y4HV3gJyPb3qj5qMmnPkKSNPYK4=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.27 h1:I3cakv2Uy1vNmmhRQmFptYDxOvBnwCdNwyw63N0RaRU=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.27/go.mod h1:a1/UpzeyBBerajpnP5nGZa9mGzsBn5cOKxm6NWQsvoI=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9 h1:v+HbZaCGmOwnTTVS86Fleq0vPzOd7tnJGbFhP0stNLs=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9/go.mod h1:08tUpeSGN33QKSO7fwxXczNfiwCpbj+GxK6XKwqWVv0=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.21 h1:5NbbMrIzmUn/TXFqAle6mgrH5m9cOvMLRGL7pnG8tRE=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.21/go.mod h1:+Gxn8jYn5k9ebfHEqlhrMirFjSW0v0C9fI+KN5vk2kE=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16 h1:f0ySVcmQhwmzn7zQozd8wBM3yuGBfzdpsOaKQ0/Epzw=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9 h1:N94sVhRACtXyVcjXxrwK1SKFIJrA9pOJ5yu2eSHnmls=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16/go.mod h1:CYmI+7x03jjJih8kBEEFKRQc40UjUokT0k7GbvrhhTc=
-github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6 h1:3L8pcjvgaSOs0zzZcMKzxDSkYKEpwJ2dNVDdxm68jAY=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.7.2 h1:GrSw8s0Gs/5zZ0SX+gX4zQjRnRsMJDJ2sLur1gRBhEM=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6/go.mod h1:O7Oc4peGZDEKlddivslfYFvAbgzvl/GH3J8j3JIGBXc=
+github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.9 h1:ugD6qzjYtB7zM5PN/ZIeaAIyefPaD82G8+SJopgvUpw=
github.com/aws/aws-sdk-go-v2/service/iam v1.19.0 h1:9vCynoqC+dgxZKrsjvAniyIopsv3RZFsZ6wkQ+yxtj8=
github.com/aws/aws-sdk-go-v2/service/iam v1.19.0/go.mod h1:OyAuvpFeSVNppcSsp1hFOVQcaTRc1LE24YIR7pMbbAA=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3 h1:4n4KCtv5SUoT5Er5XV41huuzrCqepxlW3SDI9qHQebc=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3/go.mod h1:gkb2qADY+OHaGLKNTYxMaQNacfeyQpZ4csDTQMeFmcw=
-github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10 h1:7LJcuRalaLw+GYQTMGmVUl4opg2HrDZkvn/L3KvIQfw=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 h1:/b31bi3YVNlkzkBrm9LfpaKoaYZUxIAj4sHfOTmLfqw=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10/go.mod h1:Qks+dxK3O+Z2deAhNo6cJ8ls1bam3tUGUAcgxQP1c70=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9 h1:sHfDuhbOuuWSIAEDd3pma6p0JgUcR2iePxtCE8gfCxQ=
+github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.9 h1:/90OR2XbSYfXucBMJ4U14wrjlfleq/0SB6dZDPncgmo=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9/go.mod h1:yQowTpvdZkFVuHrLBXmczat4W+WJKg/PafBZnGBLga0=
-github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9 h1:sJdKvydGYDML9LTFcp6qq6Z5fIjN0Rdq2Gvw1hUg8tc=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9 h1:Nf2sHxjMJR8CSImIVCONRi4g0Su3J+TSTbS7G0pUeMU=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9/go.mod h1:Rc5+wn2k8gFSi3V1Ch4mhxOzjMh+bYSXVFfVaqowQOY=
-github.com/aws/aws-sdk-go-v2/service/kms v1.18.1 h1:y07kzPdcjuuyDVYWf1CCsQQ6kcAWMbFy+yIJ71xQBS0=
+github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.9 h1:iEAeF6YC3l4FzlJPP9H3Ko1TXpdjdqWffxXjp8SY6uk=
github.com/aws/aws-sdk-go-v2/service/kms v1.18.1/go.mod h1:4PZMUkc9rXHWGVB5J9vKaZy3D7Nai79ORworQ3ASMiM=
-github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2 h1:NvzGue25jKnuAsh6yQ+TZ4ResMcnp49AWgWGm2L4b5o=
+github.com/aws/aws-sdk-go-v2/service/kms v1.27.5 h1:7lKTr8zJ2nVaVgyII+7hUayTi7xWedMuANiNVXiD2S8=
github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2/go.mod h1:u+566cosFI+d+motIz3USXEh6sN8Nq4GrNXSg2RXVMo=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.47.5 h1:Keso8lIOS+IzI2MkPZyK6G0LYcK3My2LQ+T5bxghEAY=
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.15.14/go.mod h1:xakbH8KMsQQKqzX87uyyzTHshc/0/Df8bsTneTS5pFU=
github.com/aws/aws-sdk-go-v2/service/sns v1.17.10/go.mod h1:uITsRNVMeCB3MkWpXxXw0eDz8pW4TYLzj+eyQtbhSxM=
github.com/aws/aws-sdk-go-v2/service/sqs v1.19.1/go.mod h1:A94o564Gj+Yn+7QO1eLFeI7UVv3riy/YBFOfICVqFvU=
github.com/aws/aws-sdk-go-v2/service/ssm v1.27.6/go.mod h1:fiFzQgj4xNOg4/wqmAiPvzgDMXPD+cUEplX/CYn+0j0=
-github.com/aws/aws-sdk-go-v2/service/sso v1.11.13 h1:DQpf+al+aWozOEmVEdml67qkVZ6vdtGUi71BZZWw40k=
github.com/aws/aws-sdk-go-v2/service/sso v1.11.13/go.mod h1:d7ptRksDDgvXaUvxyHZ9SYh+iMDymm94JbVcgvSYSzU=
-github.com/aws/aws-sdk-go-v2/service/sts v1.16.10 h1:7tquJrhjYz2EsCBvA9VTl+sBAAh1bv7h/sGASdZOGGo=
+github.com/aws/aws-sdk-go-v2/service/sso v1.18.5 h1:ldSFWz9tEHAwHNmjx2Cvy1MjP5/L9kNoR0skc6wyOOM=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5 h1:2k9KmFawS63euAkY4/ixVNsYYwrwnd5fIvgEKkfZFNM=
github.com/aws/aws-sdk-go-v2/service/sts v1.16.10/go.mod h1:cftkHYN6tCDNfkSasAmclSfl4l7cySoay8vz7p/ce0E=
+github.com/aws/aws-sdk-go-v2/service/sts v1.26.5 h1:5UYvv8JUvllZsRnfrcMQ+hJ9jNICmcgKPAO1CER25Wg=
github.com/aws/smithy-go v1.12.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
-github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8=
-github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
+github.com/aws/smithy-go v1.19.0 h1:KWFKQV80DpP3vJrrA9sVAHQ5gc2z8i4EzrLhLlWXcBM=
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
@@ -366,8 +347,8 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
+github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
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=
@@ -515,8 +496,9 @@ github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW
github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8=
github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I=
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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
+github.com/deckarep/golang-set/v2 v2.5.0 h1:hn6cEZtQ0h3J8kFrHR/NrzyOoTnjgW1+FmNJzQ7y/sA=
github.com/denisenkom/go-mssqldb v0.12.2/go.mod h1:lnIw1mZukFRZDJYQ0Pb833QS2IaC3l5HkEfra2LJ+sk=
github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA=
github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0=
@@ -527,12 +509,12 @@ github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8
github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs=
github.com/digitalocean/godo v1.81.0/go.mod h1:BPCqvwbjbGqxuUnIKB4EvS/AX7IDnNmt5fwvIkWo+ew=
-github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U=
github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU=
github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0=
github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko=
+github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=
github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY=
@@ -588,8 +570,8 @@ github.com/evanphx/json-patch/v5 v5.5.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2Vvl
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
-github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
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/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
@@ -625,10 +607,8 @@ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66D
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow=
-github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8=
-github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo=
-github.com/go-git/go-git/v5 v5.9.0 h1:cD9SFA7sHVRdJ7AYck1ZaAa/yeuBvGPxwXDL8cxrObY=
-github.com/go-git/go-git/v5 v5.9.0/go.mod h1:RKIqga24sWdMGZF+1Ekv9kylsDz6LzdTSI2s/OsZWE0=
+github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
+github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4=
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=
@@ -748,14 +728,13 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69
github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
-github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs=
github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
+github.com/golang-jwt/jwt/v5 v5.1.0 h1:UGKbA/IPjtS6zLcdB7i5TyACMgSbOTiR8qzXgw8HWQU=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
-github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=
-github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
+github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo=
github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -823,8 +802,8 @@ github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
github.com/google/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE=
github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk=
-github.com/google/go-replayers/httpreplay v1.1.1 h1:H91sIMlt1NZzN7R+/ASswyouLJfW0WLW7fhyUFvDEkY=
github.com/google/go-replayers/httpreplay v1.1.1/go.mod h1:gN9GeLIs7l6NUoVaSSnv2RiqK1NiwAmD0MrKeC9IIks=
+github.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -854,22 +833,19 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
github.com/google/pprof v0.0.0-20220608213341-c488b8fa1db3/go.mod h1:gSuNB+gJaOiQKLEZ+q+PK9Mq3SOzhRcw2GsGS/FhYDk=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc=
-github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A=
+github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
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.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0/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/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8=
github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU=
github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
-github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k=
-github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
+github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
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.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
@@ -877,8 +853,7 @@ github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0
github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM=
github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM=
github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
-github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4=
-github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI=
+github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
@@ -949,8 +924,7 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/hashicorp/go-plugin v1.4.3/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ=
github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s=
-github.com/hashicorp/go-plugin v1.5.1 h1:oGm7cWBaYIp3lJpx1RUEfLWophprE2EV/KUeqBYo+6k=
-github.com/hashicorp/go-plugin v1.5.1/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4=
+github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
@@ -986,8 +960,8 @@ github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09
github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
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/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
+github.com/hashicorp/golang-lru v0.6.0 h1:uL2shRDx7RTrOrTCUZEGP/wJUFiUI8QT6E7z5o8jga4=
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=
@@ -1136,6 +1110,7 @@ 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/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
@@ -1163,8 +1138,6 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho=
-github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A=
-github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
@@ -1184,15 +1157,13 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA
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.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
-github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
-github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
-github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
@@ -1260,14 +1231,12 @@ github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJ
github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ=
-github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b h1:1XF24mVaiu7u+CFywTdcDo2ie1pzzhwjt6RHqzpMU34=
-github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho=
+github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
-github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs=
-github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ=
+github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
@@ -1368,6 +1337,7 @@ github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrap
github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
+github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU=
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 h1:LoCV5cscNVWyK5ChN/uCoIFJz8jZD63VQiGJIRgr6uo=
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386/go.mod h1:MRxHTJrf9FhdfNQ8Hdeh9gmHevC9RJE/fu8M3JIGjoE=
github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
@@ -1379,6 +1349,7 @@ 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/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA=
github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ=
+github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -1389,8 +1360,8 @@ github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6J
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk=
github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw=
-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/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
@@ -1450,9 +1421,10 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1
github.com/prometheus/prometheus v0.35.0/go.mod h1:7HaLx5kEPKJ0GDgbODG0fZgXbQ8K/XjZNJXQmbmgQlY=
github.com/prometheus/prometheus v0.37.0/go.mod h1:egARUgz+K93zwqsVIAneFlLZefyGOON44WyAp4Xqbbk=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
-github.com/pulumi/esc v0.6.0 h1:m8jWgBektlj26RvrN3/sM0r1lYiwTMmqVPvLxCxahGE=
-github.com/pulumi/pulumi/pkg/v3 v3.94.2 h1:b+gQ+EJZMYfSIu/sb/+p36VmfZ2ZJWbEWMsptt2f6Kk=
-github.com/pulumi/pulumi/sdk/v3 v3.94.2 h1:B8W3CCzA2fX/0730o/7KQXdmqrY5KdgGtiAA6rDMVlk=
+github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0=
+github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw=
+github.com/pulumi/pulumi/pkg/v3 v3.107.0 h1:HRyIl1c9ur0PVQW+GuFL1APBEuGa/fQQMp3F+WluxW8=
+github.com/pulumi/pulumi/sdk/v3 v3.107.0 h1:bef+ayh9+4KkAqXih4EjlHfQXRY24NWPwWBIQhBxTjg=
github.com/rakyll/embedmd v0.0.0-20171029212350-c8060a0752a2/go.mod h1:7jOTMgqac46PZcF54q6l2hkLEG8op93fZu61KmxWDV4=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
@@ -1512,8 +1484,7 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM=
-github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo=
+github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
@@ -1632,8 +1603,7 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t
github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs=
github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA=
github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
-github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA=
-github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
+github.com/zclconf/go-cty v1.14.2 h1:kTG7lqmBou0Zkx35r6HJHUQTvaRPr5bIAf3AoHS0izI=
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
@@ -1713,8 +1683,8 @@ go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
@@ -1730,8 +1700,8 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
-gocloud.dev v0.27.0 h1:j0WTUsnKTxCsWO7y8T+YCiBZUmLl9w/WIowqAY3yo0g=
gocloud.dev v0.27.0/go.mod h1:YlYKhYsY5/1JdHGWQDkAuqkezVKowu7qbe9aIeUF6p0=
+gocloud.dev v0.36.0 h1:q5zoXux4xkOZP473e1EZbG8Gq9f0vlg1VNH5Du/ybus=
gocloud.dev/secrets/hashivault v0.27.0 h1:AAeGJXr0tiHHJgg5tL8atOGktB4eK9EJAqkZbPKAcOo=
gocloud.dev/secrets/hashivault v0.27.0/go.mod h1:offqsI5oj0B0bVHZdfk/88uIb3NnN93ia8py0yvRlHY=
golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@@ -1764,14 +1734,12 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=
-golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
+golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
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=
@@ -1782,8 +1750,7 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
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/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
-golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
+golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -1895,12 +1862,10 @@ golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220802222814-0bcc04d9c69b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
-golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
-golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
-golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
+golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1926,8 +1891,7 @@ golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7Lm
golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
golang.org/x/oauth2 v0.0.0-20220628200809-02e64fa58f26/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
golang.org/x/oauth2 v0.0.0-20220722155238-128564f6959c/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
-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/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ=
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=
@@ -2093,19 +2057,16 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
-golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8=
-golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww=
+golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE=
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=
@@ -2133,8 +2094,7 @@ golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxb
golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
-golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.4.0 h1:Z81tqI5ddIoXDPvVQ7/7CC9TnLM7ubaFG2qXYd5BbYY=
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
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=
@@ -2219,8 +2179,7 @@ golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E
golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8=
-golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk=
+golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM=
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -2230,8 +2189,7 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-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=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
@@ -2280,8 +2238,7 @@ google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6F
google.golang.org/api v0.86.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=
google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=
google.golang.org/api v0.91.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=
-google.golang.org/api v0.126.0 h1:q4GJq+cAdMAC7XP7njvQ4tvohGLiSlytuL4BQxbIZ+o=
-google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw=
+google.golang.org/api v0.151.0 h1:FhfXLO/NFdJIzQtCqjpysWwqKk8AzGWBUhMIx67cVDU=
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.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -2289,8 +2246,8 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
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 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk=
google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
@@ -2391,12 +2348,9 @@ google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljW
google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/genproto v0.0.0-20220802133213-ce4fa296bf78/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc=
-google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e h1:xIXmWJ303kJCuogpj0bHq+dcjcZHU+XFyc1I0Yl9cRg=
-google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:0ggbjUrZYpy1q+ANUS30SEoGZ53cdfwtbuG7Ptgy108=
-google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130 h1:XVeBY8d/FaK4848myy41HBqnDwvxeV3zMZhwN1TvAMU=
-google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 h1:2FZP5XuJY9zQyGM5N0rtovnoXjiMUEIUMvw0m9wlpLc=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o=
+google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg=
+google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I=
google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
@@ -2440,8 +2394,7 @@ google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu
google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
-google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg=
-google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
+google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
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=
@@ -2458,8 +2411,7 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
-google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -2597,5 +2549,3 @@ sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
-sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 h1:hfyJ5ku9yFtLVOiSxa3IN+dx5eBQT9mPmKFypAmg8XM=
-sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
diff --git a/go.work.sum b/go.work.sum
index 64e498aa..22bb0ab8 100644
--- a/go.work.sum
+++ b/go.work.sum
@@ -1,237 +1,366 @@
bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512 h1:SRsZGA7aFnCZETmov57jwPrWuTmaZK6+4R4v5FUe1/c=
cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw=
+cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk=
cloud.google.com/go/accessapproval v1.7.1 h1:/5YjNhR6lzCvmJZAnByYkfEgWjfAKwYP6nkuTk6nKFE=
cloud.google.com/go/accessapproval v1.7.1/go.mod h1:JYczztsHRMK7NTXb6Xw+dwbs/WnOJxbo/2mTI+Kgg68=
+cloud.google.com/go/accessapproval v1.7.4/go.mod h1:/aTEh45LzplQgFYdQdwPMR9YdX0UlhBmvB84uAmQKUc=
cloud.google.com/go/accesscontextmanager v1.8.1 h1:WIAt9lW9AXtqw/bnvrEUaE8VG/7bAAeMzRCBGMkc4+w=
cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo=
+cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M=
cloud.google.com/go/aiplatform v1.45.0 h1:FLTOQdXDqigyOPYrGGE5AiTpDyRROIZrPU1eXfKzKTY=
cloud.google.com/go/aiplatform v1.45.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA=
+cloud.google.com/go/aiplatform v1.52.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU=
+cloud.google.com/go/aiplatform v1.54.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU=
cloud.google.com/go/analytics v0.21.2 h1:T400N/hkELka6OsgK20JYoit0xvKnZtWoe36ft4wGBs=
cloud.google.com/go/analytics v0.21.2/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo=
+cloud.google.com/go/analytics v0.21.6/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w=
cloud.google.com/go/apigateway v1.6.1 h1:aBSwCQPcp9rZ0zVEUeJbR623palnqtvxJlUyvzsKGQc=
cloud.google.com/go/apigateway v1.6.1/go.mod h1:ufAS3wpbRjqfZrzpvLC2oh0MFlpRJm2E/ts25yyqmXA=
+cloud.google.com/go/apigateway v1.6.4/go.mod h1:0EpJlVGH5HwAN4VF4Iec8TAzGN1aQgbxAWGJsnPCGGY=
cloud.google.com/go/apigeeconnect v1.6.1 h1:6u/jj0P2c3Mcm+H9qLsXI7gYcTiG9ueyQL3n6vCmFJM=
cloud.google.com/go/apigeeconnect v1.6.1/go.mod h1:C4awq7x0JpLtrlQCr8AzVIzAaYgngRqWf9S5Uhg+wWs=
+cloud.google.com/go/apigeeconnect v1.6.4/go.mod h1:CapQCWZ8TCjnU0d7PobxhpOdVz/OVJ2Hr/Zcuu1xFx0=
cloud.google.com/go/apigeeregistry v0.7.1 h1:hgq0ANLDx7t2FDZDJQrCMtCtddR/pjCqVuvQWGrQbXw=
cloud.google.com/go/apigeeregistry v0.7.1/go.mod h1:1XgyjZye4Mqtw7T9TsY4NW10U7BojBvG4RMD+vRDrIw=
+cloud.google.com/go/apigeeregistry v0.8.2/go.mod h1:h4v11TDGdeXJDJvImtgK2AFVvMIgGWjSb0HRnBSjcX8=
cloud.google.com/go/apikeys v0.6.0 h1:B9CdHFZTFjVti89tmyXXrO+7vSNo2jvZuHG8zD5trdQ=
cloud.google.com/go/appengine v1.8.1 h1:J+aaUZ6IbTpBegXbmEsh8qZZy864ZVnOoWyfa1XSNbI=
cloud.google.com/go/appengine v1.8.1/go.mod h1:6NJXGLVhZCN9aQ/AEDvmfzKEfoYBlfB80/BHiKVputY=
+cloud.google.com/go/appengine v1.8.4/go.mod h1:TZ24v+wXBujtkK77CXCpjZbnuTvsFNT41MUaZ28D6vg=
cloud.google.com/go/area120 v0.8.1 h1:wiOq3KDpdqXmaHzvZwKdpoM+3lDcqsI2Lwhyac7stss=
cloud.google.com/go/area120 v0.8.1/go.mod h1:BVfZpGpB7KFVNxPiQBuHkX6Ed0rS51xIgmGyjrAfzsg=
+cloud.google.com/go/area120 v0.8.4/go.mod h1:jfawXjxf29wyBXr48+W+GyX/f8fflxp642D/bb9v68M=
cloud.google.com/go/artifactregistry v1.14.1 h1:k6hNqab2CubhWlGcSzunJ7kfxC7UzpAfQ1UPb9PDCKI=
cloud.google.com/go/artifactregistry v1.14.1/go.mod h1:nxVdG19jTaSTu7yA7+VbWL346r3rIdkZ142BSQqhn5E=
+cloud.google.com/go/artifactregistry v1.14.6/go.mod h1:np9LSFotNWHcjnOgh8UVK0RFPCTUGbO0ve3384xyHfE=
cloud.google.com/go/asset v1.14.1 h1:vlHdznX70eYW4V1y1PxocvF6tEwxJTTarwIGwOhFF3U=
cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ=
+cloud.google.com/go/asset v1.15.3/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU=
cloud.google.com/go/assuredworkloads v1.11.1 h1:yaO0kwS+SnhVSTF7BqTyVGt3DTocI6Jqo+S3hHmCwNk=
cloud.google.com/go/assuredworkloads v1.11.1/go.mod h1:+F04I52Pgn5nmPG36CWFtxmav6+7Q+c5QyJoL18Lry0=
+cloud.google.com/go/assuredworkloads v1.11.4/go.mod h1:4pwwGNwy1RP0m+y12ef3Q/8PaiWrIDQ6nD2E8kvWI9U=
cloud.google.com/go/automl v1.13.1 h1:iP9iQurb0qbz+YOOMfKSEjhONA/WcoOIjt6/m+6pIgo=
cloud.google.com/go/automl v1.13.1/go.mod h1:1aowgAHWYZU27MybSCFiukPO7xnyawv7pt3zK4bheQE=
+cloud.google.com/go/automl v1.13.4/go.mod h1:ULqwX/OLZ4hBVfKQaMtxMSTlPx0GqGbWN8uA/1EqCP8=
cloud.google.com/go/baremetalsolution v1.1.1 h1:0Ge9PQAy6cZ1tRrkc44UVgYV15nw2TVnzJzYsMHXF+E=
cloud.google.com/go/baremetalsolution v1.1.1/go.mod h1:D1AV6xwOksJMV4OSlWHtWuFNZZYujJknMAP4Qa27QIA=
+cloud.google.com/go/baremetalsolution v1.2.3/go.mod h1:/UAQ5xG3faDdy180rCUv47e0jvpp3BFxT+Cl0PFjw5g=
cloud.google.com/go/batch v1.3.1 h1:uE0Q//W7FOGPjf7nuPiP0zoE8wOT3ngoIO2HIet0ilY=
cloud.google.com/go/batch v1.3.1/go.mod h1:VguXeQKXIYaeeIYbuozUmBR13AfL4SJP7IltNPS+A4A=
+cloud.google.com/go/batch v1.6.3/go.mod h1:J64gD4vsNSA2O5TtDB5AAux3nJ9iV8U3ilg3JDBYejU=
cloud.google.com/go/beyondcorp v1.0.0 h1:VPg+fZXULQjs8LiMeWdLaB5oe8G9sEoZ0I0j6IMiG1Q=
cloud.google.com/go/beyondcorp v1.0.0/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4=
+cloud.google.com/go/beyondcorp v1.0.3/go.mod h1:HcBvnEd7eYr+HGDd5ZbuVmBYX019C6CEXBonXbCVwJo=
cloud.google.com/go/bigquery v1.52.0 h1:JKLNdxI0N+TIUWD6t9KN646X27N5dQWq9dZbbTWZ8hc=
cloud.google.com/go/bigquery v1.52.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4=
+cloud.google.com/go/bigquery v1.57.1/go.mod h1:iYzC0tGVWt1jqSzBHqCr3lrRn0u13E8e+AqowBsDgug=
cloud.google.com/go/billing v1.16.0 h1:1iktEAIZ2uA6KpebC235zi/rCXDdDYQ0bTXTNetSL80=
cloud.google.com/go/billing v1.16.0/go.mod h1:y8vx09JSSJG02k5QxbycNRrN7FGZB6F3CAcgum7jvGA=
+cloud.google.com/go/billing v1.17.4/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk=
cloud.google.com/go/binaryauthorization v1.6.1 h1:cAkOhf1ic92zEN4U1zRoSupTmwmxHfklcp1X7CCBKvE=
cloud.google.com/go/binaryauthorization v1.6.1/go.mod h1:TKt4pa8xhowwffiBmbrbcxijJRZED4zrqnwZ1lKH51U=
+cloud.google.com/go/binaryauthorization v1.7.3/go.mod h1:VQ/nUGRKhrStlGr+8GMS8f6/vznYLkdK5vaKfdCIpvU=
cloud.google.com/go/certificatemanager v1.7.1 h1:uKsohpE0hiobx1Eak9jNcPCznwfB6gvyQCcS28Ah9E8=
cloud.google.com/go/certificatemanager v1.7.1/go.mod h1:iW8J3nG6SaRYImIa+wXQ0g8IgoofDFRp5UMzaNk1UqI=
+cloud.google.com/go/certificatemanager v1.7.4/go.mod h1:FHAylPe/6IIKuaRmHbjbdLhGhVQ+CWHSD5Jq0k4+cCE=
cloud.google.com/go/channel v1.16.0 h1:dqRkK2k7Ll/HHeYGxv18RrfhozNxuTJRkspW0iaFZoY=
cloud.google.com/go/channel v1.16.0/go.mod h1:eN/q1PFSl5gyu0dYdmxNXscY/4Fi7ABmeHCJNf/oHmc=
+cloud.google.com/go/channel v1.17.3/go.mod h1:QcEBuZLGGrUMm7kNj9IbU1ZfmJq2apotsV83hbxX7eE=
cloud.google.com/go/cloudbuild v1.10.1 h1:N6Tl7Xhi0+GWGdt0i2WwaLZKgKeGP4m9A/cERzZcU5k=
cloud.google.com/go/cloudbuild v1.10.1/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU=
+cloud.google.com/go/cloudbuild v1.14.3/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM=
+cloud.google.com/go/cloudbuild v1.15.0/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM=
cloud.google.com/go/clouddms v1.6.1 h1:rjR1nV6oVf2aNNB7B5uz1PDIlBjlOiBgR+q5n7bbB7M=
cloud.google.com/go/clouddms v1.6.1/go.mod h1:Ygo1vL52Ov4TBZQquhz5fiw2CQ58gvu+PlS6PVXCpZI=
+cloud.google.com/go/clouddms v1.7.3/go.mod h1:fkN2HQQNUYInAU3NQ3vRLkV2iWs8lIdmBKOx4nrL6Hc=
cloud.google.com/go/cloudtasks v1.11.1 h1:zyF35LjQyVQQnWbglmVDbsgOHqkbkaxTeRDisEJsXtE=
cloud.google.com/go/cloudtasks v1.11.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM=
+cloud.google.com/go/cloudtasks v1.12.4/go.mod h1:BEPu0Gtt2dU6FxZHNqqNdGqIG86qyWKBPGnsb7udGY0=
cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI=
+cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM=
+cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78=
cloud.google.com/go/contactcenterinsights v1.9.1 h1:hy4L0bc3fQNZZrhPjuoH62RiisD5B71/S1OZNunsTRk=
cloud.google.com/go/contactcenterinsights v1.9.1/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM=
+cloud.google.com/go/contactcenterinsights v1.11.3/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis=
+cloud.google.com/go/contactcenterinsights v1.12.0/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis=
cloud.google.com/go/container v1.22.1 h1:WKBegIfJJc+CL2PIgNpQuvLgGW/CoGJjge5Yjpc0YuU=
cloud.google.com/go/container v1.22.1/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4=
+cloud.google.com/go/container v1.27.1/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4=
+cloud.google.com/go/container v1.28.0/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4=
cloud.google.com/go/containeranalysis v0.10.1 h1:SM/ibWHWp4TYyJMwrILtcBtYKObyupwOVeceI9pNblw=
cloud.google.com/go/containeranalysis v0.10.1/go.mod h1:Ya2jiILITMY68ZLPaogjmOMNkwsDrWBSTyBubGXO7j0=
+cloud.google.com/go/containeranalysis v0.11.3/go.mod h1:kMeST7yWFQMGjiG9K7Eov+fPNQcGhb8mXj/UcTiWw9U=
cloud.google.com/go/datacatalog v1.14.1 h1:cFPBt8V5V2T3mu/96tc4nhcMB+5cYcpwjBfn79bZDI8=
cloud.google.com/go/datacatalog v1.14.1/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4=
+cloud.google.com/go/datacatalog v1.18.3/go.mod h1:5FR6ZIF8RZrtml0VUao22FxhdjkoG+a0866rEnObryM=
+cloud.google.com/go/datacatalog v1.19.0/go.mod h1:5FR6ZIF8RZrtml0VUao22FxhdjkoG+a0866rEnObryM=
cloud.google.com/go/dataflow v0.9.1 h1:VzG2tqsk/HbmOtq/XSfdF4cBvUWRK+S+oL9k4eWkENQ=
cloud.google.com/go/dataflow v0.9.1/go.mod h1:Wp7s32QjYuQDWqJPFFlnBKhkAtiFpMTdg00qGbnIHVw=
+cloud.google.com/go/dataflow v0.9.4/go.mod h1:4G8vAkHYCSzU8b/kmsoR2lWyHJD85oMJPHMtan40K8w=
cloud.google.com/go/dataform v0.8.1 h1:xcWso0hKOoxeW72AjBSIp/UfkvpqHNzzS0/oygHlcqY=
cloud.google.com/go/dataform v0.8.1/go.mod h1:3BhPSiw8xmppbgzeBbmDvmSWlwouuJkXsXsb8UBih9M=
+cloud.google.com/go/dataform v0.9.1/go.mod h1:pWTg+zGQ7i16pyn0bS1ruqIE91SdL2FDMvEYu/8oQxs=
cloud.google.com/go/datafusion v1.7.1 h1:eX9CZoyhKQW6g1Xj7+RONeDj1mV8KQDKEB9KLELX9/8=
cloud.google.com/go/datafusion v1.7.1/go.mod h1:KpoTBbFmoToDExJUso/fcCiguGDk7MEzOWXUsJo0wsI=
+cloud.google.com/go/datafusion v1.7.4/go.mod h1:BBs78WTOLYkT4GVZIXQCZT3GFpkpDN4aBY4NDX/jVlM=
cloud.google.com/go/datalabeling v0.8.1 h1:zxsCD/BLKXhNuRssen8lVXChUj8VxF3ofN06JfdWOXw=
cloud.google.com/go/datalabeling v0.8.1/go.mod h1:XS62LBSVPbYR54GfYQsPXZjTW8UxCK2fkDciSrpRFdY=
+cloud.google.com/go/datalabeling v0.8.4/go.mod h1:Z1z3E6LHtffBGrNUkKwbwbDxTiXEApLzIgmymj8A3S8=
cloud.google.com/go/dataplex v1.8.1 h1:RvUH/k3Qi5AOXUAmQVsNCcND9qwJJq3biMSPngO0TQY=
cloud.google.com/go/dataplex v1.8.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE=
+cloud.google.com/go/dataplex v1.11.1/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c=
+cloud.google.com/go/dataplex v1.11.2/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c=
cloud.google.com/go/dataproc v1.12.0 h1:W47qHL3W4BPkAIbk4SWmIERwsWBaNnWm0P2sdx3YgGU=
+cloud.google.com/go/dataproc/v2 v2.2.3/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY=
+cloud.google.com/go/dataproc/v2 v2.3.0/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY=
cloud.google.com/go/dataqna v0.8.1 h1:ITpUJep04hC9V7C+gcK390HO++xesQFSUJ7S4nSnF3U=
cloud.google.com/go/dataqna v0.8.1/go.mod h1:zxZM0Bl6liMePWsHA8RMGAfmTG34vJMapbHAxQ5+WA8=
+cloud.google.com/go/dataqna v0.8.4/go.mod h1:mySRKjKg5Lz784P6sCov3p1QD+RZQONRMRjzGNcFd0c=
cloud.google.com/go/datastore v1.12.1 h1:i8HMKsqg/Sl3ZlOTGl471Z8j2uKtbRDT9VXJUIVlMik=
cloud.google.com/go/datastore v1.12.1/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70=
+cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8=
cloud.google.com/go/datastream v1.9.1 h1:BxAt9Tvi1hoEqI4fvyXh/Oc8vd7b5aCZb3bzewh8Dvg=
cloud.google.com/go/datastream v1.9.1/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q=
+cloud.google.com/go/datastream v1.10.3/go.mod h1:YR0USzgjhqA/Id0Ycu1VvZe8hEWwrkjuXrGbzeDOSEA=
cloud.google.com/go/deploy v1.11.0 h1:rp+Sf2bWuqJYBuygQl6diFAdvlR8kklhD+stDvyl1zM=
cloud.google.com/go/deploy v1.11.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g=
+cloud.google.com/go/deploy v1.14.2/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g=
+cloud.google.com/go/deploy v1.15.0/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g=
cloud.google.com/go/dialogflow v1.38.0 h1:kP0t9SX0w3Fbs1q36mSZ3GQuyOgauVhdNXw0wK4cmOI=
cloud.google.com/go/dialogflow v1.38.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4=
+cloud.google.com/go/dialogflow v1.44.3/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ=
cloud.google.com/go/dlp v1.10.1 h1:tF3wsJ2QulRhRLWPzWVkeDz3FkOGVoMl6cmDUHtfYxw=
cloud.google.com/go/dlp v1.10.1/go.mod h1:IM8BWz1iJd8njcNcG0+Kyd9OPnqnRNkDV8j42VT5KOI=
+cloud.google.com/go/dlp v1.11.1/go.mod h1:/PA2EnioBeXTL/0hInwgj0rfsQb3lpE3R8XUJxqUNKI=
cloud.google.com/go/documentai v1.20.0 h1:DK9nDulPQgdy3pJIYjMIRrFSAe/Ch3TpfHVn83aV/Gk=
cloud.google.com/go/documentai v1.20.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E=
+cloud.google.com/go/documentai v1.23.5/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g=
cloud.google.com/go/domains v0.9.1 h1:rqz6KY7mEg7Zs/69U6m6LMbB7PxFDWmT3QWNXIqhHm0=
cloud.google.com/go/domains v0.9.1/go.mod h1:aOp1c0MbejQQ2Pjf1iJvnVyT+z6R6s8pX66KaCSDYfE=
+cloud.google.com/go/domains v0.9.4/go.mod h1:27jmJGShuXYdUNjyDG0SodTfT5RwLi7xmH334Gvi3fY=
cloud.google.com/go/edgecontainer v1.1.1 h1:zhHWnLzg6AqzE+I3gzJqiIwHfjEBhWctNQEzqb+FaRo=
cloud.google.com/go/edgecontainer v1.1.1/go.mod h1:O5bYcS//7MELQZs3+7mabRqoWQhXCzenBu0R8bz2rwk=
+cloud.google.com/go/edgecontainer v1.1.4/go.mod h1:AvFdVuZuVGdgaE5YvlL1faAoa1ndRR/5XhXZvPBHbsE=
cloud.google.com/go/errorreporting v0.3.0 h1:kj1XEWMu8P0qlLhm3FwcaFsUvXChV/OraZwA70trRR0=
cloud.google.com/go/essentialcontacts v1.6.2 h1:OEJ0MLXXCW/tX1fkxzEZOsv/wRfyFsvDVNaHWBAvoV0=
cloud.google.com/go/essentialcontacts v1.6.2/go.mod h1:T2tB6tX+TRak7i88Fb2N9Ok3PvY3UNbUsMag9/BARh4=
+cloud.google.com/go/essentialcontacts v1.6.5/go.mod h1:jjYbPzw0x+yglXC890l6ECJWdYeZ5dlYACTFL0U/VuM=
cloud.google.com/go/eventarc v1.12.1 h1:8ZAkv7MTnAhix5kSw+Cm/xVzG8+OhC+flZGL9iRdpQA=
cloud.google.com/go/eventarc v1.12.1/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI=
+cloud.google.com/go/eventarc v1.13.3/go.mod h1:RWH10IAZIRcj1s/vClXkBgMHwh59ts7hSWcqD3kaclg=
cloud.google.com/go/filestore v1.7.1 h1:Eiz8xZzMJc5ppBWkuaod/PUdUZGCFR8ku0uS+Ah2fRw=
cloud.google.com/go/filestore v1.7.1/go.mod h1:y10jsorq40JJnjR/lQ8AfFbbcGlw3g+Dp8oN7i7FjV4=
+cloud.google.com/go/filestore v1.7.4/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI=
+cloud.google.com/go/filestore v1.8.0/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI=
cloud.google.com/go/firestore v1.11.0 h1:PPgtwcYUOXV2jFe1bV3nda3RCrOa8cvBjTOn2MQVfW8=
cloud.google.com/go/firestore v1.11.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4=
+cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ=
cloud.google.com/go/functions v1.15.1 h1:LtAyqvO1TFmNLcROzHZhV0agEJfBi+zfMZsF4RT/a7U=
cloud.google.com/go/functions v1.15.1/go.mod h1:P5yNWUTkyU+LvW/S9O6V+V423VZooALQlqoXdoPz5AE=
+cloud.google.com/go/functions v1.15.4/go.mod h1:CAsTc3VlRMVvx+XqXxKqVevguqJpnVip4DdonFsX28I=
cloud.google.com/go/gaming v1.9.0 h1:7vEhFnZmd931Mo7sZ6pJy7uQPDxF7m7v8xtBheG08tc=
cloud.google.com/go/gkebackup v1.3.0 h1:lgyrpdhtJKV7l1GM15YFt+OCyHMxsQZuSydyNmS0Pxo=
cloud.google.com/go/gkebackup v1.3.0/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU=
+cloud.google.com/go/gkebackup v1.3.4/go.mod h1:gLVlbM8h/nHIs09ns1qx3q3eaXcGSELgNu1DWXYz1HI=
cloud.google.com/go/gkeconnect v0.8.1 h1:a1ckRvVznnuvDWESM2zZDzSVFvggeBaVY5+BVB8tbT0=
cloud.google.com/go/gkeconnect v0.8.1/go.mod h1:KWiK1g9sDLZqhxB2xEuPV8V9NYzrqTUmQR9shJHpOZw=
+cloud.google.com/go/gkeconnect v0.8.4/go.mod h1:84hZz4UMlDCKl8ifVW8layK4WHlMAFeq8vbzjU0yJkw=
cloud.google.com/go/gkehub v0.14.1 h1:2BLSb8i+Co1P05IYCKATXy5yaaIw/ZqGvVSBTLdzCQo=
cloud.google.com/go/gkehub v0.14.1/go.mod h1:VEXKIJZ2avzrbd7u+zeMtW00Y8ddk/4V9511C9CQGTY=
+cloud.google.com/go/gkehub v0.14.4/go.mod h1:Xispfu2MqnnFt8rV/2/3o73SK1snL8s9dYJ9G2oQMfc=
cloud.google.com/go/gkemulticloud v0.6.1 h1:vg81EW3GQ4RO4PT1MdNHE8aF87EiohZp/WwMWfUTTR0=
cloud.google.com/go/gkemulticloud v0.6.1/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw=
+cloud.google.com/go/gkemulticloud v1.0.3/go.mod h1:7NpJBN94U6DY1xHIbsDqB2+TFZUfjLUKLjUX8NGLor0=
cloud.google.com/go/grafeas v0.3.0 h1:oyTL/KjiUeBs9eYLw/40cpSZglUC+0F7X4iu/8t7NWs=
cloud.google.com/go/grafeas v0.3.0/go.mod h1:P7hgN24EyONOTMyeJH6DxG4zD7fwiYa5Q6GUgyFSOU8=
cloud.google.com/go/gsuiteaddons v1.6.1 h1:mi9jxZpzVjLQibTS/XfPZvl+Jr6D5Bs8pGqUjllRb00=
cloud.google.com/go/gsuiteaddons v1.6.1/go.mod h1:CodrdOqRZcLp5WOwejHWYBjZvfY0kOphkAKpF/3qdZY=
+cloud.google.com/go/gsuiteaddons v1.6.4/go.mod h1:rxtstw7Fx22uLOXBpsvb9DUbC+fiXs7rF4U29KHM/pE=
+cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk=
+cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE=
cloud.google.com/go/iap v1.8.1 h1:X1tcp+EoJ/LGX6cUPt3W2D4H2Kbqq0pLAsldnsCjLlE=
cloud.google.com/go/iap v1.8.1/go.mod h1:sJCbeqg3mvWLqjZNsI6dfAtbbV1DL2Rl7e1mTyXYREQ=
+cloud.google.com/go/iap v1.9.3/go.mod h1:DTdutSZBqkkOm2HEOTBzhZxh2mwwxshfD/h3yofAiCw=
cloud.google.com/go/ids v1.4.1 h1:khXYmSoDDhWGEVxHl4c4IgbwSRR+qE/L4hzP3vaU9Hc=
cloud.google.com/go/ids v1.4.1/go.mod h1:np41ed8YMU8zOgv53MMMoCntLTn2lF+SUzlM+O3u/jw=
+cloud.google.com/go/ids v1.4.4/go.mod h1:z+WUc2eEl6S/1aZWzwtVNWoSZslgzPxAboS0lZX0HjI=
cloud.google.com/go/iot v1.7.1 h1:yrH0OSmicD5bqGBoMlWG8UltzdLkYzNUwNVUVz7OT54=
cloud.google.com/go/iot v1.7.1/go.mod h1:46Mgw7ev1k9KqK1ao0ayW9h0lI+3hxeanz+L1zmbbbk=
+cloud.google.com/go/iot v1.7.4/go.mod h1:3TWqDVvsddYBG++nHSZmluoCAVGr1hAcabbWZNKEZLk=
cloud.google.com/go/language v1.10.1 h1:3MXeGEv8AlX+O2LyV4pO4NGpodanc26AmXwOuipEym0=
cloud.google.com/go/language v1.10.1/go.mod h1:CPp94nsdVNiQEt1CNjF5WkTcisLiHPyIbMhvR8H2AW0=
+cloud.google.com/go/language v1.12.2/go.mod h1:9idWapzr/JKXBBQ4lWqVX/hcadxB194ry20m/bTrhWc=
cloud.google.com/go/lifesciences v0.9.1 h1:axkANGx1wiBXHiPcJZAE+TDjjYoJRIDzbHC/WYllCBU=
cloud.google.com/go/lifesciences v0.9.1/go.mod h1:hACAOd1fFbCGLr/+weUKRAJas82Y4vrL3O5326N//Wc=
+cloud.google.com/go/lifesciences v0.9.4/go.mod h1:bhm64duKhMi7s9jR9WYJYvjAFJwRqNj+Nia7hF0Z7JA=
cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc=
+cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs=
cloud.google.com/go/managedidentities v1.6.1 h1:2/qZuOeLgUHorSdxSQGtnOu9xQkBn37+j+oZQv/KHJY=
cloud.google.com/go/managedidentities v1.6.1/go.mod h1:h/irGhTN2SkZ64F43tfGPMbHnypMbu4RB3yl8YcuEak=
+cloud.google.com/go/managedidentities v1.6.4/go.mod h1:WgyaECfHmF00t/1Uk8Oun3CQ2PGUtjc3e9Alh79wyiM=
cloud.google.com/go/maps v1.3.0 h1:m4BlGu0qnPwuq5aToT3atcVckS+hf40jsRXveJhusJI=
cloud.google.com/go/maps v1.3.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s=
+cloud.google.com/go/maps v1.6.1/go.mod h1:4+buOHhYXFBp58Zj/K+Lc1rCmJssxxF4pJ5CJnhdz18=
cloud.google.com/go/mediatranslation v0.8.1 h1:50cF7c1l3BanfKrpnTCaTvhf+Fo6kdF21DG0byG7gYU=
cloud.google.com/go/mediatranslation v0.8.1/go.mod h1:L/7hBdEYbYHQJhX2sldtTO5SZZ1C1vkapubj0T2aGig=
+cloud.google.com/go/mediatranslation v0.8.4/go.mod h1:9WstgtNVAdN53m6TQa5GjIjLqKQPXe74hwSCxUP6nj4=
cloud.google.com/go/memcache v1.10.1 h1:7lkLsF0QF+Mre0O/NvkD9Q5utUNwtzvIYjrOLOs0HO0=
cloud.google.com/go/memcache v1.10.1/go.mod h1:47YRQIarv4I3QS5+hoETgKO40InqzLP6kpNLvyXuyaA=
+cloud.google.com/go/memcache v1.10.4/go.mod h1:v/d8PuC8d1gD6Yn5+I3INzLR01IDn0N4Ym56RgikSI0=
cloud.google.com/go/metastore v1.11.1 h1:sF2yYgo2P4b3hJP2LlIZoafZixtabF/fnORDDMkFeqQ=
cloud.google.com/go/metastore v1.11.1/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA=
+cloud.google.com/go/metastore v1.13.3/go.mod h1:K+wdjXdtkdk7AQg4+sXS8bRrQa9gcOr+foOMF2tqINE=
cloud.google.com/go/monitoring v1.15.1 h1:65JhLMd+JiYnXr6j5Z63dUYCuOg770p8a/VC+gil/58=
cloud.google.com/go/monitoring v1.15.1/go.mod h1:lADlSAlFdbqQuwwpaImhsJXu1QSdd3ojypXrFSMr2rM=
+cloud.google.com/go/monitoring v1.16.3/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw=
cloud.google.com/go/networkconnectivity v1.12.1 h1:LnrYM6lBEeTq+9f2lR4DjBhv31EROSAQi/P5W4Q0AEc=
cloud.google.com/go/networkconnectivity v1.12.1/go.mod h1:PelxSWYM7Sh9/guf8CFhi6vIqf19Ir/sbfZRUwXh92E=
+cloud.google.com/go/networkconnectivity v1.14.3/go.mod h1:4aoeFdrJpYEXNvrnfyD5kIzs8YtHg945Og4koAjHQek=
cloud.google.com/go/networkmanagement v1.8.0 h1:/3xP37eMxnyvkfLrsm1nv1b2FbMMSAEAOlECTvoeCq4=
cloud.google.com/go/networkmanagement v1.8.0/go.mod h1:Ho/BUGmtyEqrttTgWEe7m+8vDdK74ibQc+Be0q7Fof0=
+cloud.google.com/go/networkmanagement v1.9.3/go.mod h1:y7WMO1bRLaP5h3Obm4tey+NquUvB93Co1oh4wpL+XcU=
cloud.google.com/go/networksecurity v0.9.1 h1:TBLEkMp3AE+6IV/wbIGRNTxnqLXHCTEQWoxRVC18TzY=
cloud.google.com/go/networksecurity v0.9.1/go.mod h1:MCMdxOKQ30wsBI1eI659f9kEp4wuuAueoC9AJKSPWZQ=
+cloud.google.com/go/networksecurity v0.9.4/go.mod h1:E9CeMZ2zDsNBkr8axKSYm8XyTqNhiCHf1JO/Vb8mD1w=
cloud.google.com/go/notebooks v1.9.1 h1:CUqMNEtv4EHFnbogV+yGHQH5iAQLmijOx191innpOcs=
cloud.google.com/go/notebooks v1.9.1/go.mod h1:zqG9/gk05JrzgBt4ghLzEepPHNwE5jgPcHZRKhlC1A8=
+cloud.google.com/go/notebooks v1.11.2/go.mod h1:z0tlHI/lREXC8BS2mIsUeR3agM1AkgLiS+Isov3SS70=
cloud.google.com/go/optimization v1.4.1 h1:pEwOAmO00mxdbesCRSsfj8Sd4rKY9kBrYW7Vd3Pq7cA=
cloud.google.com/go/optimization v1.4.1/go.mod h1:j64vZQP7h9bO49m2rVaTVoNM0vEBEN5eKPUPbZyXOrk=
+cloud.google.com/go/optimization v1.6.2/go.mod h1:mWNZ7B9/EyMCcwNl1frUGEuY6CPijSkz88Fz2vwKPOY=
cloud.google.com/go/orchestration v1.8.1 h1:KmN18kE/xa1n91cM5jhCh7s1/UfIguSCisw7nTMUzgE=
cloud.google.com/go/orchestration v1.8.1/go.mod h1:4sluRF3wgbYVRqz7zJ1/EUNc90TTprliq9477fGobD8=
+cloud.google.com/go/orchestration v1.8.4/go.mod h1:d0lywZSVYtIoSZXb0iFjv9SaL13PGyVOKDxqGxEf/qI=
cloud.google.com/go/orgpolicy v1.11.1 h1:I/7dHICQkNwym9erHqmlb50LRU588NPCvkfIY0Bx9jI=
cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE=
+cloud.google.com/go/orgpolicy v1.11.4/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI=
cloud.google.com/go/osconfig v1.12.1 h1:dgyEHdfqML6cUW6/MkihNdTVc0INQst0qSE8Ou1ub9c=
cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE=
+cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA=
cloud.google.com/go/oslogin v1.10.1 h1:LdSuG3xBYu2Sgr3jTUULL1XCl5QBx6xwzGqzoDUw1j0=
cloud.google.com/go/oslogin v1.10.1/go.mod h1:x692z7yAue5nE7CsSnoG0aaMbNoRJRXO4sn73R+ZqAs=
+cloud.google.com/go/oslogin v1.12.2/go.mod h1:CQ3V8Jvw4Qo4WRhNPF0o+HAM4DiLuE27Ul9CX9g2QdY=
cloud.google.com/go/phishingprotection v0.8.1 h1:aK/lNmSd1vtbft/vLe2g7edXK72sIQbqr2QyrZN/iME=
cloud.google.com/go/phishingprotection v0.8.1/go.mod h1:AxonW7GovcA8qdEk13NfHq9hNx5KPtfxXNeUxTDxB6I=
+cloud.google.com/go/phishingprotection v0.8.4/go.mod h1:6b3kNPAc2AQ6jZfFHioZKg9MQNybDg4ixFd4RPZZ2nE=
cloud.google.com/go/policytroubleshooter v1.7.1 h1:AZ2n6dw6OnYpDZAUk6WK1drupzTWNMRk/uatXEIDAsU=
cloud.google.com/go/policytroubleshooter v1.7.1/go.mod h1:0NaT5v3Ag1M7U5r0GfDCpUFkWd9YqpubBWsQlhanRv0=
+cloud.google.com/go/policytroubleshooter v1.10.2/go.mod h1:m4uF3f6LseVEnMV6nknlN2vYGRb+75ylQwJdnOXfnv0=
cloud.google.com/go/privatecatalog v0.9.1 h1:B/18xGo+E0EMS9LOEQ0zXz7F2asMgmVgTYGSI89MHOA=
cloud.google.com/go/privatecatalog v0.9.1/go.mod h1:0XlDXW2unJXdf9zFz968Hp35gl/bhF4twwpXZAW50JA=
+cloud.google.com/go/privatecatalog v0.9.4/go.mod h1:SOjm93f+5hp/U3PqMZAHTtBtluqLygrDrVO8X8tYtG0=
cloud.google.com/go/pubsub v1.32.0 h1:JOEkgEYBuUTHSyHS4TcqOFuWr+vD6qO/imsFqShUCp4=
cloud.google.com/go/pubsub v1.32.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc=
+cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc=
cloud.google.com/go/pubsublite v1.8.1 h1:pX+idpWMIH30/K7c0epN6V703xpIcMXWRjKJsz0tYGY=
cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0=
cloud.google.com/go/recaptchaenterprise v1.3.1 h1:u6EznTGzIdsyOsvm+Xkw0aSuKFXQlyjGE9a4exk6iNQ=
cloud.google.com/go/recaptchaenterprise/v2 v2.7.2 h1:IGkbudobsTXAwmkEYOzPCQPApUCsN4Gbq3ndGVhHQpI=
cloud.google.com/go/recaptchaenterprise/v2 v2.7.2/go.mod h1:kR0KjsJS7Jt1YSyWFkseQ756D45kaYNTlDPPaRAvDBU=
+cloud.google.com/go/recaptchaenterprise/v2 v2.8.3/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w=
+cloud.google.com/go/recaptchaenterprise/v2 v2.8.4/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w=
cloud.google.com/go/recommendationengine v0.8.1 h1:nMr1OEVHuDambRn+/y4RmNAmnR/pXCuHtH0Y4tCgGRQ=
cloud.google.com/go/recommendationengine v0.8.1/go.mod h1:MrZihWwtFYWDzE6Hz5nKcNz3gLizXVIDI/o3G1DLcrE=
+cloud.google.com/go/recommendationengine v0.8.4/go.mod h1:GEteCf1PATl5v5ZsQ60sTClUE0phbWmo3rQ1Js8louU=
cloud.google.com/go/recommender v1.10.1 h1:UKp94UH5/Lv2WXSQe9+FttqV07x/2p1hFTMMYVFtilg=
cloud.google.com/go/recommender v1.10.1/go.mod h1:XFvrE4Suqn5Cq0Lf+mCP6oBHD/yRMA8XxP5sb7Q7gpA=
+cloud.google.com/go/recommender v1.11.3/go.mod h1:+FJosKKJSId1MBFeJ/TTyoGQZiEelQQIZMKYYD8ruK4=
cloud.google.com/go/redis v1.13.1 h1:YrjQnCC7ydk+k30op7DSjSHw1yAYhqYXFcOq1bSXRYA=
cloud.google.com/go/redis v1.13.1/go.mod h1:VP7DGLpE91M6bcsDdMuyCm2hIpB6Vp2hI090Mfd1tcg=
+cloud.google.com/go/redis v1.14.1/go.mod h1:MbmBxN8bEnQI4doZPC1BzADU4HGocHBk2de3SbgOkqs=
cloud.google.com/go/resourcemanager v1.9.1 h1:QIAMfndPOHR6yTmMUB0ZN+HSeRmPjR/21Smq5/xwghI=
cloud.google.com/go/resourcemanager v1.9.1/go.mod h1:dVCuosgrh1tINZ/RwBufr8lULmWGOkPS8gL5gqyjdT8=
+cloud.google.com/go/resourcemanager v1.9.4/go.mod h1:N1dhP9RFvo3lUfwtfLWVxfUWq8+KUQ+XLlHLH3BoFJ0=
cloud.google.com/go/resourcesettings v1.6.1 h1:Fdyq418U69LhvNPFdlEO29w+DRRjwDA4/pFamm4ksAg=
cloud.google.com/go/resourcesettings v1.6.1/go.mod h1:M7mk9PIZrC5Fgsu1kZJci6mpgN8o0IUzVx3eJU3y4Jw=
+cloud.google.com/go/resourcesettings v1.6.4/go.mod h1:pYTTkWdv2lmQcjsthbZLNBP4QW140cs7wqA3DuqErVI=
cloud.google.com/go/retail v1.14.1 h1:gYBrb9u/Hc5s5lUTFXX1Vsbc/9BEvgtioY6ZKaK0DK8=
cloud.google.com/go/retail v1.14.1/go.mod h1:y3Wv3Vr2k54dLNIrCzenyKG8g8dhvhncT2NcNjb/6gE=
+cloud.google.com/go/retail v1.14.4/go.mod h1:l/N7cMtY78yRnJqp5JW8emy7MB1nz8E4t2yfOmklYfg=
cloud.google.com/go/run v1.2.0 h1:kHeIG8q+N6Zv0nDkBjSOYfK2eWqa5FnaiDPH/7/HirE=
cloud.google.com/go/run v1.2.0/go.mod h1:36V1IlDzQ0XxbQjUx6IYbw8H3TJnWvhii963WW3B/bo=
+cloud.google.com/go/run v1.3.3/go.mod h1:WSM5pGyJ7cfYyYbONVQBN4buz42zFqwG67Q3ch07iK4=
cloud.google.com/go/scheduler v1.10.1 h1:yoZbZR8880KgPGLmACOMCiY2tPk+iX4V/dkxqTirlz8=
cloud.google.com/go/scheduler v1.10.1/go.mod h1:R63Ldltd47Bs4gnhQkmNDse5w8gBRrhObZ54PxgR2Oo=
+cloud.google.com/go/scheduler v1.10.4/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI=
+cloud.google.com/go/scheduler v1.10.5/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI=
cloud.google.com/go/secretmanager v1.11.1 h1:cLTCwAjFh9fKvU6F13Y4L9vPcx9yiWPyWXE4+zkuEQs=
cloud.google.com/go/secretmanager v1.11.1/go.mod h1:znq9JlXgTNdBeQk9TBW/FnR/W4uChEKGeqQWAJ8SXFw=
+cloud.google.com/go/secretmanager v1.11.4/go.mod h1:wreJlbS9Zdq21lMzWmJ0XhWW2ZxgPeahsqeV/vZoJ3w=
cloud.google.com/go/security v1.15.1 h1:jR3itwycg/TgGA0uIgTItcVhA55hKWiNJxaNNpQJaZE=
cloud.google.com/go/security v1.15.1/go.mod h1:MvTnnbsWnehoizHi09zoiZob0iCHVcL4AUBj76h9fXA=
+cloud.google.com/go/security v1.15.4/go.mod h1:oN7C2uIZKhxCLiAAijKUCuHLZbIt/ghYEo8MqwD/Ty4=
cloud.google.com/go/securitycenter v1.23.0 h1:XOGJ9OpnDtqg8izd7gYk/XUhj8ytjIalyjjsR6oyG0M=
cloud.google.com/go/securitycenter v1.23.0/go.mod h1:8pwQ4n+Y9WCWM278R8W3nF65QtY172h4S8aXyI9/hsQ=
+cloud.google.com/go/securitycenter v1.24.2/go.mod h1:l1XejOngggzqwr4Fa2Cn+iWZGf+aBLTXtB/vXjy5vXM=
cloud.google.com/go/servicecontrol v1.11.1 h1:d0uV7Qegtfaa7Z2ClDzr9HJmnbJW7jn0WhZ7wOX6hLE=
cloud.google.com/go/servicedirectory v1.10.1 h1:J/0csas97yAQ+dcc7i8HqbaOA4KOfPu7BPhJdxYRhCk=
cloud.google.com/go/servicedirectory v1.10.1/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ=
+cloud.google.com/go/servicedirectory v1.11.3/go.mod h1:LV+cHkomRLr67YoQy3Xq2tUXBGOs5z5bPofdq7qtiAw=
cloud.google.com/go/servicemanagement v1.8.0 h1:fopAQI/IAzlxnVeiKn/8WiV6zKndjFkvi+gzu+NjywY=
cloud.google.com/go/serviceusage v1.6.0 h1:rXyq+0+RSIm3HFypctp7WoXxIA563rn206CfMWdqXX4=
cloud.google.com/go/shell v1.7.1 h1:aHbwH9LSqs4r2rbay9f6fKEls61TAjT63jSyglsw7sI=
cloud.google.com/go/shell v1.7.1/go.mod h1:u1RaM+huXFaTojTbW4g9P5emOrrmLE69KrxqQahKn4g=
+cloud.google.com/go/shell v1.7.4/go.mod h1:yLeXB8eKLxw0dpEmXQ/FjriYrBijNsONpwnWsdPqlKM=
cloud.google.com/go/spanner v1.47.0 h1:aqiMP8dhsEXgn9K5EZBWxPG7dxIiyM2VaikqeU4iteg=
cloud.google.com/go/spanner v1.47.0/go.mod h1:IXsJwVW2j4UKs0eYDqodab6HgGuA1bViSqW4uH9lfUI=
+cloud.google.com/go/spanner v1.51.0/go.mod h1:c5KNo5LQ1X5tJwma9rSQZsXNBDNvj4/n8BVc3LNahq0=
+cloud.google.com/go/spanner v1.53.0/go.mod h1:liG4iCeLqm5L3fFLU5whFITqP0e0orsAW1uUSrd4rws=
cloud.google.com/go/speech v1.17.1 h1:KIV99afoYTJqA2qi8Cjbl5DpjSRzvqFgKcptGXg6kxw=
cloud.google.com/go/speech v1.17.1/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo=
+cloud.google.com/go/speech v1.20.1/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY=
+cloud.google.com/go/speech v1.21.0/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY=
cloud.google.com/go/storagetransfer v1.10.0 h1:+ZLkeXx0K0Pk5XdDmG0MnUVqIR18lllsihU/yq39I8Q=
cloud.google.com/go/storagetransfer v1.10.0/go.mod h1:DM4sTlSmGiNczmV6iZyceIh2dbs+7z2Ayg6YAiQlYfA=
+cloud.google.com/go/storagetransfer v1.10.3/go.mod h1:Up8LY2p6X68SZ+WToswpQbQHnJpOty/ACcMafuey8gc=
cloud.google.com/go/talent v1.6.2 h1:j46ZgD6N2YdpFPux9mc7OAf4YK3tiBCsbLKc8rQx+bU=
cloud.google.com/go/talent v1.6.2/go.mod h1:CbGvmKCG61mkdjcqTcLOkb2ZN1SrQI8MDyma2l7VD24=
+cloud.google.com/go/talent v1.6.5/go.mod h1:Mf5cma696HmE+P2BWJ/ZwYqeJXEeU0UqjHFXVLadEDI=
cloud.google.com/go/texttospeech v1.7.1 h1:S/pR/GZT9p15R7Y2dk2OXD/3AufTct/NSxT4a7nxByw=
cloud.google.com/go/texttospeech v1.7.1/go.mod h1:m7QfG5IXxeneGqTapXNxv2ItxP/FS0hCZBwXYqucgSk=
+cloud.google.com/go/texttospeech v1.7.4/go.mod h1:vgv0002WvR4liGuSd5BJbWy4nDn5Ozco0uJymY5+U74=
cloud.google.com/go/tpu v1.6.1 h1:kQf1jgPY04UJBYYjNUO+3GrZtIb57MfGAW2bwgLbR3A=
cloud.google.com/go/tpu v1.6.1/go.mod h1:sOdcHVIgDEEOKuqUoi6Fq53MKHJAtOwtz0GuKsWSH3E=
+cloud.google.com/go/tpu v1.6.4/go.mod h1:NAm9q3Rq2wIlGnOhpYICNI7+bpBebMJbh0yyp3aNw1Y=
cloud.google.com/go/trace v1.10.1 h1:EwGdOLCNfYOOPtgqo+D2sDLZmRCEO1AagRTJCU6ztdg=
cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk=
+cloud.google.com/go/trace v1.10.4/go.mod h1:Nso99EDIK8Mj5/zmB+iGr9dosS/bzWCJ8wGmE6TXNWY=
cloud.google.com/go/translate v1.8.1 h1:7P75urEfnR/gU+7oYn5GuMsV9tJAiBGLJv06G10mM/E=
cloud.google.com/go/translate v1.8.1/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs=
+cloud.google.com/go/translate v1.9.3/go.mod h1:Kbq9RggWsbqZ9W5YpM94Q1Xv4dshw/gr/SHfsl5yCZ0=
cloud.google.com/go/video v1.17.1 h1:gWi0caJILQb9VwZPq28R1Wrg5YMsoLIvtvKDSglcQL8=
cloud.google.com/go/video v1.17.1/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU=
+cloud.google.com/go/video v1.20.3/go.mod h1:TnH/mNZKVHeNtpamsSPygSR0iHtvrR/cW1/GDjN5+GU=
cloud.google.com/go/videointelligence v1.11.1 h1:MBMWnkQ78GQnRz5lfdTAbBq/8QMCF3wahgtHh3s/J+k=
cloud.google.com/go/videointelligence v1.11.1/go.mod h1:76xn/8InyQHarjTWsBR058SmlPCwQjgcvoW0aZykOvo=
+cloud.google.com/go/videointelligence v1.11.4/go.mod h1:kPBMAYsTPFiQxMLmmjpcZUMklJp3nC9+ipJJtprccD8=
cloud.google.com/go/vision v1.2.0 h1:/CsSTkbmO9HC8iQpxbK8ATms3OQaX3YQUeTMGCxlaK4=
cloud.google.com/go/vision/v2 v2.7.2 h1:ccK6/YgPfGHR/CyESz1mvIbsht5Y2xRsWCPqmTNydEw=
cloud.google.com/go/vision/v2 v2.7.2/go.mod h1:jKa8oSYBWhYiXarHPvP4USxYANYUEdEsQrloLjrSwJU=
+cloud.google.com/go/vision/v2 v2.7.5/go.mod h1:GcviprJLFfK9OLf0z8Gm6lQb6ZFUulvpZws+mm6yPLM=
cloud.google.com/go/vmmigration v1.7.1 h1:gnjIclgqbEMc+cF5IJuPxp53wjBIlqZ8h9hE8Rkwp7A=
cloud.google.com/go/vmmigration v1.7.1/go.mod h1:WD+5z7a/IpZ5bKK//YmT9E047AD+rjycCAvyMxGJbro=
+cloud.google.com/go/vmmigration v1.7.4/go.mod h1:yBXCmiLaB99hEl/G9ZooNx2GyzgsjKnw5fWcINRgD70=
cloud.google.com/go/vmwareengine v0.4.1 h1:roQrCAkaysVvXxFMuK26lORi+gablOY54htDtDDow0w=
cloud.google.com/go/vmwareengine v0.4.1/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0=
+cloud.google.com/go/vmwareengine v1.0.3/go.mod h1:QSpdZ1stlbfKtyt6Iu19M6XRxjmXO+vb5a/R6Fvy2y4=
cloud.google.com/go/vpcaccess v1.7.1 h1:ram0GzjNWElmbxXMIzeOZUkQ9J8ZAahD6V8ilPGqX0Y=
cloud.google.com/go/vpcaccess v1.7.1/go.mod h1:FogoD46/ZU+JUBX9D606X21EnxiszYi2tArQwLY4SXs=
+cloud.google.com/go/vpcaccess v1.7.4/go.mod h1:lA0KTvhtEOb/VOdnH/gwPuOzGgM+CWsmGu6bb4IoMKk=
cloud.google.com/go/webrisk v1.9.1 h1:Ssy3MkOMOnyRV5H2bkMQ13Umv7CwB/kugo3qkAX83Fk=
cloud.google.com/go/webrisk v1.9.1/go.mod h1:4GCmXKcOa2BZcZPn6DCEvE7HypmEJcJkr4mtM+sqYPc=
+cloud.google.com/go/webrisk v1.9.4/go.mod h1:w7m4Ib4C+OseSr2GL66m0zMBywdrVNTDKsdEsfMl7X0=
cloud.google.com/go/websecurityscanner v1.6.1 h1:CfEF/vZ+xXyAR3zC9iaC/QRdf1MEgS20r5UR17Q4gOg=
cloud.google.com/go/websecurityscanner v1.6.1/go.mod h1:Njgaw3rttgRHXzwCB8kgCYqv5/rGpFCsBOvPbYgszpg=
+cloud.google.com/go/websecurityscanner v1.6.4/go.mod h1:mUiyMQ+dGpPPRkHgknIZeCzSHJ45+fY4F52nZFDHm2o=
cloud.google.com/go/workflows v1.11.1 h1:2akeQ/PgtRhrNuD/n1WvJd5zb7YyuDZrlOanBj2ihPg=
cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvofaL6FqlET6g=
+cloud.google.com/go/workflows v1.12.3/go.mod h1:fmOUeeqEwPzIU81foMjTRQIdwQHADi/vEr1cx9R1m5g=
code.cloudfoundry.org/clock v0.0.0-20180518195852-02e53af36e6c h1:5eeuG0BHx1+DHeT3AP+ISKZ2ht1UjGhm581ljqYpVeQ=
contrib.go.opencensus.io/exporter/aws v0.0.0-20200617204711-c478e41e60e9 h1:yxE46rQA0QaqPGqN2UnwXvgCrRqtjR1CsGSWVTRjvv4=
+contrib.go.opencensus.io/exporter/aws v0.0.0-20230502192102-15967c811cec/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA=
contrib.go.opencensus.io/exporter/stackdriver v0.13.13 h1:3KLhsPyyFp1pfZPicg8e1VMSeztIyWm+aE+iZQ8b9Kg=
+contrib.go.opencensus.io/exporter/stackdriver v0.13.14/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc=
contrib.go.opencensus.io/integrations/ocsql v0.1.7 h1:G3k7C0/W44zcqkpRSFyjU9f6HZkbwIrL//qqnlqWZ60=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY=
gioui.org v0.0.0-20210308172011-57750fc8a0a6 h1:K72hopUosKG3ntOPNG4OzzbuhxGuVf06fa2la1/H/Ho=
@@ -240,17 +369,45 @@ github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8 h1:V8krn
github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ=
github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo=
github.com/Azure/azure-amqp-common-go/v3 v3.2.3 h1:uDF62mbd9bypXWi19V1bN5NZEO84JqgmI5G73ibAmrk=
+github.com/Azure/azure-sdk-for-go v66.0.0+incompatible h1:bmmC38SlE8/E81nNADlgmVGurPWMHDX2YNXVQMrBpEE=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1 h1:tz19qLF65vuu2ibfTqGVJxG/zZAI27NEIIbvAOQwYbw=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0/go.mod h1:3Ug6Qzto9anB6mGlEdgYMDF5zHQ+wwhEaYR4s17PHMw=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0 h1:Yoicul8bnVdQrhDMTHxdEckRGX01XvwXDHUT9zYZ3k0=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 h1:jp0dGvZ7ZK0mgqnTSClMxa5xuRL7NZgHameVYF6BurY=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM=
github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.0.2 h1:Y4YVS9h+gu9YI8RkUyUFJbbqom7XDs1i4AEUi270g6g=
+github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.5.0/go.mod h1:4BbKA+mRmmTP8VaLfDPNF5nOdhRm5upG3AXVWfv1dxc=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v4 v4.2.1/go.mod h1:oGV6NlB0cvi1ZbYRR2UN44QHxWFyGk+iylgD0qaMXjA=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.0.0/go.mod h1:ceIuwmxDWptoW3eCqSXlnPsZFKh4X+R38dWPv7GS9Vs=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v1.1.0/go.mod h1:243D9iHbcQXoFUtgHJwL7gl2zx1aDuDMjvBZVGr2uW0=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2 v2.2.1/go.mod h1:Bzf34hhAE9NSxailk8xVeLEZbUjOXcC+GnU1mMKdhLw=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0/go.mod h1:s1tW/At+xHqjNFvWU4G0c0Qv33KOhvbGNj0RCTQDV8s=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0/go.mod h1:c+Lifp3EDEamAkPVzMooRNOK6CZjNSdEnf1A7jsI9u4=
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1 h1:QSdcrd/UFJv6Bp/CfoVf2SrENpFn9P6Yh8yb+xNhYMM=
+github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0/go.mod h1:+6KLcKIVgxoBDMqMO/Nvy7bZ9a0nbU3I1DtFQK3YvB4=
github.com/Azure/go-amqp v0.17.5 h1:7Lsi9H9ijCAfqOaMiNmQ4c+GL9bdrpCjebNKhV/eQ+c=
+github.com/Azure/go-amqp v1.0.2/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
+github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
+github.com/Azure/go-autorest/autorest v0.11.28 h1:ndAExarwr5Y+GaHE6VCaY1kyS/HwwGGyuimVhWsHOEM=
+github.com/Azure/go-autorest/autorest/adal v0.9.21 h1:jjQnVFXPfekaqb8vIsv2G1lxshoW+oGv4MDlhRtnYZk=
+github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 h1:P6bYXFoao05z5uhOQzbC3Qd8JqF3jUoocoTeIxkp2cA=
+github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 h1:w77/uPk80ZET2F+AfQExZyEWtn+0Rk/uw17m9fv5Ajc=
+github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=
+github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw=
+github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk=
+github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac=
+github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=
+github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0 h1:WVsrXCnHlDDX8ls+tootqRE87/hL9S/g4ewig9RsD/c=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc=
github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4=
github.com/GoogleCloudPlatform/cloudsql-proxy v1.31.2 h1:CxeO3Up9XLNFgHeJfgUfgSKVqPGp7n00wVTJWf6ahTM=
+github.com/GoogleCloudPlatform/cloudsql-proxy v1.33.14/go.mod h1:vroGijye9h4A6kMWeCtk9/zIh5ebseV/JmbKJ0VL3w8=
github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw=
github.com/Microsoft/hcsshim v0.9.2 h1:wB06W5aYFfUB3IvootYAY2WnOmIdgPGfqSI6tufQNnY=
@@ -266,6 +423,7 @@ github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/O
github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s=
github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc=
github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE=
+github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=
github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw=
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 h1:w1UutsfOrms1J05zt7ISrnJIXKzwaspym5BTKGx93EI=
@@ -274,6 +432,7 @@ github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19 h1:iXUgAaqD
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b h1:slYM766cy2nI3BwyRiyQj/Ud48djTMtMebDqepE95rw=
github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek=
github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s=
+github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc=
github.com/alexflint/go-filemutex v1.1.0 h1:IAWuUuRYL2hETx5b8vCgwnD+xSdlsTQY6s2JjBsqLdg=
@@ -289,11 +448,16 @@ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA=
github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw=
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ=
+github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY=
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.15.14 h1:dvvIB9OYsOH10RUNAY7yiCq5fQwGebXx1auBOkBTUlg=
+github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.25.5/go.mod h1:4Ae1NCLK6ghmjzd45Tc33GgCKhUWD2ORAlULtMO1Cbs=
github.com/aws/aws-sdk-go-v2/service/sns v1.17.10 h1:ZZuqucIwjbUEJqxxR++VDZX9BcMbX5ZcQaKoWul/ELk=
+github.com/aws/aws-sdk-go-v2/service/sns v1.26.5/go.mod h1:IrcbquqMupzndZ20BXxDxjM7XenTRhbwBOetk4+Z5oc=
github.com/aws/aws-sdk-go-v2/service/sqs v1.19.1 h1:HaQD4g8eumwEW218TgQzhnwTXmq77ZogA67SxBnGyPc=
+github.com/aws/aws-sdk-go-v2/service/sqs v1.29.5/go.mod h1:mCUv04gd/7g+/HNzDB4X6dzJuygji0ckvB3Lg/TdG5Y=
github.com/aws/aws-sdk-go-v2/service/ssm v1.27.6 h1:dkh5kaNrTAAYu4ZLWP7kx+k3Nrh/9dkPRxJPsvs5nCQ=
+github.com/aws/aws-sdk-go-v2/service/ssm v1.44.5/go.mod h1:uXndCJoDO9gpuK24rNWVCnrGNUydKFEAYAZ7UU9S0rQ=
github.com/aymanbagabas/go-osc52 v1.0.3 h1:DTwqENW7X9arYimJrPeGZcV0ln14sGMt3pHZspWD+Mg=
github.com/aymanbagabas/go-osc52 v1.0.3/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4=
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
@@ -317,6 +481,7 @@ github.com/ccojocar/zxcvbn-go v1.0.1 h1:+sxrANSCj6CdadkcMnvde/GWU1vZiiXRbqYSCalV
github.com/ccojocar/zxcvbn-go v1.0.1/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60=
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4=
+github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g=
github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054 h1:uH66TXeswKn5PW5zdZ39xEwfS9an067BirqA+P4QaLI=
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
@@ -327,9 +492,15 @@ github.com/charmbracelet/harmonica v0.2.0 h1:8NxJWRWg/bzKqqEaaeFNipOu77YR5t8aSwG
github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao=
github.com/checkpoint-restore/go-criu/v4 v4.1.0 h1:WW2B2uxx9KWF6bGlHqhm8Okiafwwx7Y2kcpn8lCpjgo=
github.com/checkpoint-restore/go-criu/v5 v5.3.0 h1:wpFFOoomK3389ue2lAb0Boag6XPht5QYpipxmSNL4d8=
+github.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89/go.mod h1:GKljq0VrfU4D5yc+2qA6OVr8pmO/MBbPEWqWQ/oqGEs=
+github.com/chromedp/chromedp v0.9.2/go.mod h1:LkSXJKONWTCHAfQasKFUZI+mxqS4tZqhmtGzzhLsnLs=
+github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww=
github.com/chzyer/logex v1.2.0 h1:+eqR0HfOetur4tgnC8ftU5imRnhi4te+BadWS95c5AM=
+github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ=
github.com/chzyer/readline v1.5.0 h1:lSwwFrbNviGePhkewF1az4oLmcwqCZijQ2/Wi3BGHAI=
+github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk=
github.com/chzyer/test v0.0.0-20210722231415-061457976a23 h1:dZ0/VyGgQdVGAss6Ju0dt5P0QltE0SFY5Woh6hbIfiQ=
+github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible h1:C29Ae4G5GtYyYMm1aztcyj/J5ckgJm2zwdDajFbx1NY=
github.com/circonus-labs/circonusllhist v0.1.3 h1:TJH+oke8D16535+jHExHj4nQvzlZrj7ug5D7I/orNUA=
@@ -338,6 +509,7 @@ github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJ
github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I=
github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk=
github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k=
+github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I=
github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5 h1:xD/lrqdvwsc+O2bjSSi3YqY73Ke3LAiSCx49aCesA0E=
github.com/cockroachdb/errors v1.2.4 h1:Lap807SXTH5tri2TivECb/4abUkMZC9zRoLarvcKDqs=
@@ -367,6 +539,7 @@ github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom
github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c=
github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI=
+github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI=
@@ -384,16 +557,21 @@ github.com/devigned/tab v0.1.1 h1:3mD6Kb1mUOYeLpJvTVSDwSg5ZsfSxfvxGRTxRsJsITA=
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245 h1:9cOfvEwjQxdwKuNDTQSaMKNRvwKwgZG+U4HrjeRKHso=
github.com/digitalocean/godo v1.81.0 h1:sjb3fOfPfSlUQUK22E87BcI8Zx2qtnF7VUCCO4UK3C8=
+github.com/digitalocean/godo v1.104.1/go.mod h1:VAI/L5YDzMuPRU01lEEUSQ/sp5Z//1HnnFv/RBTEdbg=
+github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U=
github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E=
github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017 h1:2HQmlpI3yI9deH18Q6xiSOIjXD4sLI55Y/gfpa8/558=
github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug=
+github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v20.10.17+incompatible h1:JYCuMrWaVNophQTOrMMoSwudOVEfcegoZZrleKc1xwE=
+github.com/docker/docker v24.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.6.3 h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8=
github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=
github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw=
+github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arXfYcAtECDFgAgHklGI8CxgjHnXKJ4=
github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 h1:cenwrSVm+Z7QLSV/BsnenAOcDXdX4cMv4wP0B/5QbPg=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ=
@@ -404,14 +582,18 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8
github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc=
github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2 h1:dWB6v3RcOy03t/bUadywsbyrQwCqZeNIEX6M1OtSZOM=
github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk=
+github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f h1:7T++XKzy4xg7PKy+bM+Sa9/oe1OC88yz2hXQUISoXfA=
+github.com/envoyproxy/go-control-plane v0.11.1/go.mod h1:uhMcXKCQMEJHiAb0w+YGefQLaTEw+YhGluxZkrTmD0g=
github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8=
-github.com/equinix/equinix-sdk-go v0.30.0 h1:u/+/p00mfAhDhoLvP1jTKruXndAYWoTwqN65BTbAPCg=
-github.com/equinix/equinix-sdk-go v0.30.0/go.mod h1:qnpdRzVftHFNaJFk1VSIrAOTLrIoeDrxzUr3l8ARyvQ=
-github.com/equinix/ne-go v1.12.0 h1:xZxnVWRIqFkos4ls9nSx92FMGkV8jSPTEaosLGE4Vvw=
-github.com/equinix/ne-go v1.12.0/go.mod h1:eHkkxM4nbTB7DZ9X9zGnwfYnxIJWIsU3aHA+FAoZ1EI=
+github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE=
+github.com/equinix-labs/metal-go v0.25.1 h1:uL83lRKyAcOfab+9r2xujAuLD8lTsqv89+SPvVFkcBM=
+github.com/equinix-labs/metal-go v0.25.1/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
+github.com/erikgeiser/promptkit v0.9.0/go.mod h1:pU9dtogSe3Jlc2AY77EP7R4WFP/vgD4v+iImC83KsCo=
github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84=
+github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch/v5 v5.5.0 h1:bAmFiUJ+o0o2B4OiTFeE3MqCOtyo+jjPP9iZ0VRxYUc=
+github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8=
github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c=
@@ -419,7 +601,9 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8
github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw=
github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8 h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54=
github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=
+github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa h1:RDBNVkRviHZtvDvId8XSGPu3rmpmSe+wKRcEWNgsfWU=
github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7 h1:LofdAjjjqCSXMwLGgOgnE+rdPuvX9DxCqaHwKy7i/ko=
github.com/getkin/kin-openapi v0.76.0 h1:j77zg3Ec+k+r+GA3d8hBoXpAc6KX9TbBPrwQGBIy2sY=
@@ -436,37 +620,53 @@ github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4u
github.com/go-git/go-billy/v5 v5.4.0/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg=
github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo=
github.com/go-git/go-git/v5 v5.6.0/go.mod h1:6nmJ0tJ3N4noMV1Omv7rC5FG3/o8Cm51TB4CJp7mRmE=
+github.com/go-git/go-git/v5 v5.10.1 h1:tu8/D8i+TWxgKpzQ3Vc43e+kkhXqtsZCKI/egajKnxk=
+github.com/go-git/go-git/v5 v5.10.1/go.mod h1:uEuHjxkHap8kAl//V5F/nNWwqIYtP/402ddd05mp0wg=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I=
github.com/go-ini/ini v1.25.4 h1:Mujh4R/dH6YL8bxuISne3xX2+qcQ9p0IxKAP6ExWoUo=
github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo=
+github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs=
github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU=
github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 h1:6zl3BbBhdnMkpSj2YY30qV3gDcVBGtFgVsV3+/i+mKQ=
github.com/go-ldap/ldap/v3 v3.1.10 h1:7WsKqasmPThNvdl0Q5GPpbTDD/ZD98CfuawrMIuh7qQ=
github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA=
+github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
+github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-openapi/analysis v0.21.2 h1:hXFrOYFHUAMQdu6zwAiKKJHJQ8kqZs1ux/ru1P1wLJU=
+github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo=
github.com/go-openapi/errors v0.20.2 h1:dxy7PGTqEh94zj2E3h1cUmQQWiM1+aeCROfAr02EmK8=
+github.com/go-openapi/errors v0.20.4/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk=
github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA=
github.com/go-openapi/jsonreference v0.19.6 h1:UBIxjkht+AWIgYzCDSv2GN+E/togfwXUJFRTWhl2Jjs=
+github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
github.com/go-openapi/loads v0.21.1 h1:Wb3nVZpdEzDTcly8S4HMkey6fjARRzb7iEaySimlDW0=
+github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw=
github.com/go-openapi/runtime v0.23.1 h1:/Drg9R96eMmgKJHVWZADz78XbE39/6QiIiB45mc+epo=
github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M=
+github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
github.com/go-openapi/strfmt v0.21.2 h1:5NDNgadiX1Vhemth/TH4gCGopWSTdDjxl60H3B7f+os=
+github.com/go-openapi/strfmt v0.21.7/go.mod h1:adeGTkxE44sPyLk0JV235VQAO/ZXUr8KAzYjclFs3ew=
github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
github.com/go-openapi/validate v0.21.0 h1:+Wqk39yKOhfpLqNLEC0/eViCkzM5FVXVqrvt526+wcI=
+github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg=
github.com/go-pdf/fpdf v0.6.0 h1:MlgtGIfsdMEEQJr2le6b/HNr1ZlQwxyWr77r2aj2U/8=
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
+github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I=
github.com/go-zookeeper/zk v1.0.2 h1:4mx0EYENAdX/B/rbunjlt5+4RTA/a9SMHBRuSKdGxPM=
+github.com/go-zookeeper/zk v1.0.3/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw=
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd h1:hSkbZ9XSyjyBirMeqSqUrK+9HboWrweVlzRNqoBi2d4=
github.com/gobuffalo/depgen v0.1.0 h1:31atYa/UW9V5q8vMJ+W6wd64OaaTHUrCUXER358zLM4=
github.com/gobuffalo/envy v1.7.0 h1:GlXgaiBkmrYMHco6t4j7SacKO4XUjvh5pwXh0f4uxXU=
@@ -480,50 +680,71 @@ github.com/gobuffalo/packd v0.1.0 h1:4sGKOD8yaYJ+dek1FDkwcxCHA40M4kfKgFHx8N2kwbU
github.com/gobuffalo/packr/v2 v2.2.0 h1:Ir9W9XIm9j7bhhkKE9cokvtTl1vBm62A/fene/ZCj6A=
github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754 h1:tpom+2CJmpzAWj5/VEHync2rJGi+epHNIeRSWjzGA+4=
github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0=
+github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8=
+github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo=
+github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk=
github.com/goccy/go-yaml v1.9.5 h1:Eh/+3uk9kLxG4koCX6lRMAPS1OaMSAi+FJcya0INdB0=
github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8=
github.com/godbus/dbus/v5 v5.0.6 h1:mkgN1ofwASrYnJ5W6U/BxG15eXXXjirgZc7CLqkcaro=
github.com/gogo/googleapis v1.4.0 h1:zgVt4UpGxcqVOw97aRGxT4svlcmdK35fynLNctY32zI=
github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c=
+github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs=
+github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
+github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
+github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4=
github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM=
github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54=
+github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
github.com/google/go-containerregistry v0.5.1 h1:/+mFTs4AlwsJ/mJe8NDtKb7BxLtbZFpcn8vDsneEkwQ=
+github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/pprof v0.0.0-20230406165453-00490a63f317 h1:hFhpt7CTmR3DX+b4R19ydQFtofxT0Sv3QsKNMVQYTMQ=
github.com/google/pprof v0.0.0-20230406165453-00490a63f317/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk=
+github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=
github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=
+github.com/google/renameio/v2 v2.0.0/go.mod h1:BtmJXm5YlszgC+TD4HOEEUFgkJP3nLxehU6hfe7jRt4=
github.com/google/subcommands v1.0.1 h1:/eqq+otEXm5vhfBrbREPCSVQbvofip6kIz+mX5TUH7k=
+github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=
github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA=
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 h1:tlyzajkF3030q6M8SvmJSemC9DTHL/xaMa18b65+JM4=
github.com/gophercloud/gophercloud v0.25.0 h1:C3Oae7y0fUVQGSsBrb3zliAjdX+riCSEh4lNMejFNI4=
+github.com/gophercloud/gophercloud v1.7.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8=
github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=
github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33 h1:893HsJqtxp9z1SF76gg6hY70hRY1wVlTSnC/h1yUDCo=
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
+github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2 h1:uirlL/j72L93RhV4+mkWhjv0cov2I0MIgPOG9rMDr1k=
+github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A=
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM=
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 h1:lLT7ZLSzGLI08vc9cpd+tYmNWjdKDqyr/2L+f6U12Fk=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg=
github.com/gruntwork-io/terratest v0.43.0 h1:/ewxlYwd/HBralCt7P2bAhYM8hdkOiFJHrMz5XdlsSY=
github.com/gruntwork-io/terratest v0.43.0/go.mod h1:vZO4J6UW023NDvl1vI+twZk9r//+QEaNT6MfkheH7z0=
github.com/hanwen/go-fuse v1.0.0 h1:GxS9Zrn6c35/BnfiVsZVWmsG803xwE7eVRDvcf/BEVc=
github.com/hanwen/go-fuse/v2 v2.1.0 h1:+32ffteETaLYClUj0a3aHjZ1hOPxxaNEHiZiujuDaek=
+github.com/hanwen/go-fuse/v2 v2.4.0/go.mod h1:xKwi1cF7nXAOBCXujD5ie0ZKsxc8GGSA1rlMJc+8IJs=
github.com/hashicorp/consul/api v1.13.0 h1:2hnLQ0GjQvw7f3O61jMO8gbasZviZTrt9R8WzgiirHc=
+github.com/hashicorp/consul/api v1.25.1/go.mod h1:iiLVwR/htV7mas/sy0O+XSuEnrdBUUydemjxcUrAt4g=
github.com/hashicorp/consul/sdk v0.8.0 h1:OJtKBtEjboEZvG6AOUdh4Z1Zbyu0WcxQ0qatRrZHTVU=
github.com/hashicorp/cronexpr v1.1.1 h1:NJZDd87hGXjoZBdvyCF9mX4DCq5Wy7+A/w+A7q0wn6c=
+github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4=
+github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs=
github.com/hashicorp/go-kms-wrapping/entropy v0.1.0 h1:xuTi5ZwjimfpvpL09jDE71smCBRpnF5xfo871BSX4gs=
github.com/hashicorp/go-kms-wrapping/entropy/v2 v2.0.0 h1:pSjQfW3vPtrOTcasTUKgCTQT7OGPPTTMVRrOfU6FJD8=
github.com/hashicorp/go-kms-wrapping/entropy/v2 v2.0.0/go.mod h1:xvb32K2keAc+R8DSFG2IwDcydK9DBQE+fGA5fsw6hSk=
@@ -539,12 +760,17 @@ github.com/hashicorp/hcl/v2 v2.17.0/go.mod h1:gJyW2PTShkJqQBKpAmPO3yxMxIuoXkOF2T
github.com/hashicorp/mdns v1.0.4 h1:sY0CMhFmjIPDMlTB+HfymFHCaYLhgifZ0QhjaYKD/UQ=
github.com/hashicorp/memberlist v0.3.1 h1:MXgUXLqva1QvpVEDQW1IQLG0wivQAtmFlHRQ+1vWZfM=
github.com/hashicorp/nomad/api v0.0.0-20220629141207-c2428e1673ec h1:jAF71e0KoaY2LJlRsRxxGz6MNQOG5gTBIc+rklxfNO0=
+github.com/hashicorp/nomad/api v0.0.0-20230721134942-515895c7690c/go.mod h1:O23qLAZuCx4htdY9zBaO4cJPXgleSFEdq6D/sezGgYE=
github.com/hashicorp/serf v0.9.6 h1:uuEX1kLR6aoda1TBttmJQKDLZE1Ob7KN0NPdE7EtCDc=
+github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4=
github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8 h1:+RyjwU+Gnd/aTJBPZVDNm903eXVjjqhbaR4Ypx3xYyY=
+github.com/hashicorp/terraform-json v0.19.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk=
github.com/hashicorp/terraform-plugin-docs v0.14.1 h1:MikFi59KxrP/ewrZoaowrB9he5Vu4FtvhamZFustiA4=
github.com/hashicorp/terraform-plugin-docs v0.14.1/go.mod h1:k2NW8+t113jAus6bb5tQYQgEAX/KueE/u8X2Z45V1GM=
+github.com/hashicorp/terraform-plugin-docs v0.18.0/go.mod h1:iIUfaJpdUmpi+rI42Kgq+63jAjI8aZVTyxp3Bvk9Hg8=
github.com/hashicorp/terraform-plugin-test v1.2.0 h1:AWFdqyfnOj04sxTdaAF57QqvW7XXrT8PseUHkbKsE8I=
github.com/hetznercloud/hcloud-go v1.35.0 h1:sduXOrWM0/sJXwBty7EQd7+RXEJh5+CsAGQmHshChFg=
+github.com/hetznercloud/hcloud-go/v2 v2.4.0/go.mod h1:l7fA5xsncFBzQTyw29/dw5Yr88yEGKKdc6BHf24ONS0=
github.com/hexops/autogold v0.8.1/go.mod h1:97HLDXyG23akzAoRYJh/2OBs3kd80eHyKPvZw0S5ZBY=
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68=
github.com/hinshun/vt10x v0.0.0-20220301184237-5011da428d02 h1:AgcIVYPa6XJnU3phs104wLj8l5GEththEw6+F79YsIY=
@@ -552,24 +778,31 @@ github.com/hinshun/vt10x v0.0.0-20220301184237-5011da428d02/go.mod h1:Q48J4R4Dvx
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w=
github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2 h1:rcanfLhLDA8nozr/K289V1zcntHr3V+SHlXwzz1ZI2g=
+github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=
github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd h1:anPrsicrIi2ColgWTVPk+TrN42hJIWlfPHSBP9S0ZkM=
github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84=
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA=
github.com/intel/goresctrl v0.2.0 h1:JyZjdMQu9Kl/wLXe9xA6s1X+tF6BWsQPFGJMEeCfWzE=
github.com/ionos-cloud/sdk-go/v6 v6.1.0 h1:0EZz5H+t6W23zHt6dgHYkKavr72/30O9nA97E3FZaS4=
+github.com/ionos-cloud/sdk-go/v6 v6.1.9/go.mod h1:EzEgRIDxBELvfoa/uBN0kOQaqovLjUWEB7iW4/Q+t4k=
github.com/j-keck/arping v1.0.2 h1:hlLhuXgQkzIJTZuhMigvG/CuSkaspeaD9hRDk2zuiMI=
github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0=
github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8=
github.com/jackc/pgconn v1.12.1 h1:rsDFzIpRk7xT4B8FufgpCCeyjdNpKyghZeSefViE5W8=
+github.com/jackc/pgconn v1.14.1/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E=
github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE=
github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A=
github.com/jackc/pgproto3/v2 v2.3.0 h1:brH0pCGBDkBW07HWlN/oSBXrmo3WB0UvZd1pIuDcL8Y=
+github.com/jackc/pgproto3/v2 v2.3.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg=
+github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgtype v1.11.0 h1:u4uiGPz/1hryuXzyaBhSk6dnIyyG2683olG2OV+UUgs=
+github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
github.com/jackc/pgx/v4 v4.16.1 h1:JzTglcal01DrghUqt+PmzWsZx/Yh7SC/CTQmSBMTd0Y=
+github.com/jackc/pgx/v4 v4.18.1/go.mod h1:FydWkUyadDmdNH/mHnGob881GawxeEm7TcMCzkb+qQE=
github.com/jackc/puddle v1.2.1 h1:gI8os0wpRXFd4FiAY2dWiqRK037tjj3t7rKFeO4X5iw=
github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
github.com/jhump/gopoet v0.1.0 h1:gYjOPnzHd2nzB37xYQZxj4EIQNpBrBskRqQQ3q4ZgSg=
@@ -593,21 +826,26 @@ github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4=
github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b h1:iNjcivnc6lhbvJA3LD622NPrUponluJrBWPIwGG/3Bg=
+github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM=
github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY=
github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI=
+github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs=
github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs=
+github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743 h1:143Bb8f8DuGWck/xpNUOckBVYfFbBTnLevfRZ1aVVqo=
github.com/lightstep/lightstep-tracer-go v0.18.1 h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuNSc19z330K6vl4zk=
github.com/linode/linodego v1.8.0 h1:7B2UaWu6C48tZZZrtINWRElAcwzk4TLnL9USjKf3xm0=
+github.com/linode/linodego v1.23.0/go.mod h1:0U7wj/UQOqBNbKv1FYTXiBUXueR8DY4HvIotwE0ENgg=
github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3 h1:jUp75lepDg0phMUJBCmvaeFDldD2N3S1lBuPwUTszio=
github.com/liquidgecka/testlib v0.0.0-20180123051607-561e6b271c63/go.mod h1:vwMPvLIhXhkJaBfsk/6l+eDuiQaIVHC0b6eCvUVBsB0=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
github.com/lyft/protoc-gen-star v0.6.1 h1:erE0rdztuaDq3bpGifD95wfoPrSZc95nGA6tbiNYh6M=
github.com/lyft/protoc-gen-star/v2 v2.0.1 h1:keaAo8hRuAT0O3DfJ/wM3rufbAjGeJ1lAtWZHDjKGB0=
+github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk=
github.com/lyft/protoc-gen-validate v0.0.13 h1:KNt/RhmQTOLr7Aj8PsJ7mTronaFyx80mRTT9qF261dA=
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
@@ -615,6 +853,8 @@ github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2 h1:JgVTCPf0uBVcUSW
github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI=
github.com/marstr/guid v1.1.0 h1:/M4H/1G4avsieL6BbUwCOBzulmoeKVP5ux/3mQNnbyI=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
+github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk=
@@ -622,13 +862,16 @@ github.com/mattn/go-sqlite3 v1.14.14 h1:qZgc/Rwetq+MtyE18WhzjokPD93dNqLGNT3QJuLv
github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326 h1:ofNAzWCcyTALn2Zv40+8XitdzCgXY6e9qvXwN9W0YXg=
github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo=
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=
+github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2 h1:g+4J5sZg6osfvEfkRZxJ1em0VT95/UOZgi/l7zi1/oE=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
github.com/microcosm-cc/bluemonday v1.0.21 h1:dNH3e4PSyE4vNX+KlRGHT5KrSvjeUkoNPwEORjffHJg=
github.com/microcosm-cc/bluemonday v1.0.21/go.mod h1:ytNkv4RrDrLJ2pqlsSI46O6IVXmZOBBD4SaJyDwwTkM=
github.com/microsoft/ApplicationInsights-Go v0.4.4 h1:G4+H9WNs6ygSCe6sUyxRc2U81TI5Es90b2t/MwX5KqY=
+github.com/microsoft/go-mssqldb v1.6.0/go.mod h1:00mDtPbeQCRGC1HwOOR5K/gr30P1NcEG0vx6Kbv2aJU=
github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA=
+github.com/miekg/dns v1.1.56/go.mod h1:cRm6Oo2C8TY9ZS/TqsSrseAcncm74lfK5G+ikN2SWWY=
github.com/miekg/pkcs11 v1.0.3 h1:iMwmD7I5225wv84WxIG/bmxz9AXjWvTWIbM/TYHvWtw=
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs=
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI=
@@ -648,6 +891,7 @@ github.com/moby/sys/symlink v0.2.0 h1:tk1rOM+Ljp0nFmfOIBtlV3rTDlWOwFRhjEeAhZB0nZ
github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc=
github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5 h1:8Q0qkMVC/MmWkpIdlvZgcv2o2jrlF6zqVOh7W5YHdMA=
github.com/montanaflynn/stats v0.6.6 h1:Duep6KMIDpY4Yo11iFsvyqJDyfzLF9+sndUKT+v64GQ=
+github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/mrunalp/fileutils v0.5.0 h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4=
github.com/muesli/termenv v0.13.0/go.mod h1:sP1+uffeLaEYpyOTb8pLCUctGcGLnoFjSn4YJK5e2bc=
@@ -682,6 +926,8 @@ github.com/opencontainers/selinux v1.10.0 h1:rAiKF8hTcgLI3w0DHm6i0ylVVcOrlgR1kK9
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU=
github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU=
github.com/openzipkin/zipkin-go v0.2.2 h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI=
+github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0=
+github.com/ovh/go-ovh v1.4.3/go.mod h1:AkPXVtgwB6xlKblMjRKJJmjRp+ogrE7fz2lVgcQY8SY=
github.com/pact-foundation/pact-go v1.0.4 h1:OYkFijGHoZAYbOIb1LWXrwKQbMMRUv1oQ89blD2Mh2Q=
github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g=
github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ=
@@ -705,28 +951,53 @@ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:Om
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021 h1:0XM1XL/OFFJjXsYXlG30spTkV/E9+gmd5GD1w2HE8xM=
github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
github.com/prometheus/alertmanager v0.24.0 h1:HBWR3lk4uy3ys+naDZthDdV7yEsxpaNeZuUS+hJgrOw=
+github.com/prometheus/alertmanager v0.26.0/go.mod h1:rVcnARltVjavgVaNnmevxK7kOn7IZavyf0KNgHkbEpU=
github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34=
+github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk=
+github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY=
github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4=
+github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
+github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
+github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE=
+github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM=
github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4=
github.com/prometheus/exporter-toolkit v0.7.1 h1:c6RXaK8xBVercEeUQ4tRNL8UGWzDHfvj9dseo1FcK1Y=
+github.com/prometheus/exporter-toolkit v0.10.0/go.mod h1:+sVFzuvV5JDyw+Ih6p3zFxZNVnKQa3x5qPmDSiPu4ZY=
github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU=
+github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY=
+github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY=
github.com/prometheus/prometheus v0.37.0 h1:LgnE+97wnUK/qcmk5oHIqieJEKwhZtaSidyKpUyeats=
+github.com/prometheus/prometheus v0.48.0/go.mod h1:SRw624aMAxTfryAcP8rOjg4S/sHHaetx2lyJJ2nM83g=
github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA=
+github.com/pulumi/esc v0.6.0/go.mod h1:Y6W21yUukvxS2NnS5ae1beMSPhMvj0xNAYcDqDHVj/g=
github.com/pulumi/pulumi-terraform-bridge/v3 v3.63.0/go.mod h1:6YVbDo019OeHkQWo9MnUbBy6cCgCQeoXZDjmR9SYmUA=
github.com/pulumi/pulumi/pkg/v3 v3.78.2-0.20231010213836-fd8c4dd81928/go.mod h1:6Fcjl5pVXv4ctBuluuDIYdq8DHc9da3erQJ1NI+ha94=
github.com/pulumi/pulumi/pkg/v3 v3.90.1/go.mod h1:J+WbfN30g3FfQifpLjQPI0UhPsC9ASEePLK8Nix06A8=
github.com/pulumi/pulumi/pkg/v3 v3.91.0/go.mod h1:sbx8Y+s6PJAronV8cs+V2OuRmUPGBLZzn9ciHumm9kw=
+github.com/pulumi/pulumi/pkg/v3 v3.94.2/go.mod h1:aCeDMlncyDwX3RG6+vYUjWsy6bOEtoHUY0twCcn5qqE=
+github.com/pulumi/pulumi/pkg/v3 v3.98.0/go.mod h1:aeQmrCMwvMOIz1s6qOk+vg1oCWff5hmeRrg1vYv8eRU=
+github.com/pulumi/pulumi/pkg/v3 v3.99.0/go.mod h1:Gk/N8qblqKI6+fTORH7oJi2SSWaOVTDhNwTrazoQPao=
+github.com/pulumi/pulumi/pkg/v3 v3.105.0/go.mod h1:eZAFEFOwE/skElTfwetfyTxPebmWr5vOS5NSU9XwlVw=
github.com/pulumi/pulumi/sdk/v3 v3.88.1-0.20231010213836-fd8c4dd81928/go.mod h1:M2j1xLl93+NYHtyprVK9Tdyxbnjs4AivPuAKqm5goCo=
github.com/pulumi/pulumi/sdk/v3 v3.90.1/go.mod h1:zYaQQibB2pYKy/uG4c4YkX7lQIBpZ0KsuMaq/3HsIBQ=
github.com/pulumi/pulumi/sdk/v3 v3.91.0/go.mod h1:zYaQQibB2pYKy/uG4c4YkX7lQIBpZ0KsuMaq/3HsIBQ=
+github.com/pulumi/pulumi/sdk/v3 v3.94.2/go.mod h1:zeqyIODqbb6GrEyhFV6aJET/xBSXSnF7Bw/EjbYZUnU=
+github.com/pulumi/pulumi/sdk/v3 v3.98.0/go.mod h1:/bHwzPhsCJCjzY0STmvZ7DzV5gZN6iDSXQ/gitEAyws=
+github.com/pulumi/pulumi/sdk/v3 v3.99.0/go.mod h1:wFM/6iAMlidgLDSF9QU+p3P+B+vg/xloFyVeZrVwA1w=
+github.com/pulumi/pulumi/sdk/v3 v3.105.0/go.mod h1:Ml3rpGfyZlI4zQCG7LN2XDSmH4XUNYdyBwJ3yEr/OpI=
+github.com/pulumi/terraform-plugin-framework v0.0.0-20230922145027-1535d08c1d47 h1:sH7ivH4DHxjXkFqdNArt/Qo9JIOUdYc5qpoX8psLz/I=
+github.com/pulumi/terraform-plugin-framework v0.0.0-20230922145027-1535d08c1d47/go.mod h1:XC0hPcQbBvlbxwmjxuV/8sn8SbZRg4XwGMs22f+kqV0=
+github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20240202163305-e2a20ae13ef9 h1:k3SdGlmaJ49yaRV79Ktb5KGdPvuNfeiv4+oHXN+wyhs=
+github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20240202163305-e2a20ae13ef9/go.mod h1:qH/34G25Ugdj5FcM95cSoXzUgIbgfhVLXCcEcYaMwq8=
github.com/rakyll/embedmd v0.0.0-20171029212350-c8060a0752a2 h1:1jfy6i1g66ijpffgfaF/7pIFYZnSZzvo9P9DFkFmRIM=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk=
github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s=
github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4 h1:BN/Nyn2nWMoqGRA7G7paDNDqTXE30mXGqzzybrfo05w=
github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U=
github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc=
github.com/rs/zerolog v1.15.0 h1:uPRuwkWF4J6fGsJ2R0Gn2jB1EQiav9k3S6CSdygQJXY=
@@ -740,6 +1011,7 @@ github.com/sahilm/fuzzy v0.1.0/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU=
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 h1:0roa6gXKgyta64uqh52AQG3wzZXH21unn+ltzQSXML0=
+github.com/scaleway/scaleway-sdk-go v1.0.0-beta.21/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg=
github.com/sclevine/agouti v3.0.0+incompatible h1:8IBJS6PWz3uTlMP3YBIR5f+KAldcGuOeFkFbUWfBgK4=
github.com/sclevine/spec v1.2.0 h1:1Jwdf9jSfDl9NVmt8ndHqbTZ7XCCPbh1jI3hkDBHVYA=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=
@@ -748,7 +1020,9 @@ github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921 h1:58E
github.com/shirou/gopsutil/v3 v3.22.3 h1:UebRzEomgMpv61e3hgD1tGooqX5trFbdU/ehphbHd00=
github.com/shirou/gopsutil/v3 v3.22.3/go.mod h1:D01hZJ4pVHPpCTZ3m3T2+wDF2YAGfd+H4ifUguaQzHM=
github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
+github.com/shurcooL/go-goon v0.0.0-20210110234559-7585751d9a17/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 h1:bUGsEnyNbVPw06Bs80sCeARAlK8lhwqGyi6UT8ymuGk=
+github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c/go.mod h1:owqhoLW1qZoYLZzLnBw+QkPP9WZnjlSWihhxAJC1+/M=
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546 h1:pXY9qYc/MP5zdvqWEUH6SjNiu7VhSjuVFTFiTcphaLU=
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
@@ -757,6 +1031,7 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykE
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js=
github.com/sony/gobreaker v0.4.1 h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ=
+github.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67/go.mod h1:tNZjgbYncKL5HxvDULAr/mWDmFz4B7H8yrXEDlnoIiw=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
@@ -788,6 +1063,7 @@ github.com/willf/bitset v1.1.11 h1:N7Z7E9UvjW+sGsEl7k/SJrvY2reP1A07MrGuCjIOjRE=
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w=
github.com/xdg-go/stringprep v1.0.2 h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyhBc=
+github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
github.com/xlab/treeprint v1.1.0 h1:G/1DjNkPpfZCFt9CSh6b5/nY4VimlbHF3Rh4obvtzDk=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow=
@@ -814,68 +1090,123 @@ go.etcd.io/etcd/pkg/v3 v3.5.0 h1:ntrg6vvKRW26JRmHTE0iNlDgYK6JX3hg/4cD62X0ixk=
go.etcd.io/etcd/raft/v3 v3.5.0 h1:kw2TmO3yFTgE+F0mdKkG7xMxkit2duBDa2Hu6D/HMlw=
go.etcd.io/etcd/server/v3 v3.5.0 h1:jk8D/lwGEDlQU9kZXUFMSANkE22Sg5+mW27ip8xcF9E=
go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4=
+go.mongodb.org/mongo-driver v1.12.0/go.mod h1:AZkxhPnFJUoH7kZlFkVKucV20K387miPfm7oimrSmK0=
go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1 h1:A/5uWzF44DlIgdm/PQFwfMkW0JX+cIcQi/SwLAmZP5M=
+go.opentelemetry.io/collector/pdata v1.0.0-rcv0016/go.mod h1:OdN0alYOlYhHXu6BDlGehrZWgtBuiDsz/rlNeJeXiNg=
+go.opentelemetry.io/collector/semconv v0.87.0/go.mod h1:j/8THcqVxFna1FpvA2zYIsUperEtOaRaqoLYIN4doWw=
go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0 h1:Ky1MObd188aGbgb5OgNnwGuEEwI9MVIcc7rBW6zk5Ak=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 h1:mac9BKRqwaX6zxHPDe3pvmWpwuuIM0vuXv2juCnQevE=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0/go.mod h1:62CPTSry9QZtOaSsE3tOzhx6LzDhHnXJ6xHeMNNiM6Q=
go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM=
+go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY=
go.opentelemetry.io/otel/exporters/otlp v0.20.0 h1:PTNgq9MRmQqqJY0REVbZFvwkYOA85vbdQU/nVfxDyqg=
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0 h1:7Yxsak1q4XrJ5y7XBnNwqWx9amMZvoidCctv62XOQ6Y=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0 h1:cMDtmgJ5FpRvqx9x2Aq+Mm0O6K/zcUkH73SFz20TuBw=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0 h1:MFAyzUPrTwLOwCi+cltN0ZVyy4phU41lwH+lyMyQTS4=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0/go.mod h1:0+KuTDyKL4gjKCF75pHOX4wuzYDUZYfAQdSu43o+Z2I=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0 h1:pLP0MH4MAqeTEV0g/4flxw9O8Is48uAIauAnjznbW50=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU=
go.opentelemetry.io/otel/metric v0.30.0 h1:Hs8eQZ8aQgs0U49diZoaS6Uaxw3+bBE3lcMUKBFIk3c=
+go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8=
go.opentelemetry.io/otel/oteltest v0.20.0 h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw=
go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0=
+go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
go.opentelemetry.io/otel/sdk/export/metric v0.20.0 h1:c5VRjxCXdQlx1HjzwGdQHzZaVI82b5EbBgOu2ljD92g=
go.opentelemetry.io/otel/sdk/metric v0.20.0 h1:7ao1wpzHRVKf0OQ7GIxiQJA6X7DLX9o14gmVon7mMK8=
go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o=
+go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw=
+go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
go.pennock.tech/tabular v1.1.3 h1:JYN3TdVkTjOWdZz2FwKcW7f69vRhPl4NAQqJ8RZAsmY=
go.pennock.tech/tabular v1.1.3/go.mod h1:UzyxF5itNqTCS1ZGXfwDwbFgYj/lS+e67Fid68QOYZ0=
go.uber.org/automaxprocs v1.5.1 h1:e1YG66Lrk73dn4qhg8WFSvhF0JuFQF0ERIp4rpuV8Qk=
+go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0=
go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=
+go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8=
+go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=
go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8=
+go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
golang.org/x/arch v0.1.0 h1:oMxhUYsO9VsR1dcoVUjJjIGhx1LXol3989T/yZ59Xsw=
golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
+golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
+golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
+golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
golang.org/x/image v0.0.0-20220302094943-723b81ca9867 h1:TcHcE0vrmgzNH1v3ppjcMGbhG5+9fMuvOmUYwNEF4q4=
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs=
+golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
+golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
+golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE=
+golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk=
+golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0=
golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210218084038-e8e29180ff58/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
+golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
+golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/tools v0.0.0-20210101214203-2dba1e4ea05c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
+golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
+golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg=
gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E=
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc=
gonum.org/v1/plot v0.10.1 h1:dnifSs43YJuNMDzB7v8wV64O4ABBHReuAVAoBxqBqS4=
+google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750=
+google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY=
+google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI=
+google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg=
google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8 h1:Cpp2P6TPjujNoC5M2KHY6g7wfyLYfIWRZaSdIKfDasA=
google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64=
google.golang.org/genproto v0.0.0-20230629202037-9506855d4529/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64=
+google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4=
+google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI=
+google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4=
+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-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig=
+google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk=
+google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870=
+google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405/go.mod h1:oT32Z4o8Zv2xPQTg0pbVaPr0MPOH6f14RgXt7zfIpwg=
+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/bytestream v0.0.0-20230530153820-e85fd2cbaebc h1:g3hIDl0jRNd9PPTs2uBzYuaD5mQuwOkZY0vSc0LR32o=
google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA=
+google.golang.org/genproto/googleapis/bytestream v0.0.0-20231030173426-d783a09b4405/go.mod h1:GRUCuLdzVqZte8+Dl/D4N25yLzcGqqWaYkeVOwulFqw=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE=
+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.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8=
+google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
+google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE=
gopkg.in/airbrake/gobrake.v2 v2.0.9 h1:7z2uVWwn7oVeeugY1DtlPAy5H+KYgB1KeKTnqjNatLo=
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
@@ -887,27 +1218,32 @@ gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2 h1:OAj3g0cR6Dx/R07QgQe8wkA9RNj
gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec h1:RlWgLqCMMIYYEVcAR5MDsuHlVkaIPDAF+5Dehzg8L5A=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
+gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI=
gopkg.in/telebot.v3 v3.0.0 h1:UgHIiE/RdjoDi6nf4xACM7PU3TqiPVV9vvTydCEnrTo=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
-gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=
honnef.co/go/tools v0.1.3 h1:qTakTkI6ni6LFD5sBwwsdSO+AQqbSIxOauHTTQKZ/7o=
k8s.io/api v0.24.2 h1:g518dPU/L7VRLxWfcadQn2OnsiGWVOadTLpdnqgY2OI=
+k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg=
k8s.io/apimachinery v0.24.2 h1:5QlH9SL2C8KMcrNJPor+LbXVTaZRReml7svPEh4OKDM=
+k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU=
k8s.io/apiserver v0.22.5 h1:71krQxCUz218ecb+nPhfDsNB6QgP1/4EMvi1a2uYBlg=
k8s.io/client-go v0.24.2 h1:CoXFSf8if+bLEbinDqN9ePIDGzcLtqhfd6jpfnwGOFA=
+k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY=
k8s.io/code-generator v0.19.7 h1:kM/68Y26Z/u//TFc1ggVVcg62te8A2yQh57jBfD0FWQ=
k8s.io/component-base v0.22.5 h1:U0eHqZm7mAFE42hFwYhY6ze/MmVaW00JpMrzVsQmzYE=
k8s.io/cri-api v0.23.1 h1:0DHL/hpTf4Fp+QkUXFefWcp1fhjXr9OlNdY9X99c+O8=
k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA=
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
k8s.io/klog/v2 v2.70.0 h1:GMmmjoFOrNepPN0ZeGCzvD2Gh5IKRwdFx8W5PBxVTQU=
+k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 h1:Gii5eqf+GmIEwGNKQYQClCayuJCe2/4fZUvF7VG99sU=
+k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM=
k8s.io/kubernetes v1.13.0 h1:qTfB+u5M92k2fCCCVP2iuhgwwSOv1EkAkvQY1tQODD8=
k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc=
+k8s.io/utils v0.0.0-20230711102312-30195339c3c7/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI=
modernc.org/cc/v3 v3.36.3 h1:uISP3F66UlixxWEcKuIWERa4TwrZENHSL8tWxZz8bHg=
modernc.org/ccgo/v3 v3.16.9 h1:AXquSwg7GuMk11pIdw7fmO1Y/ybgazVkMhsZWCV0mHM=
@@ -922,10 +1258,13 @@ modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY=
modernc.org/tcl v1.13.1 h1:npxzTwFTZYM8ghWicVIX1cRWzj7Nd8i6AqqX2p+IYao=
modernc.org/token v1.0.0 h1:a0jaWiNMDhDUtqOj09wvjWWAqd3q7WpBulmL9H2egsk=
modernc.org/z v1.5.1 h1:RTNHdsrOpeoSeOF4FbzTo8gBYByaJ5xT7NgZ9ZqRiJM=
+mvdan.cc/editorconfig v0.2.0/go.mod h1:lvnnD3BNdBYkhq+B4uBuFFKatfp02eB6HixDvEz91C0=
mvdan.cc/gofumpt v0.0.0-20210107193838-d24d34e18d44/go.mod h1:yXG1r1WqZVKWbVRtBWKWX9+CxGYfA51nSomhM0woR48=
+mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ=
mvdan.cc/sh/v3 v3.7.0 h1:lSTjdP/1xsddtaKfGg7Myu7DnlHItd3/M2tomOcNNBg=
mvdan.cc/sh/v3 v3.7.0/go.mod h1:K2gwkaesF/D7av7Kxl0HbF5kGOd2ArupNTX3X44+8l8=
nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k=
+nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=
pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=
rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4=
@@ -933,7 +1272,11 @@ rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY=
rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22 h1:fmRfl9WJ4ApJn7LxNuED4m0t18qivVQOxP6aAYG9J6c=
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y=
+sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y=
+sigs.k8s.io/structured-merge-diff/v4 v4.3.0/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
+sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 h1:hfyJ5ku9yFtLVOiSxa3IN+dx5eBQT9mPmKFypAmg8XM=
+sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67 h1:e1sMhtVq9AfcEy8AXNb8eSg6gbzfdpYhoNqnPJa+GzI=
sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67/go.mod h1:L5q+DGLGOQFpo1snNEkLOJT2d1YTW66rWNzatr3He1k=
diff --git a/patches/0001-chore-Configure-Renovate-432.patch b/patches/0001-chore-Configure-Renovate-432.patch
deleted file mode 100644
index 9e222fcf..00000000
--- a/patches/0001-chore-Configure-Renovate-432.patch
+++ /dev/null
@@ -1,202 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Fri, 3 Nov 2023 09:20:30 -0500
-Subject: [PATCH 01/51] chore: Configure Renovate (#432)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[![Mend
-Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)
-
-Welcome to [Renovate](https://togithub.com/renovatebot/renovate)! This
-is an onboarding PR to help you understand and configure settings before
-regular Pull Requests begin.
-
-🚦 To activate Renovate, merge this Pull Request. To disable Renovate,
-simply close this Pull Request unmerged.
-
-
-
----
-### Detected Package Files
-
- * `.github/workflows/acctest.yml` (github-actions)
- * `.github/workflows/release.yml` (github-actions)
- * `.github/workflows/test.yml` (github-actions)
- * `.github/workflows/validate_pr.yml` (github-actions)
- * `go.mod` (gomod)
-
-### Configuration Summary
-
-Based on the default config's presets, Renovate will:
-
- - Start dependency updates only once this onboarding PR is merged
- - Show all Merge Confidence badges for pull requests.
- - Enable Renovate Dependency Dashboard creation.
-- Use semantic commit type `fix` for dependencies and `chore` for all
-others if semantic commits are in use.
-- Ignore `node_modules`, `bower_components`, `vendor` and various
-test/tests directories.
- - Group known monorepo packages together.
- - Use curated list of recommended non-monorepo package groupings.
- - Apply crowd-sourced package replacement rules.
- - Apply crowd-sourced workarounds for known problems with packages.
-
-🔡 Would you like to change the way Renovate is upgrading your
-dependencies? Simply edit the `renovate.json` in this branch with your
-custom config and the list of Pull Requests in the "What to Expect"
-section below will be updated the next time Renovate runs.
-
----
-
-### What to Expect
-
-With your current configuration, Renovate will create 8 Pull Requests:
-
-
-fix(deps): update golang.org/x/exp digest to 7918f67
-
- - Schedule: ["at any time"]
- - Branch name: `renovate/golang.org-x-exp-digest`
- - Merge into: `main`
-- Upgrade golang.org/x/exp to `7918f672742dd40ff5cf8d3c316a9315410c2d3c`
-
-
-
-
-
-fix(deps): update module github.com/equinix-labs/metal-go to
-v0.26.0
-
- - Schedule: ["at any time"]
- - Branch name: `renovate/github.com-equinix-labs-metal-go-0.x`
- - Merge into: `main`
-- Upgrade
-[github.com/equinix-labs/metal-go](https://togithub.com/equinix-labs/metal-go)
-to `v0.26.0`
-
-
-
-
-
-fix(deps): update module github.com/google/uuid to
-v1.4.0
-
- - Schedule: ["at any time"]
- - Branch name: `renovate/github.com-google-uuid-1.x`
- - Merge into: `main`
-- Upgrade [github.com/google/uuid](https://togithub.com/google/uuid) to
-`v1.4.0`
-
-
-
-
-
-fix(deps): update module github.com/gruntwork-io/terratest to
-v0.46.5
-
- - Schedule: ["at any time"]
- - Branch name: `renovate/github.com-gruntwork-io-terratest-0.x`
- - Merge into: `main`
-- Upgrade
-[github.com/gruntwork-io/terratest](https://togithub.com/gruntwork-io/terratest)
-to `v0.46.5`
-
-
-
-
-
-fix(deps): update module
-github.com/hashicorp/terraform-plugin-docs to v0.16.0
-
- - Schedule: ["at any time"]
-- Branch name: `renovate/github.com-hashicorp-terraform-plugin-docs-0.x`
- - Merge into: `main`
-- Upgrade
-[github.com/hashicorp/terraform-plugin-docs](https://togithub.com/hashicorp/terraform-plugin-docs)
-to `v0.16.0`
-
-
-
-
-
-chore(deps): update actions/checkout action to v4
-
- - Schedule: ["at any time"]
- - Branch name: `renovate/actions-checkout-4.x`
- - Merge into: `main`
-- Upgrade [actions/checkout](https://togithub.com/actions/checkout) to
-`v4`
-
-
-
-
-
-chore(deps): update crazy-max/ghaction-import-gpg action to
-v6
-
- - Schedule: ["at any time"]
- - Branch name: `renovate/crazy-max-ghaction-import-gpg-6.x`
- - Merge into: `main`
-- Upgrade
-[crazy-max/ghaction-import-gpg](https://togithub.com/crazy-max/ghaction-import-gpg)
-to `v6`
-
-
-
-
-
-chore(deps): update goreleaser/goreleaser-action action to
-v5
-
- - Schedule: ["at any time"]
- - Branch name: `renovate/goreleaser-goreleaser-action-5.x`
- - Merge into: `main`
-- Upgrade
-[goreleaser/goreleaser-action](https://togithub.com/goreleaser/goreleaser-action)
-to `v5`
-
-
-
-
-
-
-🚸 Branch creation will be limited to maximum 2 per hour, so it doesn't
-swamp any CI resources or overwhelm the project. See docs for
-`prhourlylimit` for details.
-
-
----
-
-❓ Got questions? Check out Renovate's
-[Docs](https://docs.renovatebot.com/), particularly the Getting Started
-section.
-If you need any further assistance then you can also [request help
-here](https://togithub.com/renovatebot/renovate/discussions).
-
-
----
-
-This PR has been generated by [Mend
-Renovate](https://www.mend.io/free-developer-tools/renovate/). View
-repository job log
-[here](https://developer.mend.io/github/equinix/terraform-provider-equinix).
-
-
-
-
-Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
-
-diff --git a/renovate.json b/renovate.json
-new file mode 100644
-index 0000000..39a2b6e
---- /dev/null
-+++ b/renovate.json
-@@ -0,0 +1,6 @@
-+{
-+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
-+ "extends": [
-+ "config:base"
-+ ]
-+}
diff --git a/patches/0001-pulumi-user-agent.patch b/patches/0001-pulumi-user-agent.patch
new file mode 100644
index 00000000..962d8f4f
--- /dev/null
+++ b/patches/0001-pulumi-user-agent.patch
@@ -0,0 +1,40 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: ocobleseqx
+Date: Wed, 6 Mar 2024 00:55:10 +0100
+Subject: [PATCH 1/2] pulumi user agent
+
+Signed-off-by: ocobleseqx
+
+diff --git a/internal/config/config.go b/internal/config/config.go
+index 50d17c1..8b93e11 100644
+--- a/internal/config/config.go
++++ b/internal/config/config.go
+@@ -373,20 +373,20 @@ func generateModuleUserAgentString(d *schema.ResourceData, baseUserAgent string)
+ }
+
+ func (c *Config) tfSdkUserAgent(suffix string) string {
+- sdkModulePath := "github.com/hashicorp/terraform-plugin-sdk/v2"
+- baseUserAgent := fmt.Sprintf("HashiCorp Terraform/%s (+https://www.terraform.io) Terraform Plugin SDK/%s",
+- c.TerraformVersion, moduleVersionFromBuild(sdkModulePath))
++ sdkModulePath := "github.com/pulumi/pulumi/pkg/v3"
++ baseUserAgent := fmt.Sprintf("Pulumi/%s (+https://www.pulumi.com) Pulumi Plugin SDK/%s",
++ c.TerraformVersion, moduleVersionFromBuild(sdkModulePath))
+ baseUserAgent = appendUserAgentFromEnv(baseUserAgent)
+- userAgent := fmt.Sprintf("%s terraform-provider-equinix/%s %s", baseUserAgent, version.ProviderVersion, suffix)
++ userAgent := fmt.Sprintf("%s pulumi-equinix/%s %s", baseUserAgent, version.ProviderVersion, suffix)
+ return strings.TrimSpace(userAgent)
+ }
+
+ func (c *Config) tfFrameworkUserAgent(suffix string) string {
+- frameworkModulePath := "github.com/hashicorp/terraform-plugin-framework"
+- baseUserAgent := fmt.Sprintf("HashiCorp Terraform/%s (+https://www.terraform.io) Terraform Plugin Framework/%s",
+- c.TerraformVersion, moduleVersionFromBuild(frameworkModulePath))
++ frameworkModulePath := "github.com/pulumi/pulumi/pkg/v3"
++ baseUserAgent := fmt.Sprintf("Pulumi/%s (+https://www.pulumi.com) Pulumi Plugin SDK/%s",
++ c.TerraformVersion, moduleVersionFromBuild(frameworkModulePath))
+ baseUserAgent = appendUserAgentFromEnv(baseUserAgent)
+- userAgent := fmt.Sprintf("%s terraform-provider-equinix/%s %s", baseUserAgent, version.ProviderVersion, suffix)
++ userAgent := fmt.Sprintf("%s pulumi-equinix/%s %s", baseUserAgent, version.ProviderVersion, suffix)
+ return strings.TrimSpace(userAgent)
+ }
+
diff --git a/patches/0002-fix-deps-update-module-github.com-equinix-labs-metal.patch b/patches/0002-fix-deps-update-module-github.com-equinix-labs-metal.patch
deleted file mode 100644
index 0e8bed88..00000000
--- a/patches/0002-fix-deps-update-module-github.com-equinix-labs-metal.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Fri, 3 Nov 2023 09:56:41 -0500
-Subject: [PATCH 02/51] fix(deps): update module
- github.com/equinix-labs/metal-go to v0.26.0 (#439)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[![Mend
-Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)
-
-This PR contains the following updates:
-
-| Package | Type | Update | Change |
-|---|---|---|---|
-|
-[github.com/equinix-labs/metal-go](https://togithub.com/equinix-labs/metal-go)
-| require | minor | `v0.25.1` -> `v0.26.0` |
-
----
-
-### Release Notes
-
-
-equinix-labs/metal-go
-(github.com/equinix-labs/metal-go)
-
-###
-[`v0.26.0`](https://togithub.com/equinix-labs/metal-go/releases/tag/v0.26.0)
-
-[Compare
-Source](https://togithub.com/equinix-labs/metal-go/compare/v0.25.1...v0.26.0)
-
-##### Features
-
-- include API messages in errors
-([#169](https://togithub.com/equinix-labs/metal-go/issues/169))
-([3216493](https://togithub.com/equinix-labs/metal-go/commit/3216493027de3dba162c7ba803e0069a2293a27f)),
-closes
-[#168](https://togithub.com/equinix-labs/metal-go/issues/168)
-
-
-
----
-
-### Configuration
-
-📅 **Schedule**: Branch creation - At any time (no schedule defined),
-Automerge - At any time (no schedule defined).
-
-🚦 **Automerge**: Disabled by config. Please merge this manually once you
-are satisfied.
-
-♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
-rebase/retry checkbox.
-
-🔕 **Ignore**: Close this PR and you won't be reminded about this update
-again.
-
----
-
-- [ ] If you want to rebase/retry this PR, check
-this box
-
----
-
-This PR has been generated by [Mend
-Renovate](https://www.mend.io/free-developer-tools/renovate/). View
-repository job log
-[here](https://developer.mend.io/github/equinix/terraform-provider-equinix).
-
-
-
-Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
-
-diff --git a/go.mod b/go.mod
-index 468d567..8ac2dfb 100644
---- a/go.mod
-+++ b/go.mod
-@@ -5,7 +5,7 @@ go 1.20
- require (
- github.com/antihax/optional v1.0.0
- github.com/equinix-labs/fabric-go v0.7.0
-- github.com/equinix-labs/metal-go v0.25.1
-+ github.com/equinix-labs/metal-go v0.26.0
- github.com/equinix/ecx-go/v2 v2.3.1
- github.com/equinix/ne-go v1.11.0
- github.com/equinix/oauth2-go v1.0.0
-diff --git a/go.sum b/go.sum
-index 01dba66..da82303 100644
---- a/go.sum
-+++ b/go.sum
-@@ -262,6 +262,8 @@ github.com/equinix-labs/fabric-go v0.7.0 h1:AiiVPD4aE/aeiuCK7Fhsq4bvjmJ5RzmZ3boK
- github.com/equinix-labs/fabric-go v0.7.0/go.mod h1:oqgGS3GOI8hHGPJKsAwDOEX0qRHl52sJGvwA/zMSd90=
- github.com/equinix-labs/metal-go v0.25.1 h1:uL83lRKyAcOfab+9r2xujAuLD8lTsqv89+SPvVFkcBM=
- github.com/equinix-labs/metal-go v0.25.1/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
-+github.com/equinix-labs/metal-go v0.26.0 h1:0rBTyjF8j58dg++kMFLRi9Jhs5gng5BFn5Y0bl5NPtM=
-+github.com/equinix-labs/metal-go v0.26.0/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
- github.com/equinix/ecx-go/v2 v2.3.1 h1:gFcAIeyaEUw7S8ebqApmT7E/S7pC7Ac3wgScp89fkPU=
- github.com/equinix/ecx-go/v2 v2.3.1/go.mod h1:FvCdZ3jXU8Z4CPKig2DT+4J2HdwgRK17pIcznM7RXyk=
- github.com/equinix/ne-go v1.11.0 h1:ja6G2fmcGrLsOeV25Mq6pDfH+/cUlvxJbnE8uRXTGGk=
diff --git a/patches/0002-shim-to-expose-internal-provider.patch b/patches/0002-shim-to-expose-internal-provider.patch
new file mode 100644
index 00000000..295cb2b3
--- /dev/null
+++ b/patches/0002-shim-to-expose-internal-provider.patch
@@ -0,0 +1,39 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: ocobleseqx
+Date: Wed, 6 Mar 2024 01:09:42 +0100
+Subject: [PATCH 2/2] shim to expose internal provider
+
+Signed-off-by: ocobleseqx
+
+diff --git a/shim/shim.go b/shim/shim.go
+new file mode 100644
+index 0000000..2c0816b
+--- /dev/null
++++ b/shim/shim.go
+@@ -0,0 +1,26 @@
++package shim
++
++import (
++ "context"
++
++ pfprovider "github.com/hashicorp/terraform-plugin-framework/provider"
++ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
++ "github.com/equinix/terraform-provider-equinix/equinix"
++ "github.com/equinix/terraform-provider-equinix/internal/provider"
++ "github.com/equinix/terraform-provider-equinix/version"
++)
++
++type UpstreamProvider struct {
++ SDKV2Provider *schema.Provider
++ PluginFrameworkProvider pfprovider.Provider
++}
++
++func NewUpstreamProvider(ctx context.Context) UpstreamProvider {
++ primary := equinix.Provider()
++ pf := provider.CreateFrameworkProvider(version.ProviderVersion)
++
++ return UpstreamProvider{
++ SDKV2Provider: primary,
++ PluginFrameworkProvider: pf,
++ }
++}
diff --git a/patches/0003-fix-Adding-Virtual-device-and-Interface-to-AccessPoi.patch b/patches/0003-fix-Adding-Virtual-device-and-Interface-to-AccessPoi.patch
deleted file mode 100644
index b7a1786f..00000000
--- a/patches/0003-fix-Adding-Virtual-device-and-Interface-to-AccessPoi.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: srushti-patl
-Date: Mon, 30 Oct 2023 09:23:17 -0700
-Subject: [PATCH 03/51] fix: Adding Virtual device and Interface to AccessPoint
- mapper function
-
-
-diff --git a/equinix/fabric_mapping_helper.go b/equinix/fabric_mapping_helper.go
-index 0ea1551..5dd709a 100644
---- a/equinix/fabric_mapping_helper.go
-+++ b/equinix/fabric_mapping_helper.go
-@@ -41,6 +41,8 @@ func accessPointToFabric(accessPointRequest []interface{}) v4.AccessPoint {
- portList := accessPointMap["port"].(*schema.Set).List()
- profileList := accessPointMap["profile"].(*schema.Set).List()
- locationList := accessPointMap["location"].(*schema.Set).List()
-+ virtualdeviceList := accessPointMap["virtual_device"].(*schema.Set).List()
-+ interfaceList := accessPointMap["interface"].(*schema.Set).List()
- networkList := accessPointMap["network"].(*schema.Set).List()
- typeVal := accessPointMap["type"].(string)
- authenticationKey := accessPointMap["authentication_key"].(string)
-@@ -108,6 +110,16 @@ func accessPointToFabric(accessPointRequest []interface{}) v4.AccessPoint {
- accessPoint.Location = &sl
- }
-
-+ if len(virtualdeviceList) != 0 {
-+ vd := virtualdeviceToFabric(virtualdeviceList)
-+ accessPoint.VirtualDevice = &vd
-+ }
-+
-+ if len(interfaceList) != 0 {
-+ il := interfaceToFabric(interfaceList)
-+ accessPoint.Interface_ = &il
-+ }
-+
- }
- return accessPoint
- }
-@@ -237,6 +249,7 @@ func simplifiedServiceProfileToFabric(profileList []interface{}) v4.SimplifiedSe
-
- func locationToFabric(locationList []interface{}) v4.SimplifiedLocation {
- sl := v4.SimplifiedLocation{}
-+ log.Printf("[DEBUG]value of sl", sl)
- for _, ll := range locationList {
- llMap := ll.(map[string]interface{})
- metroName := llMap["metro_name"]
-@@ -252,6 +265,27 @@ func locationToFabric(locationList []interface{}) v4.SimplifiedLocation {
- return sl
- }
-
-+func virtualdeviceToFabric(virtualdeviceList []interface{}) v4.VirtualDevice {
-+ vd := v4.VirtualDevice{}
-+ for _, ll := range virtualdeviceList {
-+ llMap := ll.(map[string]interface{})
-+ tp := llMap["type"].(string)
-+ ud := llMap["uuid"].(string)
-+ vd = v4.VirtualDevice{Type_: tp, Uuid: ud}
-+ }
-+ return vd
-+}
-+
-+func interfaceToFabric(interfaceList []interface{}) v4.ModelInterface {
-+ il := v4.ModelInterface{}
-+ for _, ll := range interfaceList {
-+ llMap := ll.(map[string]interface{})
-+ tp := llMap["type"].(string)
-+ il = v4.ModelInterface{Type_: tp}
-+ }
-+ return il
-+}
-+
- func accountToCloudRouter(accountList []interface{}) v4.SimplifiedAccount {
- sa := v4.SimplifiedAccount{}
- for _, ll := range accountList {
diff --git a/patches/0004-fix-Updating-Fabric-Connection-Schema-for-aside.acce.patch b/patches/0004-fix-Updating-Fabric-Connection-Schema-for-aside.acce.patch
deleted file mode 100644
index da7fb72b..00000000
--- a/patches/0004-fix-Updating-Fabric-Connection-Schema-for-aside.acce.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: srushti-patl
-Date: Tue, 31 Oct 2023 11:55:23 -0700
-Subject: [PATCH 04/51] fix: Updating Fabric Connection Schema for
- aside.access_point
-
-
-diff --git a/docs/resources/equinix_fabric_connection.md b/docs/resources/equinix_fabric_connection.md
-index edf9fc8..16548cd 100644
---- a/docs/resources/equinix_fabric_connection.md
-+++ b/docs/resources/equinix_fabric_connection.md
-@@ -103,6 +103,12 @@ Read-Only:
-
- - `id` (String) id
-
-+
-+### Nested Schema for `a_side.access_point.network`
-+
-+Required:
-+- `uuid` (String) Equinix-assigned network identifier
-+
-
-
- ### Nested Schema for `a_side.access_point.link_protocol`
-@@ -192,10 +198,6 @@ Optional:
- - `type` (String) Virtual Device type
- - `uuid` (String) Equinix-assigned Virtual Device identifier
-
--Read-Only:
--
--- `href` (String) Unique Resource Identifier
--
-
-
- ### Nested Schema for `a_side.access_point.account`
-diff --git a/equinix/fabric_connection_schema.go b/equinix/fabric_connection_schema.go
-index a92e866..4b841d3 100755
---- a/equinix/fabric_connection_schema.go
-+++ b/equinix/fabric_connection_schema.go
-@@ -229,6 +229,11 @@ func createAccessPointVirtualDeviceSch() map[string]*schema.Schema {
- Optional: true,
- Description: "Virtual Device type",
- },
-+ "name": {
-+ Type: schema.TypeString,
-+ Optional: true,
-+ Description: "Customer-assigned Virtual Device Name",
-+ },
- }
- }
-
-@@ -240,7 +245,7 @@ func createAccessPointInterface() map[string]*schema.Schema {
- Description: "Equinix-assigned interface identifier",
- },
- "id": {
-- Type: schema.TypeString,
-+ Type: schema.TypeInt,
- Computed: true,
- Description: "id",
- },
-diff --git a/equinix/fabric_mapping_helper.go b/equinix/fabric_mapping_helper.go
-index 5dd709a..e8febd2 100644
---- a/equinix/fabric_mapping_helper.go
-+++ b/equinix/fabric_mapping_helper.go
-@@ -249,7 +249,6 @@ func simplifiedServiceProfileToFabric(profileList []interface{}) v4.SimplifiedSe
-
- func locationToFabric(locationList []interface{}) v4.SimplifiedLocation {
- sl := v4.SimplifiedLocation{}
-- log.Printf("[DEBUG]value of sl", sl)
- for _, ll := range locationList {
- llMap := ll.(map[string]interface{})
- metroName := llMap["metro_name"]
diff --git a/patches/0005-fix-removing-additional_info-parameters-from-ibm2-ma.patch b/patches/0005-fix-removing-additional_info-parameters-from-ibm2-ma.patch
deleted file mode 100644
index fa21a5cb..00000000
--- a/patches/0005-fix-removing-additional_info-parameters-from-ibm2-ma.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: srushti-patl
-Date: Wed, 1 Nov 2023 11:56:58 -0700
-Subject: [PATCH 05/51] fix: removing additional_info parameters from ibm2
- main.tf file
-
-
-diff --git a/docs/resources/equinix_fabric_connection.md b/docs/resources/equinix_fabric_connection.md
-index 16548cd..744aefb 100644
---- a/docs/resources/equinix_fabric_connection.md
-+++ b/docs/resources/equinix_fabric_connection.md
-@@ -64,6 +64,7 @@ Optional:
- - **Deprecated** `gateway` Use `router` attribute instead; (Block Set) (see [below for nested schema](#nestedblock--a_side--access_point--router))
- - `router` (Block Set) Cloud Router access point information that replaces `gateway` (refers to [below for nested schema](#nestedblock--a_side--access_point--router))
- - `interface` (Block Set) Virtual device interface (see [below for nested schema](#nestedblock--a_side--access_point--interface))
-+- `network` (Block Set) Simplified Network (see [below for nested schema](#nestedblock--a_side--access_point--network))
- - `link_protocol` (Block Set) Connection link protocol (see [below for nested schema](#nestedblock--a_side--access_point--link_protocol))
- - `location` (Block Set) Access point location (see [below for nested schema](#nestedblock--a_side--access_point--location))
- - `peering_type` (String) Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL
-diff --git a/examples/fabric/v4/portConnectivity/ibm/ibm2/README.md b/examples/fabric/v4/portConnectivity/ibm/ibm2/README.md
-index 70e2069..26f0a12 100644
---- a/examples/fabric/v4/portConnectivity/ibm/ibm2/README.md
-+++ b/examples/fabric/v4/portConnectivity/ibm/ibm2/README.md
-@@ -30,6 +30,12 @@ At minimum, you must set below variables in `terraform.tfvars` file:
- `seller_asn` - Seller ASN Number
- `seller_region` - Seller Region
-
-+## Note
-+* You can modify the IBM side of the connection using parameters passed to additional_info field
-+ `{"key": "Global", "value": "false"}`
-+ `{"key": "BGP_IBM_CIDR", "value": "172.16.0.18/30"}`
-+ `{"key": "BGP_CER_CIDR", "value": "172.16.0.19/30"}`
-+
- ## IBM login
-
- Log in to IBM portal with an account that has permission to create necessary resources.
-diff --git a/examples/fabric/v4/portConnectivity/ibm/ibm2/main.tf b/examples/fabric/v4/portConnectivity/ibm/ibm2/main.tf
-index f55849e..65698a8 100644
---- a/examples/fabric/v4/portConnectivity/ibm/ibm2/main.tf
-+++ b/examples/fabric/v4/portConnectivity/ibm/ibm2/main.tf
-@@ -28,7 +28,7 @@ resource "equinix_fabric_connection" "ibm2" {
-
- bandwidth = var.bandwidth
-
-- additional_info = [{key = "ASN", value = var.seller_asn }, {"key"= "Global","value" = "false"}, {"key" = "BGP_IBM_CIDR","value" = "172.16.0.18/30"},{"key" = "BGP_CER_CIDR","value" = "172.16.0.19/30"} ]
-+ additional_info = [{key = "ASN", value = var.seller_asn }]
-
- redundancy { priority = var.redundancy }
- order {
diff --git a/patches/0006-fix-adding-missing-parameters-to-aside.access_point-.patch b/patches/0006-fix-adding-missing-parameters-to-aside.access_point-.patch
deleted file mode 100644
index a8b6ca2d..00000000
--- a/patches/0006-fix-adding-missing-parameters-to-aside.access_point-.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: srushti-patl
-Date: Wed, 1 Nov 2023 16:19:57 -0700
-Subject: [PATCH 06/51] fix: adding missing parameters to aside.access_point
- model and updating docs
-
-
-diff --git a/docs/data-sources/equinix_fabric_connection.md b/docs/data-sources/equinix_fabric_connection.md
-index f528625..d60bd2a 100644
---- a/docs/data-sources/equinix_fabric_connection.md
-+++ b/docs/data-sources/equinix_fabric_connection.md
-@@ -261,6 +261,7 @@ Read-Only:
- - `key` (String)
- - `value` (String)
-
-+~> **NOTE:** Connection could be modified from Service Provider Side by using parameters passed to additional_info field: `{"key": "ASN", "value": "1111"}` `{"key": "Global", "value": "false"}` `{"key": "BGP_IBM_CIDR", "value": "172.16.0.18/30"}` `{"key": "BGP_CER_CIDR", "value": "172.16.0.19/30"}`
-
-
- ### Nested Schema for `change_log`
-diff --git a/docs/resources/equinix_ecx_l2_connection.md b/docs/resources/equinix_ecx_l2_connection.md
-index 09a2af9..cdb2b1a 100644
---- a/docs/resources/equinix_ecx_l2_connection.md
-+++ b/docs/resources/equinix_ecx_l2_connection.md
-@@ -61,7 +61,7 @@ resource "equinix_ecx_l2_connection" "ports-2-azure" {
- vlan_ctag = 2512
- seller_metro_code = "SV"
- named_tag = "PRIVATE"
-- authorization_key = "c4dff8e8-b52f-4b34-b0d4-c4588f7338f3
-+ authorization_key = "c4dff8e8-b52f-4b34-b0d4-c4588f7338f3"
- secondary_connection {
- name = "tf-azure-sec"
- port_uuid = data.equinix_ecx_port.sv-qinq-sec.id
-@@ -184,8 +184,11 @@ for more details.
- docs.
-
- * `additional_info` - (Optional) one or more additional information key-value objects
-- * `name` - (Required) additional information key
-+ * `key` - (Required) additional information key
- * `value` - (Required) additional information value
-+
-+~> **NOTE:** Connection could be modified from Service Provider Side by using parameters passed to additional_info field: `{"key": "ASN", "value": "1111"}` `{"key": "Global", "value": "false"}` `{"key": "BGP_IBM_CIDR", "value": "172.16.0.18/30"}` `{"key": "BGP_CER_CIDR", "value": "172.16.0.19/30"}`
-+
- * `zside_port_uuid` - (Optional) Unique identifier of the port on the remote/destination side
- (z-side). Allows you to connect between your own ports or virtual devices across your company's
- Equinix Fabric deployment, with no need for a private service profile.
-diff --git a/docs/resources/equinix_fabric_connection.md b/docs/resources/equinix_fabric_connection.md
-index 744aefb..d9ce970 100644
---- a/docs/resources/equinix_fabric_connection.md
-+++ b/docs/resources/equinix_fabric_connection.md
-@@ -104,7 +104,7 @@ Read-Only:
-
- - `id` (String) id
-
--
-+
- ### Nested Schema for `a_side.access_point.network`
-
- Required:
-@@ -197,9 +197,15 @@ Optional:
- Optional:
-
- - `type` (String) Virtual Device type
-+- `name` (String) Customer-assigned Virtual Device Name
- - `uuid` (String) Equinix-assigned Virtual Device identifier
-
-
-+Read-Only:
-+
-+- `href` (String) Unique Resource Identifier
-+
-+
-
- ### Nested Schema for `a_side.access_point.account`
-
-@@ -223,6 +229,7 @@ Optional:
- - `key` (String) Additional information key
- - `value` (String) Additional information value
-
-+~> **NOTE:** Connection could be modified from Service Provider Side by using parameters passed to additional_info field: `{"key": "ASN", "value": "1111"}` `{"key": "Global", "value": "false"}` `{"key": "BGP_IBM_CIDR", "value": "172.16.0.18/30"}` `{"key": "BGP_CER_CIDR", "value": "172.16.0.19/30"}`
-
-
- ### Nested Schema for `a_side.service_token`
-diff --git a/equinix/fabric_mapping_helper.go b/equinix/fabric_mapping_helper.go
-index e8febd2..8d8bca7 100644
---- a/equinix/fabric_mapping_helper.go
-+++ b/equinix/fabric_mapping_helper.go
-@@ -268,9 +268,11 @@ func virtualdeviceToFabric(virtualdeviceList []interface{}) v4.VirtualDevice {
- vd := v4.VirtualDevice{}
- for _, ll := range virtualdeviceList {
- llMap := ll.(map[string]interface{})
-+ hr := llMap["href"].(string)
- tp := llMap["type"].(string)
- ud := llMap["uuid"].(string)
-- vd = v4.VirtualDevice{Type_: tp, Uuid: ud}
-+ na := llMap["name"].(string)
-+ vd = v4.VirtualDevice{Href: hr, Type_: tp, Uuid: ud, Name: na}
- }
- return vd
- }
-@@ -279,8 +281,10 @@ func interfaceToFabric(interfaceList []interface{}) v4.ModelInterface {
- il := v4.ModelInterface{}
- for _, ll := range interfaceList {
- llMap := ll.(map[string]interface{})
-+ ud := llMap["uuid"].(string)
- tp := llMap["type"].(string)
-- il = v4.ModelInterface{Type_: tp}
-+ id := llMap["id"].(int)
-+ il = v4.ModelInterface{Type_: tp, Uuid: ud, Id: int32(id)}
- }
- return il
- }
diff --git a/patches/0007-style-Updating-modules-documentation.patch b/patches/0007-style-Updating-modules-documentation.patch
deleted file mode 100644
index 95441c98..00000000
--- a/patches/0007-style-Updating-modules-documentation.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: srushti-patl
-Date: Thu, 2 Nov 2023 12:04:20 -0700
-Subject: [PATCH 07/51] style: Updating modules documentation
-
-
-diff --git a/docs/data-sources/equinix_fabric_connection.md b/docs/data-sources/equinix_fabric_connection.md
-index d60bd2a..f528625 100644
---- a/docs/data-sources/equinix_fabric_connection.md
-+++ b/docs/data-sources/equinix_fabric_connection.md
-@@ -261,7 +261,6 @@ Read-Only:
- - `key` (String)
- - `value` (String)
-
--~> **NOTE:** Connection could be modified from Service Provider Side by using parameters passed to additional_info field: `{"key": "ASN", "value": "1111"}` `{"key": "Global", "value": "false"}` `{"key": "BGP_IBM_CIDR", "value": "172.16.0.18/30"}` `{"key": "BGP_CER_CIDR", "value": "172.16.0.19/30"}`
-
-
- ### Nested Schema for `change_log`
-diff --git a/docs/resources/equinix_ecx_l2_connection.md b/docs/resources/equinix_ecx_l2_connection.md
-index cdb2b1a..626d0c0 100644
---- a/docs/resources/equinix_ecx_l2_connection.md
-+++ b/docs/resources/equinix_ecx_l2_connection.md
-@@ -184,11 +184,8 @@ for more details.
- docs.
-
- * `additional_info` - (Optional) one or more additional information key-value objects
-- * `key` - (Required) additional information key
-+ * `name` - (Required) additional information key
- * `value` - (Required) additional information value
--
--~> **NOTE:** Connection could be modified from Service Provider Side by using parameters passed to additional_info field: `{"key": "ASN", "value": "1111"}` `{"key": "Global", "value": "false"}` `{"key": "BGP_IBM_CIDR", "value": "172.16.0.18/30"}` `{"key": "BGP_CER_CIDR", "value": "172.16.0.19/30"}`
--
- * `zside_port_uuid` - (Optional) Unique identifier of the port on the remote/destination side
- (z-side). Allows you to connect between your own ports or virtual devices across your company's
- Equinix Fabric deployment, with no need for a private service profile.
-diff --git a/docs/resources/equinix_fabric_connection.md b/docs/resources/equinix_fabric_connection.md
-index d9ce970..a54d82f 100644
---- a/docs/resources/equinix_fabric_connection.md
-+++ b/docs/resources/equinix_fabric_connection.md
-@@ -229,7 +229,7 @@ Optional:
- - `key` (String) Additional information key
- - `value` (String) Additional information value
-
--~> **NOTE:** Connection could be modified from Service Provider Side by using parameters passed to additional_info field: `{"key": "ASN", "value": "1111"}` `{"key": "Global", "value": "false"}` `{"key": "BGP_IBM_CIDR", "value": "172.16.0.18/30"}` `{"key": "BGP_CER_CIDR", "value": "172.16.0.19/30"}`
-+~> **NOTE:** Port to IBM Connections could be modified from IBM Service Provider Side by using parameters passed to additional_info field: `{"key": "ASN", "value": "1111"}` `{"key": "Global", "value": "false"}` `{"key": "BGP_IBM_CIDR", "value": "172.16.0.18/30"}` `{"key": "BGP_CER_CIDR", "value": "172.16.0.19/30"}`
-
-
- ### Nested Schema for `a_side.service_token`
diff --git a/patches/0008-fix-remove-executable-flag-from-Golang-sources.patch b/patches/0008-fix-remove-executable-flag-from-Golang-sources.patch
deleted file mode 100644
index 316bfee4..00000000
--- a/patches/0008-fix-remove-executable-flag-from-Golang-sources.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tomas Karasek
-Date: Mon, 6 Nov 2023 15:17:43 +0100
-Subject: [PATCH 08/51] fix: remove executable flag from Golang sources
-
-
-diff --git a/equinix/data_source_fabric_cloud_router.go b/equinix/data_source_fabric_cloud_router.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/data_source_fabric_connection.go b/equinix/data_source_fabric_connection.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/data_source_fabric_service_profile.go b/equinix/data_source_fabric_service_profile.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/fabric_cloud_router_read_schema.go b/equinix/fabric_cloud_router_read_schema.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/fabric_cloud_router_schema.go b/equinix/fabric_cloud_router_schema.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/fabric_connection_read_schema.go b/equinix/fabric_connection_read_schema.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/fabric_connection_schema.go b/equinix/fabric_connection_schema.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/fabric_service_profile_read_schema.go b/equinix/fabric_service_profile_read_schema.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/fabric_service_profile_schema.go b/equinix/fabric_service_profile_schema.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/fabric_service_profile_search_schema.go b/equinix/fabric_service_profile_search_schema.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/resource_fabric_cloud_router.go b/equinix/resource_fabric_cloud_router.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/resource_fabric_cloud_router_acc_test.go b/equinix/resource_fabric_cloud_router_acc_test.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/resource_fabric_connection.go b/equinix/resource_fabric_connection.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/resource_fabric_connection_acc_test.go b/equinix/resource_fabric_connection_acc_test.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/resource_fabric_port.go b/equinix/resource_fabric_port.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/resource_fabric_port_acc_test.go b/equinix/resource_fabric_port_acc_test.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/resource_fabric_service_profile.go b/equinix/resource_fabric_service_profile.go
-old mode 100755
-new mode 100644
-diff --git a/equinix/resource_fabric_service_profile_acc_test.go b/equinix/resource_fabric_service_profile_acc_test.go
-old mode 100755
-new mode 100644
diff --git a/patches/0009-feat-Adding-Port2IBM1.0-example-and-test-script.patch b/patches/0009-feat-Adding-Port2IBM1.0-example-and-test-script.patch
deleted file mode 100644
index 8e09d332..00000000
--- a/patches/0009-feat-Adding-Port2IBM1.0-example-and-test-script.patch
+++ /dev/null
@@ -1,252 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: srushti-patl
-Date: Mon, 6 Nov 2023 12:42:54 -0800
-Subject: [PATCH 09/51] feat: Adding Port2IBM1.0 example and test script
-
-
-diff --git a/examples/fabric/v4/portConnectivity/ibm/ibm1/README.md b/examples/fabric/v4/portConnectivity/ibm/ibm1/README.md
-new file mode 100644
-index 0000000..fb4ae8c
---- /dev/null
-+++ b/examples/fabric/v4/portConnectivity/ibm/ibm1/README.md
-@@ -0,0 +1,58 @@
-+# ECX Fabric Layer2 Redundant Connection to IBM 1
-+
-+This example shows how to create Layer 2 Connection between ECX Fabric ports and IBM1 Cloud.
-+
-+## Adjust variables
-+
-+At minimum, you must set below variables in `terraform.tfvars` file:
-+
-+* `equinix_client_id` - Equinix client ID (consumer key), obtained after
-+ registering app in the developer platform
-+* `equinix_client_secret` - Equinix client secret ID (consumer secret),
-+ obtained same way as above
-+
-+`connection_name` - The name of the connection
-+`connection_type` - Connection type, please refer to OAS schema for enum values.
-+`notifications_type` - Notification type
-+`notifications_emails` - List of emails
-+`bandwidth` - Bandwidth in MBs
-+`redundancy` - Port redundancy
-+`purchase_order_number` - Purchase order number applied to billing invoices for this connection.
-+`aside_ap_type` - Access point type
-+`aside_link_protocol_type` - Link protocol type
-+`aside_pri_link_protocol_tag` - Tag number
-+`zside_ap_type` - Z side access point type
-+`zside_ap_authentication_key` - IBM authorization key (Account Id), like 1223344
-+`zside_ap_profile_type` - Service profile type
-+`zside_location` - Equinix Metro Code for the Z side access point
-+`fabric_sp_name` - Service profile name like i.e. IBM
-+`equinix_port_name` - Name of ECX Fabric Port
-+`seller_asn` - Seller ASN Number
-+`seller_region` - Seller Region
-+
-+## Note
-+* You can modify the IBM side of the connection using parameters passed to additional_info field
-+ `{"key": "Global", "value": "false"}`
-+ `{"key": "BGP_IBM_CIDR", "value": "172.16.0.18/30"}`
-+ `{"key": "BGP_CER_CIDR", "value": "172.16.0.19/30"}`
-+
-+## IBM login
-+
-+Log in to IBM portal with an account that has permission to create necessary resources.
-+
-+## Initialize
-+- First step is to initialize the terraform directory/resource we are going to work on.
-+ In the given example, the folder to perform CRUD operations for port2ibm1 connections can be found at examples/fabric/v4/portConnectivity/ibm/ibm1.
-+
-+- Change directory into - `CD examples/fabric/v4/portConnectivity/ibm/ibm1`
-+- Initialize Terraform plugins - `terraform init`
-+
-+## Port to IBM1 connection : Create, Read, Update and Delete(CRUD) operations
-+Note: `–auto-approve` command does not prompt the user for validating the applying config. Remove it to get a prompt to confirm the operation.
-+
-+| Operation | Command | Description |
-+|:----------|:---------------------------------:|--------------------------------------------------------------------------:|
-+| CREATE | `terraform apply –auto-approve` | Creates a port2ibm1 connection resources |
-+| READ | `terraform show` | Reads/Shows the current state of the port2ibm1 connection resources |
-+| UPDATE | `terraform apply -refresh` | Updates the connections with values provided in the terraform.tfvars file |
-+| DELETE | `terraform destroy –auto-approve` | Deletes the created port2ibm1 connection resources |
-diff --git a/examples/fabric/v4/portConnectivity/ibm/ibm1/main.tf b/examples/fabric/v4/portConnectivity/ibm/ibm1/main.tf
-new file mode 100644
-index 0000000..f512480
---- /dev/null
-+++ b/examples/fabric/v4/portConnectivity/ibm/ibm1/main.tf
-@@ -0,0 +1,69 @@
-+provider "equinix" {
-+ client_id = var.equinix_client_id
-+ client_secret = var.equinix_client_secret
-+}
-+
-+data "equinix_fabric_service_profiles" "ibm" {
-+ filter {
-+ property = "/name"
-+ operator = "="
-+ values = [var.fabric_sp_name]
-+ }
-+}
-+
-+data "equinix_fabric_ports" "port" {
-+ filters {
-+ name = var.equinix_port_name
-+ }
-+}
-+
-+resource "equinix_fabric_connection" "ibm1" {
-+ name = var.connection_name
-+ type = var.connection_type
-+
-+ notifications {
-+ type = var.notifications_type
-+ emails = var.notifications_emails
-+ }
-+
-+ bandwidth = var.bandwidth
-+
-+ additional_info = [{ key = "ASN", value = var.seller_asn }]
-+
-+ redundancy {
-+ priority = var.redundancy
-+ }
-+ order {
-+ purchase_order_number = var.purchase_order_number
-+ }
-+ a_side {
-+ access_point {
-+ type = var.aside_ap_type
-+ port {
-+ uuid = data.equinix_fabric_ports.port.id
-+ }
-+ link_protocol {
-+ type = var.aside_link_protocol_type
-+ vlan_tag = var.aside_link_protocol_tag
-+ }
-+ }
-+ }
-+ z_side {
-+ access_point {
-+ type = var.zside_ap_type
-+ authentication_key = var.zside_ap_authentication_key
-+ seller_region = var.seller_region
-+ profile {
-+ type = var.zside_ap_profile_type
-+ uuid = data.equinix_fabric_service_profiles.ibm.id
-+ }
-+ location {
-+ metro_code = var.zside_location
-+ }
-+ }
-+ }
-+}
-+
-+output "connection_result" {
-+ value = equinix_fabric_connection.ibm1.id
-+}
-diff --git a/examples/fabric/v4/portConnectivity/ibm/ibm1/terraform.tf b/examples/fabric/v4/portConnectivity/ibm/ibm1/terraform.tf
-new file mode 100644
-index 0000000..fd41df1
---- /dev/null
-+++ b/examples/fabric/v4/portConnectivity/ibm/ibm1/terraform.tf
-@@ -0,0 +1,7 @@
-+terraform {
-+ required_providers {
-+ equinix = {
-+ source = "equinix/equinix"
-+ }
-+ }
-+}
-diff --git a/examples/fabric/v4/portConnectivity/ibm/ibm1/terraform.tfvars.example b/examples/fabric/v4/portConnectivity/ibm/ibm1/terraform.tfvars.example
-new file mode 100644
-index 0000000..da96183
---- /dev/null
-+++ b/examples/fabric/v4/portConnectivity/ibm/ibm1/terraform.tfvars.example
-@@ -0,0 +1,21 @@
-+equinix_client_id = "MyEquinixClientId"
-+equinix_client_secret = "MyEquinixClientSecret"
-+
-+connection_name = "Terra_Port2IBM1"
-+connection_type = "EVPL_VC"
-+notifications_type = "ALL"
-+notifications_emails = ["example@equinix.com"]
-+bandwidth = 50
-+redundancy = "PRIMARY"
-+purchase_order_number = "1-323292"
-+aside_ap_type = "COLO"
-+aside_link_protocol_type = "DOT1Q"
-+aside_link_protocol_tag = "3202"
-+zside_ap_type = "SP"
-+zside_ap_authentication_key = "IBM Authentication Key"
-+zside_ap_profile_type = "L2_PROFILE"
-+zside_location = "SV"
-+fabric_sp_name = "IBM Cloud Direct Link Exchange"
-+equinix_port_name = "Equinix Port Name"
-+seller_asn = "9000"
-+seller_region = "San Jose 2"
-diff --git a/examples/fabric/v4/portConnectivity/ibm/ibm1/variables.tf b/examples/fabric/v4/portConnectivity/ibm/ibm1/variables.tf
-new file mode 100644
-index 0000000..b8ddcb5
---- /dev/null
-+++ b/examples/fabric/v4/portConnectivity/ibm/ibm1/variables.tf
-@@ -0,0 +1,20 @@
-+variable "equinix_client_id" {}
-+variable "equinix_client_secret" {}
-+variable "connection_name" {}
-+variable "connection_type" {}
-+variable "notifications_type" {}
-+variable "notifications_emails" {}
-+variable "bandwidth" {}
-+variable "redundancy" {}
-+variable "purchase_order_number" {}
-+variable "aside_ap_type" {}
-+variable "aside_link_protocol_type" {}
-+variable "aside_link_protocol_tag" {}
-+variable "zside_ap_type" {}
-+variable "zside_ap_authentication_key" {}
-+variable "zside_ap_profile_type" {}
-+variable "zside_location" {}
-+variable "fabric_sp_name" {}
-+variable "equinix_port_name" {}
-+variable "seller_asn" {}
-+variable "seller_region" {}
-diff --git a/tests/connection_e2e_ibm1_test.go b/tests/connection_e2e_ibm1_test.go
-new file mode 100644
-index 0000000..0f2d06a
---- /dev/null
-+++ b/tests/connection_e2e_ibm1_test.go
-@@ -0,0 +1,22 @@
-+package tests
-+
-+import (
-+ "testing"
-+
-+ "github.com/gruntwork-io/terratest/modules/terraform"
-+ "github.com/stretchr/testify/assert"
-+)
-+
-+func TestIBM1CreateConnection(t *testing.T) {
-+ // retryable errors in terraform testing.
-+ terraformOptions := terraform.WithDefaultRetryableErrors(t, &terraform.Options{
-+ TerraformDir: "../examples/fabric/v4/portConnectivity/ibm/ibm1",
-+ })
-+
-+ defer terraform.Destroy(t, terraformOptions)
-+
-+ terraform.InitAndApply(t, terraformOptions)
-+
-+ output := terraform.Output(t, terraformOptions, "connection_result")
-+ assert.NotNil(t, output)
-+}
-diff --git a/tests/connection_e2e_ibm2_test.go b/tests/connection_e2e_ibm2_test.go
-index 7cf580c..46d135e 100644
---- a/tests/connection_e2e_ibm2_test.go
-+++ b/tests/connection_e2e_ibm2_test.go
-@@ -7,7 +7,7 @@ import (
- "github.com/stretchr/testify/assert"
- )
-
--func TestIBMCreateConnection(t *testing.T) {
-+func TestIBM2CreateConnection(t *testing.T) {
- // retryable errors in terraform testing.
- terraformOptions := terraform.WithDefaultRetryableErrors(t, &terraform.Options{
- TerraformDir: "../examples/fabric/v4/portConnectivity/ibm/ibm2",
diff --git a/patches/0010-gh-action-to-open-issue-in-Pulumi.patch b/patches/0010-gh-action-to-open-issue-in-Pulumi.patch
deleted file mode 100644
index 54e63acc..00000000
--- a/patches/0010-gh-action-to-open-issue-in-Pulumi.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: ocobleseqx
-Date: Tue, 7 Nov 2023 00:12:53 +0100
-Subject: [PATCH 10/51] gh action to open issue in Pulumi
-
-Signed-off-by: ocobleseqx
-
-diff --git a/.github/workflows/pulumi.yml b/.github/workflows/pulumi.yml
-new file mode 100644
-index 0000000..a5bbb85
---- /dev/null
-+++ b/.github/workflows/pulumi.yml
-@@ -0,0 +1,21 @@
-+name: Upgrade provider dependency in Pulumi provider
-+on:
-+ push:
-+ tags:
-+ - 'v*'
-+ workflow_dispatch:
-+env:
-+ PULUMI_REPO_OWNER: equinix
-+ PULUMI_REPO_NAME: pulumi-equinix
-+jobs:
-+ release:
-+ runs-on: ubuntu-latest
-+ steps:
-+ - name: Open new ISSUE on Pulumi provider repository
-+ uses: GuillaumeFalourd/open-issue-action@v1
-+ with:
-+ access-token: ${{ secrets.PULUMI_ACCESS_TOKEN }}
-+ repo-owner: ${{ env.PULUMI_REPO_OWNER }}
-+ repo-name: ${{ env.PULUMI_REPO_NAME }}
-+ issue-title: Upgrade ${{ github.event.repository.name }} to ${{ github.ref_name }}
-+ issue-body: "Release details: https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}"
-\ No newline at end of file
diff --git a/patches/0011-fixup-gh-action-to-open-issue-in-Pulumi.patch b/patches/0011-fixup-gh-action-to-open-issue-in-Pulumi.patch
deleted file mode 100644
index e478be63..00000000
--- a/patches/0011-fixup-gh-action-to-open-issue-in-Pulumi.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: ocobleseqx
-Date: Tue, 7 Nov 2023 00:14:17 +0100
-Subject: [PATCH 11/51] fixup! gh action to open issue in Pulumi
-
-Signed-off-by: ocobleseqx
-
-diff --git a/.github/workflows/pulumi.yml b/.github/workflows/pulumi.yml
-index a5bbb85..e70f48a 100644
---- a/.github/workflows/pulumi.yml
-+++ b/.github/workflows/pulumi.yml
-@@ -18,4 +18,4 @@ jobs:
- repo-owner: ${{ env.PULUMI_REPO_OWNER }}
- repo-name: ${{ env.PULUMI_REPO_NAME }}
- issue-title: Upgrade ${{ github.event.repository.name }} to ${{ github.ref_name }}
-- issue-body: "Release details: https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}"
-\ No newline at end of file
-+ issue-body: "Release details: https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}"
diff --git a/patches/0012-fix-deps-update-module-github.com-hashicorp-go-retry.patch b/patches/0012-fix-deps-update-module-github.com-hashicorp-go-retry.patch
deleted file mode 100644
index 7126e4ff..00000000
--- a/patches/0012-fix-deps-update-module-github.com-hashicorp-go-retry.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Tue, 14 Nov 2023 15:25:07 -0600
-Subject: [PATCH 12/51] fix(deps): update module
- github.com/hashicorp/go-retryablehttp to v0.7.5 (#453)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[![Mend Renovate logo
-banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)
-
-This PR contains the following updates:
-
-| Package | Type | Update | Change |
-|---|---|---|---|
-|
-[github.com/hashicorp/go-retryablehttp](https://togithub.com/hashicorp/go-retryablehttp)
-| require | patch | `v0.7.4` -> `v0.7.5` |
-
----
-
-### Release Notes
-
-
-hashicorp/go-retryablehttp
-(github.com/hashicorp/go-retryablehttp)
-
-###
-[`v0.7.5`](https://togithub.com/hashicorp/go-retryablehttp/compare/v0.7.4...v0.7.5)
-
-[Compare
-Source](https://togithub.com/hashicorp/go-retryablehttp/compare/v0.7.4...v0.7.5)
-
-
-
----
-
-### Configuration
-
-📅 **Schedule**: Branch creation - At any time (no schedule defined),
-Automerge - At any time (no schedule defined).
-
-🚦 **Automerge**: Disabled by config. Please merge this manually once you
-are satisfied.
-
-♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
-rebase/retry checkbox.
-
-🔕 **Ignore**: Close this PR and you won't be reminded about this update
-again.
-
----
-
-- [ ] If you want to rebase/retry this PR, check
-this box
-
----
-
-This PR has been generated by [Mend
-Renovate](https://www.mend.io/free-developer-tools/renovate/). View
-repository job log
-[here](https://developer.mend.io/github/equinix/terraform-provider-equinix).
-
-
-
-Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
-
-diff --git a/go.mod b/go.mod
-index 8ac2dfb..fd5cd26 100644
---- a/go.mod
-+++ b/go.mod
-@@ -14,7 +14,7 @@ require (
- github.com/gruntwork-io/terratest v0.43.0
- github.com/hashicorp/go-cty v1.4.1-0.20200723130312-85980079f637
- github.com/hashicorp/go-multierror v1.1.1
-- github.com/hashicorp/go-retryablehttp v0.7.4
-+ github.com/hashicorp/go-retryablehttp v0.7.5
- github.com/hashicorp/terraform-plugin-docs v0.14.1
- github.com/hashicorp/terraform-plugin-sdk/v2 v2.29.0
- github.com/packethost/packngo v0.30.0
-diff --git a/go.sum b/go.sum
-index da82303..aad654b 100644
---- a/go.sum
-+++ b/go.sum
-@@ -411,6 +411,8 @@ github.com/hashicorp/go-plugin v1.5.1 h1:oGm7cWBaYIp3lJpx1RUEfLWophprE2EV/KUeqBY
- github.com/hashicorp/go-plugin v1.5.1/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4=
- github.com/hashicorp/go-retryablehttp v0.7.4 h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA=
- github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
-+github.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M=
-+github.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
- github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
- github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
- github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
diff --git a/patches/0013-chore-deps-update-goreleaser-goreleaser-action-actio.patch b/patches/0013-chore-deps-update-goreleaser-goreleaser-action-actio.patch
deleted file mode 100644
index 94654e03..00000000
--- a/patches/0013-chore-deps-update-goreleaser-goreleaser-action-actio.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Tue, 14 Nov 2023 15:26:44 -0600
-Subject: [PATCH 13/51] chore(deps): update goreleaser/goreleaser-action action
- to v5 (#448)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[![Mend Renovate logo
-banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)
-
-This PR contains the following updates:
-
-| Package | Type | Update | Change |
-|---|---|---|---|
-|
-[goreleaser/goreleaser-action](https://togithub.com/goreleaser/goreleaser-action)
-| action | major | `v4` -> `v5` |
-
----
-
-### Release Notes
-
-
-goreleaser/goreleaser-action
-(goreleaser/goreleaser-action)
-
-###
-[`v5`](https://togithub.com/goreleaser/goreleaser-action/compare/v3...v5)
-
-[Compare
-Source](https://togithub.com/goreleaser/goreleaser-action/compare/v4...v5)
-
-
-
----
-
-### Configuration
-
-📅 **Schedule**: Branch creation - At any time (no schedule defined),
-Automerge - At any time (no schedule defined).
-
-🚦 **Automerge**: Disabled by config. Please merge this manually once you
-are satisfied.
-
-♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
-rebase/retry checkbox.
-
-🔕 **Ignore**: Close this PR and you won't be reminded about this update
-again.
-
----
-
-- [ ] If you want to rebase/retry this PR, check
-this box
-
----
-
-This PR has been generated by [Mend
-Renovate](https://www.mend.io/free-developer-tools/renovate/). View
-repository job log
-[here](https://developer.mend.io/github/equinix/terraform-provider-equinix).
-
-
-
-Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
-
-diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
-index e25feec..d5df861 100644
---- a/.github/workflows/release.yml
-+++ b/.github/workflows/release.yml
-@@ -43,7 +43,7 @@ jobs:
- passphrase: ${{ secrets.PASSPHRASE }}
-
- - name: Run GoReleaser
-- uses: goreleaser/goreleaser-action@v4
-+ uses: goreleaser/goreleaser-action@v5
- with:
- version: latest
- args: release --clean
diff --git a/patches/0014-chore-deps-update-crazy-max-ghaction-import-gpg-acti.patch b/patches/0014-chore-deps-update-crazy-max-ghaction-import-gpg-acti.patch
deleted file mode 100644
index 88daa859..00000000
--- a/patches/0014-chore-deps-update-crazy-max-ghaction-import-gpg-acti.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Tue, 14 Nov 2023 15:27:49 -0600
-Subject: [PATCH 14/51] chore(deps): update crazy-max/ghaction-import-gpg
- action to v6 (#447)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[![Mend Renovate logo
-banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)
-
-This PR contains the following updates:
-
-| Package | Type | Update | Change |
-|---|---|---|---|
-|
-[crazy-max/ghaction-import-gpg](https://togithub.com/crazy-max/ghaction-import-gpg)
-| action | major | `v5` -> `v6` |
-
----
-
-### Release Notes
-
-
-crazy-max/ghaction-import-gpg
-(crazy-max/ghaction-import-gpg)
-
-###
-[`v6`](https://togithub.com/crazy-max/ghaction-import-gpg/compare/v5...v6)
-
-[Compare
-Source](https://togithub.com/crazy-max/ghaction-import-gpg/compare/v5...v6)
-
-
-
----
-
-### Configuration
-
-📅 **Schedule**: Branch creation - At any time (no schedule defined),
-Automerge - At any time (no schedule defined).
-
-🚦 **Automerge**: Disabled by config. Please merge this manually once you
-are satisfied.
-
-♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
-rebase/retry checkbox.
-
-🔕 **Ignore**: Close this PR and you won't be reminded about this update
-again.
-
----
-
-- [ ] If you want to rebase/retry this PR, check
-this box
-
----
-
-This PR has been generated by [Mend
-Renovate](https://www.mend.io/free-developer-tools/renovate/). View
-repository job log
-[here](https://developer.mend.io/github/equinix/terraform-provider-equinix).
-
-
-
-Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
-
-diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
-index d5df861..9d77813 100644
---- a/.github/workflows/release.yml
-+++ b/.github/workflows/release.yml
-@@ -37,7 +37,7 @@ jobs:
-
- - name: Import GPG key
- id: import_gpg
-- uses: crazy-max/ghaction-import-gpg@v5
-+ uses: crazy-max/ghaction-import-gpg@v6
- with:
- gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
- passphrase: ${{ secrets.PASSPHRASE }}
diff --git a/patches/0015-chore-deps-update-actions-checkout-action-to-v4-444.patch b/patches/0015-chore-deps-update-actions-checkout-action-to-v4-444.patch
deleted file mode 100644
index 90bfe424..00000000
--- a/patches/0015-chore-deps-update-actions-checkout-action-to-v4-444.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Tue, 14 Nov 2023 15:28:54 -0600
-Subject: [PATCH 15/51] chore(deps): update actions/checkout action to v4
- (#444)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[![Mend Renovate logo
-banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)
-
-This PR contains the following updates:
-
-| Package | Type | Update | Change |
-|---|---|---|---|
-| [actions/checkout](https://togithub.com/actions/checkout) | action |
-major | `v3` -> `v4` |
-
----
-
-### Release Notes
-
-
-actions/checkout (actions/checkout)
-
-###
-[`v4`](https://togithub.com/actions/checkout/blob/HEAD/CHANGELOG.md#v400)
-
-[Compare Source](https://togithub.com/actions/checkout/compare/v3...v4)
-
-- [Support fetching without the --progress
-option](https://togithub.com/actions/checkout/pull/1067)
-- [Update to node20](https://togithub.com/actions/checkout/pull/1436)
-
-
-
----
-
-### Configuration
-
-📅 **Schedule**: Branch creation - At any time (no schedule defined),
-Automerge - At any time (no schedule defined).
-
-🚦 **Automerge**: Disabled by config. Please merge this manually once you
-are satisfied.
-
-♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
-rebase/retry checkbox.
-
-🔕 **Ignore**: Close this PR and you won't be reminded about this update
-again.
-
----
-
-- [ ] If you want to rebase/retry this PR, check
-this box
-
----
-
-This PR has been generated by [Mend
-Renovate](https://www.mend.io/free-developer-tools/renovate/). View
-repository job log
-[here](https://developer.mend.io/github/equinix/terraform-provider-equinix).
-
-
-
-Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
-
-diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
-index 9d77813..ba377b5 100644
---- a/.github/workflows/release.yml
-+++ b/.github/workflows/release.yml
-@@ -25,7 +25,7 @@ jobs:
- steps:
-
- - name: Check out code into the Go module directory
-- uses: actions/checkout@v3
-+ uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
-diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
-index 8e0995a..be60446 100644
---- a/.github/workflows/test.yml
-+++ b/.github/workflows/test.yml
-@@ -12,7 +12,7 @@ jobs:
- steps:
-
- - name: Check out code into the Go module directory
-- uses: actions/checkout@v3
-+ uses: actions/checkout@v4
-
- - name: Set up Go
- uses: actions/setup-go@v4
diff --git a/patches/0016-added-missing-read-only-fields.patch b/patches/0016-added-missing-read-only-fields.patch
deleted file mode 100644
index 49b4f3b6..00000000
--- a/patches/0016-added-missing-read-only-fields.patch
+++ /dev/null
@@ -1,172 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: ocobleseqx
-Date: Mon, 13 Nov 2023 23:41:13 +0100
-Subject: [PATCH 16/51] added missing read only fields
-
-Signed-off-by: ocobleseqx
-
-diff --git a/equinix/fabric_mapping_helper.go b/equinix/fabric_mapping_helper.go
-index 8d8bca7..5735913 100644
---- a/equinix/fabric_mapping_helper.go
-+++ b/equinix/fabric_mapping_helper.go
-@@ -619,7 +619,7 @@ func additionalInfoToTerra(additionalInfol []v4.ConnectionSideAdditionalInfo) []
- return mappedadditionalInfol
- }
-
--func CloudRouterToTerra(cloudRouter *v4.CloudRouter) *schema.Set {
-+func cloudRouterToTerra(cloudRouter *v4.CloudRouter) *schema.Set {
- if cloudRouter == nil {
- return nil
- }
-@@ -637,7 +637,7 @@ func CloudRouterToTerra(cloudRouter *v4.CloudRouter) *schema.Set {
- return linkedProtocolSet
- }
-
--func CloudRouterPackageToTerra(packageType *v4.CloudRouterPackageType) *schema.Set {
-+func cloudRouterPackageToTerra(packageType *v4.CloudRouterPackageType) *schema.Set {
- packageTypes := []*v4.CloudRouterPackageType{packageType}
- mappedPackages := make([]interface{}, len(packageTypes))
- for i, packageType := range packageTypes {
-@@ -652,6 +652,26 @@ func CloudRouterPackageToTerra(packageType *v4.CloudRouterPackageType) *schema.S
- return packageSet
- }
-
-+func orderToTerra(order *v4.Order) *schema.Set {
-+ if order == nil {
-+ return nil
-+ }
-+ orders := []*v4.Order{order}
-+ mappedOrders := make([]interface{}, len(orders))
-+ for _, order := range orders {
-+ mappedOrder := make(map[string]interface{})
-+ mappedOrder["purchase_order_number"] = order.PurchaseOrderNumber
-+ mappedOrder["billing_tier"] = order.BillingTier
-+ mappedOrder["order_id"] = order.OrderId
-+ mappedOrder["order_number"] = order.OrderNumber
-+ mappedOrders = append(mappedOrders, mappedOrder)
-+ }
-+ orderSet := schema.NewSet(
-+ schema.HashResource(readOrderRes),
-+ mappedOrders)
-+ return orderSet
-+}
-+
- func projectToTerra(project *v4.Project) *schema.Set {
- if project == nil {
- return nil
-@@ -729,7 +749,7 @@ func accessPointToTerra(accessPoint *v4.AccessPoint) *schema.Set {
- mappedAccessPoint["profile"] = simplifiedServiceProfileToTerra(accessPoint.Profile)
- }
- if accessPoint.Router != nil {
-- mappedAccessPoint["router"] = CloudRouterToTerra(accessPoint.Router)
-+ mappedAccessPoint["router"] = cloudRouterToTerra(accessPoint.Router)
- }
- if accessPoint.LinkProtocol != nil {
- mappedAccessPoint["link_protocol"] = linkedProtocolToTerra(*accessPoint.LinkProtocol)
-diff --git a/equinix/resource_fabric_cloud_router.go b/equinix/resource_fabric_cloud_router.go
-index ed67ab8..e32f4bc 100644
---- a/equinix/resource_fabric_cloud_router.go
-+++ b/equinix/resource_fabric_cloud_router.go
-@@ -97,16 +97,21 @@ func resourceCloudRouterRead(ctx context.Context, d *schema.ResourceData, meta i
- func setCloudRouterMap(d *schema.ResourceData, fcr v4.CloudRouter) diag.Diagnostics {
- diags := diag.Diagnostics{}
- err := setMap(d, map[string]interface{}{
-- "name": fcr.Name,
-- "href": fcr.Href,
-- "type": fcr.Type_,
-- "state": fcr.State,
-- "package": CloudRouterPackageToTerra(fcr.Package_),
-- "location": locationCloudRouterToTerra(fcr.Location),
-- "change_log": changeLogToTerra(fcr.ChangeLog),
-- "account": accountCloudRouterToTerra(fcr.Account),
-- "notifications": notificationToTerra(fcr.Notifications),
-- "project": projectToTerra(fcr.Project),
-+ "name": fcr.Name,
-+ "href": fcr.Href,
-+ "type": fcr.Type_,
-+ "state": fcr.State,
-+ "package": cloudRouterPackageToTerra(fcr.Package_),
-+ "location": locationCloudRouterToTerra(fcr.Location),
-+ "change_log": changeLogToTerra(fcr.ChangeLog),
-+ "account": accountCloudRouterToTerra(fcr.Account),
-+ "notifications": notificationToTerra(fcr.Notifications),
-+ "project": projectToTerra(fcr.Project),
-+ "equinix_asn": fcr.EquinixAsn,
-+ "bgp_ipv4_routes_count": fcr.BgpIpv4RoutesCount,
-+ "bgp_ipv6_routes_count": fcr.BgpIpv6RoutesCount,
-+ "connections_count": fcr.ConnectionsCount,
-+ "order": orderToTerra(fcr.Order),
- })
- if err != nil {
- return diag.FromErr(err)
-diff --git a/equinix/resource_fabric_cloud_router_acc_test.go b/equinix/resource_fabric_cloud_router_acc_test.go
-index a433982..cbd5743 100644
---- a/equinix/resource_fabric_cloud_router_acc_test.go
-+++ b/equinix/resource_fabric_cloud_router_acc_test.go
-@@ -20,7 +20,7 @@ func TestAccCloudRouterCreate(t *testing.T) {
- Config: testAccCloudRouterCreateConfig("fg_tf_acc_test"),
- Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttr(
-- "equinix_fabric_cloud_router.test", "name", fmt.Sprint("fg_tf_acc_test")),
-+ "equinix_fabric_cloud_router.test", "name", "fg_tf_acc_test"),
- ),
- ExpectNonEmptyPlan: false,
- },
-@@ -28,7 +28,7 @@ func TestAccCloudRouterCreate(t *testing.T) {
- Config: testAccCloudRouterCreateConfig("fg_tf_acc_update"),
- Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttr(
-- "equinix_fabric_cloud_router.test", "name", fmt.Sprint("fg_tf_acc_update")),
-+ "equinix_fabric_cloud_router.test", "name", "fg_tf_acc_update"),
- ),
- ExpectNonEmptyPlan: false,
- },
-@@ -59,22 +59,22 @@ func testAccCloudRouterCreateConfig(name string) string {
- metro_code = "SV"
- }
- package{
-- code = "PRO"
-+ code = "PRO"
- }
- order{
- purchase_order_number = "1-234567"
- }
-- notifications{
-- type = "ALL"
-- emails = [
-+ notifications{
-+ type = "ALL"
-+ emails = [
- "test@equinix.com",
- "test1@equinix.com"
- ]
- }
-- project{
-- project_id = "776847000642406"
-+ project{
-+ project_id = "776847000642406"
- }
-- account {
-+ account {
- account_number = 203612
- }
- }`, name)
-@@ -89,7 +89,7 @@ func TestAccCloudRouterRead(t *testing.T) {
- Config: testAccCloudRouterReadConfig(),
- Check: resource.ComposeTestCheckFunc(
- resource.TestCheckResourceAttr(
-- "equinix_fabric_cloud_router.test", "name", fmt.Sprint("fcr_tf_acc_test")),
-+ "equinix_fabric_cloud_router.test", "name", "fcr_tf_acc_test"),
- ),
- },
- },
-@@ -97,7 +97,7 @@ func TestAccCloudRouterRead(t *testing.T) {
- }
-
- func testAccCloudRouterReadConfig() string {
-- return fmt.Sprint(`data "equinix_fabric_cloud_router" "test" {
-+ return `data "equinix_fabric_cloud_router" "test" {
- uuid = "3e91216d-526a-45d2-9029-0c8c8ba48b60"
-- }`)
-+ }`
- }
diff --git a/patches/0017-fix-wait-provisioned-status.patch b/patches/0017-fix-wait-provisioned-status.patch
deleted file mode 100644
index 5817037e..00000000
--- a/patches/0017-fix-wait-provisioned-status.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: ocobleseqx
-Date: Mon, 13 Nov 2023 23:50:19 +0100
-Subject: [PATCH 17/51] fix wait provisioned status
-
-Signed-off-by: ocobleseqx
-
-diff --git a/equinix/resource_fabric_cloud_router.go b/equinix/resource_fabric_cloud_router.go
-index e32f4bc..1328872 100644
---- a/equinix/resource_fabric_cloud_router.go
-+++ b/equinix/resource_fabric_cloud_router.go
-@@ -183,10 +183,9 @@ func waitUntilCloudRouterIsProvisioned(uuid string, meta interface{}, ctx contex
- log.Printf("Waiting for Cloud Router to be provisioned, uuid %s", uuid)
- stateConf := &resource.StateChangeConf{
- Pending: []string{
-- string(v4.PROVISIONED_CloudRouterAccessPointState),
-+ string(v4.PROVISIONING_CloudRouterAccessPointState),
- },
- Target: []string{
-- string(v4.PENDING_INTERFACE_CONFIGURATION_EquinixStatus),
- string(v4.PROVISIONED_CloudRouterAccessPointState),
- },
- Refresh: func() (interface{}, string, error) {
diff --git a/patches/0018-add-missing-fields-and-descriptions-in-CloudRouter-s.patch b/patches/0018-add-missing-fields-and-descriptions-in-CloudRouter-s.patch
deleted file mode 100644
index 934198d8..00000000
--- a/patches/0018-add-missing-fields-and-descriptions-in-CloudRouter-s.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: ocobleseqx
-Date: Wed, 15 Nov 2023 09:53:12 +0100
-Subject: [PATCH 18/51] add missing fields and descriptions in CloudRouter
- schemas
-
-Signed-off-by: ocobleseqx
-
-diff --git a/equinix/fabric_cloud_router_read_schema.go b/equinix/fabric_cloud_router_read_schema.go
-index 64ddc8f..39daeec 100644
---- a/equinix/fabric_cloud_router_read_schema.go
-+++ b/equinix/fabric_cloud_router_read_schema.go
-@@ -47,17 +47,17 @@ func readCloudRouterResourceSchema() map[string]*schema.Schema {
- "bgp_ipv4_routes_count": {
- Type: schema.TypeInt,
- Computed: true,
-- Description: "",
-+ Description: "Access point used and maximum number of IPv4 BGP routes",
- },
- "bgp_ipv6_routes_count": {
- Type: schema.TypeInt,
- Computed: true,
-- Description: "",
-+ Description: "Access point used and maximum number of IPv6 BGP routes",
- },
- "connections_count": {
- Type: schema.TypeInt,
- Computed: true,
-- Description: "",
-+ Description: "Number of connections associated with this Access point",
- },
- "package": {
- Type: schema.TypeSet,
-diff --git a/equinix/fabric_cloud_router_schema.go b/equinix/fabric_cloud_router_schema.go
-index 402c4c3..3ffeefc 100644
---- a/equinix/fabric_cloud_router_schema.go
-+++ b/equinix/fabric_cloud_router_schema.go
-@@ -149,5 +149,20 @@ func createCloudRouterResourceSchema() map[string]*schema.Schema {
- Schema: createNotificationSch(),
- },
- },
-+ "bgp_ipv4_routes_count": {
-+ Type: schema.TypeInt,
-+ Computed: true,
-+ Description: "Access point used and maximum number of IPv4 BGP routes",
-+ },
-+ "bgp_ipv6_routes_count": {
-+ Type: schema.TypeInt,
-+ Computed: true,
-+ Description: "Access point used and maximum number of IPv6 BGP routes",
-+ },
-+ "connections_count": {
-+ Type: schema.TypeInt,
-+ Computed: true,
-+ Description: "Number of connections associated with this Access point",
-+ },
- }
- }
diff --git a/patches/0019-refactor-Move-Config-related-code-to-internal-config.patch b/patches/0019-refactor-Move-Config-related-code-to-internal-config.patch
deleted file mode 100644
index 57762a51..00000000
--- a/patches/0019-refactor-Move-Config-related-code-to-internal-config.patch
+++ /dev/null
@@ -1,3755 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tomas Karasek
-Date: Tue, 14 Nov 2023 14:05:12 +0100
-Subject: [PATCH 19/51] refactor: Move Config-related code to internal/config
-
-
-diff --git a/equinix/data_source_ecx_l2_sellerprofile.go b/equinix/data_source_ecx_l2_sellerprofile.go
-index 59b9958..c0bf3de 100644
---- a/equinix/data_source_ecx_l2_sellerprofile.go
-+++ b/equinix/data_source_ecx_l2_sellerprofile.go
-@@ -6,6 +6,8 @@ import (
- "fmt"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ecx-go/v2"
- "github.com/hashicorp/go-cty/cty"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-@@ -229,12 +231,12 @@ func createECXL2SellerProfileSchema() map[string]*schema.Schema {
- }
-
- func dataSourceECXL2SellerProfileRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- conf := m.(*Config)
-+ conf := m.(*config.Config)
- var diags diag.Diagnostics
- name := d.Get(ecxL2SellerProfileSchemaNames["Name"]).(string)
- orgName := d.Get(ecxL2SellerProfileSchemaNames["OrganizationName"]).(string)
- orgGlobalName := d.Get(ecxL2SellerProfileSchemaNames["GlobalOrganization"]).(string)
-- profiles, err := conf.ecx.GetL2SellerProfiles()
-+ profiles, err := conf.Ecx.GetL2SellerProfiles()
- if err != nil {
- return diag.FromErr(err)
- }
-diff --git a/equinix/data_source_ecx_l2_sellerprofiles.go b/equinix/data_source_ecx_l2_sellerprofiles.go
-index 5a48a10..cede18c 100644
---- a/equinix/data_source_ecx_l2_sellerprofiles.go
-+++ b/equinix/data_source_ecx_l2_sellerprofiles.go
-@@ -6,6 +6,8 @@ import (
- "regexp"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ecx-go/v2"
- "github.com/hashicorp/go-cty/cty"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-@@ -87,9 +89,9 @@ func dataSourceECXL2SellerProfiles() *schema.Resource {
- }
-
- func dataSourceECXL2SellerProfilesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- conf := m.(*Config)
-+ conf := m.(*config.Config)
- var diags diag.Diagnostics
-- profiles, err := conf.ecx.GetL2SellerProfiles()
-+ profiles, err := conf.Ecx.GetL2SellerProfiles()
- if err != nil {
- return diag.FromErr(err)
- }
-diff --git a/equinix/data_source_ecx_port.go b/equinix/data_source_ecx_port.go
-index eefbb9c..83ffc17 100644
---- a/equinix/data_source_ecx_port.go
-+++ b/equinix/data_source_ecx_port.go
-@@ -4,6 +4,8 @@ import (
- "context"
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ecx-go/v2"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -97,10 +99,10 @@ func dataSourceECXPort() *schema.Resource {
- }
-
- func dataSourceECXPortRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- conf := m.(*Config)
-+ conf := m.(*config.Config)
- var diags diag.Diagnostics
- name := d.Get(ecxPortSchemaNames["Name"]).(string)
-- ports, err := conf.ecx.GetUserPorts()
-+ ports, err := conf.Ecx.GetUserPorts()
- if err != nil {
- return diag.FromErr(err)
- }
-diff --git a/equinix/data_source_metal_device.go b/equinix/data_source_metal_device.go
-index 22b619d..8e7e9ab 100644
---- a/equinix/data_source_metal_device.go
-+++ b/equinix/data_source_metal_device.go
-@@ -8,6 +8,8 @@ import (
- "sort"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- metalv1 "github.com/equinix-labs/metal-go/metal/v1"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure"
-@@ -208,7 +210,7 @@ func dataSourceMetalDevice() *schema.Resource {
- }
-
- func dataSourceMetalDeviceRead(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metalgo
-+ client := meta.(*config.Config).Metalgo
-
- hostnameRaw, hostnameOK := d.GetOk("hostname")
- projectIdRaw, projectIdOK := d.GetOk("project_id")
-diff --git a/equinix/data_source_metal_device_bgp_neighbors.go b/equinix/data_source_metal_device_bgp_neighbors.go
-index ed5e6bd..641f2f8 100644
---- a/equinix/data_source_metal_device_bgp_neighbors.go
-+++ b/equinix/data_source_metal_device_bgp_neighbors.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "context"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- metalv1 "github.com/equinix-labs/metal-go/metal/v1"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -106,7 +108,7 @@ func dataSourceMetalDeviceBGPNeighbors() *schema.Resource {
- }
-
- func dataSourceMetalDeviceBGPNeighborsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).metalgo
-+ client := meta.(*config.Config).Metalgo
- deviceID := d.Get("device_id").(string)
-
- bgpNeighborsRaw, _, err := client.DevicesApi.GetBgpNeighborData(ctx, deviceID).Execute()
-diff --git a/equinix/data_source_metal_devices.go b/equinix/data_source_metal_devices.go
-index 3904af6..9e1d834 100644
---- a/equinix/data_source_metal_devices.go
-+++ b/equinix/data_source_metal_devices.go
-@@ -4,8 +4,10 @@ import (
- "context"
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- metalv1 "github.com/equinix-labs/metal-go/metal/v1"
-- "github.com/equinix/terraform-provider-equinix/equinix/internal/datalist"
-+ "github.com/equinix/terraform-provider-equinix/internal/datalist"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- )
-
-@@ -50,7 +52,7 @@ func dataSourceMetalDevices() *schema.Resource {
- }
-
- func getDevices(meta interface{}, extra map[string]interface{}) ([]interface{}, error) {
-- client := meta.(*Config).metalgo
-+ client := meta.(*config.Config).Metalgo
- projectID := extra["project_id"].(string)
- orgID := extra["organization_id"].(string)
-
-diff --git a/equinix/data_source_metal_facility.go b/equinix/data_source_metal_facility.go
-index 38b85aa..5ed6d02 100644
---- a/equinix/data_source_metal_facility.go
-+++ b/equinix/data_source_metal_facility.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -81,7 +83,7 @@ func dataSourceMetalFacility() *schema.Resource {
- }
-
- func dataSourceMetalFacilityRead(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
- code := d.Get("code").(string)
-
- _, capacityOk := d.GetOk("capacity")
-diff --git a/equinix/data_source_metal_hardware_reservation.go b/equinix/data_source_metal_hardware_reservation.go
-index 3dc9da5..bf53fc9 100644
---- a/equinix/data_source_metal_hardware_reservation.go
-+++ b/equinix/data_source_metal_hardware_reservation.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -65,7 +67,7 @@ func dataSourceMetalHardwareReservation() *schema.Resource {
- }
-
- func dataSourceMetalHardwareReservationRead(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
- hrIdRaw, hrIdOk := d.GetOk("id")
- dIdRaw, dIdOk := d.GetOk("device_id")
-
-diff --git a/equinix/data_source_metal_ip_block_ranges.go b/equinix/data_source_metal_ip_block_ranges.go
-index 823b86a..17b97f0 100644
---- a/equinix/data_source_metal_ip_block_ranges.go
-+++ b/equinix/data_source_metal_ip_block_ranges.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -88,7 +90,7 @@ func metroOffacilityMatch(ref string, facility *packngo.Facility) bool {
- }
-
- func dataSourceMetalIPBlockRangesRead(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
- projectID := d.Get("project_id").(string)
- ips, _, err := client.ProjectIPs.List(projectID, nil)
- if err != nil {
-diff --git a/equinix/data_source_metal_metro.go b/equinix/data_source_metal_metro.go
-index d8dde96..fa4be85 100644
---- a/equinix/data_source_metal_metro.go
-+++ b/equinix/data_source_metal_metro.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -37,7 +39,7 @@ func dataSourceMetalMetro() *schema.Resource {
- }
-
- func dataSourceMetalMetroRead(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
- code := d.Get("code").(string)
-
- _, capacityOk := d.GetOk("capacity")
-diff --git a/equinix/data_source_metal_operating_system.go b/equinix/data_source_metal_operating_system.go
-index 469d493..7698c59 100644
---- a/equinix/data_source_metal_operating_system.go
-+++ b/equinix/data_source_metal_operating_system.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -42,7 +44,7 @@ func dataSourceOperatingSystem() *schema.Resource {
- }
-
- func dataSourceMetalOperatingSystemRead(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
-
- name, nameOK := d.GetOk("name")
- distro, distroOK := d.GetOk("distro")
-diff --git a/equinix/data_source_metal_organization.go b/equinix/data_source_metal_organization.go
-index 24bdac3..b47453e 100644
---- a/equinix/data_source_metal_organization.go
-+++ b/equinix/data_source_metal_organization.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "path"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -108,7 +110,7 @@ func findOrgByName(os []packngo.Organization, name string) (*packngo.Organizatio
- }
-
- func dataSourceMetalOrganizationRead(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
- nameRaw, nameOK := d.GetOk("name")
- orgIdRaw, orgIdOK := d.GetOk("organization_id")
-
-diff --git a/equinix/data_source_metal_plans.go b/equinix/data_source_metal_plans.go
-index 58c13a9..1edf8d0 100644
---- a/equinix/data_source_metal_plans.go
-+++ b/equinix/data_source_metal_plans.go
-@@ -3,7 +3,9 @@ package equinix
- import (
- "fmt"
-
-- "github.com/equinix/terraform-provider-equinix/equinix/internal/datalist"
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
-+ "github.com/equinix/terraform-provider-equinix/internal/datalist"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -21,7 +23,7 @@ func dataSourceMetalPlans() *schema.Resource {
- }
-
- func getPlans(meta interface{}, extra map[string]interface{}) ([]interface{}, error) {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
- opts := &packngo.ListOptions{
- Includes: []string{"available_in", "available_in_metros"},
- }
-diff --git a/equinix/data_source_metal_precreated_ip_block.go b/equinix/data_source_metal_precreated_ip_block.go
-index dbedefc..f0afd0a 100644
---- a/equinix/data_source_metal_precreated_ip_block.go
-+++ b/equinix/data_source_metal_precreated_ip_block.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "log"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- "github.com/packethost/packngo"
-@@ -67,7 +69,7 @@ func dataSourceMetalPreCreatedIPBlock() *schema.Resource {
-
- func dataSourceMetalPreCreatedIPBlockRead(d *schema.ResourceData, meta interface{}) error {
- var types string
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
- projectID := d.Get("project_id").(string)
-
- ipv := d.Get("address_family").(int)
-diff --git a/equinix/data_source_metal_project.go b/equinix/data_source_metal_project.go
-index 5e13c68..c8573b9 100644
---- a/equinix/data_source_metal_project.go
-+++ b/equinix/data_source_metal_project.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "path"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- "github.com/packethost/packngo"
-@@ -104,7 +106,7 @@ func dataSourceMetalProject() *schema.Resource {
- }
-
- func dataSourceMetalProjectRead(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
- nameRaw, nameOK := d.GetOk("name")
- projectIdRaw, projectIdOK := d.GetOk("project_id")
-
-diff --git a/equinix/data_source_metal_project_ssh_key.go b/equinix/data_source_metal_project_ssh_key.go
-index ae564a3..f1c9151 100644
---- a/equinix/data_source_metal_project_ssh_key.go
-+++ b/equinix/data_source_metal_project_ssh_key.go
-@@ -5,6 +5,8 @@ import (
- "path"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- "github.com/packethost/packngo"
-@@ -64,7 +66,7 @@ func dataSourceMetalProjectSSHKey() *schema.Resource {
- }
-
- func dataSourceMetalProjectSSHKeyRead(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
-
- search := d.Get("search").(string)
- id := d.Get("id").(string)
-diff --git a/equinix/data_source_metal_reserved_ip_block.go b/equinix/data_source_metal_reserved_ip_block.go
-index 512625c..fa9481c 100644
---- a/equinix/data_source_metal_reserved_ip_block.go
-+++ b/equinix/data_source_metal_reserved_ip_block.go
-@@ -5,6 +5,8 @@ import (
- "net"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -119,7 +121,7 @@ func dataSourceMetalReservedIPBlock() *schema.Resource {
- }
-
- func dataSourceMetalReservedIPBlockRead(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
-
- blockId, blockIdOk := d.GetOk("id")
- projectId, projectIdOk := d.GetOk("project_id")
-diff --git a/equinix/data_source_metal_spot_market_price.go b/equinix/data_source_metal_spot_market_price.go
-index 24f659e..1684d99 100644
---- a/equinix/data_source_metal_spot_market_price.go
-+++ b/equinix/data_source_metal_spot_market_price.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -40,7 +42,7 @@ func dataSourceSpotMarketPrice() *schema.Resource {
- }
-
- func dataSourceMetalSpotMarketPriceRead(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
- sms := client.SpotMarket.(*packngo.SpotMarketServiceOp)
- facility := d.Get("facility").(string)
- metro := d.Get("metro").(string)
-diff --git a/equinix/data_source_metal_spot_market_request.go b/equinix/data_source_metal_spot_market_request.go
-index 7b8f94c..0d0064e 100644
---- a/equinix/data_source_metal_spot_market_request.go
-+++ b/equinix/data_source_metal_spot_market_request.go
-@@ -6,6 +6,8 @@ import (
- "strings"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -74,7 +76,7 @@ func dataSourceMetalSpotMarketRequest() *schema.Resource {
- }
-
- func dataSourceMetalSpotMarketRequestRead(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
- id := d.Get("request_id").(string)
-
- smr, _, err := client.SpotMarketRequests.Get(id, &packngo.GetOptions{Includes: []string{"project", "devices", "facilities", "metro"}})
-diff --git a/equinix/data_source_metal_vlan.go b/equinix/data_source_metal_vlan.go
-index 7c80b41..81c81dd 100644
---- a/equinix/data_source_metal_vlan.go
-+++ b/equinix/data_source_metal_vlan.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -67,7 +69,7 @@ func dataSourceMetalVlan() *schema.Resource {
- }
-
- func dataSourceMetalVlanRead(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
-
- projectRaw, projectOk := d.GetOk("project_id")
- vxlanRaw, vxlanOk := d.GetOk("vxlan")
-diff --git a/equinix/data_source_metal_vlan_acc_test.go b/equinix/data_source_metal_vlan_acc_test.go
-index a173e35..e8027ff 100644
---- a/equinix/data_source_metal_vlan_acc_test.go
-+++ b/equinix/data_source_metal_vlan_acc_test.go
-@@ -5,6 +5,8 @@ import (
- "reflect"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -320,7 +322,7 @@ func TestMetalVlan_matchingVlan(t *testing.T) {
- }
-
- func testAccMetalDatasourceVlanCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_vlan" {
-diff --git a/equinix/data_source_network_account.go b/equinix/data_source_network_account.go
-index 50660bc..eb47a3d 100644
---- a/equinix/data_source_network_account.go
-+++ b/equinix/data_source_network_account.go
-@@ -5,6 +5,8 @@ import (
- "fmt"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -67,12 +69,12 @@ func dataSourceNetworkAccount() *schema.Resource {
- }
-
- func dataSourceNetworkAccountRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- conf := m.(*Config)
-+ conf := m.(*config.Config)
- var diags diag.Diagnostics
- metro := d.Get(networkAccountSchemaNames["MetroCode"]).(string)
- name := d.Get(networkAccountSchemaNames["Name"]).(string)
- status := d.Get(networkAccountSchemaNames["Status"]).(string)
-- accounts, err := conf.ne.GetAccounts(metro)
-+ accounts, err := conf.Ne.GetAccounts(metro)
- if err != nil {
- return diag.FromErr(err)
- }
-diff --git a/equinix/data_source_network_device.go b/equinix/data_source_network_device.go
-index 8d4b7fa..f248530 100644
---- a/equinix/data_source_network_device.go
-+++ b/equinix/data_source_network_device.go
-@@ -5,6 +5,8 @@ import (
- "fmt"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -620,10 +622,10 @@ func dataSourceNetworkDevice() *schema.Resource {
- }
- }
-
--func getDeviceByName(deviceName string, conf *Config, validDeviceStateList *[]string) (*ne.Device, error) {
-+func getDeviceByName(deviceName string, conf *config.Config, validDeviceStateList *[]string) (*ne.Device, error) {
- var devices []ne.Device
- err := error(nil)
-- devices, err = conf.ne.GetDevices(*validDeviceStateList)
-+ devices, err = conf.Ne.GetDevices(*validDeviceStateList)
- if err != nil {
- return nil, fmt.Errorf("'devices: %v'", devices)
- }
-@@ -636,7 +638,7 @@ func getDeviceByName(deviceName string, conf *Config, validDeviceStateList *[]st
- }
-
- func dataSourceNetworkDeviceRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- conf := m.(*Config)
-+ conf := m.(*config.Config)
- var diags diag.Diagnostics
- var err error
- var primary, secondary *ne.Device
-@@ -655,7 +657,7 @@ func dataSourceNetworkDeviceRead(ctx context.Context, d *schema.ResourceData, m
- if nameExists {
- primary, err = getDeviceByName(name, conf, validDeviceStatusList)
- } else {
-- primary, err = conf.ne.GetDevice(uuid)
-+ primary, err = conf.Ne.GetDevice(uuid)
- }
-
- if err != nil {
-@@ -668,7 +670,7 @@ func dataSourceNetworkDeviceRead(ctx context.Context, d *schema.ResourceData, m
- }
- if ne.StringValue(primary.RedundantUUID) != "" {
-
-- secondary, err = conf.ne.GetDevice(ne.StringValue(primary.RedundantUUID))
-+ secondary, err = conf.Ne.GetDevice(ne.StringValue(primary.RedundantUUID))
- if err != nil {
- return diag.Errorf("cannot fetch secondary network device due to '%v'", err)
- }
-diff --git a/equinix/data_source_network_device_software.go b/equinix/data_source_network_device_software.go
-index 81a8b60..616b5bf 100644
---- a/equinix/data_source_network_device_software.go
-+++ b/equinix/data_source_network_device_software.go
-@@ -7,6 +7,8 @@ import (
- "sort"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -111,11 +113,11 @@ func dataSourceNetworkDeviceSoftware() *schema.Resource {
- }
-
- func dataSourceNetworkDeviceSoftwareRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- conf := m.(*Config)
-+ conf := m.(*config.Config)
- var diags diag.Diagnostics
- typeCode := d.Get(networkDeviceSoftwareSchemaNames["DeviceTypeCode"]).(string)
- pkgCodes := expandSetToStringList(d.Get(networkDeviceSoftwareSchemaNames["PackageCodes"]).(*schema.Set))
-- versions, err := conf.ne.GetDeviceSoftwareVersions(typeCode)
-+ versions, err := conf.Ne.GetDeviceSoftwareVersions(typeCode)
- if err != nil {
- return diag.FromErr(err)
- }
-diff --git a/equinix/data_source_network_device_type.go b/equinix/data_source_network_device_type.go
-index 0bdeb17..098d11c 100644
---- a/equinix/data_source_network_device_type.go
-+++ b/equinix/data_source_network_device_type.go
-@@ -5,6 +5,8 @@ import (
- "fmt"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -81,9 +83,9 @@ func dataSourceNetworkDeviceType() *schema.Resource {
- }
-
- func dataSourceNetworkDeviceTypeRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- conf := m.(*Config)
-+ conf := m.(*config.Config)
- var diags diag.Diagnostics
-- types, err := conf.ne.GetDeviceTypes()
-+ types, err := conf.Ne.GetDeviceTypes()
- name := d.Get(networkDeviceTypeSchemaNames["Name"]).(string)
- vendor := d.Get(networkDeviceTypeSchemaNames["Vendor"]).(string)
- category := d.Get(networkDeviceTypeSchemaNames["Category"]).(string)
-diff --git a/equinix/data_source_network_platform.go b/equinix/data_source_network_platform.go
-index 739bf1d..41a3912 100644
---- a/equinix/data_source_network_platform.go
-+++ b/equinix/data_source_network_platform.go
-@@ -4,6 +4,8 @@ import (
- "context"
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -104,10 +106,10 @@ func dataSourceNetworkDevicePlatform() *schema.Resource {
- }
-
- func dataSourceNetworkDevicePlatformRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- conf := m.(*Config)
-+ conf := m.(*config.Config)
- var diags diag.Diagnostics
- typeCode := d.Get(networkDevicePlatformSchemaNames["DeviceTypeCode"]).(string)
-- platforms, err := conf.ne.GetDevicePlatforms(typeCode)
-+ platforms, err := conf.Ne.GetDevicePlatforms(typeCode)
- if err != nil {
- return diag.FromErr(err)
- }
-diff --git a/equinix/equinix_sweeper_test.go b/equinix/equinix_sweeper_test.go
-index ea717ed..f5e3010 100644
---- a/equinix/equinix_sweeper_test.go
-+++ b/equinix/equinix_sweeper_test.go
-@@ -7,6 +7,8 @@ import (
- "testing"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- )
-
-@@ -16,12 +18,12 @@ func TestMain(m *testing.M) {
- resource.TestMain(m)
- }
-
--func sharedConfigForRegion(region string) (*Config, error) {
-- endpoint := getFromEnvDefault(endpointEnvVar, DefaultBaseURL)
-+func sharedConfigForRegion(region string) (*config.Config, error) {
-+ endpoint := getFromEnvDefault(endpointEnvVar, config.DefaultBaseURL)
- clientToken := getFromEnvDefault(clientTokenEnvVar, "")
- clientID := getFromEnvDefault(clientIDEnvVar, "")
- clientSecret := getFromEnvDefault(clientSecretEnvVar, "")
-- clientTimeout := getFromEnvDefault(clientTimeoutEnvVar, strconv.Itoa(DefaultTimeout))
-+ clientTimeout := getFromEnvDefault(clientTimeoutEnvVar, strconv.Itoa(config.DefaultTimeout))
- clientTimeoutInt, err := strconv.Atoi(clientTimeout)
- if err != nil {
- return nil, fmt.Errorf("cannot convert value of '%s' env variable to int", clientTimeoutEnvVar)
-@@ -33,7 +35,7 @@ func sharedConfigForRegion(region string) (*Config, error) {
- clientTokenEnvVar, clientIDEnvVar, clientSecretEnvVar, metalAuthTokenEnvVar)
- }
-
-- return &Config{
-+ return &config.Config{
- AuthToken: metalAuthToken,
- BaseURL: endpoint,
- Token: clientToken,
-diff --git a/equinix/fabric_mapping_helper.go b/equinix/fabric_mapping_helper.go
-index 5735913..5a03142 100644
---- a/equinix/fabric_mapping_helper.go
-+++ b/equinix/fabric_mapping_helper.go
-@@ -3,8 +3,6 @@ package equinix
- import (
- "fmt"
- "log"
-- "math/rand"
-- "time"
-
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -1248,21 +1246,3 @@ func getCloudRouterUpdateRequest(conn v4.CloudRouter, d *schema.ResourceData) (v
- }
- return changeOps, nil
- }
--
--const allowed_charset = "abcdefghijklmnopqrstuvwxyz" +
-- "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#$&@"
--
--var seededRand = rand.New(
-- rand.NewSource(time.Now().UnixNano()))
--
--func CorrelationIdWithCharset(length int, charset string) string {
-- b := make([]byte, length)
-- for i := range b {
-- b[i] = charset[seededRand.Intn(len(charset))]
-- }
-- return string(b)
--}
--
--func CorrelationId(length int) string {
-- return CorrelationIdWithCharset(length, allowed_charset)
--}
-diff --git a/equinix/port_helpers.go b/equinix/port_helpers.go
-index 742198d..2c11341 100644
---- a/equinix/port_helpers.go
-+++ b/equinix/port_helpers.go
-@@ -6,6 +6,8 @@ import (
- "strings"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
-@@ -19,8 +21,8 @@ type ClientPortResource struct {
- }
-
- func getClientPortResource(d *schema.ResourceData, meta interface{}) (*ClientPortResource, *packngo.Response, error) {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- port_id := d.Get("port_id").(string)
-
-diff --git a/equinix/provider.go b/equinix/provider.go
-index d8eda43..2ff4a5d 100644
---- a/equinix/provider.go
-+++ b/equinix/provider.go
-@@ -12,6 +12,7 @@ import (
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
- "github.com/equinix/ecx-go/v2"
- "github.com/equinix/rest-go"
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
-@@ -50,9 +51,9 @@ func Provider() *schema.Provider {
- "endpoint": {
- Type: schema.TypeString,
- Optional: true,
-- DefaultFunc: schema.EnvDefaultFunc(endpointEnvVar, DefaultBaseURL),
-+ DefaultFunc: schema.EnvDefaultFunc(endpointEnvVar, config.DefaultBaseURL),
- ValidateFunc: validation.IsURLWithHTTPorHTTPS,
-- Description: fmt.Sprintf("The Equinix API base URL to point out desired environment. Defaults to %s", DefaultBaseURL),
-+ Description: fmt.Sprintf("The Equinix API base URL to point out desired environment. Defaults to %s", config.DefaultBaseURL),
- },
- "client_id": {
- Type: schema.TypeString,
-@@ -81,9 +82,9 @@ func Provider() *schema.Provider {
- "request_timeout": {
- Type: schema.TypeInt,
- Optional: true,
-- DefaultFunc: schema.EnvDefaultFunc(clientTimeoutEnvVar, DefaultTimeout),
-+ DefaultFunc: schema.EnvDefaultFunc(clientTimeoutEnvVar, config.DefaultTimeout),
- ValidateFunc: validation.IntAtLeast(1),
-- Description: fmt.Sprintf("The duration of time, in seconds, that the Equinix Platform API Client should wait before canceling an API request. Defaults to %d", DefaultTimeout),
-+ Description: fmt.Sprintf("The duration of time, in seconds, that the Equinix Platform API Client should wait before canceling an API request. Defaults to %d", config.DefaultTimeout),
- },
- "response_max_page_size": {
- Type: schema.TypeInt,
-@@ -199,7 +200,7 @@ func configureProvider(ctx context.Context, d *schema.ResourceData, p *schema.Pr
- mrws := d.Get("max_retry_wait_seconds").(int)
- rt := d.Get("request_timeout").(int)
-
-- config := Config{
-+ config := config.Config{
- AuthToken: d.Get("auth_token").(string),
- BaseURL: d.Get("endpoint").(string),
- ClientID: d.Get("client_id").(string),
-@@ -215,11 +216,11 @@ func configureProvider(ctx context.Context, d *schema.ResourceData, p *schema.Pr
- if err := d.GetProviderMeta(&meta); err != nil {
- return nil, diag.FromErr(err)
- }
-- config.terraformVersion = p.TerraformVersion
-- if config.terraformVersion == "" {
-+ config.TerraformVersion = p.TerraformVersion
-+ if config.TerraformVersion == "" {
- // Terraform 0.12 introduced this field to the protocol
- // We can therefore assume that if it's missing it's 0.10 or 0.11
-- config.terraformVersion = "0.11+compatible"
-+ config.TerraformVersion = "0.11+compatible"
- }
-
- stopCtx, ok := schema.StopContext(ctx)
-diff --git a/equinix/resource_ecx_l2_connection.go b/equinix/resource_ecx_l2_connection.go
-index 5dd66df..3f04776 100644
---- a/equinix/resource_ecx_l2_connection.go
-+++ b/equinix/resource_ecx_l2_connection.go
-@@ -7,6 +7,8 @@ import (
- "strings"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ecx-go/v2"
- "github.com/equinix/rest-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-@@ -658,8 +660,8 @@ func createECXL2ConnectionActionsRequiredDataSchema() map[string]*schema.Schema
- }
-
- func resourceECXL2ConnectionCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ecx
-- m.(*Config).addModuleToECXUserAgent(&client, d)
-+ client := m.(*config.Config).Ecx
-+ m.(*config.Config).AddModuleToECXUserAgent(&client, d)
-
- var diags diag.Diagnostics
- primary, secondary := createECXL2Connections(d)
-@@ -696,8 +698,8 @@ func resourceECXL2ConnectionCreate(ctx context.Context, d *schema.ResourceData,
- }
-
- func resourceECXL2ConnectionRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ecx
-- m.(*Config).addModuleToECXUserAgent(&client, d)
-+ client := m.(*config.Config).Ecx
-+ m.(*config.Config).AddModuleToECXUserAgent(&client, d)
- var diags diag.Diagnostics
- var err error
- var primary *ecx.L2Connection
-@@ -741,8 +743,8 @@ func resourceECXL2ConnectionRead(ctx context.Context, d *schema.ResourceData, m
- }
-
- func resourceECXL2ConnectionUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ecx
-- m.(*Config).addModuleToECXUserAgent(&client, d)
-+ client := m.(*config.Config).Ecx
-+ m.(*config.Config).AddModuleToECXUserAgent(&client, d)
- var diags diag.Diagnostics
- supportedChanges := []string{
- ecxL2ConnectionSchemaNames["Name"],
-@@ -766,8 +768,8 @@ func resourceECXL2ConnectionUpdate(ctx context.Context, d *schema.ResourceData,
- }
-
- func resourceECXL2ConnectionDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ecx
-- m.(*Config).addModuleToECXUserAgent(&client, d)
-+ client := m.(*config.Config).Ecx
-+ m.(*config.Config).AddModuleToECXUserAgent(&client, d)
-
- var diags diag.Diagnostics
- if err := client.DeleteL2Connection(d.Id()); err != nil {
-diff --git a/equinix/resource_ecx_l2_connection_acc_test.go b/equinix/resource_ecx_l2_connection_acc_test.go
-index 8fe2cbb..45a5e0b 100644
---- a/equinix/resource_ecx_l2_connection_acc_test.go
-+++ b/equinix/resource_ecx_l2_connection_acc_test.go
-@@ -7,6 +7,8 @@ import (
- "regexp"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ecx-go/v2"
- "github.com/equinix/rest-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-@@ -44,7 +46,7 @@ func testSweepECXL2Connections(region string) error {
- log.Printf("[INFO][SWEEPER_LOG] error loading configuration: %s", err)
- return err
- }
-- conns, err := config.ecx.GetL2OutgoingConnections([]string{
-+ conns, err := config.Ecx.GetL2OutgoingConnections([]string{
- ecx.ConnectionStatusNotAvailable,
- ecx.ConnectionStatusPendingAutoApproval,
- ecx.ConnectionStatusPendingBGPPeering,
-@@ -62,7 +64,7 @@ func testSweepECXL2Connections(region string) error {
- nonSweepableCount++
- continue
- }
-- if err := config.ecx.DeleteL2Connection(ecx.StringValue(conn.UUID)); err != nil {
-+ if err := config.Ecx.DeleteL2Connection(ecx.StringValue(conn.UUID)); err != nil {
- log.Printf("[INFO][SWEEPER_LOG] error deleting ECXL2Connection resource %s (%s): %s", ecx.StringValue(conn.UUID), ecx.StringValue(conn.Name), err)
- } else {
- log.Printf("[INFO][SWEEPER_LOG] sent delete request for ECXL2Connection resource %s (%s)", ecx.StringValue(conn.UUID), ecx.StringValue(conn.Name))
-@@ -363,8 +365,8 @@ func TestAccFabricL2Connection_ServiceToken_HA_SP(t *testing.T) {
- }
- mockEquinix := Provider()
- mockEquinix.ConfigureContextFunc = func(c context.Context, d *schema.ResourceData) (interface{}, diag.Diagnostics) {
-- config := Config{
-- ecx: mockECXClient,
-+ config := config.Config{
-+ Ecx: mockECXClient,
- }
- return &config, nil
- }
-@@ -496,8 +498,8 @@ func TestAccFabricL2Connection_ZSideServiceToken_Single(t *testing.T) {
- }
- mockEquinix := Provider()
- mockEquinix.ConfigureContextFunc = func(c context.Context, d *schema.ResourceData) (interface{}, diag.Diagnostics) {
-- config := Config{
-- ecx: mockECXClient,
-+ config := config.Config{
-+ Ecx: mockECXClient,
- }
- return &config, nil
- }
-@@ -540,7 +542,7 @@ func testAccFabricL2ConnectionExists(resourceName string, conn *ecx.L2Connection
- if !ok {
- return fmt.Errorf("resource not found: %s", resourceName)
- }
-- client := testAccProvider.Meta().(*Config).ecx
-+ client := testAccProvider.Meta().(*config.Config).Ecx
- if rs.Primary.ID == "" {
- return fmt.Errorf("resource has no ID attribute set")
- }
-@@ -563,7 +565,7 @@ func testAccFabricL2ConnectionSecondaryExists(resourceName string, conn *ecx.L2C
- if !ok {
- return fmt.Errorf("resource not found: %s", resourceName)
- }
-- client := testAccProvider.Meta().(*Config).ecx
-+ client := testAccProvider.Meta().(*config.Config).Ecx
-
- if connID, ok := rs.Primary.Attributes["secondary_connection.0.uuid"]; ok {
- resp, err := client.GetL2Connection(connID)
-diff --git a/equinix/resource_ecx_l2_serviceprofile.go b/equinix/resource_ecx_l2_serviceprofile.go
-index ae8465b..af0bfba 100644
---- a/equinix/resource_ecx_l2_serviceprofile.go
-+++ b/equinix/resource_ecx_l2_serviceprofile.go
-@@ -4,6 +4,8 @@ import (
- "context"
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ecx-go/v2"
- "github.com/equinix/rest-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-@@ -341,8 +343,8 @@ func createECXL2ServiceProfileResourceSchema() map[string]*schema.Schema {
- }
-
- func resourceECXL2ServiceProfileCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ecx
-- m.(*Config).addModuleToECXUserAgent(&client, d)
-+ client := m.(*config.Config).Ecx
-+ m.(*config.Config).AddModuleToECXUserAgent(&client, d)
- var diags diag.Diagnostics
- profile := createECXL2ServiceProfile(d)
- uuid, err := client.CreateL2ServiceProfile(*profile)
-@@ -355,8 +357,8 @@ func resourceECXL2ServiceProfileCreate(ctx context.Context, d *schema.ResourceDa
- }
-
- func resourceECXL2ServiceProfileRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ecx
-- m.(*Config).addModuleToECXUserAgent(&client, d)
-+ client := m.(*config.Config).Ecx
-+ m.(*config.Config).AddModuleToECXUserAgent(&client, d)
- var diags diag.Diagnostics
- profile, err := client.GetL2ServiceProfile(d.Id())
- if err != nil {
-@@ -369,8 +371,8 @@ func resourceECXL2ServiceProfileRead(ctx context.Context, d *schema.ResourceData
- }
-
- func resourceECXL2ServiceProfileUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ecx
-- m.(*Config).addModuleToECXUserAgent(&client, d)
-+ client := m.(*config.Config).Ecx
-+ m.(*config.Config).AddModuleToECXUserAgent(&client, d)
- var diags diag.Diagnostics
- profile := createECXL2ServiceProfile(d)
- if err := client.UpdateL2ServiceProfile(*profile); err != nil {
-@@ -381,8 +383,8 @@ func resourceECXL2ServiceProfileUpdate(ctx context.Context, d *schema.ResourceDa
- }
-
- func resourceECXL2ServiceProfileDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ecx
-- m.(*Config).addModuleToECXUserAgent(&client, d)
-+ client := m.(*config.Config).Ecx
-+ m.(*config.Config).AddModuleToECXUserAgent(&client, d)
- var diags diag.Diagnostics
- if err := client.DeleteL2ServiceProfile(d.Id()); err != nil {
- restErr, ok := err.(rest.Error)
-diff --git a/equinix/resource_ecx_l2_serviceprofile_acc_test.go b/equinix/resource_ecx_l2_serviceprofile_acc_test.go
-index 7f5d8a0..59054a3 100644
---- a/equinix/resource_ecx_l2_serviceprofile_acc_test.go
-+++ b/equinix/resource_ecx_l2_serviceprofile_acc_test.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ecx-go/v2"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -62,7 +64,7 @@ func testAccECXL2ServiceProfileExists(resourceName string, profile *ecx.L2Servic
- if !ok {
- return fmt.Errorf("resource not found: %s", resourceName)
- }
-- client := testAccProvider.Meta().(*Config).ecx
-+ client := testAccProvider.Meta().(*config.Config).Ecx
- if rs.Primary.ID == "" {
- return fmt.Errorf("resource has no ID attribute set")
- }
-diff --git a/equinix/resource_fabric_cloud_router.go b/equinix/resource_fabric_cloud_router.go
-index 1328872..ff827a6 100644
---- a/equinix/resource_fabric_cloud_router.go
-+++ b/equinix/resource_fabric_cloud_router.go
-@@ -7,6 +7,8 @@ import (
- "strings"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
-@@ -35,8 +37,8 @@ func resourceCloudRouter() *schema.Resource {
- }
-
- func resourceCloudRouterCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- schemaNotifications := d.Get("notifications").([]interface{})
- notifications := notificationToFabric(schemaNotifications)
- schemaAccount := d.Get("account").(*schema.Set).List()
-@@ -80,8 +82,8 @@ func resourceCloudRouterCreate(ctx context.Context, d *schema.ResourceData, meta
- }
-
- func resourceCloudRouterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- CloudRouter, _, err := client.CloudRoutersApi.GetCloudRouterByUuid(ctx, d.Id())
- if err != nil {
- log.Printf("[WARN] Fabric Cloud Router %s not found , error %s", d.Id(), err)
-@@ -120,8 +122,8 @@ func setCloudRouterMap(d *schema.ResourceData, fcr v4.CloudRouter) diag.Diagnost
- }
-
- func resourceCloudRouterUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- dbConn, err := waitUntilCloudRouterIsProvisioned(d.Id(), meta, ctx)
- if err != nil {
- if !strings.Contains(err.Error(), "500") {
-@@ -158,7 +160,7 @@ func waitForCloudRouterUpdateCompletion(uuid string, meta interface{}, ctx conte
- stateConf := &resource.StateChangeConf{
- Target: []string{string(v4.PROVISIONED_CloudRouterAccessPointState)},
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.CloudRoutersApi.GetCloudRouterByUuid(ctx, uuid)
- if err != nil {
- return "", "", err
-@@ -189,7 +191,7 @@ func waitUntilCloudRouterIsProvisioned(uuid string, meta interface{}, ctx contex
- string(v4.PROVISIONED_CloudRouterAccessPointState),
- },
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.CloudRoutersApi.GetCloudRouterByUuid(ctx, uuid)
- if err != nil {
- return "", "", err
-@@ -212,8 +214,8 @@ func waitUntilCloudRouterIsProvisioned(uuid string, meta interface{}, ctx contex
-
- func resourceCloudRouterDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
- diags := diag.Diagnostics{}
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- resp, err := client.CloudRoutersApi.DeleteCloudRouterByUuid(ctx, d.Id())
- if err != nil {
- errors, ok := err.(v4.GenericSwaggerError).Model().([]v4.ModelError)
-@@ -243,7 +245,7 @@ func waitUntilCloudRouterDeprovisioned(uuid string, meta interface{}, ctx contex
- string(v4.DEPROVISIONED_CloudRouterAccessPointState),
- },
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.CloudRoutersApi.GetCloudRouterByUuid(ctx, uuid)
- if err != nil {
- return "", "", err
-diff --git a/equinix/resource_fabric_cloud_router_acc_test.go b/equinix/resource_fabric_cloud_router_acc_test.go
-index cbd5743..d2e9a29 100644
---- a/equinix/resource_fabric_cloud_router_acc_test.go
-+++ b/equinix/resource_fabric_cloud_router_acc_test.go
-@@ -5,6 +5,8 @@ import (
- "fmt"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -38,7 +40,7 @@ func TestAccCloudRouterCreate(t *testing.T) {
-
- func checkCloudRouterDelete(s *terraform.State) error {
- ctx := context.Background()
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, testAccProvider.Meta().(*Config).FabricAuthToken)
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, testAccProvider.Meta().(*config.Config).FabricAuthToken)
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_fabric_cloud_router" {
- continue
-diff --git a/equinix/resource_fabric_connection.go b/equinix/resource_fabric_connection.go
-index 2764fe9..d592726 100644
---- a/equinix/resource_fabric_connection.go
-+++ b/equinix/resource_fabric_connection.go
-@@ -7,6 +7,8 @@ import (
- "strings"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
-@@ -35,8 +37,8 @@ func resourceFabricConnection() *schema.Resource {
- }
-
- func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- conType := v4.ConnectionType(d.Get("type").(string))
- schemaNotifications := d.Get("notifications").([]interface{})
- notifications := notificationToFabric(schemaNotifications)
-@@ -154,8 +156,8 @@ func additionalInfoContainsAWSSecrets(info []interface{}) ([]interface{}, bool)
- }
-
- func resourceFabricConnectionRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- conn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, d.Id(), nil)
- if err != nil {
- log.Printf("[WARN] Connection %s not found , error %s", d.Id(), err)
-@@ -199,8 +201,8 @@ func setFabricMap(d *schema.ResourceData, conn v4.Connection) diag.Diagnostics {
- }
-
- func resourceFabricConnectionUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- dbConn, err := verifyConnectionCreated(d.Id(), meta, ctx)
- if err != nil {
- if !strings.Contains(err.Error(), "500") {
-@@ -254,7 +256,7 @@ func waitForConnectionUpdateCompletion(uuid string, meta interface{}, ctx contex
- stateConf := &retry.StateChangeConf{
- Target: []string{"COMPLETED"},
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, uuid, nil)
- if err != nil {
- return "", "", err
-@@ -291,7 +293,7 @@ func waitUntilConnectionIsCreated(uuid string, meta interface{}, ctx context.Con
- string(v4.ACTIVE_ConnectionState),
- },
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, uuid, nil)
- if err != nil {
- return "", "", err
-@@ -319,7 +321,7 @@ func waitForConnectionProviderStatusChange(uuid string, meta interface{}, ctx co
- string(v4.PROVISIONED_ProviderStatus),
- },
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, uuid, nil)
- if err != nil {
- return "", "", err
-@@ -349,7 +351,7 @@ func verifyConnectionCreated(uuid string, meta interface{}, ctx context.Context)
- string(v4.PENDING_ConnectionState),
- },
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, uuid, nil)
- if err != nil {
- return "", "", err
-@@ -372,8 +374,8 @@ func verifyConnectionCreated(uuid string, meta interface{}, ctx context.Context)
-
- func resourceFabricConnectionDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
- diags := diag.Diagnostics{}
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- _, _, err := client.ConnectionsApi.DeleteConnectionByUuid(ctx, d.Id())
- if err != nil {
- errors, ok := err.(v4.GenericSwaggerError).Model().([]v4.ModelError)
-@@ -403,7 +405,7 @@ func waitUntilConnectionDeprovisioned(uuid string, meta interface{}, ctx context
- string(v4.DEPROVISIONED_ConnectionState),
- },
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, uuid, nil)
- if err != nil {
- return "", "", err
-diff --git a/equinix/resource_fabric_connection_acc_test.go b/equinix/resource_fabric_connection_acc_test.go
-index c928c3e..adb3394 100644
---- a/equinix/resource_fabric_connection_acc_test.go
-+++ b/equinix/resource_fabric_connection_acc_test.go
-@@ -5,6 +5,8 @@ import (
- "fmt"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -72,7 +74,7 @@ func TestAccFabricCreateCloudRouterConnection(t *testing.T) {
-
- func checkConnectionDelete(s *terraform.State) error {
- ctx := context.Background()
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, testAccProvider.Meta().(*Config).FabricAuthToken)
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, testAccProvider.Meta().(*config.Config).FabricAuthToken)
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_fabric_connection" {
- continue
-diff --git a/equinix/resource_fabric_port.go b/equinix/resource_fabric_port.go
-index 98f78c1..db90bb0 100644
---- a/equinix/resource_fabric_port.go
-+++ b/equinix/resource_fabric_port.go
-@@ -8,6 +8,8 @@ import (
- "runtime/debug"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/antihax/optional"
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-@@ -15,8 +17,8 @@ import (
- )
-
- func resourceFabricPortRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- port, _, err := client.PortsApi.GetPortByUuid(ctx, d.Id())
- if err != nil {
- log.Printf("[WARN] Port %s not found , error %s", d.Id(), err)
-@@ -83,8 +85,8 @@ func resourceFabricPortGetByPortName(ctx context.Context, d *schema.ResourceData
- }
- }()
-
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- portNameParam := d.Get("filters").(*schema.Set).List()
- portName := portNameQueryParamToFabric(portNameParam)
- ports, _, err := client.PortsApi.GetPorts(ctx, &portName)
-diff --git a/equinix/resource_fabric_routing_protocol.go b/equinix/resource_fabric_routing_protocol.go
-index 92d04c8..21341e2 100644
---- a/equinix/resource_fabric_routing_protocol.go
-+++ b/equinix/resource_fabric_routing_protocol.go
-@@ -3,12 +3,14 @@ package equinix
- import (
- "context"
- "fmt"
-- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "log"
- "strconv"
- "strings"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
-+
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -47,8 +49,8 @@ func resourceFabricRoutingProtocol() *schema.Resource {
- }
-
- func resourceFabricRoutingProtocolRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- log.Printf("[WARN] Routing Protocol Connection uuid: %s", d.Get("connection_uuid").(string))
- fabricRoutingProtocol, _, err := client.RoutingProtocolsApi.GetConnectionRoutingProtocolByUuid(ctx, d.Id(), d.Get("connection_uuid").(string))
- if err != nil {
-@@ -69,8 +71,8 @@ func resourceFabricRoutingProtocolRead(ctx context.Context, d *schema.ResourceDa
- }
-
- func resourceFabricRoutingProtocolCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- schemaBgpIpv4 := d.Get("bgp_ipv4").(*schema.Set).List()
- bgpIpv4 := routingProtocolBgpIpv4ToFabric(schemaBgpIpv4)
- schemaBgpIpv6 := d.Get("bgp_ipv6").(*schema.Set).List()
-@@ -152,8 +154,8 @@ func resourceFabricRoutingProtocolCreate(ctx context.Context, d *schema.Resource
- }
-
- func resourceFabricRoutingProtocolUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
-
- /* todo: support patch bgp in the future - switch between PUT and PATCH
- 1. get getRoutingProtocolPatchUpdateRequest()
-@@ -251,8 +253,8 @@ func resourceFabricRoutingProtocolUpdate(ctx context.Context, d *schema.Resource
-
- func resourceFabricRoutingProtocolDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
- diags := diag.Diagnostics{}
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- _, resp, err := client.RoutingProtocolsApi.DeleteConnectionRoutingProtocolByUuid(ctx, d.Id(), d.Get("connection_uuid").(string))
- if err != nil {
- errors, ok := err.(v4.GenericSwaggerError).Model().([]v4.ModelError)
-@@ -324,7 +326,7 @@ func waitUntilRoutingProtocolIsProvisioned(uuid string, connUuid string, meta in
- string(v4.PROVISIONED_ConnectionState),
- },
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.RoutingProtocolsApi.GetConnectionRoutingProtocolByUuid(ctx, uuid, connUuid)
- if err != nil {
- return "", "", err
-@@ -361,7 +363,7 @@ func waitUntilRoutingProtocolIsDeprovisioned(uuid string, connUuid string, meta
- strconv.Itoa(404),
- },
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbConn, resp, _ := client.RoutingProtocolsApi.GetConnectionRoutingProtocolByUuid(ctx, uuid, connUuid)
- // fixme: check for error code instead?
- // ignore error for Target
-@@ -382,7 +384,7 @@ func waitForRoutingProtocolUpdateCompletion(rpChangeUuid string, uuid string, co
- stateConf := &resource.StateChangeConf{
- Target: []string{"COMPLETED"},
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.RoutingProtocolsApi.GetConnectionRoutingProtocolsChangeByUuid(ctx, connUuid, uuid, rpChangeUuid)
- if err != nil {
- return "", "", err
-diff --git a/equinix/resource_fabric_routing_protocol_acc_test.go b/equinix/resource_fabric_routing_protocol_acc_test.go
-index 4fc9cc5..af4af24 100644
---- a/equinix/resource_fabric_routing_protocol_acc_test.go
-+++ b/equinix/resource_fabric_routing_protocol_acc_test.go
-@@ -5,6 +5,8 @@ import (
- "fmt"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -97,7 +99,7 @@ func testAccFabricCreateRoutingProtocolBgpConfig(connectionUuid string, ipv4 str
-
- func checkRoutingProtocolDelete(s *terraform.State) error {
- ctx := context.Background()
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, testAccProvider.Meta().(*Config).FabricAuthToken)
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, testAccProvider.Meta().(*config.Config).FabricAuthToken)
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_fabric_routing_protocol" {
- continue
-diff --git a/equinix/resource_fabric_service_profile.go b/equinix/resource_fabric_service_profile.go
-index a7b9152..9d21c89 100644
---- a/equinix/resource_fabric_service_profile.go
-+++ b/equinix/resource_fabric_service_profile.go
-@@ -4,12 +4,14 @@ import (
- "context"
- "errors"
- "fmt"
-- "github.com/antihax/optional"
- "log"
- "strconv"
- "strings"
- "time"
-
-+ "github.com/antihax/optional"
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
-@@ -37,8 +39,8 @@ func resourceFabricServiceProfile() *schema.Resource {
- }
-
- func resourceFabricServiceProfileRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- serviceProfile, _, err := client.ServiceProfilesApi.GetServiceProfileByUuid(ctx, d.Id(), nil)
- if err != nil {
- if !strings.Contains(err.Error(), "500") {
-@@ -53,8 +55,8 @@ func resourceFabricServiceProfileRead(ctx context.Context, d *schema.ResourceDat
- }
-
- func resourceFabricServiceProfileCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
-
- createRequest := getServiceProfileRequestPayload(d)
- sp, _, err := client.ServiceProfilesApi.CreateServiceProfile(ctx, createRequest)
-@@ -123,8 +125,8 @@ func getServiceProfileRequestPayload(d *schema.ResourceData) v4.ServiceProfileRe
- }
-
- func resourceFabricServiceProfileUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- uuid := d.Id()
- updateRequest := getServiceProfileRequestPayload(d)
-
-@@ -159,7 +161,7 @@ func waitForServiceProfileUpdateCompletion(uuid string, meta interface{}, ctx co
- stateConf := &retry.StateChangeConf{
- Target: []string{"COMPLETED"},
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbServiceProfile, _, err := client.ServiceProfilesApi.GetServiceProfileByUuid(ctx, uuid, nil)
- if err != nil {
- return "", "", err
-@@ -187,7 +189,7 @@ func waitForActiveServiceProfileAndPopulateETag(uuid string, meta interface{}, c
- stateConf := &retry.StateChangeConf{
- Target: []string{string(v4.ACTIVE_ServiceProfileStateEnum)},
- Refresh: func() (interface{}, string, error) {
-- client := meta.(*Config).fabricClient
-+ client := meta.(*config.Config).FabricClient
- dbServiceProfile, res, err := client.ServiceProfilesApi.GetServiceProfileByUuid(ctx, uuid, nil)
- if err != nil {
- return nil, "", err
-@@ -219,8 +221,8 @@ func waitForActiveServiceProfileAndPopulateETag(uuid string, meta interface{}, c
-
- func resourceFabricServiceProfileDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
- diags := diag.Diagnostics{}
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- uuid := d.Id()
- if uuid == "" {
- return diag.Errorf("No uuid found %v ", uuid)
-@@ -273,8 +275,8 @@ func setFabricServiceProfilesListMap(d *schema.ResourceData, spl v4.ServiceProfi
- }
-
- func resourceServiceProfilesSearchRequest(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
-- client := meta.(*Config).fabricClient
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*Config).FabricAuthToken)
-+ client := meta.(*config.Config).FabricClient
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- schemaFilter := d.Get("filter").(*schema.Set).List()
- filter := serviceProfilesSearchFilterRequestToFabric(schemaFilter)
- var serviceProfileFlt v4.ServiceProfileFilter // Cast ServiceProfile search expression struct type to interface
-diff --git a/equinix/resource_fabric_service_profile_acc_test.go b/equinix/resource_fabric_service_profile_acc_test.go
-index 4063958..59aa9d2 100644
---- a/equinix/resource_fabric_service_profile_acc_test.go
-+++ b/equinix/resource_fabric_service_profile_acc_test.go
-@@ -7,6 +7,8 @@ import (
- "testing"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -150,9 +152,9 @@ func testAccFabricCreateServiceProfileConfig(name string) string {
- }
-
- func checkServiceProfileDelete(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).fabricClient
-+ client := testAccProvider.Meta().(*config.Config).FabricClient
- ctx := context.Background()
-- ctx = context.WithValue(ctx, v4.ContextAccessToken, testAccProvider.Meta().(*Config).FabricAuthToken)
-+ ctx = context.WithValue(ctx, v4.ContextAccessToken, testAccProvider.Meta().(*config.Config).FabricAuthToken)
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_fabric_service_profile" {
- continue
-diff --git a/equinix/resource_metal_bgp_session.go b/equinix/resource_metal_bgp_session.go
-index 122e8f9..767776a 100644
---- a/equinix/resource_metal_bgp_session.go
-+++ b/equinix/resource_metal_bgp_session.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "log"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- "github.com/packethost/packngo"
-@@ -49,8 +51,8 @@ func resourceMetalBGPSession() *schema.Resource {
- }
-
- func resourceMetalBGPSessionCreate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- dID := d.Get("device_id").(string)
- addressFamily := d.Get("address_family").(string)
-@@ -70,8 +72,8 @@ func resourceMetalBGPSessionCreate(d *schema.ResourceData, meta interface{}) err
- }
-
- func resourceMetalBGPSessionRead(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- bgpSession, _, err := client.BGPSessions.Get(d.Id(),
- &packngo.GetOptions{Includes: []string{"device"}})
-@@ -100,8 +102,8 @@ func resourceMetalBGPSessionRead(d *schema.ResourceData, meta interface{}) error
- }
-
- func resourceMetalBGPSessionDelete(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- resp, err := client.BGPSessions.Delete(d.Id())
- return ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err)
- }
-diff --git a/equinix/resource_metal_bgp_setup_acc_test.go b/equinix/resource_metal_bgp_setup_acc_test.go
-index 226a7d0..32c4189 100644
---- a/equinix/resource_metal_bgp_setup_acc_test.go
-+++ b/equinix/resource_metal_bgp_setup_acc_test.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -52,7 +54,7 @@ func TestAccMetalBGPSetup_basic(t *testing.T) {
- }
-
- func testAccMetalBGPSetupCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_bgp_session" {
-diff --git a/equinix/resource_metal_connection.go b/equinix/resource_metal_connection.go
-index 91bffe3..98576b0 100644
---- a/equinix/resource_metal_connection.go
-+++ b/equinix/resource_metal_connection.go
-@@ -7,6 +7,8 @@ import (
- "strconv"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- "github.com/packethost/packngo"
-@@ -198,8 +200,8 @@ func resourceMetalConnection() *schema.Resource {
- }
-
- func resourceMetalConnectionCreate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- facility, facOk := d.GetOk("facility")
- metro, metOk := d.GetOk("metro")
-@@ -315,8 +317,8 @@ func resourceMetalConnectionCreate(d *schema.ResourceData, meta interface{}) err
- }
-
- func resourceMetalConnectionUpdate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- if d.HasChange("locked") {
- var action func(string) (*packngo.Response, error)
-@@ -423,8 +425,8 @@ func updateHiddenVirtualCircuitVNID(client *packngo.Client, port map[string]inte
- }
-
- func resourceMetalConnectionRead(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- connId := d.Id()
- conn, _, err := client.Connections.Get(
-@@ -489,8 +491,8 @@ func resourceMetalConnectionRead(d *schema.ResourceData, meta interface{}) error
- }
-
- func resourceMetalConnectionDelete(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- resp, err := client.Connections.Delete(d.Id(), true)
- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
- return friendlyError(err)
-diff --git a/equinix/resource_metal_connection_acc_test.go b/equinix/resource_metal_connection_acc_test.go
-index 53c0259..7a5146d 100644
---- a/equinix/resource_metal_connection_acc_test.go
-+++ b/equinix/resource_metal_connection_acc_test.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -42,7 +44,7 @@ func TestSpeedConversion(t *testing.T) {
- }
-
- func testAccMetalConnectionCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_connection" {
-diff --git a/equinix/resource_metal_device.go b/equinix/resource_metal_device.go
-index 756dadc..8da8ece 100644
---- a/equinix/resource_metal_device.go
-+++ b/equinix/resource_metal_device.go
-@@ -12,6 +12,8 @@ import (
- "sort"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -473,8 +475,8 @@ func reinstallDisabledAndNoChangesAllowed(attribute string) customdiff.ResourceC
- }
-
- func resourceMetalDeviceCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- var addressTypesSlice []packngo.IPAddressCreateRequest
- _, ok := d.GetOk("ip_address")
-@@ -610,8 +612,8 @@ func resourceMetalDeviceCreate(ctx context.Context, d *schema.ResourceData, meta
- }
-
- func resourceMetalDeviceRead(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalGoUserAgent(d)
-- client := meta.(*Config).metalgo
-+ meta.(*config.Config).AddModuleToMetalGoUserAgent(d)
-+ client := meta.(*config.Config).Metalgo
-
- device, resp, err := client.DevicesApi.FindDeviceById(context.Background(), d.Id()).Include(deviceCommonIncludes).Execute()
- if err != nil {
-@@ -717,8 +719,8 @@ func resourceMetalDeviceRead(ctx context.Context, d *schema.ResourceData, meta i
- }
-
- func resourceMetalDeviceUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- if d.HasChange("locked") {
- var action func(string) (*packngo.Response, error)
-@@ -824,8 +826,8 @@ func doReinstall(ctx context.Context, client *packngo.Client, d *schema.Resource
- }
-
- func resourceMetalDeviceDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- fdvIf, fdvOk := d.GetOk("force_detach_volumes")
- fdv := false
-@@ -864,8 +866,8 @@ func waitForActiveDevice(ctx context.Context, d *schema.ResourceData, meta inter
- Pending: pending,
- Target: targets,
- Refresh: func() (interface{}, string, error) {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- device, _, err := client.Devices.Get(d.Id(), &packngo.GetOptions{Includes: []string{"project"}})
- if err == nil {
-diff --git a/equinix/resource_metal_device_acc_test.go b/equinix/resource_metal_device_acc_test.go
-index 030f337..0822a1f 100644
---- a/equinix/resource_metal_device_acc_test.go
-+++ b/equinix/resource_metal_device_acc_test.go
-@@ -12,6 +12,8 @@ import (
- "testing"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/google/uuid"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
-@@ -538,7 +540,7 @@ func TestAccMetalDevice_allowChangesErrorOnUnsupportedAttribute(t *testing.T) {
- }
-
- func testAccMetalDeviceCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_device" {
-@@ -574,7 +576,7 @@ func testAccMetalDeviceExists(n string, device *packngo.Device) resource.TestChe
- return fmt.Errorf("No Record ID is set")
- }
-
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- foundDevice, _, err := client.Devices.Get(rs.Primary.ID, nil)
- if err != nil {
-@@ -1103,7 +1105,7 @@ func TestAccMetalDevice_readErrorHandling(t *testing.T) {
- }
-
- mockAPI := httptest.NewServer(http.HandlerFunc(tt.args.handler))
-- meta := &Config{
-+ meta := &config.Config{
- BaseURL: mockAPI.URL,
- Token: "fakeTokenForMock",
- }
-@@ -1132,8 +1134,8 @@ func testAccWaitForMetalDeviceActive(project, deviceHostName string) resource.Im
-
- meta := testAccProvider.Meta()
- rd := new(schema.ResourceData)
-- meta.(*Config).addModuleToMetalUserAgent(rd)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(rd)
-+ client := meta.(*config.Config).Metal
- devices, _, err := client.Devices.List(rs.Primary.ID, &packngo.ListOptions{Search: deviceHostName})
- if err != nil {
- return "", fmt.Errorf("error while fetching devices for project [%s], error: %w", rs.Primary.ID, err)
-diff --git a/equinix/resource_metal_device_network_type.go b/equinix/resource_metal_device_network_type.go
-index 0222521..87fa5df 100644
---- a/equinix/resource_metal_device_network_type.go
-+++ b/equinix/resource_metal_device_network_type.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "log"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- "github.com/packethost/packngo"
-@@ -71,8 +73,8 @@ func getAndPossiblySetNetworkType(d *schema.ResourceData, c *packngo.Client, tar
- }
-
- func resourceMetalDeviceNetworkTypeCreate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- ntype := d.Get("type").(string)
- err := getAndPossiblySetNetworkType(d, client, ntype)
-@@ -84,8 +86,8 @@ func resourceMetalDeviceNetworkTypeCreate(d *schema.ResourceData, meta interface
- }
-
- func resourceMetalDeviceNetworkTypeRead(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- _, devNType, err := getDevIDandNetworkType(d, client)
- if err != nil {
-@@ -113,8 +115,8 @@ func resourceMetalDeviceNetworkTypeRead(d *schema.ResourceData, meta interface{}
- }
-
- func resourceMetalDeviceNetworkTypeUpdate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- ntype := d.Get("type").(string)
- if d.HasChange("type") {
-diff --git a/equinix/resource_metal_gateway.go b/equinix/resource_metal_gateway.go
-index 19959bc..2ca2862 100644
---- a/equinix/resource_metal_gateway.go
-+++ b/equinix/resource_metal_gateway.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
-@@ -93,8 +95,8 @@ func resourceMetalGateway() *schema.Resource {
- }
-
- func resourceMetalGatewayCreate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- _, hasIPReservation := d.GetOk("ip_reservation_id")
- _, hasSubnetSize := d.GetOk("private_ipv4_subnet_size")
-@@ -120,8 +122,8 @@ func resourceMetalGatewayCreate(d *schema.ResourceData, meta interface{}) error
- }
-
- func resourceMetalGatewayRead(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- mgId := d.Id()
- includes := &packngo.GetOptions{Includes: []string{"project", "ip_reservation", "virtual_network", "vrf"}}
-@@ -152,8 +154,8 @@ func resourceMetalGatewayRead(d *schema.ResourceData, meta interface{}) error {
- }
-
- func resourceMetalGatewayDelete(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- resp, err := client.MetalGateways.Delete(d.Id())
- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
- return friendlyError(err)
-diff --git a/equinix/resource_metal_gateway_acc_test.go b/equinix/resource_metal_gateway_acc_test.go
-index 43f2421..0a73093 100644
---- a/equinix/resource_metal_gateway_acc_test.go
-+++ b/equinix/resource_metal_gateway_acc_test.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- )
-@@ -98,7 +100,7 @@ resource "equinix_metal_gateway" "test" {
- }
-
- func testAccMetalGatewayCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_gateway" {
-diff --git a/equinix/resource_metal_ip_attachment.go b/equinix/resource_metal_ip_attachment.go
-index 0da8618..7057932 100644
---- a/equinix/resource_metal_ip_attachment.go
-+++ b/equinix/resource_metal_ip_attachment.go
-@@ -5,6 +5,8 @@ import (
- "log"
- "path"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -34,8 +36,8 @@ func resourceMetalIPAttachment() *schema.Resource {
- }
-
- func resourceMetalIPAttachmentCreate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- deviceID := d.Get("device_id").(string)
- ipa := d.Get("cidr_notation").(string)
-@@ -51,8 +53,8 @@ func resourceMetalIPAttachmentCreate(d *schema.ResourceData, meta interface{}) e
- }
-
- func resourceMetalIPAttachmentRead(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- assignment, _, err := client.DeviceIPs.Get(d.Id(), nil)
- if err != nil {
- err = friendlyError(err)
-@@ -87,8 +89,8 @@ func resourceMetalIPAttachmentRead(d *schema.ResourceData, meta interface{}) err
- }
-
- func resourceMetalIPAttachmentDelete(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- resp, err := client.DeviceIPs.Unassign(d.Id())
- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-diff --git a/equinix/resource_metal_ip_attachment_acc_test.go b/equinix/resource_metal_ip_attachment_acc_test.go
-index 993ff99..eca1f82 100644
---- a/equinix/resource_metal_ip_attachment_acc_test.go
-+++ b/equinix/resource_metal_ip_attachment_acc_test.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -127,7 +129,7 @@ resource "equinix_metal_ip_attachment" "test" {
- }
-
- func testAccMetalIPAttachmentCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_ip_attachment" {
-diff --git a/equinix/resource_metal_organization.go b/equinix/resource_metal_organization.go
-index 24030a8..00fe088 100644
---- a/equinix/resource_metal_organization.go
-+++ b/equinix/resource_metal_organization.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "regexp"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- "github.com/packethost/packngo"
-@@ -100,8 +102,8 @@ func createMetalOrganizationAddressResourceSchema() map[string]*schema.Schema {
- }
-
- func resourceMetalOrganizationCreate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- createRequest := &packngo.OrganizationCreateRequest{
- Name: d.Get("name").(string),
-@@ -135,8 +137,8 @@ func resourceMetalOrganizationCreate(d *schema.ResourceData, meta interface{}) e
- }
-
- func resourceMetalOrganizationRead(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- key, _, err := client.Organizations.Get(d.Id(), &packngo.GetOptions{Includes: []string{"address"}})
- if err != nil {
-@@ -166,8 +168,8 @@ func resourceMetalOrganizationRead(d *schema.ResourceData, meta interface{}) err
- }
-
- func resourceMetalOrganizationUpdate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- changes := getResourceDataChangedKeys([]string{"name", "description", "website", "twitter", "logo", "address"}, d)
- updateRequest := &packngo.OrganizationUpdateRequest{}
-@@ -203,8 +205,8 @@ func resourceMetalOrganizationUpdate(d *schema.ResourceData, meta interface{}) e
- }
-
- func resourceMetalOrganizationDelete(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- resp, err := client.Organizations.Delete(d.Id())
- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-diff --git a/equinix/resource_metal_organization_acc_test.go b/equinix/resource_metal_organization_acc_test.go
-index 255dfda..098afd4 100644
---- a/equinix/resource_metal_organization_acc_test.go
-+++ b/equinix/resource_metal_organization_acc_test.go
-@@ -5,6 +5,8 @@ import (
- "log"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -123,7 +125,7 @@ func TestAccMetalOrganization_importBasic(t *testing.T) {
- }
-
- func testAccMetalOrganizationCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_organization" {
-@@ -147,7 +149,7 @@ func testAccMetalOrganizationExists(n string, org *packngo.Organization) resourc
- return fmt.Errorf("No Record ID is set")
- }
-
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- foundOrg, _, err := client.Organizations.Get(rs.Primary.ID, &packngo.GetOptions{Includes: []string{"address", "primary_owner"}})
- if err != nil {
-diff --git a/equinix/resource_metal_organization_member.go b/equinix/resource_metal_organization_member.go
-index 6bee739..3e5c3ab 100644
---- a/equinix/resource_metal_organization_member.go
-+++ b/equinix/resource_metal_organization_member.go
-@@ -6,6 +6,8 @@ import (
- "path"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- "github.com/packethost/packngo"
-@@ -117,7 +119,7 @@ func resourceMetalOrganizationMember() *schema.Resource {
- }
-
- func resourceMetalOrganizationMemberCreate(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
-
- email := d.Get("invitee").(string)
- createRequest := &packngo.InvitationCreateRequest{
-@@ -154,7 +156,7 @@ func findMember(invitee string, members []packngo.Member, invitations []packngo.
- }
-
- func resourceMetalOrganizationMemberRead(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
- parts := strings.Split(d.Id(), ":")
- invitee := parts[0]
- orgID := parts[1]
-@@ -219,7 +221,7 @@ func resourceMetalOrganizationMemberRead(d *schema.ResourceData, meta interface{
- }
-
- func resourceMetalOrganizationMemberDelete(d *schema.ResourceData, meta interface{}) error {
-- client := meta.(*Config).metal
-+ client := meta.(*config.Config).Metal
-
- listOpts := &packngo.ListOptions{Includes: []string{"user"}}
- invitations, _, err := client.Invitations.List(d.Get("organization_id").(string), listOpts)
-diff --git a/equinix/resource_metal_port.go b/equinix/resource_metal_port.go
-index 375897e..aec4fdf 100644
---- a/equinix/resource_metal_port.go
-+++ b/equinix/resource_metal_port.go
-@@ -5,6 +5,8 @@ import (
- "log"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- )
-
-@@ -143,8 +145,8 @@ func resourceMetalPortUpdate(ctx context.Context, d *schema.ResourceData, meta i
- }
-
- func resourceMetalPortRead(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- port, err := getPortByResourceData(d, client)
- if err != nil {
-diff --git a/equinix/resource_metal_port_acc_test.go b/equinix/resource_metal_port_acc_test.go
-index 71274d4..68e7ce3 100644
---- a/equinix/resource_metal_port_acc_test.go
-+++ b/equinix/resource_metal_port_acc_test.go
-@@ -5,6 +5,8 @@ import (
- "regexp"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -354,7 +356,7 @@ func TestAccMetalPort_hybridBonded(t *testing.T) {
- }
-
- func testAccMetalPortDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- port_ids := []string{}
-
-@@ -391,8 +393,8 @@ func testAccWaitForPortActive(deviceName, portName string) resource.ImportStateI
-
- meta := testAccProvider.Meta()
- rd := new(schema.ResourceData)
-- meta.(*Config).addModuleToMetalUserAgent(rd)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(rd)
-+ client := meta.(*config.Config).Metal
- device, _, err := client.Devices.Get(rs.Primary.ID, &packngo.GetOptions{Includes: []string{"ports"}})
- if err != nil {
- return "", fmt.Errorf("error while fetching device with Id [%s], error: %w", rs.Primary.ID, err)
-diff --git a/equinix/resource_metal_port_vlan_attachment.go b/equinix/resource_metal_port_vlan_attachment.go
-index d537c0d..e72efa0 100644
---- a/equinix/resource_metal_port_vlan_attachment.go
-+++ b/equinix/resource_metal_port_vlan_attachment.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "log"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -65,8 +67,8 @@ func resourceMetalPortVlanAttachment() *schema.Resource {
- }
-
- func resourceMetalPortVlanAttachmentCreate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- deviceID := d.Get("device_id").(string)
- pName := d.Get("port_name").(string)
- vlanVNID := d.Get("vlan_vnid").(int)
-@@ -158,8 +160,8 @@ func resourceMetalPortVlanAttachmentCreate(d *schema.ResourceData, meta interfac
- }
-
- func resourceMetalPortVlanAttachmentRead(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- deviceID := d.Get("device_id").(string)
- pName := d.Get("port_name").(string)
- vlanVNID := d.Get("vlan_vnid").(int)
-@@ -212,8 +214,8 @@ func resourceMetalPortVlanAttachmentRead(d *schema.ResourceData, meta interface{
- }
-
- func resourceMetalPortVlanAttachmentUpdate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- if d.HasChange("native") {
- native := d.Get("native").(bool)
- portID := d.Get("port_id").(string)
-@@ -235,8 +237,8 @@ func resourceMetalPortVlanAttachmentUpdate(d *schema.ResourceData, meta interfac
- }
-
- func resourceMetalPortVlanAttachmentDelete(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- pID := d.Get("port_id").(string)
- vlanID := d.Get("vlan_id").(string)
- native := d.Get("native").(bool)
-diff --git a/equinix/resource_metal_port_vlan_attachment_acc_test.go b/equinix/resource_metal_port_vlan_attachment_acc_test.go
-index 2cc9b80..de96c4b 100644
---- a/equinix/resource_metal_port_vlan_attachment_acc_test.go
-+++ b/equinix/resource_metal_port_vlan_attachment_acc_test.go
-@@ -6,6 +6,8 @@ import (
- "strings"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -346,7 +348,7 @@ func TestAccMetalPortVlanAttachment_hybridMultipleVlans(t *testing.T) {
- }
-
- func testAccMetalPortVlanAttachmentCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- device_id := ""
- vlan_id := ""
-diff --git a/equinix/resource_metal_project.go b/equinix/resource_metal_project.go
-index d02528e..31023a4 100644
---- a/equinix/resource_metal_project.go
-+++ b/equinix/resource_metal_project.go
-@@ -6,6 +6,8 @@ import (
- "regexp"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- "github.com/packethost/packngo"
-@@ -123,8 +125,8 @@ func expandBGPConfig(d *schema.ResourceData) packngo.CreateBGPConfigRequest {
- }
-
- func resourceMetalProjectCreate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- createRequest := &packngo.ProjectCreateRequest{
- Name: d.Get("name").(string),
-@@ -159,8 +161,8 @@ func resourceMetalProjectCreate(d *schema.ResourceData, meta interface{}) error
- }
-
- func resourceMetalProjectRead(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- proj, _, err := client.Projects.Get(d.Id(), nil)
- if err != nil {
-@@ -232,8 +234,8 @@ func flattenBGPConfig(l *packngo.BGPConfig) []map[string]interface{} {
- }
-
- func resourceMetalProjectUpdate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- updateRequest := &packngo.ProjectUpdateRequest{}
- if d.HasChange("name") {
- pName := d.Get("name").(string)
-@@ -284,8 +286,8 @@ func resourceMetalProjectUpdate(d *schema.ResourceData, meta interface{}) error
- }
-
- func resourceMetalProjectDelete(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- resp, err := client.Projects.Delete(d.Id())
- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-diff --git a/equinix/resource_metal_project_acc_test.go b/equinix/resource_metal_project_acc_test.go
-index ea4e22c..b891bfc 100644
---- a/equinix/resource_metal_project_acc_test.go
-+++ b/equinix/resource_metal_project_acc_test.go
-@@ -8,6 +8,8 @@ import (
- "regexp"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
-@@ -135,8 +137,8 @@ func TestAccMetalProject_errorHandling(t *testing.T) {
- }
- mockEquinix := Provider()
- mockEquinix.ConfigureContextFunc = func(ctx context.Context, d *schema.ResourceData) (interface{}, diag.Diagnostics) {
-- config := Config{
-- metal: &packngo.Client{Projects: mockMetalProjectService},
-+ config := config.Config{
-+ Metal: &packngo.Client{Projects: mockMetalProjectService},
- }
- return &config, nil
- }
-@@ -167,8 +169,8 @@ func TestAccMetalProject_apiErrorHandling(t *testing.T) {
- }
- mockEquinix := Provider()
- mockEquinix.ConfigureContextFunc = func(ctx context.Context, d *schema.ResourceData) (interface{}, diag.Diagnostics) {
-- config := Config{
-- metal: &packngo.Client{Projects: mockMetalProjectService},
-+ config := config.Config{
-+ Metal: &packngo.Client{Projects: mockMetalProjectService},
- }
- return &config, nil
- }
-@@ -346,7 +348,7 @@ func TestAccMetalProject_BGPUpdate(t *testing.T) {
- }
-
- func testAccMetalProjectCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_project" {
-@@ -370,7 +372,7 @@ func testAccMetalProjectExists(n string, project *packngo.Project) resource.Test
- return fmt.Errorf("No Record ID is set")
- }
-
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- foundProject, _, err := client.Projects.Get(rs.Primary.ID, nil)
- if err != nil {
-diff --git a/equinix/resource_metal_project_api_key.go b/equinix/resource_metal_project_api_key.go
-index bedc974..6e8f078 100644
---- a/equinix/resource_metal_project_api_key.go
-+++ b/equinix/resource_metal_project_api_key.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "log"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -47,8 +49,8 @@ func resourceMetalProjectAPIKey() *schema.Resource {
- }
-
- func resourceMetalAPIKeyCreate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- projectId := ""
-
-@@ -82,8 +84,8 @@ func projectIdFromResourceData(d *schema.ResourceData) string {
- }
-
- func resourceMetalAPIKeyRead(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- projectId := projectIdFromResourceData(d)
-
-@@ -133,8 +135,8 @@ func resourceMetalAPIKeyRead(d *schema.ResourceData, meta interface{}) error {
- }
-
- func resourceMetalAPIKeyDelete(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- resp, err := client.APIKeys.Delete(d.Id())
- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-diff --git a/equinix/resource_metal_project_api_key_acc_test.go b/equinix/resource_metal_project_api_key_acc_test.go
-index d626234..7c2d9e7 100644
---- a/equinix/resource_metal_project_api_key_acc_test.go
-+++ b/equinix/resource_metal_project_api_key_acc_test.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- )
-@@ -44,7 +46,7 @@ resource "equinix_metal_project_api_key" "test" {
- }
-
- func testAccMetalProjectAPIKeyCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_project_api_key" {
- continue
-diff --git a/equinix/resource_metal_project_ssh_key_acc_test.go b/equinix/resource_metal_project_ssh_key_acc_test.go
-index d8553f7..40e2ac9 100644
---- a/equinix/resource_metal_project_ssh_key_acc_test.go
-+++ b/equinix/resource_metal_project_ssh_key_acc_test.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -74,7 +76,7 @@ func TestAccMetalProjectSSHKey_basic(t *testing.T) {
- }
-
- func testAccMetalProjectSSHKeyCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_project_ssh_key" {
-diff --git a/equinix/resource_metal_reserved_ip_block.go b/equinix/resource_metal_reserved_ip_block.go
-index 04ff8c5..7e37fc5 100644
---- a/equinix/resource_metal_reserved_ip_block.go
-+++ b/equinix/resource_metal_reserved_ip_block.go
-@@ -9,6 +9,8 @@ import (
- "strings"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure"
-@@ -232,8 +234,8 @@ func resourceMetalReservedIPBlock() *schema.Resource {
- }
-
- func resourceMetalReservedIPBlockCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- quantity := d.Get("quantity").(int)
- typ := d.Get("type").(string)
-@@ -315,8 +317,8 @@ func resourceMetalReservedIPBlockCreate(ctx context.Context, d *schema.ResourceD
- }
-
- func resourceMetalReservedIPBlockUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- id := d.Id()
- req := &packngo.IPAddressUpdateRequest{}
- if d.HasChange("tags") {
-@@ -457,8 +459,8 @@ func loadBlock(d *schema.ResourceData, reservedBlock *packngo.IPAddressReservati
- }
-
- func resourceMetalReservedIPBlockRead(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- id := d.Id()
- getOpts := &packngo.GetOptions{Includes: []string{"facility", "metro", "project", "vrf"}}
-@@ -488,8 +490,8 @@ func resourceMetalReservedIPBlockRead(ctx context.Context, d *schema.ResourceDat
- }
-
- func resourceMetalReservedIPBlockDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- id := d.Id()
-
-diff --git a/equinix/resource_metal_reserved_ip_block_acc_test.go b/equinix/resource_metal_reserved_ip_block_acc_test.go
-index f101435..40d4cde 100644
---- a/equinix/resource_metal_reserved_ip_block_acc_test.go
-+++ b/equinix/resource_metal_reserved_ip_block_acc_test.go
-@@ -7,6 +7,8 @@ import (
- "testing"
- "text/template"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -210,7 +212,7 @@ func TestAccMetalReservedIPBlock_importBasic(t *testing.T) {
- }
-
- func testAccMetalReservedIPBlockCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_reserved_ip_block" {
-diff --git a/equinix/resource_metal_spot_market_request.go b/equinix/resource_metal_spot_market_request.go
-index 2052ce4..707b434 100644
---- a/equinix/resource_metal_spot_market_request.go
-+++ b/equinix/resource_metal_spot_market_request.go
-@@ -9,6 +9,8 @@ import (
- "strconv"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
-@@ -213,8 +215,8 @@ func resourceMetalSpotMarketRequest() *schema.Resource {
- }
-
- func resourceMetalSpotMarketRequestCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- var waitForDevices bool
-
- metro := d.Get("metro").(string)
-@@ -356,8 +358,8 @@ func resourceMetalSpotMarketRequestCreate(ctx context.Context, d *schema.Resourc
- }
-
- func resourceMetalSpotMarketRequestRead(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- smr, _, err := client.SpotMarketRequests.Get(d.Id(), &packngo.GetOptions{Includes: []string{"project", "devices", "facilities", "metro"}})
- if err != nil {
-@@ -396,8 +398,8 @@ func resourceMetalSpotMarketRequestRead(ctx context.Context, d *schema.ResourceD
- }
-
- func resourceMetalSpotMarketRequestDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- var waitForDevices bool
-
- if val, ok := d.GetOk("wait_for_devices"); ok {
-@@ -437,8 +439,8 @@ func resourceMetalSpotMarketRequestDelete(ctx context.Context, d *schema.Resourc
-
- func resourceStateRefreshFunc(d *schema.ResourceData, meta interface{}) retry.StateRefreshFunc {
- return func() (interface{}, string, error) {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- smr, _, err := client.SpotMarketRequests.Get(d.Id(), &packngo.GetOptions{Includes: []string{"project", "devices", "facilities", "metro"}})
- if err != nil {
-diff --git a/equinix/resource_metal_spot_market_request_acc_test.go b/equinix/resource_metal_spot_market_request_acc_test.go
-index 7291f40..2d273bf 100644
---- a/equinix/resource_metal_spot_market_request_acc_test.go
-+++ b/equinix/resource_metal_spot_market_request_acc_test.go
-@@ -2,12 +2,14 @@ package equinix
-
- import (
- "fmt"
-+ "regexp"
-+ "testing"
-+
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- "github.com/packethost/packngo"
-- "regexp"
-- "testing"
- )
-
- var (
-@@ -40,7 +42,7 @@ func TestAccMetalSpotMarketRequest_basic(t *testing.T) {
- }
-
- func testAccMetalSpotMarketRequestCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_spot_market_request" {
-@@ -64,7 +66,7 @@ func testAccCheckMetalSpotMarketRequestExists(n string, key *packngo.SpotMarketR
- return fmt.Errorf("No Record ID is set")
- }
-
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- foundKey, _, err := client.SpotMarketRequests.Get(rs.Primary.ID, &packngo.GetOptions{Includes: []string{"project", "devices", "facilities", "metro"}})
- if err != nil {
-diff --git a/equinix/resource_metal_ssh_key.go b/equinix/resource_metal_ssh_key.go
-index 49000d9..087063b 100644
---- a/equinix/resource_metal_ssh_key.go
-+++ b/equinix/resource_metal_ssh_key.go
-@@ -5,6 +5,8 @@ import (
- "path"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -63,8 +65,8 @@ func resourceMetalSSHKey() *schema.Resource {
- }
-
- func resourceMetalSSHKeyCreate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- createRequest := &packngo.SSHKeyCreateRequest{
- Label: d.Get("name").(string),
-@@ -87,8 +89,8 @@ func resourceMetalSSHKeyCreate(d *schema.ResourceData, meta interface{}) error {
- }
-
- func resourceMetalSSHKeyRead(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- key, _, err := client.SSHKeys.Get(d.Id(), nil)
- if err != nil {
-@@ -123,8 +125,8 @@ func resourceMetalSSHKeyRead(d *schema.ResourceData, meta interface{}) error {
- }
-
- func resourceMetalSSHKeyUpdate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- updateRequest := &packngo.SSHKeyUpdateRequest{}
-
-@@ -147,8 +149,8 @@ func resourceMetalSSHKeyUpdate(d *schema.ResourceData, meta interface{}) error {
- }
-
- func resourceMetalSSHKeyDelete(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- resp, err := client.SSHKeys.Delete(d.Id())
- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-diff --git a/equinix/resource_metal_ssh_key_acc_test.go b/equinix/resource_metal_ssh_key_acc_test.go
-index f2b07f1..82601cd 100644
---- a/equinix/resource_metal_ssh_key_acc_test.go
-+++ b/equinix/resource_metal_ssh_key_acc_test.go
-@@ -6,6 +6,8 @@ import (
- "net/http"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -188,7 +190,7 @@ func TestAccMetalSSHKey_importBasic(t *testing.T) {
- }
-
- func testAccMetalSSHKeyCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_ssh_key" {
-@@ -212,7 +214,7 @@ func testAccCheckMetalSSHKeyExists(n string, key *packngo.SSHKey) resource.TestC
- return fmt.Errorf("No Record ID is set")
- }
-
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- foundKey, _, err := client.SSHKeys.Get(rs.Primary.ID, nil)
- if err != nil {
-diff --git a/equinix/resource_metal_user_api_key_acc_test.go b/equinix/resource_metal_user_api_key_acc_test.go
-index 4b34896..831995a 100644
---- a/equinix/resource_metal_user_api_key_acc_test.go
-+++ b/equinix/resource_metal_user_api_key_acc_test.go
-@@ -69,7 +69,7 @@ func TestAccMetalUserAPIKey_basic(t *testing.T) {
- }
-
- func testAccMetalUserAPIKeyCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_user_api_key" {
- continue
-diff --git a/equinix/resource_metal_virtual_circuit.go b/equinix/resource_metal_virtual_circuit.go
-index 7d9ded7..a832bc8 100644
---- a/equinix/resource_metal_virtual_circuit.go
-+++ b/equinix/resource_metal_virtual_circuit.go
-@@ -9,6 +9,8 @@ import (
- "strconv"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
-@@ -139,8 +141,8 @@ func resourceMetalVirtualCircuit() *schema.Resource {
- }
-
- func resourceMetalVirtualCircuitCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- vncr := packngo.VCCreateRequest{
- VirtualNetworkID: d.Get("vlan_id").(string),
- Name: d.Get("name").(string),
-@@ -199,8 +201,8 @@ func resourceMetalVirtualCircuitCreate(ctx context.Context, d *schema.ResourceDa
- }
-
- func resourceMetalVirtualCircuitRead(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
- vcId := d.Id()
-
- vc, _, err := client.VirtualCircuits.Get(
-@@ -280,8 +282,8 @@ func getVCStateWaiter(client *packngo.Client, id string, timeout time.Duration,
- }
-
- func resourceMetalVirtualCircuitUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- ur := packngo.VCUpdateRequest{}
- if d.HasChange("vlan_id") {
-@@ -328,8 +330,8 @@ func resourceMetalVirtualCircuitUpdate(ctx context.Context, d *schema.ResourceDa
- }
-
- func resourceMetalVirtualCircuitDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- resp, err := client.VirtualCircuits.Delete(d.Id())
- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-diff --git a/equinix/resource_metal_virtual_circuit_acc_test.go b/equinix/resource_metal_virtual_circuit_acc_test.go
-index 13a1117..94c4b72 100644
---- a/equinix/resource_metal_virtual_circuit_acc_test.go
-+++ b/equinix/resource_metal_virtual_circuit_acc_test.go
-@@ -6,6 +6,8 @@ import (
- "os"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -59,7 +61,7 @@ func testSweepVirtualCircuits(region string) error {
- }
-
- func testAccMetalVirtualCircuitCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_virtual_circuit" {
-diff --git a/equinix/resource_metal_vlan.go b/equinix/resource_metal_vlan.go
-index 5cfcd3a..2b39fcc 100644
---- a/equinix/resource_metal_vlan.go
-+++ b/equinix/resource_metal_vlan.go
-@@ -4,6 +4,8 @@ import (
- "errors"
- "path"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
- )
-@@ -76,8 +78,8 @@ func resourceMetalVlan() *schema.Resource {
- }
-
- func resourceMetalVlanCreate(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- facRaw, facOk := d.GetOk("facility")
- metroRaw, metroOk := d.GetOk("metro")
-@@ -110,8 +112,8 @@ func resourceMetalVlanCreate(d *schema.ResourceData, meta interface{}) error {
- }
-
- func resourceMetalVlanRead(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- vlan, _, err := client.ProjectVirtualNetworks.Get(d.Id(),
- &packngo.GetOptions{Includes: []string{"assigned_to"}})
-@@ -133,8 +135,8 @@ func resourceMetalVlanRead(d *schema.ResourceData, meta interface{}) error {
- }
-
- func resourceMetalVlanDelete(d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- id := d.Id()
- vlan, resp, err := client.ProjectVirtualNetworks.Get(id, &packngo.GetOptions{Includes: []string{"instances", "instances.network_ports.virtual_networks", "internet_gateway"}})
-diff --git a/equinix/resource_metal_vlan_acc_test.go b/equinix/resource_metal_vlan_acc_test.go
-index 6e395f6..eb76aa8 100644
---- a/equinix/resource_metal_vlan_acc_test.go
-+++ b/equinix/resource_metal_vlan_acc_test.go
-@@ -5,6 +5,8 @@ import (
- "log"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -133,7 +135,7 @@ func testAccCheckMetalVlanExists(n string, vlan *packngo.VirtualNetwork) resourc
- return fmt.Errorf("No Record ID is set")
- }
-
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- foundVlan, _, err := client.ProjectVirtualNetworks.Get(rs.Primary.ID, nil)
- if err != nil {
-@@ -150,7 +152,7 @@ func testAccCheckMetalVlanExists(n string, vlan *packngo.VirtualNetwork) resourc
- }
-
- func testAccMetalVlanCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_vlan" {
-diff --git a/equinix/resource_metal_vrf.go b/equinix/resource_metal_vrf.go
-index 71b92aa..4f35916 100644
---- a/equinix/resource_metal_vrf.go
-+++ b/equinix/resource_metal_vrf.go
-@@ -2,9 +2,11 @@ package equinix
-
- import (
- "context"
-+ "log"
-+
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
-- "log"
- )
-
- func resourceMetalVRF() *schema.Resource {
-@@ -56,8 +58,8 @@ func resourceMetalVRF() *schema.Resource {
- }
-
- func resourceMetalVRFCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- createRequest := &packngo.VRFCreateRequest{
- Name: d.Get("name").(string),
-@@ -79,8 +81,8 @@ func resourceMetalVRFCreate(ctx context.Context, d *schema.ResourceData, meta in
- }
-
- func resourceMetalVRFUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- sPtr := func(s string) *string { return &s }
- iPtr := func(i int) *int { return &i }
-@@ -109,8 +111,8 @@ func resourceMetalVRFUpdate(ctx context.Context, d *schema.ResourceData, meta in
- }
-
- func resourceMetalVRFRead(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- getOpts := &packngo.GetOptions{Includes: []string{"project", "metro"}}
-
-@@ -137,8 +139,8 @@ func resourceMetalVRFRead(ctx context.Context, d *schema.ResourceData, meta inte
- }
-
- func resourceMetalVRFDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-- meta.(*Config).addModuleToMetalUserAgent(d)
-- client := meta.(*Config).metal
-+ meta.(*config.Config).AddModuleToMetalUserAgent(d)
-+ client := meta.(*config.Config).Metal
-
- resp, err := client.VRFs.Delete(d.Id())
- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) == nil {
-diff --git a/equinix/resource_metal_vrf_acc_test.go b/equinix/resource_metal_vrf_acc_test.go
-index caf5831..5a1b481 100644
---- a/equinix/resource_metal_vrf_acc_test.go
-+++ b/equinix/resource_metal_vrf_acc_test.go
-@@ -7,6 +7,8 @@ import (
- "strconv"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -296,7 +298,7 @@ func TestAccMetalVRFConfig_withConnection(t *testing.T) {
- }
-
- func testAccMetalVRFCheckDestroyed(s *terraform.State) error {
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- for _, rs := range s.RootModule().Resources {
- if rs.Type != "equinix_metal_vrf" {
-@@ -320,7 +322,7 @@ func testAccMetalVRFExists(n string, vrf *packngo.VRF) resource.TestCheckFunc {
- return fmt.Errorf("No Record ID is set")
- }
-
-- client := testAccProvider.Meta().(*Config).metal
-+ client := testAccProvider.Meta().(*config.Config).Metal
-
- foundResource, _, err := client.VRFs.Get(rs.Primary.ID, nil)
- if err != nil {
-diff --git a/equinix/resource_network_acl_template.go b/equinix/resource_network_acl_template.go
-index 2e58887..b0776b5 100644
---- a/equinix/resource_network_acl_template.go
-+++ b/equinix/resource_network_acl_template.go
-@@ -6,6 +6,8 @@ import (
- "log"
- "net/http"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/equinix/rest-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-@@ -224,8 +226,8 @@ func networkACLTemplateDeviceDetailsSchema() map[string]*schema.Schema {
- }
-
- func resourceNetworkACLTemplateCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- template := createACLTemplate(d)
- uuid, err := client.CreateACLTemplate(template)
-@@ -238,8 +240,8 @@ func resourceNetworkACLTemplateCreate(ctx context.Context, d *schema.ResourceDat
- }
-
- func resourceNetworkACLTemplateRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- template, err := client.GetACLTemplate(d.Id())
- if err != nil {
-@@ -258,8 +260,8 @@ func resourceNetworkACLTemplateRead(ctx context.Context, d *schema.ResourceData,
- }
-
- func resourceNetworkACLTemplateUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- template := createACLTemplate(d)
- if err := client.ReplaceACLTemplate(d.Id(), template); err != nil {
-@@ -270,8 +272,8 @@ func resourceNetworkACLTemplateUpdate(ctx context.Context, d *schema.ResourceDat
- }
-
- func resourceNetworkACLTemplateDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- if devID, ok := d.GetOk(networkACLTemplateSchemaNames["DeviceUUID"]); ok {
- if err := client.NewDeviceUpdateRequest(devID.(string)).WithACLTemplate("").Execute(); err != nil {
-diff --git a/equinix/resource_network_acl_template_acc_test.go b/equinix/resource_network_acl_template_acc_test.go
-index 19e24e6..4a9262b 100644
---- a/equinix/resource_network_acl_template_acc_test.go
-+++ b/equinix/resource_network_acl_template_acc_test.go
-@@ -6,6 +6,8 @@ import (
- "log"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -27,7 +29,7 @@ func testSweepNetworkACLTemplate(region string) error {
- log.Printf("[INFO][SWEEPER_LOG] error loading configuration: %s", err)
- return err
- }
-- templates, err := config.ne.GetACLTemplates()
-+ templates, err := config.Ne.GetACLTemplates()
- if err != nil {
- log.Printf("[INFO][SWEEPER_LOG] error fetching Network ACL Templates list: %s", err)
- return err
-@@ -38,7 +40,7 @@ func testSweepNetworkACLTemplate(region string) error {
- nonSweepableCount++
- continue
- }
-- if err := config.ne.DeleteACLTemplate(ne.StringValue(template.UUID)); err != nil {
-+ if err := config.Ne.DeleteACLTemplate(ne.StringValue(template.UUID)); err != nil {
- log.Printf("[INFO][SWEEPER_LOG] error deleting NetworkACLTemplate resource %s (%s): %s", ne.StringValue(template.UUID), ne.StringValue(template.Name), err)
- } else {
- log.Printf("[INFO][SWEEPER_LOG] sent delete request for NetworkACLTemplate resource %s (%s)", ne.StringValue(template.UUID), ne.StringValue(template.Name))
-@@ -143,7 +145,7 @@ func testAccNetworkACLTemplateExists(resourceName string, template *ne.ACLTempla
- if !ok {
- return fmt.Errorf("resource not found: %s", resourceName)
- }
-- client := testAccProvider.Meta().(*Config).ne
-+ client := testAccProvider.Meta().(*config.Config).Ne
- if rs.Primary.ID == "" {
- return fmt.Errorf("resource has no ID attribute set")
- }
-diff --git a/equinix/resource_network_bgp.go b/equinix/resource_network_bgp.go
-index cbd6fba..ff1a208 100644
---- a/equinix/resource_network_bgp.go
-+++ b/equinix/resource_network_bgp.go
-@@ -6,6 +6,8 @@ import (
- "net/http"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/equinix/rest-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-@@ -121,8 +123,8 @@ func createNetworkBGPResourceSchema() map[string]*schema.Schema {
- }
-
- func resourceNetworkBGPCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- bgp := createNetworkBGPConfiguration(d)
- existingBGP, err := client.GetBGPConfigurationForConnection(ne.StringValue(bgp.ConnectionUUID))
-@@ -151,8 +153,8 @@ func resourceNetworkBGPCreate(ctx context.Context, d *schema.ResourceData, m int
- }
-
- func resourceNetworkBGPRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- bgp, err := client.GetBGPConfiguration(d.Id())
- if err != nil {
-@@ -165,8 +167,8 @@ func resourceNetworkBGPRead(ctx context.Context, d *schema.ResourceData, m inter
- }
-
- func resourceNetworkBGPUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- bgpConfig := createNetworkBGPConfiguration(d)
- if err := createNetworkBGPUpdateRequest(client.NewBGPConfigurationUpdateRequest, &bgpConfig).Execute(); err != nil {
-diff --git a/equinix/resource_network_bgp_acc_test.go b/equinix/resource_network_bgp_acc_test.go
-index ad8a04b..cd120c3 100644
---- a/equinix/resource_network_bgp_acc_test.go
-+++ b/equinix/resource_network_bgp_acc_test.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -128,7 +130,7 @@ func testAccNeBGPExists(resourceName string, bgpConfig *ne.BGPConfiguration) res
- if !ok {
- return fmt.Errorf("resource not found: %s", resourceName)
- }
-- client := testAccProvider.Meta().(*Config).ne
-+ client := testAccProvider.Meta().(*config.Config).Ne
- if rs.Primary.ID == "" {
- return fmt.Errorf("resource has no ID attribute set")
- }
-diff --git a/equinix/resource_network_device.go b/equinix/resource_network_device.go
-index bdefb4b..b625096 100644
---- a/equinix/resource_network_device.go
-+++ b/equinix/resource_network_device.go
-@@ -9,6 +9,8 @@ import (
- "path/filepath"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/equinix/rest-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-@@ -874,8 +876,8 @@ func createVendorConfigurationSchema() map[string]*schema.Schema {
- }
-
- func resourceNetworkDeviceCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- primary, secondary := createNetworkDevices(d)
- var err error
-@@ -927,8 +929,8 @@ func resourceNetworkDeviceCreate(ctx context.Context, d *schema.ResourceData, m
- }
-
- func resourceNetworkDeviceRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- var err error
- var primary, secondary *ne.Device
-@@ -953,8 +955,8 @@ func resourceNetworkDeviceRead(ctx context.Context, d *schema.ResourceData, m in
- }
-
- func resourceNetworkDeviceUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- supportedChanges := []string{
- neDeviceSchemaNames["Name"], neDeviceSchemaNames["TermLength"],
-@@ -989,8 +991,8 @@ func resourceNetworkDeviceUpdate(ctx context.Context, d *schema.ResourceData, m
- }
-
- func resourceNetworkDeviceDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- waitConfigs := []*retry.StateChangeConf{
- createNetworkDeviceStatusDeleteWaitConfiguration(client.GetDevice, d.Id(), 5*time.Second, d.Timeout(schema.TimeoutDelete)),
-diff --git a/equinix/resource_network_device_acc_test.go b/equinix/resource_network_device_acc_test.go
-index 5f4bc31..3843107 100644
---- a/equinix/resource_network_device_acc_test.go
-+++ b/equinix/resource_network_device_acc_test.go
-@@ -6,6 +6,8 @@ import (
- "log"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -46,7 +48,7 @@ func testSweepNetworkDevice(region string) error {
- log.Printf("[INFO][SWEEPER_LOG] error loading configuration: %s", err)
- return err
- }
-- devices, err := config.ne.GetDevices([]string{
-+ devices, err := config.Ne.GetDevices([]string{
- ne.DeviceStateInitializing,
- ne.DeviceStateProvisioned,
- ne.DeviceStateProvisioning,
-@@ -68,7 +70,7 @@ func testSweepNetworkDevice(region string) error {
- if ne.StringValue(device.RedundancyType) != "PRIMARY" {
- continue
- }
-- if err := config.ne.DeleteDevice(ne.StringValue(device.UUID)); err != nil {
-+ if err := config.Ne.DeleteDevice(ne.StringValue(device.UUID)); err != nil {
- log.Printf("[INFO][SWEEPER_LOG] error deleting NetworkDevice resource %s (%s): %s", ne.StringValue(device.UUID), ne.StringValue(device.Name), err)
- } else {
- log.Printf("[INFO][SWEEPER_LOG] sent delete request for NetworkDevice resource %s (%s)", ne.StringValue(device.UUID), ne.StringValue(device.Name))
-@@ -906,7 +908,7 @@ func testAccNeDeviceExists(resourceName string, device *ne.Device) resource.Test
- if rs.Primary.ID == "" {
- return fmt.Errorf("resource has no ID attribute set")
- }
-- client := testAccProvider.Meta().(*Config).ne
-+ client := testAccProvider.Meta().(*config.Config).Ne
- resp, err := client.GetDevice(rs.Primary.ID)
- if err != nil {
- return fmt.Errorf("error when fetching network device '%s': %s", rs.Primary.ID, err)
-@@ -921,7 +923,7 @@ func testAccNeDeviceSecondaryExists(primary, secondary *ne.Device) resource.Test
- if ne.StringValue(primary.RedundantUUID) == "" {
- return fmt.Errorf("secondary device UUID is not set")
- }
-- client := testAccProvider.Meta().(*Config).ne
-+ client := testAccProvider.Meta().(*config.Config).Ne
- resp, err := client.GetDevice(ne.StringValue(primary.RedundantUUID))
- if err != nil {
- return fmt.Errorf("error when fetching network device '%s': %s", ne.StringValue(primary.RedundantUUID), err)
-@@ -940,7 +942,7 @@ func testAccNeDevicePairExists(resourceName string, primary, secondary *ne.Devic
- if rs.Primary.ID == "" {
- return fmt.Errorf("resource has no ID attribute set")
- }
-- client := testAccProvider.Meta().(*Config).ne
-+ client := testAccProvider.Meta().(*config.Config).Ne
- resp, err := client.GetDevice(rs.Primary.ID)
- if err != nil {
- return fmt.Errorf("error when fetching primary network device '%s': %s", rs.Primary.ID, err)
-@@ -1130,7 +1132,7 @@ func testAccNeDeviceACL(resourceName string, device *ne.Device) resource.TestChe
- }
- templateId := rs.Primary.ID
- deviceID := ne.StringValue(device.UUID)
-- client := testAccProvider.Meta().(*Config).ne
-+ client := testAccProvider.Meta().(*config.Config).Ne
- if ne.StringValue(device.ACLTemplateUUID) != rs.Primary.ID {
- return fmt.Errorf("acl_template_id for device %s does not match %v - %v", deviceID, ne.StringValue(device.ACLTemplateUUID), templateId)
- }
-diff --git a/equinix/resource_network_device_link.go b/equinix/resource_network_device_link.go
-index ac77036..c7feabb 100644
---- a/equinix/resource_network_device_link.go
-+++ b/equinix/resource_network_device_link.go
-@@ -5,6 +5,8 @@ import (
- "fmt"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/go-cty/cty"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-@@ -220,8 +222,8 @@ func createNetworkDeviceLinkConnectionResourceSchema() map[string]*schema.Schema
- }
-
- func resourceNetworkDeviceLinkCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- link := createNetworkDeviceLink(d)
- uuid, err := client.CreateDeviceLinkGroup(link)
-@@ -242,8 +244,8 @@ func resourceNetworkDeviceLinkCreate(ctx context.Context, d *schema.ResourceData
- }
-
- func resourceNetworkDeviceLinkRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- link, err := client.GetDeviceLinkGroup(d.Id())
- if err != nil {
-@@ -266,8 +268,8 @@ func resourceNetworkDeviceLinkRead(ctx context.Context, d *schema.ResourceData,
- }
-
- func resourceNetworkDeviceLinkUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- changes := getResourceDataChangedKeys([]string{
- networkDeviceLinkSchemaNames["Name"], networkDeviceLinkSchemaNames["Subnet"],
-@@ -304,8 +306,8 @@ func resourceNetworkDeviceLinkUpdate(ctx context.Context, d *schema.ResourceData
- }
-
- func resourceNetworkDeviceLinkDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- if err := client.DeleteDeviceLinkGroup(d.Id()); err != nil {
- if isRestNotFoundError(err) {
-diff --git a/equinix/resource_network_device_link_acc_test.go b/equinix/resource_network_device_link_acc_test.go
-index 0a4901f..026f91a 100644
---- a/equinix/resource_network_device_link_acc_test.go
-+++ b/equinix/resource_network_device_link_acc_test.go
-@@ -6,6 +6,8 @@ import (
- "log"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -28,7 +30,7 @@ func testSweepNetworkDeviceLink(region string) error {
- log.Printf("[INFO][SWEEPER_LOG] error loading configuration: %s", err)
- return err
- }
-- links, err := config.ne.GetDeviceLinkGroups()
-+ links, err := config.Ne.GetDeviceLinkGroups()
- if err != nil {
- log.Printf("[INFO][SWEEPER_LOG] error fetching device links list: %s", err)
- return err
-@@ -39,7 +41,7 @@ func testSweepNetworkDeviceLink(region string) error {
- nonSweepableCount++
- continue
- }
-- if err := config.ne.DeleteDeviceLinkGroup(ne.StringValue(link.UUID)); err != nil {
-+ if err := config.Ne.DeleteDeviceLinkGroup(ne.StringValue(link.UUID)); err != nil {
- log.Printf("[INFO][SWEEPER_LOG] error deleting NetworkDeviceLink resource %s (%s): %s", ne.StringValue(link.UUID), ne.StringValue(link.Name), err)
- } else {
- log.Printf("[INFO][SWEEPER_LOG] sent delete request for NetworkDeviceLink resource %s (%s)", ne.StringValue(link.UUID), ne.StringValue(link.Name))
-@@ -157,7 +159,7 @@ func testAccNeDeviceLinkExists(resourceName string, deviceLink *ne.DeviceLinkGro
- if !ok {
- return fmt.Errorf("resource not found: %s", resourceName)
- }
-- client := testAccProvider.Meta().(*Config).ne
-+ client := testAccProvider.Meta().(*config.Config).Ne
- if rs.Primary.ID == "" {
- return fmt.Errorf("resource has no ID attribute set")
- }
-diff --git a/equinix/resource_network_file.go b/equinix/resource_network_file.go
-index 96dd4b2..f7085b4 100644
---- a/equinix/resource_network_file.go
-+++ b/equinix/resource_network_file.go
-@@ -3,13 +3,15 @@ package equinix
- import (
- "context"
- "fmt"
-+ "net/http"
-+ "strings"
-+
- "github.com/equinix/ne-go"
- "github.com/equinix/rest-go"
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
-- "net/http"
-- "strings"
- )
-
- var networkFileSchemaNames = map[string]string{
-@@ -111,8 +113,8 @@ func createNetworkFileSchema() map[string]*schema.Schema {
- }
-
- func resourceNetworkFileCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- fileRequest := createFileRequest(d)
- uuid, err := client.UploadFile(fileRequest["MetroCode"], fileRequest["DeviceTypeCode"], fileRequest["ProcessType"],
-@@ -127,8 +129,8 @@ func resourceNetworkFileCreate(ctx context.Context, d *schema.ResourceData, m in
- }
-
- func resourceNetworkFileRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- file, err := client.GetFile(d.Id())
- if err != nil {
-diff --git a/equinix/resource_network_file_acc_test.go b/equinix/resource_network_file_acc_test.go
-index e66f30c..38fff93 100644
---- a/equinix/resource_network_file_acc_test.go
-+++ b/equinix/resource_network_file_acc_test.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -65,7 +67,7 @@ func testAccNetworkFileExists(resourceName string, file *ne.File) resource.TestC
- if !ok {
- return fmt.Errorf("resource not found: %s", resourceName)
- }
-- client := testAccProvider.Meta().(*Config).ne
-+ client := testAccProvider.Meta().(*config.Config).Ne
- if rs.Primary.ID == "" {
- return fmt.Errorf("resource has no ID attribute set")
- }
-diff --git a/equinix/resource_network_ssh_key.go b/equinix/resource_network_ssh_key.go
-index 788e0ef..7e5cb60 100644
---- a/equinix/resource_network_ssh_key.go
-+++ b/equinix/resource_network_ssh_key.go
-@@ -6,6 +6,8 @@ import (
- "net/http"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/equinix/rest-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-@@ -76,8 +78,8 @@ func createNetworkSSHKeyResourceSchema() map[string]*schema.Schema {
- }
-
- func resourceNetworkSSHKeyCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- key := createNetworkSSHKey(d)
- uuid, err := client.CreateSSHPublicKey(key)
-@@ -90,8 +92,8 @@ func resourceNetworkSSHKeyCreate(ctx context.Context, d *schema.ResourceData, m
- }
-
- func resourceNetworkSSHKeyRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- key, err := client.GetSSHPublicKey(d.Id())
- if err != nil {
-@@ -110,8 +112,8 @@ func resourceNetworkSSHKeyRead(ctx context.Context, d *schema.ResourceData, m in
- }
-
- func resourceNetworkSSHKeyDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- if err := client.DeleteSSHPublicKey(d.Id()); err != nil {
- if restErr, ok := err.(rest.Error); ok {
-diff --git a/equinix/resource_network_ssh_key_acc_test.go b/equinix/resource_network_ssh_key_acc_test.go
-index 9c71b2f..8115fac 100644
---- a/equinix/resource_network_ssh_key_acc_test.go
-+++ b/equinix/resource_network_ssh_key_acc_test.go
-@@ -6,6 +6,8 @@ import (
- "log"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -27,7 +29,7 @@ func testSweepNetworkSSHKey(region string) error {
- log.Printf("[INFO][SWEEPER_LOG] error loading configuration: %s", err)
- return err
- }
-- keys, err := config.ne.GetSSHPublicKeys()
-+ keys, err := config.Ne.GetSSHPublicKeys()
- if err != nil {
- log.Printf("[INFO][SWEEPER_LOG] error fetching NetworkSSHKey list: %s", err)
- return err
-@@ -38,7 +40,7 @@ func testSweepNetworkSSHKey(region string) error {
- nonSweepableCount++
- continue
- }
-- if err := config.ne.DeleteSSHPublicKey(ne.StringValue(key.UUID)); err != nil {
-+ if err := config.Ne.DeleteSSHPublicKey(ne.StringValue(key.UUID)); err != nil {
- log.Printf("[INFO][SWEEPER_LOG] error deleting NetworkSSHKey resource %s (%s): %s", ne.StringValue(key.UUID), ne.StringValue(key.Name), err)
- } else {
- log.Printf("[INFO][SWEEPER_LOG] sent delete request for NetworkSSHKey resource %s (%s)", ne.StringValue(key.UUID), ne.StringValue(key.Name))
-@@ -96,7 +98,7 @@ func testAccNetworkSSHKeyExists(resourceName string, key *ne.SSHPublicKey) resou
- if !ok {
- return fmt.Errorf("resource not found: %s", resourceName)
- }
-- client := testAccProvider.Meta().(*Config).ne
-+ client := testAccProvider.Meta().(*config.Config).Ne
- if rs.Primary.ID == "" {
- return fmt.Errorf("resource has no ID attribute set")
- }
-diff --git a/equinix/resource_network_ssh_user.go b/equinix/resource_network_ssh_user.go
-index 8bf775e..0c718cd 100644
---- a/equinix/resource_network_ssh_user.go
-+++ b/equinix/resource_network_ssh_user.go
-@@ -4,6 +4,8 @@ import (
- "context"
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/go-cty/cty"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-@@ -74,8 +76,8 @@ func createNetworkSSHUserResourceSchema() map[string]*schema.Schema {
- }
-
- func resourceNetworkSSHUserCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
-
- var diags diag.Diagnostics
- user := createNetworkSSHUser(d)
-@@ -102,8 +104,8 @@ func resourceNetworkSSHUserCreate(ctx context.Context, d *schema.ResourceData, m
- }
-
- func resourceNetworkSSHUserRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- user, err := client.GetSSHUser(d.Id())
- if err != nil {
-@@ -116,8 +118,8 @@ func resourceNetworkSSHUserRead(ctx context.Context, d *schema.ResourceData, m i
- }
-
- func resourceNetworkSSHUserUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- updateReq := client.NewSSHUserUpdateRequest(d.Id())
- if v, ok := d.GetOk(networkSSHUserSchemaNames["Password"]); ok && d.HasChange(networkSSHUserSchemaNames["Password"]) {
-@@ -137,8 +139,8 @@ func resourceNetworkSSHUserUpdate(ctx context.Context, d *schema.ResourceData, m
- }
-
- func resourceNetworkSSHUserDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
-- client := m.(*Config).ne
-- m.(*Config).addModuleToNEUserAgent(&client, d)
-+ client := m.(*config.Config).Ne
-+ m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- if err := client.DeleteSSHUser(d.Id()); err != nil {
- return diag.FromErr(err)
-diff --git a/equinix/resource_network_ssh_user_acc_test.go b/equinix/resource_network_ssh_user_acc_test.go
-index f118b49..5a0eb91 100644
---- a/equinix/resource_network_ssh_user_acc_test.go
-+++ b/equinix/resource_network_ssh_user_acc_test.go
-@@ -5,6 +5,8 @@ import (
- "fmt"
- "log"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/config"
-+
- "github.com/equinix/ne-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -29,7 +31,7 @@ func testSweepNetworkSSHUser(region string) error {
- log.Printf("[INFO][SWEEPER_LOG] error loading configuration: %s", err)
- return err
- }
-- users, err := config.ne.GetSSHUsers()
-+ users, err := config.Ne.GetSSHUsers()
- if err != nil {
- log.Printf("[INFO][SWEEPER_LOG] error fetching NetworkSSHUser list: %s", err)
- return err
-@@ -38,7 +40,7 @@ func testSweepNetworkSSHUser(region string) error {
- if !isSweepableTestResource(ne.StringValue(user.Username)) {
- continue
- }
-- if err := config.ne.DeleteSSHUser(ne.StringValue(user.UUID)); err != nil {
-+ if err := config.Ne.DeleteSSHUser(ne.StringValue(user.UUID)); err != nil {
- log.Printf("[INFO][SWEEPER_LOG] error deleting NetworkSSHUser resource %s (%s): %s", ne.StringValue(user.UUID), ne.StringValue(user.Username), err)
- } else {
- log.Printf("[INFO][SWEEPER_LOG] sent delete request for NetworkSSHUser resource %s (%s)", ne.StringValue(user.UUID), ne.StringValue(user.Username))
-@@ -78,7 +80,7 @@ func testAccNeSSHUserExists(resourceName string, user *ne.SSHUser) resource.Test
- if rs.Primary.ID == "" {
- return fmt.Errorf("resource has no ID attribute set")
- }
-- client := testAccProvider.Meta().(*Config).ne
-+ client := testAccProvider.Meta().(*config.Config).Ne
- resp, err := client.GetSSHUser(rs.Primary.ID)
- if err != nil {
- return fmt.Errorf("error when fetching SSH user '%s': %s", rs.Primary.ID, err)
-diff --git a/equinix/config.go b/internal/config/config.go
-similarity index 89%
-rename from equinix/config.go
-rename to internal/config/config.go
-index b2c5ee8..d0fdd20 100644
---- a/equinix/config.go
-+++ b/internal/config/config.go
-@@ -1,4 +1,4 @@
--package equinix
-+package config
-
- import (
- "context"
-@@ -28,6 +28,15 @@ import (
- xoauth2 "golang.org/x/oauth2"
- )
-
-+var (
-+ UuidRE = regexp.MustCompile("^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[8|9|aA|bB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$")
-+ IpAddressTypes = []string{"public_ipv4", "private_ipv4", "public_ipv6"}
-+)
-+
-+type ProviderMeta struct {
-+ ModuleName string `cty:"module_name"`
-+}
-+
- type DumpTransport struct {
- r http.RoundTripper
- }
-@@ -81,18 +90,18 @@ type Config struct {
- PageSize int
- Token string
-
-- ecx ecx.Client
-- ne ne.Client
-- metal *packngo.Client
-- metalgo *metalv1.APIClient
-+ Ecx ecx.Client
-+ Ne ne.Client
-+ Metal *packngo.Client
-+ Metalgo *metalv1.APIClient
-
- ecxUserAgent string
- neUserAgent string
- metalUserAgent string
- metalGoUserAgent string
-
-- terraformVersion string
-- fabricClient *v4.APIClient
-+ TerraformVersion string
-+ FabricClient *v4.APIClient
- FabricAuthToken string
- }
-
-@@ -158,15 +167,17 @@ func (c *Config) Load(ctx context.Context) error {
- "User-agent": c.neUserAgent,
- })
-
-- c.ecx = ecxClient
-- c.ne = neClient
-- c.metal = c.NewMetalClient()
-- c.metalgo = c.NewMetalGoClient()
-- c.fabricClient = c.NewFabricClient()
-+ c.Ecx = ecxClient
-+ c.Ne = neClient
-+ c.Metal = c.NewMetalClient()
-+ c.Metalgo = c.NewMetalGoClient()
-+ c.FabricClient = c.NewFabricClient()
- return nil
- }
-
- // NewFabricClient returns a new client for accessing Equinix Fabric's v4 API.
-+// uncomment the funct when migrating Fabric resources to use
-+// functions from internal/
- func (c *Config) NewFabricClient() *v4.APIClient {
- transport := logging.NewTransport("Equinix Fabric", http.DefaultTransport)
- authClient := &http.Client{
-@@ -281,14 +292,14 @@ func terraformUserAgent(version string) string {
- return ua
- }
-
--func (c *Config) addModuleToECXUserAgent(client *ecx.Client, d *schema.ResourceData) {
-+func (c *Config) AddModuleToECXUserAgent(client *ecx.Client, d *schema.ResourceData) {
- cli := *client
- rc := cli.(*ecx.RestClient)
- rc.SetHeader("User-agent", generateModuleUserAgentString(d, c.ecxUserAgent))
- *client = rc
- }
-
--func (c *Config) addModuleToNEUserAgent(client *ne.Client, d *schema.ResourceData) {
-+func (c *Config) AddModuleToNEUserAgent(client *ne.Client, d *schema.ResourceData) {
- cli := *client
- rc := cli.(*ne.RestClient)
- rc.SetHeader("User-agent", generateModuleUserAgentString(d, c.neUserAgent))
-@@ -300,16 +311,16 @@ func (c *Config) addModuleToNEUserAgent(client *ne.Client, d *schema.ResourceDat
- // the UserAgent resulting in swapped UserAgent.
- // This can be fixed by letting the headers be overwritten on the initialized Packngo ServiceOp
- // clients on a query-by-query basis.
--func (c *Config) addModuleToMetalUserAgent(d *schema.ResourceData) {
-- c.metal.UserAgent = generateModuleUserAgentString(d, c.metalUserAgent)
-+func (c *Config) AddModuleToMetalUserAgent(d *schema.ResourceData) {
-+ c.Metal.UserAgent = generateModuleUserAgentString(d, c.metalUserAgent)
- }
-
--func (c *Config) addModuleToMetalGoUserAgent(d *schema.ResourceData) {
-- c.metalgo.GetConfig().UserAgent = generateModuleUserAgentString(d, c.metalGoUserAgent)
-+func (c *Config) AddModuleToMetalGoUserAgent(d *schema.ResourceData) {
-+ c.Metalgo.GetConfig().UserAgent = generateModuleUserAgentString(d, c.metalGoUserAgent)
- }
-
- func generateModuleUserAgentString(d *schema.ResourceData, baseUserAgent string) string {
-- var m providerMeta
-+ var m ProviderMeta
- err := d.GetProviderMeta(&m)
- if err != nil {
- log.Printf("[WARN] error retrieving provider_meta")
-@@ -323,7 +334,7 @@ func generateModuleUserAgentString(d *schema.ResourceData, baseUserAgent string)
- }
-
- func (c *Config) fullUserAgent(suffix string) string {
-- tfUserAgent := terraformUserAgent(c.terraformVersion)
-+ tfUserAgent := terraformUserAgent(c.TerraformVersion)
- userAgent := fmt.Sprintf("%s terraform-provider-equinix/%s %s", tfUserAgent, version.ProviderVersion, suffix)
- return strings.TrimSpace(userAgent)
- }
-diff --git a/internal/config/correlation_id.go b/internal/config/correlation_id.go
-new file mode 100644
-index 0000000..4e5fcb3
---- /dev/null
-+++ b/internal/config/correlation_id.go
-@@ -0,0 +1,24 @@
-+package config
-+
-+import (
-+ "math/rand"
-+ "time"
-+)
-+
-+const allowed_charset = "abcdefghijklmnopqrstuvwxyz" +
-+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#$&@"
-+
-+var seededRand = rand.New(
-+ rand.NewSource(time.Now().UnixNano()))
-+
-+func CorrelationIdWithCharset(length int, charset string) string {
-+ b := make([]byte, length)
-+ for i := range b {
-+ b[i] = charset[seededRand.Intn(len(charset))]
-+ }
-+ return string(b)
-+}
-+
-+func CorrelationId(length int) string {
-+ return CorrelationIdWithCharset(length, allowed_charset)
-+}
-diff --git a/equinix/internal/datalist/filter.go b/internal/datalist/filter.go
-similarity index 100%
-rename from equinix/internal/datalist/filter.go
-rename to internal/datalist/filter.go
-diff --git a/equinix/internal/datalist/filter_test.go b/internal/datalist/filter_test.go
-similarity index 100%
-rename from equinix/internal/datalist/filter_test.go
-rename to internal/datalist/filter_test.go
-diff --git a/equinix/internal/datalist/schema.go b/internal/datalist/schema.go
-similarity index 100%
-rename from equinix/internal/datalist/schema.go
-rename to internal/datalist/schema.go
-diff --git a/equinix/internal/datalist/sort.go b/internal/datalist/sort.go
-similarity index 100%
-rename from equinix/internal/datalist/sort.go
-rename to internal/datalist/sort.go
-diff --git a/equinix/internal/datalist/sort_test.go b/internal/datalist/sort_test.go
-similarity index 100%
-rename from equinix/internal/datalist/sort_test.go
-rename to internal/datalist/sort_test.go
-diff --git a/equinix/internal/datalist/values.go b/internal/datalist/values.go
-similarity index 100%
-rename from equinix/internal/datalist/values.go
-rename to internal/datalist/values.go
diff --git a/patches/0020-Add-deprecation-messages-to-ecx_-terraform-resources.patch b/patches/0020-Add-deprecation-messages-to-ecx_-terraform-resources.patch
deleted file mode 100644
index 91959f95..00000000
--- a/patches/0020-Add-deprecation-messages-to-ecx_-terraform-resources.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tim Hogarty
-Date: Fri, 3 Nov 2023 11:58:26 -0700
-Subject: [PATCH 20/51] Add deprecation messages to ecx_ terraform resources
- using Fabric v3 API SDK
-
-
-diff --git a/equinix/data_source_ecx_l2_sellerprofile.go b/equinix/data_source_ecx_l2_sellerprofile.go
-index c0bf3de..6454b94 100644
---- a/equinix/data_source_ecx_l2_sellerprofile.go
-+++ b/equinix/data_source_ecx_l2_sellerprofile.go
-@@ -77,9 +77,10 @@ var ecxL2SellerProfileAdditionalInfosDescriptions = map[string]string{
-
- func dataSourceECXL2SellerProfile() *schema.Resource {
- return &schema.Resource{
-- ReadContext: dataSourceECXL2SellerProfileRead,
-- Description: "Use this data source to get details of Equinix Fabric layer 2 seller profile with a given name and / or organization",
-- Schema: createECXL2SellerProfileSchema(),
-+ DeprecationMessage: "This resource is deprecated. End of Life will be June 30th, 2024. Use equinix_fabric_service_profile instead.",
-+ ReadContext: dataSourceECXL2SellerProfileRead,
-+ Description: "Use this data source to get details of Equinix Fabric layer 2 seller profile with a given name and / or organization",
-+ Schema: createECXL2SellerProfileSchema(),
- }
- }
-
-diff --git a/equinix/data_source_ecx_l2_sellerprofiles.go b/equinix/data_source_ecx_l2_sellerprofiles.go
-index cede18c..2104f9b 100644
---- a/equinix/data_source_ecx_l2_sellerprofiles.go
-+++ b/equinix/data_source_ecx_l2_sellerprofiles.go
-@@ -35,8 +35,9 @@ var ecxL2SellerProfilesDescriptions = map[string]string{
-
- func dataSourceECXL2SellerProfiles() *schema.Resource {
- return &schema.Resource{
-- ReadContext: dataSourceECXL2SellerProfilesRead,
-- Description: "Use this data source to get list of Equinix Fabric layer 2 seller profiles",
-+ DeprecationMessage: "This resource is deprecated. End of Life will be June 30th, 2024. Use equinix_fabric_service_profiles instead.",
-+ ReadContext: dataSourceECXL2SellerProfilesRead,
-+ Description: "Use this data source to get list of Equinix Fabric layer 2 seller profiles",
- Schema: map[string]*schema.Schema{
- ecxL2SellerProfilesSchemaNames["NameRegex"]: {
- Type: schema.TypeString,
-diff --git a/equinix/data_source_ecx_port.go b/equinix/data_source_ecx_port.go
-index 83ffc17..ea8a200 100644
---- a/equinix/data_source_ecx_port.go
-+++ b/equinix/data_source_ecx_port.go
-@@ -40,8 +40,9 @@ var ecxPortDescriptions = map[string]string{
-
- func dataSourceECXPort() *schema.Resource {
- return &schema.Resource{
-- ReadContext: dataSourceECXPortRead,
-- Description: "Use this data source to get details of Equinix Fabric port with a given name",
-+ DeprecationMessage: "This resource is deprecated. End of Life will be June 30th, 2024. Use equinix_fabric_port and equinix_fabric_ports instead.",
-+ ReadContext: dataSourceECXPortRead,
-+ Description: "Use this data source to get details of Equinix Fabric port with a given name",
- Schema: map[string]*schema.Schema{
- ecxPortSchemaNames["UUID"]: {
- Type: schema.TypeString,
-diff --git a/equinix/resource_ecx_l2_connection.go b/equinix/resource_ecx_l2_connection.go
-index 3f04776..64cd044 100644
---- a/equinix/resource_ecx_l2_connection.go
-+++ b/equinix/resource_ecx_l2_connection.go
-@@ -129,10 +129,11 @@ type (
-
- func resourceECXL2Connection() *schema.Resource {
- return &schema.Resource{
-- CreateContext: resourceECXL2ConnectionCreate,
-- ReadContext: resourceECXL2ConnectionRead,
-- UpdateContext: resourceECXL2ConnectionUpdate,
-- DeleteContext: resourceECXL2ConnectionDelete,
-+ DeprecationMessage: "This resource is deprecated. End of Life will be June 30th, 2024. Use equinix_fabric_connection instead.",
-+ CreateContext: resourceECXL2ConnectionCreate,
-+ ReadContext: resourceECXL2ConnectionRead,
-+ UpdateContext: resourceECXL2ConnectionUpdate,
-+ DeleteContext: resourceECXL2ConnectionDelete,
- Importer: &schema.ResourceImporter{
- StateContext: func(ctx context.Context, d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
- // The expected ID to import redundant connections is '(primaryID):(secondaryID)', e.g.,
-diff --git a/equinix/resource_ecx_l2_serviceprofile.go b/equinix/resource_ecx_l2_serviceprofile.go
-index af0bfba..4aa17b8 100644
---- a/equinix/resource_ecx_l2_serviceprofile.go
-+++ b/equinix/resource_ecx_l2_serviceprofile.go
-@@ -105,10 +105,11 @@ var ecxL2ServiceProfileSpeedBandDescriptions = map[string]string{
-
- func resourceECXL2ServiceProfile() *schema.Resource {
- return &schema.Resource{
-- CreateContext: resourceECXL2ServiceProfileCreate,
-- ReadContext: resourceECXL2ServiceProfileRead,
-- UpdateContext: resourceECXL2ServiceProfileUpdate,
-- DeleteContext: resourceECXL2ServiceProfileDelete,
-+ DeprecationMessage: "This resource is deprecated. End of Life will be June 30th, 2024. Use equinix_fabric_service_profile instead.",
-+ CreateContext: resourceECXL2ServiceProfileCreate,
-+ ReadContext: resourceECXL2ServiceProfileRead,
-+ UpdateContext: resourceECXL2ServiceProfileUpdate,
-+ DeleteContext: resourceECXL2ServiceProfileDelete,
- Importer: &schema.ResourceImporter{
- State: schema.ImportStatePassthrough,
- },
diff --git a/patches/0021-Add-docs-for-deprecated-resources.patch b/patches/0021-Add-docs-for-deprecated-resources.patch
deleted file mode 100644
index 216f643b..00000000
--- a/patches/0021-Add-docs-for-deprecated-resources.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tim Hogarty
-Date: Fri, 3 Nov 2023 12:55:28 -0700
-Subject: [PATCH 21/51] Add docs for deprecated resources
-
-
-diff --git a/docs/data-sources/equinix_ecx_l2_sellerprofile.md b/docs/data-sources/equinix_ecx_l2_sellerprofile.md
-index d5f2368..2ebbb5e 100644
---- a/docs/data-sources/equinix_ecx_l2_sellerprofile.md
-+++ b/docs/data-sources/equinix_ecx_l2_sellerprofile.md
-@@ -2,6 +2,10 @@
- subcategory: "Fabric"
- ---
-
-+# DEPRECATED RESOURCE
-+
-+End of Life will be June 30th, 2024. Use equinix_fabric_service_profile instead.
-+
- # equinix_ecx_l2_sellerprofile (Data Source)
-
- Use this data source to get details of Equinix Fabric layer 2 seller profile with a given name
-diff --git a/docs/data-sources/equinix_ecx_l2_sellerprofiles.md b/docs/data-sources/equinix_ecx_l2_sellerprofiles.md
-index b6d2c9b..57a183c 100644
---- a/docs/data-sources/equinix_ecx_l2_sellerprofiles.md
-+++ b/docs/data-sources/equinix_ecx_l2_sellerprofiles.md
-@@ -2,6 +2,10 @@
- subcategory: "Fabric"
- ---
-
-+# DEPRECATED RESOURCE
-+
-+End of Life will be June 30th, 2024. Use equinix_fabric_service_profiles instead.
-+
- # equinix_ecx_l2_sellerprofiles (Data Source)
-
- Use this data source to get details of available Equinix Fabric layer 2 seller profiles. It is
-diff --git a/docs/data-sources/equinix_ecx_port.md b/docs/data-sources/equinix_ecx_port.md
-index df92bb3..c17bfe8 100644
---- a/docs/data-sources/equinix_ecx_port.md
-+++ b/docs/data-sources/equinix_ecx_port.md
-@@ -2,6 +2,10 @@
- subcategory: "Fabric"
- ---
-
-+# DEPRECATED RESOURCE
-+
-+End of Life will be June 30th, 2024. Use equinix_fabric_port and equinix_fabric_ports instead.
-+
- # equinix_ecx_port (Data Source)
-
- Use this data source to get details of Equinix Fabric port with a given name.
-diff --git a/docs/resources/equinix_ecx_l2_connection.md b/docs/resources/equinix_ecx_l2_connection.md
-index 626d0c0..20a809b 100644
---- a/docs/resources/equinix_ecx_l2_connection.md
-+++ b/docs/resources/equinix_ecx_l2_connection.md
-@@ -2,6 +2,10 @@
- subcategory: "Fabric"
- ---
-
-+# DEPRECATED RESOURCE
-+
-+End of Life will be June 30th, 2024. Use equinix_fabric_connection instead.
-+
- # equinix_ecx_l2_connection (Resource)
-
- Resource `equinix_ecx_l2_connection` allows creation and management of Equinix Fabric
-diff --git a/docs/resources/equinix_ecx_l2_serviceprofile.md b/docs/resources/equinix_ecx_l2_serviceprofile.md
-index d82cadc..19589e9 100644
---- a/docs/resources/equinix_ecx_l2_serviceprofile.md
-+++ b/docs/resources/equinix_ecx_l2_serviceprofile.md
-@@ -2,6 +2,10 @@
- subcategory: "Fabric"
- ---
-
-+# DEPRECATED RESOURCE
-+
-+End of Life will be June 30th, 2024. Use equinix_fabric_service_profile instead.
-+
- # equinix_ecx_l2_serviceprofile (Resource)
-
- Resource `equinix_ecx_l2_serviceprofile` is used to manage layer 2 service profiles
diff --git a/patches/0022-fix-deps-update-module-github.com-equinix-labs-metal.patch b/patches/0022-fix-deps-update-module-github.com-equinix-labs-metal.patch
deleted file mode 100644
index ef04894f..00000000
--- a/patches/0022-fix-deps-update-module-github.com-equinix-labs-metal.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Wed, 15 Nov 2023 01:16:12 +0000
-Subject: [PATCH 22/51] fix(deps): update module
- github.com/equinix-labs/metal-go to v0.27.0
-
-
-diff --git a/go.mod b/go.mod
-index fd5cd26..ce7551d 100644
---- a/go.mod
-+++ b/go.mod
-@@ -5,7 +5,7 @@ go 1.20
- require (
- github.com/antihax/optional v1.0.0
- github.com/equinix-labs/fabric-go v0.7.0
-- github.com/equinix-labs/metal-go v0.26.0
-+ github.com/equinix-labs/metal-go v0.27.0
- github.com/equinix/ecx-go/v2 v2.3.1
- github.com/equinix/ne-go v1.11.0
- github.com/equinix/oauth2-go v1.0.0
-diff --git a/go.sum b/go.sum
-index aad654b..6e6f30a 100644
---- a/go.sum
-+++ b/go.sum
-@@ -264,6 +264,8 @@ github.com/equinix-labs/metal-go v0.25.1 h1:uL83lRKyAcOfab+9r2xujAuLD8lTsqv89+SP
- github.com/equinix-labs/metal-go v0.25.1/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
- github.com/equinix-labs/metal-go v0.26.0 h1:0rBTyjF8j58dg++kMFLRi9Jhs5gng5BFn5Y0bl5NPtM=
- github.com/equinix-labs/metal-go v0.26.0/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
-+github.com/equinix-labs/metal-go v0.27.0 h1:p5Bqus/gSs5oQezHWXWpc0IzkQl06+yZgbXT5jB7AWs=
-+github.com/equinix-labs/metal-go v0.27.0/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
- github.com/equinix/ecx-go/v2 v2.3.1 h1:gFcAIeyaEUw7S8ebqApmT7E/S7pC7Ac3wgScp89fkPU=
- github.com/equinix/ecx-go/v2 v2.3.1/go.mod h1:FvCdZ3jXU8Z4CPKig2DT+4J2HdwgRK17pIcznM7RXyk=
- github.com/equinix/ne-go v1.11.0 h1:ja6G2fmcGrLsOeV25Mq6pDfH+/cUlvxJbnE8uRXTGGk=
diff --git a/patches/0023-fix-deps-update-module-github.com-hashicorp-terrafor.patch b/patches/0023-fix-deps-update-module-github.com-hashicorp-terrafor.patch
deleted file mode 100644
index 76a96ce1..00000000
--- a/patches/0023-fix-deps-update-module-github.com-hashicorp-terrafor.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Tue, 14 Nov 2023 21:26:13 +0000
-Subject: [PATCH 23/51] fix(deps): update module
- github.com/hashicorp/terraform-plugin-sdk/v2 to v2.30.0
-
-
-diff --git a/go.mod b/go.mod
-index ce7551d..8f946e6 100644
---- a/go.mod
-+++ b/go.mod
-@@ -16,7 +16,7 @@ require (
- github.com/hashicorp/go-multierror v1.1.1
- github.com/hashicorp/go-retryablehttp v0.7.5
- github.com/hashicorp/terraform-plugin-docs v0.14.1
-- github.com/hashicorp/terraform-plugin-sdk/v2 v2.29.0
-+ github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0
- github.com/packethost/packngo v0.30.0
- github.com/pkg/errors v0.9.1
- github.com/stretchr/testify v1.8.4
-@@ -33,7 +33,7 @@ require (
- github.com/Masterminds/goutils v1.1.1 // indirect
- github.com/Masterminds/semver/v3 v3.1.1 // indirect
- github.com/Masterminds/sprig/v3 v3.2.2 // indirect
-- github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 // indirect
-+ github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect
- github.com/agext/levenshtein v1.2.3 // indirect
- github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
- github.com/armon/go-radix v1.0.0 // indirect
-@@ -46,7 +46,7 @@ require (
- github.com/go-resty/resty/v2 v2.3.0 // indirect
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/golang/protobuf v1.5.3 // indirect
-- github.com/google/go-cmp v0.5.9 // indirect
-+ github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/s2a-go v0.1.4 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
- github.com/googleapis/gax-go/v2 v2.11.0 // indirect
-@@ -59,8 +59,8 @@ require (
- 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.0 // indirect
-- github.com/hashicorp/hcl/v2 v2.18.0 // indirect
-+ github.com/hashicorp/hc-install v0.6.1 // indirect
-+ github.com/hashicorp/hcl/v2 v2.19.1 // indirect
- github.com/hashicorp/logutils v1.0.0 // indirect
- github.com/hashicorp/terraform-exec v0.19.0 // indirect
- github.com/hashicorp/terraform-json v0.17.1 // indirect
-@@ -95,21 +95,21 @@ require (
- github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
- github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect
- github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
-- github.com/zclconf/go-cty v1.14.0 // indirect
-+ github.com/zclconf/go-cty v1.14.1 // indirect
- go.opencensus.io v0.24.0 // indirect
-- golang.org/x/crypto v0.14.0 // indirect
-- golang.org/x/mod v0.12.0 // indirect
-+ golang.org/x/crypto v0.15.0 // indirect
-+ golang.org/x/mod v0.13.0 // indirect
- golang.org/x/net v0.17.0 // indirect
- golang.org/x/sync v0.2.0 // indirect
-- golang.org/x/sys v0.13.0 // indirect
-- golang.org/x/text v0.13.0 // indirect
-+ golang.org/x/sys v0.14.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.126.0 // indirect
- google.golang.org/appengine v1.6.7 // indirect
- google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect
-- google.golang.org/grpc v1.57.0 // indirect
-+ google.golang.org/grpc v1.57.1 // indirect
- google.golang.org/protobuf v1.31.0 // indirect
- gopkg.in/yaml.v3 v3.0.1 // indirect
- )
-diff --git a/go.sum b/go.sum
-index 6e6f30a..6864a0e 100644
---- a/go.sum
-+++ b/go.sum
-@@ -199,6 +199,8 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc
- github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
- github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 h1:KLq8BE0KwCL+mmXnjLWEAOYO+2l2AE4YMmqG1ZpZHBs=
- github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
-+github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg=
-+github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
- github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
- github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
- github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
-@@ -344,6 +346,8 @@ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8
- github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
- github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
- github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-+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/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=
-@@ -426,9 +430,13 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ
- github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
- github.com/hashicorp/hc-install v0.6.0 h1:fDHnU7JNFNSQebVKYhHZ0va1bC6SrPQ8fpebsvNr2w4=
- github.com/hashicorp/hc-install v0.6.0/go.mod h1:10I912u3nntx9Umo1VAeYPUUuehk0aRQJYpMwbX5wQA=
-+github.com/hashicorp/hc-install v0.6.1 h1:IGxShH7AVhPaSuSJpKtVi/EFORNjO+OYVJJrAtGG2mY=
-+github.com/hashicorp/hc-install v0.6.1/go.mod h1:0fW3jpg+wraYSnFDJ6Rlie3RvLf1bIqVIkzoon4KoVE=
- github.com/hashicorp/hcl/v2 v2.9.1/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg=
- github.com/hashicorp/hcl/v2 v2.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHLl8=
- github.com/hashicorp/hcl/v2 v2.18.0/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE=
-+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/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.19.0 h1:FpqZ6n50Tk95mItTSS9BjeOVUb4eg81SpgVtZNNtFSM=
-@@ -443,6 +451,8 @@ github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9T
- github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow=
- github.com/hashicorp/terraform-plugin-sdk/v2 v2.29.0 h1:wcOKYwPI9IorAJEBLzgclh3xVolO7ZorYd6U1vnok14=
- github.com/hashicorp/terraform-plugin-sdk/v2 v2.29.0/go.mod h1:qH/34G25Ugdj5FcM95cSoXzUgIbgfhVLXCcEcYaMwq8=
-+github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0 h1:X7vB6vn5tON2b49ILa4W7mFAsndeqJ7bZFOGbVO+0Cc=
-+github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0/go.mod h1:ydFcxbdj6klCqYEPkPvdvFKiNGKZLUs+896ODUXCyao=
- github.com/hashicorp/terraform-registry-address v0.2.2 h1:lPQBg403El8PPicg/qONZJDC6YlgCVbWDtNmmZKtBno=
- github.com/hashicorp/terraform-registry-address v0.2.2/go.mod h1:LtwNbCihUoUZ3RYriyS2wF/lGPB6gF9ICLRtuDk7hSo=
- github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ=
-@@ -586,6 +596,8 @@ github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUA
- github.com/zclconf/go-cty v1.8.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk=
- github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc=
- github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
-+github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA=
-+github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
- github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8=
- go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
- go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
-@@ -612,6 +624,8 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz
- golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
- golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
- golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
-+golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=
-+golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
- 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=
-@@ -653,6 +667,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91
- golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
- golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
- golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-+golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=
-+golang.org/x/mod v0.13.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=
-@@ -825,6 +841,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
- golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-+golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
-+golang.org/x/sys v0.14.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.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-@@ -847,6 +865,8 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
- golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
- golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
- golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
-+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-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=
-@@ -1115,6 +1135,8 @@ google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCD
- google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
- google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw=
- google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
-+google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg=
-+google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
- google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
- 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=
diff --git a/patches/0024-fix-deps-update-module-golang.org-x-oauth2-to-v0.14..patch b/patches/0024-fix-deps-update-module-golang.org-x-oauth2-to-v0.14..patch
deleted file mode 100644
index 63508ccc..00000000
--- a/patches/0024-fix-deps-update-module-golang.org-x-oauth2-to-v0.14..patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Thu, 16 Nov 2023 09:47:21 +0000
-Subject: [PATCH 24/51] fix(deps): update module golang.org/x/oauth2 to v0.14.0
-
-
-diff --git a/go.mod b/go.mod
-index 8f946e6..db8f2fe 100644
---- a/go.mod
-+++ b/go.mod
-@@ -21,7 +21,7 @@ require (
- github.com/pkg/errors v0.9.1
- github.com/stretchr/testify v1.8.4
- golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1
-- golang.org/x/oauth2 v0.13.0
-+ golang.org/x/oauth2 v0.14.0
- )
-
- require (
-@@ -99,7 +99,7 @@ require (
- go.opencensus.io v0.24.0 // indirect
- golang.org/x/crypto v0.15.0 // indirect
- golang.org/x/mod v0.13.0 // indirect
-- golang.org/x/net v0.17.0 // indirect
-+ golang.org/x/net v0.18.0 // indirect
- golang.org/x/sync v0.2.0 // indirect
- golang.org/x/sys v0.14.0 // indirect
- golang.org/x/text v0.14.0 // indirect
-diff --git a/go.sum b/go.sum
-index 6864a0e..525ce94 100644
---- a/go.sum
-+++ b/go.sum
-@@ -724,6 +724,8 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
- golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
- golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
- golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
-+golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
-+golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
- golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
- golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
- golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-@@ -751,6 +753,8 @@ golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri
- golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A=
- golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY=
- golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0=
-+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/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=
diff --git a/patches/0025-fix-deps-update-module-github.com-hashicorp-terrafor.patch b/patches/0025-fix-deps-update-module-github.com-hashicorp-terrafor.patch
deleted file mode 100644
index 203add9b..00000000
--- a/patches/0025-fix-deps-update-module-github.com-hashicorp-terrafor.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Thu, 16 Nov 2023 11:01:58 +0000
-Subject: [PATCH 25/51] fix(deps): update module
- github.com/hashicorp/terraform-plugin-docs to v0.16.0
-
-
-diff --git a/go.mod b/go.mod
-index db8f2fe..fedb6b7 100644
---- a/go.mod
-+++ b/go.mod
-@@ -15,12 +15,12 @@ require (
- github.com/hashicorp/go-cty v1.4.1-0.20200723130312-85980079f637
- github.com/hashicorp/go-multierror v1.1.1
- github.com/hashicorp/go-retryablehttp v0.7.5
-- github.com/hashicorp/terraform-plugin-docs v0.14.1
-+ github.com/hashicorp/terraform-plugin-docs v0.16.0
- github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0
- github.com/packethost/packngo v0.30.0
- github.com/pkg/errors v0.9.1
- github.com/stretchr/testify v1.8.4
-- golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1
-+ golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df
- golang.org/x/oauth2 v0.14.0
- )
-
-diff --git a/go.sum b/go.sum
-index 525ce94..6be22e9 100644
---- a/go.sum
-+++ b/go.sum
-@@ -445,6 +445,7 @@ github.com/hashicorp/terraform-json v0.17.1 h1:eMfvh/uWggKmY7Pmb3T85u86E2EQg6EQH
- github.com/hashicorp/terraform-json v0.17.1/go.mod h1:Huy6zt6euxaY9knPAFKjUITn8QxUFIe9VuSzb4zn/0o=
- github.com/hashicorp/terraform-plugin-docs v0.14.1 h1:MikFi59KxrP/ewrZoaowrB9he5Vu4FtvhamZFustiA4=
- github.com/hashicorp/terraform-plugin-docs v0.14.1/go.mod h1:k2NW8+t113jAus6bb5tQYQgEAX/KueE/u8X2Z45V1GM=
-+github.com/hashicorp/terraform-plugin-docs v0.16.0/go.mod h1:M3ZrlKBJAbPMtNOPwHicGi1c+hZUh7/g0ifT/z7TVfA=
- github.com/hashicorp/terraform-plugin-go v0.19.0 h1:BuZx/6Cp+lkmiG0cOBk6Zps0Cb2tmqQpDM3iAtnhDQU=
- github.com/hashicorp/terraform-plugin-go v0.19.0/go.mod h1:EhRSkEPNoylLQntYsk5KrDHTZJh9HQoumZXbOGOXmec=
- github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0=
-@@ -638,6 +639,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH
- golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
- golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc=
- golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
-+golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME=
-+golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
- golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
- golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
- golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
diff --git a/patches/0026-fix-deps-update-module-github.com-equinix-labs-fabri.patch b/patches/0026-fix-deps-update-module-github.com-equinix-labs-fabri.patch
deleted file mode 100644
index c8e6a2ec..00000000
--- a/patches/0026-fix-deps-update-module-github.com-equinix-labs-fabri.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Thu, 16 Nov 2023 09:23:41 +0000
-Subject: [PATCH 26/51] fix(deps): update module
- github.com/equinix-labs/fabric-go to v0.7.1
-
-
-diff --git a/go.mod b/go.mod
-index fedb6b7..560754e 100644
---- a/go.mod
-+++ b/go.mod
-@@ -4,7 +4,7 @@ go 1.20
-
- require (
- github.com/antihax/optional v1.0.0
-- github.com/equinix-labs/fabric-go v0.7.0
-+ github.com/equinix-labs/fabric-go v0.7.1
- github.com/equinix-labs/metal-go v0.27.0
- github.com/equinix/ecx-go/v2 v2.3.1
- github.com/equinix/ne-go v1.11.0
-diff --git a/go.sum b/go.sum
-index 6be22e9..3174554 100644
---- a/go.sum
-+++ b/go.sum
-@@ -262,6 +262,8 @@ github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.
- github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
- github.com/equinix-labs/fabric-go v0.7.0 h1:AiiVPD4aE/aeiuCK7Fhsq4bvjmJ5RzmZ3boKnp0dl4g=
- github.com/equinix-labs/fabric-go v0.7.0/go.mod h1:oqgGS3GOI8hHGPJKsAwDOEX0qRHl52sJGvwA/zMSd90=
-+github.com/equinix-labs/fabric-go v0.7.1 h1:4yk0IKXMcc72rkRVbcYHokAEc1uUB06t6NXK+DtSsbs=
-+github.com/equinix-labs/fabric-go v0.7.1/go.mod h1:oqgGS3GOI8hHGPJKsAwDOEX0qRHl52sJGvwA/zMSd90=
- github.com/equinix-labs/metal-go v0.25.1 h1:uL83lRKyAcOfab+9r2xujAuLD8lTsqv89+SPvVFkcBM=
- github.com/equinix-labs/metal-go v0.25.1/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
- github.com/equinix-labs/metal-go v0.26.0 h1:0rBTyjF8j58dg++kMFLRi9Jhs5gng5BFn5Y0bl5NPtM=
diff --git a/patches/0027-fix-deps-update-module-github.com-google-uuid-to-v1..patch b/patches/0027-fix-deps-update-module-github.com-google-uuid-to-v1..patch
deleted file mode 100644
index babf15d0..00000000
--- a/patches/0027-fix-deps-update-module-github.com-google-uuid-to-v1..patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Fri, 3 Nov 2023 15:30:13 +0000
-Subject: [PATCH 27/51] fix(deps): update module github.com/google/uuid to
- v1.4.0
-
-
-diff --git a/go.mod b/go.mod
-index 560754e..9ac52eb 100644
---- a/go.mod
-+++ b/go.mod
-@@ -10,7 +10,7 @@ require (
- github.com/equinix/ne-go v1.11.0
- github.com/equinix/oauth2-go v1.0.0
- github.com/equinix/rest-go v1.3.0
-- github.com/google/uuid v1.3.0
-+ github.com/google/uuid v1.4.0
- github.com/gruntwork-io/terratest v0.43.0
- github.com/hashicorp/go-cty v1.4.1-0.20200723130312-85980079f637
- github.com/hashicorp/go-multierror v1.1.1
-diff --git a/go.sum b/go.sum
-index 3174554..5d53ce3 100644
---- a/go.sum
-+++ b/go.sum
-@@ -377,6 +377,8 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
- github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
- github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
- github.com/google/uuid v1.3.0/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.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
- github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
- github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg=
diff --git a/patches/0028-fix-deps-update-golang.org-x-exp-digest-to-9a3e603.patch b/patches/0028-fix-deps-update-golang.org-x-exp-digest-to-9a3e603.patch
deleted file mode 100644
index 64f5344d..00000000
--- a/patches/0028-fix-deps-update-golang.org-x-exp-digest-to-9a3e603.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Thu, 16 Nov 2023 11:05:23 +0000
-Subject: [PATCH 28/51] fix(deps): update golang.org/x/exp digest to 9a3e603
-
-
-diff --git a/go.mod b/go.mod
-index 9ac52eb..5ace711 100644
---- a/go.mod
-+++ b/go.mod
-@@ -20,7 +20,7 @@ require (
- github.com/packethost/packngo v0.30.0
- github.com/pkg/errors v0.9.1
- github.com/stretchr/testify v1.8.4
-- golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df
-+ golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
- golang.org/x/oauth2 v0.14.0
- )
-
-@@ -98,7 +98,7 @@ require (
- github.com/zclconf/go-cty v1.14.1 // indirect
- go.opencensus.io v0.24.0 // indirect
- golang.org/x/crypto v0.15.0 // indirect
-- golang.org/x/mod v0.13.0 // indirect
-+ golang.org/x/mod v0.14.0 // indirect
- golang.org/x/net v0.18.0 // indirect
- golang.org/x/sync v0.2.0 // indirect
- golang.org/x/sys v0.14.0 // indirect
-diff --git a/go.sum b/go.sum
-index 5d53ce3..7c37dde 100644
---- a/go.sum
-+++ b/go.sum
-@@ -645,6 +645,8 @@ golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERs
- golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
- golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME=
- golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
-+golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
-+golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
- golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
- golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
- golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
-@@ -676,6 +678,8 @@ golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
- golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
- golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=
- golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
-+golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
-+golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
- golang.org/x/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=
diff --git a/patches/0029-make-correrlationid-function-private.patch b/patches/0029-make-correrlationid-function-private.patch
deleted file mode 100644
index 21326f5d..00000000
--- a/patches/0029-make-correrlationid-function-private.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tomas Karasek
-Date: Thu, 16 Nov 2023 15:12:42 +0100
-Subject: [PATCH 29/51] make correrlationid function private
-
-
-diff --git a/internal/config/config.go b/internal/config/config.go
-index d0fdd20..f16ddc7 100644
---- a/internal/config/config.go
-+++ b/internal/config/config.go
-@@ -186,7 +186,7 @@ func (c *Config) NewFabricClient() *v4.APIClient {
- authClient.Timeout = c.requestTimeout()
- fabricHeaderMap := map[string]string{
- "X-SOURCE": "API",
-- "X-CORRELATION-ID": CorrelationId(25),
-+ "X-CORRELATION-ID": correlationId(25),
- }
- v4Configuration := v4.Configuration{
- BasePath: c.BaseURL,
-diff --git a/internal/config/correlation_id.go b/internal/config/correlation_id.go
-index 4e5fcb3..522059c 100644
---- a/internal/config/correlation_id.go
-+++ b/internal/config/correlation_id.go
-@@ -11,7 +11,7 @@ const allowed_charset = "abcdefghijklmnopqrstuvwxyz" +
- var seededRand = rand.New(
- rand.NewSource(time.Now().UnixNano()))
-
--func CorrelationIdWithCharset(length int, charset string) string {
-+func correlationIdWithCharset(length int, charset string) string {
- b := make([]byte, length)
- for i := range b {
- b[i] = charset[seededRand.Intn(len(charset))]
-@@ -19,6 +19,6 @@ func CorrelationIdWithCharset(length int, charset string) string {
- return string(b)
- }
-
--func CorrelationId(length int) string {
-- return CorrelationIdWithCharset(length, allowed_charset)
-+func correlationId(length int) string {
-+ return correlationIdWithCharset(length, allowed_charset)
- }
diff --git a/patches/0030-move-error-handling-code-to-internal-errors-move-Set.patch b/patches/0030-move-error-handling-code-to-internal-errors-move-Set.patch
deleted file mode 100644
index e7c54010..00000000
--- a/patches/0030-move-error-handling-code-to-internal-errors-move-Set.patch
+++ /dev/null
@@ -1,1794 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tomas Karasek
-Date: Mon, 27 Nov 2023 15:34:27 +0100
-Subject: [PATCH 30/51] move error handling code to internal/errors, move
- SetMap to internal/schema
-
-
-diff --git a/equinix/data_source_metal_facility.go b/equinix/data_source_metal_facility.go
-index 5ed6d02..5398fd2 100644
---- a/equinix/data_source_metal_facility.go
-+++ b/equinix/data_source_metal_facility.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "strings"
-
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -122,7 +124,7 @@ func dataSourceMetalFacilityRead(d *schema.ResourceData, meta interface{}) error
- }
- }
- d.SetId(f.ID)
-- return setMap(d, map[string]interface{}{
-+ return equinix_schema.SetMap(d, map[string]interface{}{
- "code": f.Code,
- "name": f.Name,
- "features": f.Features,
-diff --git a/equinix/data_source_metal_hardware_reservation.go b/equinix/data_source_metal_hardware_reservation.go
-index bf53fc9..92184a8 100644
---- a/equinix/data_source_metal_hardware_reservation.go
-+++ b/equinix/data_source_metal_hardware_reservation.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "fmt"
-
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -118,5 +120,5 @@ func dataSourceMetalHardwareReservationRead(d *schema.ResourceData, meta interfa
- }
-
- d.SetId(hr.ID)
-- return setMap(d, m)
-+ return equinix_schema.SetMap(d, m)
- }
-diff --git a/equinix/data_source_metal_metro.go b/equinix/data_source_metal_metro.go
-index fa4be85..4806eec 100644
---- a/equinix/data_source_metal_metro.go
-+++ b/equinix/data_source_metal_metro.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "fmt"
-
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -70,7 +72,7 @@ func dataSourceMetalMetroRead(d *schema.ResourceData, meta interface{}) error {
- for _, m := range metros {
- if m.Code == code {
- d.SetId(m.ID)
-- return setMap(d, map[string]interface{}{
-+ return equinix_schema.SetMap(d, map[string]interface{}{
- "id": m.ID,
- "code": m.Code,
- "name": m.Name,
-diff --git a/equinix/data_source_metal_organization.go b/equinix/data_source_metal_organization.go
-index b47453e..8a2003e 100644
---- a/equinix/data_source_metal_organization.go
-+++ b/equinix/data_source_metal_organization.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "path"
-
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -147,7 +149,7 @@ func dataSourceMetalOrganizationRead(d *schema.ResourceData, meta interface{}) e
- }
-
- d.SetId(org.ID)
-- return setMap(d, map[string]interface{}{
-+ return equinix_schema.SetMap(d, map[string]interface{}{
- "organization_id": org.ID,
- "name": org.Name,
- "description": org.Description,
-diff --git a/equinix/data_source_metal_project.go b/equinix/data_source_metal_project.go
-index c8573b9..d513642 100644
---- a/equinix/data_source_metal_project.go
-+++ b/equinix/data_source_metal_project.go
-@@ -5,6 +5,7 @@ import (
- "path"
-
- "github.com/equinix/terraform-provider-equinix/internal/config"
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
-@@ -157,7 +158,7 @@ func dataSourceMetalProjectRead(d *schema.ResourceData, meta interface{}) error
- if bgpConf.ID != "" {
- err := d.Set("bgp_config", flattenBGPConfig(bgpConf))
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
- return err
- }
- }
-diff --git a/equinix/data_source_metal_project_ssh_key.go b/equinix/data_source_metal_project_ssh_key.go
-index f1c9151..e20013c 100644
---- a/equinix/data_source_metal_project_ssh_key.go
-+++ b/equinix/data_source_metal_project_ssh_key.go
-@@ -6,6 +6,7 @@ import (
- "strings"
-
- "github.com/equinix/terraform-provider-equinix/internal/config"
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
-@@ -86,7 +87,7 @@ func dataSourceMetalProjectSSHKeyRead(d *schema.ResourceData, meta interface{})
- }
- keys, _, err := client.Projects.ListSSHKeys(projectID, searchOpts)
- if err != nil {
-- err = fmt.Errorf("Error listing project ssh keys: %s", friendlyError(err))
-+ err = fmt.Errorf("Error listing project ssh keys: %s", equinix_errors.FriendlyError(err))
- return err
- }
-
-diff --git a/equinix/data_source_metal_spot_market_request.go b/equinix/data_source_metal_spot_market_request.go
-index 0d0064e..4307153 100644
---- a/equinix/data_source_metal_spot_market_request.go
-+++ b/equinix/data_source_metal_spot_market_request.go
-@@ -6,6 +6,9 @@ import (
- "strings"
- "time"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -81,8 +84,8 @@ func dataSourceMetalSpotMarketRequestRead(ctx context.Context, d *schema.Resourc
-
- smr, _, err := client.SpotMarketRequests.Get(id, &packngo.GetOptions{Includes: []string{"project", "devices", "facilities", "metro"}})
- if err != nil {
-- err = friendlyError(err)
-- if isNotFound(err) {
-+ err = equinix_errors.FriendlyError(err)
-+ if equinix_errors.IsNotFound(err) {
- d.SetId("")
- return nil
- }
-@@ -104,7 +107,7 @@ func dataSourceMetalSpotMarketRequestRead(ctx context.Context, d *schema.Resourc
-
- d.SetId(id)
-
-- return setMap(d, map[string]interface{}{
-+ return equinix_schema.SetMap(d, map[string]interface{}{
- "device_ids": deviceIDs,
- "end_at": func(d *schema.ResourceData, k string) error {
- if smr.EndAt != nil {
-diff --git a/equinix/data_source_metal_vlan.go b/equinix/data_source_metal_vlan.go
-index 81c81dd..cb87258 100644
---- a/equinix/data_source_metal_vlan.go
-+++ b/equinix/data_source_metal_vlan.go
-@@ -3,6 +3,9 @@ package equinix
- import (
- "fmt"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -78,7 +81,7 @@ func dataSourceMetalVlanRead(d *schema.ResourceData, meta interface{}) error {
- facilityRaw, facilityOk := d.GetOk("facility")
-
- if !(vlanIdOk || (vxlanOk || projectOk || metroOk || facilityOk)) {
-- return friendlyError(fmt.Errorf("You must set either vlan_id or a combination of vxlan, project_id, and, metro or facility"))
-+ return equinix_errors.FriendlyError(fmt.Errorf("You must set either vlan_id or a combination of vxlan, project_id, and, metro or facility"))
- }
-
- var vlan *packngo.VirtualNetwork
-@@ -90,7 +93,7 @@ func dataSourceMetalVlanRead(d *schema.ResourceData, meta interface{}) error {
- &packngo.GetOptions{Includes: []string{"assigned_to"}},
- )
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- } else {
-@@ -103,12 +106,12 @@ func dataSourceMetalVlanRead(d *schema.ResourceData, meta interface{}) error {
- &packngo.GetOptions{Includes: []string{"assigned_to"}},
- )
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- vlan, err = matchingVlan(vlans.VirtualNetworks, vxlan, projectID, facility, metro)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
-
-@@ -119,7 +122,7 @@ func dataSourceMetalVlanRead(d *schema.ResourceData, meta interface{}) error {
-
- d.SetId(vlan.ID)
-
-- return setMap(d, map[string]interface{}{
-+ return equinix_schema.SetMap(d, map[string]interface{}{
- "vlan_id": vlan.ID,
- "project_id": vlan.Project.ID,
- "vxlan": vlan.VXLAN,
-@@ -144,11 +147,11 @@ func matchingVlan(vlans []packngo.VirtualNetwork, vxlan int, projectID, facility
- matches = append(matches, v)
- }
- if len(matches) > 1 {
-- return nil, friendlyError(fmt.Errorf("Project %s has more than one matching VLAN", projectID))
-+ return nil, equinix_errors.FriendlyError(fmt.Errorf("Project %s has more than one matching VLAN", projectID))
- }
-
- if len(matches) == 0 {
-- return nil, friendlyError(fmt.Errorf("Project %s does not have matching VLANs", projectID))
-+ return nil, equinix_errors.FriendlyError(fmt.Errorf("Project %s does not have matching VLANs", projectID))
- }
- return &matches[0], nil
- }
-diff --git a/equinix/helpers_device.go b/equinix/helpers_device.go
-index fcf26c1..0428203 100644
---- a/equinix/helpers_device.go
-+++ b/equinix/helpers_device.go
-@@ -12,6 +12,8 @@ import (
- "sync"
- "time"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+
- metalv1 "github.com/equinix-labs/metal-go/metal/v1"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -144,7 +146,7 @@ func hwReservationStateRefreshFunc(client *packngo.Client, reservationId, instan
- state := deprovisioning
- switch {
- case err != nil:
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
- state = errstate
- case r != nil && r.Provisionable:
- state = provisionable
-diff --git a/equinix/resource_fabric_cloud_router.go b/equinix/resource_fabric_cloud_router.go
-index ff827a6..6e0a99b 100644
---- a/equinix/resource_fabric_cloud_router.go
-+++ b/equinix/resource_fabric_cloud_router.go
-@@ -7,6 +7,8 @@ import (
- "strings"
- "time"
-
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
-@@ -98,7 +100,7 @@ func resourceCloudRouterRead(ctx context.Context, d *schema.ResourceData, meta i
-
- func setCloudRouterMap(d *schema.ResourceData, fcr v4.CloudRouter) diag.Diagnostics {
- diags := diag.Diagnostics{}
-- err := setMap(d, map[string]interface{}{
-+ err := equinix_schema.SetMap(d, map[string]interface{}{
- "name": fcr.Name,
- "href": fcr.Href,
- "type": fcr.Type_,
-diff --git a/equinix/resource_fabric_connection.go b/equinix/resource_fabric_connection.go
-index d592726..d9e1063 100644
---- a/equinix/resource_fabric_connection.go
-+++ b/equinix/resource_fabric_connection.go
-@@ -7,6 +7,8 @@ import (
- "strings"
- "time"
-
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
-@@ -172,7 +174,7 @@ func resourceFabricConnectionRead(ctx context.Context, d *schema.ResourceData, m
-
- func setFabricMap(d *schema.ResourceData, conn v4.Connection) diag.Diagnostics {
- diags := diag.Diagnostics{}
-- err := setMap(d, map[string]interface{}{
-+ err := equinix_schema.SetMap(d, map[string]interface{}{
- "name": conn.Name,
- "bandwidth": conn.Bandwidth,
- "href": conn.Href,
-diff --git a/equinix/resource_fabric_port.go b/equinix/resource_fabric_port.go
-index db90bb0..8d62288 100644
---- a/equinix/resource_fabric_port.go
-+++ b/equinix/resource_fabric_port.go
-@@ -8,6 +8,8 @@ import (
- "runtime/debug"
- "strings"
-
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/antihax/optional"
-@@ -33,7 +35,7 @@ func resourceFabricPortRead(ctx context.Context, d *schema.ResourceData, meta in
-
- func setFabricPortMap(d *schema.ResourceData, port v4.Port) diag.Diagnostics {
- diags := diag.Diagnostics{}
-- err := setMap(d, map[string]interface{}{
-+ err := equinix_schema.SetMap(d, map[string]interface{}{
- "name": port.Name,
- "bandwidth": port.Bandwidth,
- "available_bandwidth": port.AvailableBandwidth,
-@@ -60,7 +62,7 @@ func setFabricPortMap(d *schema.ResourceData, port v4.Port) diag.Diagnostics {
-
- func setPortsListMap(d *schema.ResourceData, spl v4.AllPortsResponse) diag.Diagnostics {
- diags := diag.Diagnostics{}
-- err := setMap(d, map[string]interface{}{
-+ err := equinix_schema.SetMap(d, map[string]interface{}{
- "data": fabricPortsListToTerra(spl),
- })
- if err != nil {
-diff --git a/equinix/resource_fabric_routing_protocol.go b/equinix/resource_fabric_routing_protocol.go
-index 21341e2..639e6d0 100644
---- a/equinix/resource_fabric_routing_protocol.go
-+++ b/equinix/resource_fabric_routing_protocol.go
-@@ -8,6 +8,8 @@ import (
- "strings"
- "time"
-
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
-
-@@ -280,7 +282,7 @@ func setFabricRoutingProtocolMap(d *schema.ResourceData, rp v4.RoutingProtocolDa
-
- err := error(nil)
- if rp.Type_ == "BGP" {
-- err = setMap(d, map[string]interface{}{
-+ err = equinix_schema.SetMap(d, map[string]interface{}{
- "name": rp.RoutingProtocolBgpData.Name,
- "href": rp.RoutingProtocolBgpData.Href,
- "type": rp.RoutingProtocolBgpData.Type_,
-@@ -296,7 +298,7 @@ func setFabricRoutingProtocolMap(d *schema.ResourceData, rp v4.RoutingProtocolDa
- "change_log": changeLogToTerra(rp.RoutingProtocolBgpData.Changelog),
- })
- } else if rp.Type_ == "DIRECT" {
-- err = setMap(d, map[string]interface{}{
-+ err = equinix_schema.SetMap(d, map[string]interface{}{
- "name": rp.RoutingProtocolDirectData.Name,
- "href": rp.RoutingProtocolDirectData.Href,
- "type": rp.RoutingProtocolDirectData.Type_,
-diff --git a/equinix/resource_fabric_service_profile.go b/equinix/resource_fabric_service_profile.go
-index 9d21c89..0883bbc 100644
---- a/equinix/resource_fabric_service_profile.go
-+++ b/equinix/resource_fabric_service_profile.go
-@@ -9,6 +9,8 @@ import (
- "strings"
- "time"
-
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/antihax/optional"
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
-@@ -236,7 +238,7 @@ func resourceFabricServiceProfileDelete(ctx context.Context, d *schema.ResourceD
-
- func setFabricServiceProfileMap(d *schema.ResourceData, sp v4.ServiceProfile) diag.Diagnostics {
- diags := diag.Diagnostics{}
-- err := setMap(d, map[string]interface{}{
-+ err := equinix_schema.SetMap(d, map[string]interface{}{
- "href": sp.Href,
- "type": sp.Type_,
- "name": sp.Name,
-@@ -265,7 +267,7 @@ func setFabricServiceProfileMap(d *schema.ResourceData, sp v4.ServiceProfile) di
-
- func setFabricServiceProfilesListMap(d *schema.ResourceData, spl v4.ServiceProfiles) diag.Diagnostics {
- diags := diag.Diagnostics{}
-- err := setMap(d, map[string]interface{}{
-+ err := equinix_schema.SetMap(d, map[string]interface{}{
- "data": fabricServiceProfilesListToTerra(spl),
- })
- if err != nil {
-diff --git a/equinix/resource_metal_bgp_session.go b/equinix/resource_metal_bgp_session.go
-index 767776a..f1a83e9 100644
---- a/equinix/resource_metal_bgp_session.go
-+++ b/equinix/resource_metal_bgp_session.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "log"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -64,7 +66,7 @@ func resourceMetalBGPSessionCreate(d *schema.ResourceData, meta interface{}) err
- DefaultRoute: &defaultRoute,
- })
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- d.SetId(bgpSession.ID)
-@@ -78,8 +80,8 @@ func resourceMetalBGPSessionRead(d *schema.ResourceData, meta interface{}) error
- bgpSession, _, err := client.BGPSessions.Get(d.Id(),
- &packngo.GetOptions{Includes: []string{"device"}})
- if err != nil {
-- err = friendlyError(err)
-- if isNotFound(err) {
-+ err = equinix_errors.FriendlyError(err)
-+ if equinix_errors.IsNotFound(err) {
- log.Printf("[WARN] BGP Session (%s) not found, removing from state", d.Id())
-
- d.SetId("")
-@@ -105,5 +107,5 @@ func resourceMetalBGPSessionDelete(d *schema.ResourceData, meta interface{}) err
- meta.(*config.Config).AddModuleToMetalUserAgent(d)
- client := meta.(*config.Config).Metal
- resp, err := client.BGPSessions.Delete(d.Id())
-- return ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err)
-+ return equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err)
- }
-diff --git a/equinix/resource_metal_connection.go b/equinix/resource_metal_connection.go
-index 98576b0..1475b24 100644
---- a/equinix/resource_metal_connection.go
-+++ b/equinix/resource_metal_connection.go
-@@ -7,6 +7,9 @@ import (
- "strconv"
- "strings"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -295,7 +298,7 @@ func resourceMetalConnectionCreate(d *schema.ResourceData, meta interface{}) err
- }
- proj, _, err := client.Projects.Get(projectId.(string), &packngo.GetOptions{Includes: []string{"organization"}})
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- organizationId = proj.Organization.ID
- }
-@@ -328,7 +331,7 @@ func resourceMetalConnectionUpdate(d *schema.ResourceData, meta interface{}) err
- action = client.Devices.Unlock
- }
- if _, err := action(d.Id()); err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
- ur := packngo.ConnectionUpdateRequest{}
-@@ -362,13 +365,13 @@ func resourceMetalConnectionUpdate(d *schema.ResourceData, meta interface{}) err
- }
- ur.Tags = sts
- default:
-- return friendlyError(fmt.Errorf("garbage in tags: %s", ts))
-+ return equinix_errors.FriendlyError(fmt.Errorf("garbage in tags: %s", ts))
- }
- }
-
- if !reflect.DeepEqual(ur, packngo.ConnectionUpdateRequest{}) {
- if _, _, err := client.Connections.Update(d.Id(), &ur, nil); err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
-
-@@ -389,19 +392,19 @@ func resourceMetalConnectionUpdate(d *schema.ResourceData, meta interface{}) err
- if i+1 > len(newVlans) {
- // The VNID was removed; unassign the old VNID
- if _, _, err := updateHiddenVirtualCircuitVNID(client, ports[i].(map[string]interface{}), ""); err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- } else {
- j := slices.Index(oldVlans, newVlans[i])
- if j > i {
- // The VNID was moved to a different list index; unassign the VNID for the old index so that it is available for reassignment
- if _, _, err := updateHiddenVirtualCircuitVNID(client, ports[j].(map[string]interface{}), ""); err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
- // Assign the VNID (whether it is new or moved) to the correct port
- if _, _, err := updateHiddenVirtualCircuitVNID(client, ports[i].(map[string]interface{}), strconv.Itoa(newVlans[i])); err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
- }
-@@ -469,7 +472,7 @@ func resourceMetalConnectionRead(d *schema.ResourceData, meta interface{}) error
- d.Set("vlans", vlans)
- }
-
-- return setMap(d, map[string]interface{}{
-+ return equinix_schema.SetMap(d, map[string]interface{}{
- "organization_id": conn.Organization.ID,
- "project_id": projectId,
- "contact_email": conn.ContactEmail,
-@@ -494,8 +497,8 @@ func resourceMetalConnectionDelete(d *schema.ResourceData, meta interface{}) err
- meta.(*config.Config).AddModuleToMetalUserAgent(d)
- client := meta.(*config.Config).Metal
- resp, err := client.Connections.Delete(d.Id(), true)
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-- return friendlyError(err)
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
-+ return equinix_errors.FriendlyError(err)
- }
- return nil
- }
-diff --git a/equinix/resource_metal_device.go b/equinix/resource_metal_device.go
-index 8da8ece..b474774 100644
---- a/equinix/resource_metal_device.go
-+++ b/equinix/resource_metal_device.go
-@@ -12,6 +12,8 @@ import (
- "sort"
- "time"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
-@@ -534,13 +536,13 @@ func resourceMetalDeviceCreate(ctx context.Context, d *schema.ResourceData, meta
- } else {
- wfrd := "wait_for_reservation_deprovision"
- if d.Get(wfrd).(bool) {
-- return friendlyError(fmt.Errorf("You can't set %s when not using a hardware reservation", wfrd))
-+ return equinix_errors.FriendlyError(fmt.Errorf("You can't set %s when not using a hardware reservation", wfrd))
- }
- }
-
- if createRequest.OS == "custom_ipxe" {
- if createRequest.IPXEScriptURL == "" && createRequest.UserData == "" {
-- return friendlyError(errors.New("\"ipxe_script_url\" or \"user_data\"" +
-+ return equinix_errors.FriendlyError(errors.New("\"ipxe_script_url\" or \"user_data\"" +
- " must be provided when \"custom_ipxe\" OS is selected."))
- }
-
-@@ -548,14 +550,14 @@ func resourceMetalDeviceCreate(ctx context.Context, d *schema.ResourceData, meta
- // which case it's an error.
- if createRequest.IPXEScriptURL != "" {
- if matchIPXEScript.MatchString(createRequest.UserData) {
-- return friendlyError(errors.New("\"user_data\" should not be an iPXE " +
-+ return equinix_errors.FriendlyError(errors.New("\"user_data\" should not be an iPXE " +
- "script when \"ipxe_script_url\" is also provided."))
- }
- }
- }
-
- if createRequest.OS != "custom_ipxe" && createRequest.IPXEScriptURL != "" {
-- return friendlyError(errors.New("\"ipxe_script_url\" argument provided, but" +
-+ return equinix_errors.FriendlyError(errors.New("\"ipxe_script_url\" argument provided, but" +
- " OS is not \"custom_ipxe\". Please verify and fix device arguments."))
- }
-
-@@ -594,8 +596,8 @@ func resourceMetalDeviceCreate(ctx context.Context, d *schema.ResourceData, meta
- start := time.Now()
- newDevice, _, err := client.Devices.Create(createRequest)
- if err != nil {
-- retErr := friendlyError(err)
-- if isNotFound(retErr) {
-+ retErr := equinix_errors.FriendlyError(err)
-+ if equinix_errors.IsNotFound(retErr) {
- retErr = fmt.Errorf("%s, make sure project \"%s\" exists", retErr, createRequest.ProjectID)
- }
- return retErr
-@@ -617,12 +619,12 @@ func resourceMetalDeviceRead(ctx context.Context, d *schema.ResourceData, meta i
-
- device, resp, err := client.DevicesApi.FindDeviceById(context.Background(), d.Id()).Include(deviceCommonIncludes).Execute()
- if err != nil {
-- err = friendlyErrorForMetalGo(err, resp)
-+ err = equinix_errors.FriendlyErrorForMetalGo(err, resp)
-
- // If the device somehow already destroyed, mark as successfully gone.
- // Checking d.IsNewResource prevents the creation of a resource from failing
- // silently. Note d.IsNewResource is false in resource import operations.
-- if !d.IsNewResource() && (isNotFound(err) || isForbidden(err)) {
-+ if !d.IsNewResource() && (equinix_errors.IsNotFound(err) || equinix_errors.IsForbidden(err)) {
- log.Printf("[WARN] Device (%s) not found or in failed status, removing from state", d.Id())
- d.SetId("")
- return nil
-@@ -730,7 +732,7 @@ func resourceMetalDeviceUpdate(ctx context.Context, d *schema.ResourceData, meta
- action = client.Devices.Unlock
- }
- if _, err := action(d.Id()); err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
- ur := packngo.DeviceUpdateRequest{}
-@@ -762,7 +764,7 @@ func resourceMetalDeviceUpdate(ctx context.Context, d *schema.ResourceData, meta
- }
- ur.Tags = &sts
- default:
-- return friendlyError(fmt.Errorf("garbage in tags: %s", ts))
-+ return equinix_errors.FriendlyError(fmt.Errorf("garbage in tags: %s", ts))
- }
- }
- if d.HasChange("ipxe_script_url") {
-@@ -777,7 +779,7 @@ func resourceMetalDeviceUpdate(ctx context.Context, d *schema.ResourceData, meta
- start := time.Now()
- if !reflect.DeepEqual(ur, packngo.DeviceUpdateRequest{}) {
- if _, _, err := client.Devices.Update(d.Id(), &ur); err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
-
-@@ -813,7 +815,7 @@ func doReinstall(ctx context.Context, client *packngo.Client, d *schema.Resource
- }
-
- if _, err := client.Devices.Reinstall(d.Id(), &reinstallOptions); err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- updateTimeout := d.Timeout(schema.TimeoutUpdate) - 30*time.Second - time.Since(start)
-@@ -838,8 +840,8 @@ func resourceMetalDeviceDelete(ctx context.Context, d *schema.ResourceData, meta
- start := time.Now()
-
- resp, err := client.Devices.Delete(d.Id(), fdv)
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-- return friendlyError(err)
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
-+ return equinix_errors.FriendlyError(err)
- }
-
- resId, resIdOk := d.GetOk("deployed_hardware_reservation_id")
-@@ -885,8 +887,8 @@ func waitForActiveDevice(ctx context.Context, d *schema.ResourceData, meta inter
- state, err := waitForDeviceAttribute(ctx, d, stateConf)
- if err != nil {
- d.SetId("")
-- fErr := friendlyError(err)
-- if isForbidden(fErr) {
-+ fErr := equinix_errors.FriendlyError(err)
-+ if equinix_errors.IsForbidden(fErr) {
- // If the device doesn't get to the active state, we can't recover it from here.
-
- return errors.New("provisioning time limit exceeded; the Equinix Metal team will investigate")
-diff --git a/equinix/resource_metal_device_acc_test.go b/equinix/resource_metal_device_acc_test.go
-index 0822a1f..df3fe41 100644
---- a/equinix/resource_metal_device_acc_test.go
-+++ b/equinix/resource_metal_device_acc_test.go
-@@ -1038,7 +1038,7 @@ func TestAccMetalDevice_readErrorHandling(t *testing.T) {
- newResource: false,
- handler: func(w http.ResponseWriter, r *http.Request) {
- w.Header().Add("Content-Type", "application/json")
-- w.Header().Add("X-Request-Id", "needed for friendlyError")
-+ w.Header().Add("X-Request-Id", "needed for equinix_errors.FriendlyError")
- w.WriteHeader(http.StatusForbidden)
- },
- },
-@@ -1050,7 +1050,7 @@ func TestAccMetalDevice_readErrorHandling(t *testing.T) {
- newResource: false,
- handler: func(w http.ResponseWriter, r *http.Request) {
- w.Header().Add("Content-Type", "application/json")
-- w.Header().Add("X-Request-Id", "needed for friendlyError")
-+ w.Header().Add("X-Request-Id", "needed for equinix_errors.FriendlyError")
- w.WriteHeader(http.StatusNotFound)
- },
- },
-@@ -1062,7 +1062,7 @@ func TestAccMetalDevice_readErrorHandling(t *testing.T) {
- newResource: true,
- handler: func(w http.ResponseWriter, r *http.Request) {
- w.Header().Add("Content-Type", "application/json")
-- w.Header().Add("X-Request-Id", "needed for friendlyError")
-+ w.Header().Add("X-Request-Id", "needed for equinix_errors.FriendlyError")
- w.WriteHeader(http.StatusForbidden)
- },
- },
-@@ -1074,7 +1074,7 @@ func TestAccMetalDevice_readErrorHandling(t *testing.T) {
- newResource: true,
- handler: func(w http.ResponseWriter, r *http.Request) {
- w.Header().Add("Content-Type", "application/json")
-- w.Header().Add("X-Request-Id", "needed for friendlyError")
-+ w.Header().Add("X-Request-Id", "needed for equinix_errors.FriendlyError")
- w.WriteHeader(http.StatusNotFound)
- },
- },
-@@ -1086,7 +1086,7 @@ func TestAccMetalDevice_readErrorHandling(t *testing.T) {
- newResource: true,
- handler: func(w http.ResponseWriter, r *http.Request) {
- w.Header().Add("Content-Type", "application/json")
-- w.Header().Add("X-Request-Id", "needed for friendlyError")
-+ w.Header().Add("X-Request-Id", "needed for equinix_errors.FriendlyError")
- w.WriteHeader(http.StatusBadRequest)
- },
- },
-diff --git a/equinix/resource_metal_device_network_type.go b/equinix/resource_metal_device_network_type.go
-index 87fa5df..5689037 100644
---- a/equinix/resource_metal_device_network_type.go
-+++ b/equinix/resource_metal_device_network_type.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "log"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -91,9 +93,9 @@ func resourceMetalDeviceNetworkTypeRead(d *schema.ResourceData, meta interface{}
-
- _, devNType, err := getDevIDandNetworkType(d, client)
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
-
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- log.Printf("[WARN] Device (%s) for Network Type request not found, removing from state", d.Id())
- d.SetId("")
- return nil
-diff --git a/equinix/resource_metal_gateway.go b/equinix/resource_metal_gateway.go
-index 2ca2862..0c9ceb6 100644
---- a/equinix/resource_metal_gateway.go
-+++ b/equinix/resource_metal_gateway.go
-@@ -4,6 +4,9 @@ import (
- "fmt"
- "time"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
-@@ -138,7 +141,7 @@ func resourceMetalGatewayRead(d *schema.ResourceData, meta interface{}) error {
- privateIPv4SubnetSize = 1 << (32 - mg.IPReservation.CIDR)
- }
-
-- return setMap(d, map[string]interface{}{
-+ return equinix_schema.SetMap(d, map[string]interface{}{
- "project_id": mg.Project.ID,
- "vlan_id": mg.VirtualNetwork.ID,
- "ip_reservation_id": mg.IPReservation.ID,
-@@ -157,8 +160,8 @@ func resourceMetalGatewayDelete(d *schema.ResourceData, meta interface{}) error
- meta.(*config.Config).AddModuleToMetalUserAgent(d)
- client := meta.(*config.Config).Metal
- resp, err := client.MetalGateways.Delete(d.Id())
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-- return friendlyError(err)
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
-+ return equinix_errors.FriendlyError(err)
- }
-
- deleteWaiter := getGatewayStateWaiter(
-@@ -170,7 +173,7 @@ func resourceMetalGatewayDelete(d *schema.ResourceData, meta interface{}) error
- )
-
- _, err = deleteWaiter.WaitForState()
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(nil, err) != nil {
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(nil, err) != nil {
- return fmt.Errorf("Error deleting Metal Gateway %s: %s", d.Id(), err)
- }
-
-diff --git a/equinix/resource_metal_ip_attachment.go b/equinix/resource_metal_ip_attachment.go
-index 7057932..1dfdf33 100644
---- a/equinix/resource_metal_ip_attachment.go
-+++ b/equinix/resource_metal_ip_attachment.go
-@@ -5,6 +5,8 @@ import (
- "log"
- "path"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -57,10 +59,10 @@ func resourceMetalIPAttachmentRead(d *schema.ResourceData, meta interface{}) err
- client := meta.(*config.Config).Metal
- assignment, _, err := client.DeviceIPs.Get(d.Id(), nil)
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
-
- // If the IP attachment was already destroyed, mark as succesfully gone.
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- log.Printf("[WARN] IP attachment (%q) not found, removing from state", d.Id())
- d.SetId("")
- return nil
-@@ -93,8 +95,8 @@ func resourceMetalIPAttachmentDelete(d *schema.ResourceData, meta interface{}) e
- client := meta.(*config.Config).Metal
-
- resp, err := client.DeviceIPs.Unassign(d.Id())
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-- return friendlyError(err)
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
-+ return equinix_errors.FriendlyError(err)
- }
-
- d.SetId("")
-diff --git a/equinix/resource_metal_organization.go b/equinix/resource_metal_organization.go
-index 00fe088..d51dedf 100644
---- a/equinix/resource_metal_organization.go
-+++ b/equinix/resource_metal_organization.go
-@@ -3,6 +3,9 @@ package equinix
- import (
- "regexp"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -128,7 +131,7 @@ func resourceMetalOrganizationCreate(d *schema.ResourceData, meta interface{}) e
-
- org, _, err := client.Organizations.Create(createRequest)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- d.SetId(org.ID)
-@@ -142,10 +145,10 @@ func resourceMetalOrganizationRead(d *schema.ResourceData, meta interface{}) err
-
- key, _, err := client.Organizations.Get(d.Id(), &packngo.GetOptions{Includes: []string{"address"}})
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
-
- // If the project somehow already destroyed, mark as succesfully gone.
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- d.SetId("")
-
- return nil
-@@ -155,7 +158,7 @@ func resourceMetalOrganizationRead(d *schema.ResourceData, meta interface{}) err
- }
-
- d.SetId(key.ID)
-- return setMap(d, map[string]interface{}{
-+ return equinix_schema.SetMap(d, map[string]interface{}{
- "name": key.Name,
- "description": key.Description,
- "website": key.Website,
-@@ -198,7 +201,7 @@ func resourceMetalOrganizationUpdate(d *schema.ResourceData, meta interface{}) e
-
- _, _, err := client.Organizations.Update(d.Id(), updateRequest)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- return resourceMetalOrganizationRead(d, meta)
-@@ -209,8 +212,8 @@ func resourceMetalOrganizationDelete(d *schema.ResourceData, meta interface{}) e
- client := meta.(*config.Config).Metal
-
- resp, err := client.Organizations.Delete(d.Id())
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-- return friendlyError(err)
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
-+ return equinix_errors.FriendlyError(err)
- }
-
- d.SetId("")
-diff --git a/equinix/resource_metal_organization_member.go b/equinix/resource_metal_organization_member.go
-index 3e5c3ab..b7023c5 100644
---- a/equinix/resource_metal_organization_member.go
-+++ b/equinix/resource_metal_organization_member.go
-@@ -6,6 +6,9 @@ import (
- "path"
- "strings"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -132,7 +135,7 @@ func resourceMetalOrganizationMemberCreate(d *schema.ResourceData, meta interfac
- orgID := d.Get("organization_id").(string)
- _, _, err := client.Invitations.Create(orgID, createRequest, nil)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- d.SetId(fmt.Sprintf("%s:%s", email, orgID))
-@@ -164,9 +167,9 @@ func resourceMetalOrganizationMemberRead(d *schema.ResourceData, meta interface{
- listOpts := &packngo.ListOptions{Includes: []string{"user"}}
- invitations, _, err := client.Invitations.List(orgID, listOpts)
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
- // If the org was destroyed, mark as gone.
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- d.SetId("")
- return nil
- }
-@@ -175,9 +178,9 @@ func resourceMetalOrganizationMemberRead(d *schema.ResourceData, meta interface{
-
- members, _, err := client.Members.List(orgID, &packngo.GetOptions{Includes: []string{"user"}})
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
- // If the org was destroyed, mark as gone.
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- d.SetId("")
- return nil
- }
-@@ -195,7 +198,7 @@ func resourceMetalOrganizationMemberRead(d *schema.ResourceData, meta interface{
- for _, project := range member.Member.Projects {
- projectIDs = append(projectIDs, path.Base(project.URL))
- }
-- return setMap(d, map[string]interface{}{
-+ return equinix_schema.SetMap(d, map[string]interface{}{
- "state": "active",
- "roles": stringArrToIfArr(member.Member.Roles),
- "projects_ids": stringArrToIfArr(projectIDs),
-@@ -206,7 +209,7 @@ func resourceMetalOrganizationMemberRead(d *schema.ResourceData, meta interface{
- for _, project := range member.Invitation.Projects {
- projectIDs = append(projectIDs, path.Base(project.Href))
- }
-- return setMap(d, map[string]interface{}{
-+ return equinix_schema.SetMap(d, map[string]interface{}{
- "state": "invited",
- "organization_id": path.Base(member.Invitation.Organization.Href),
- "roles": member.Invitation.Roles,
-@@ -226,9 +229,9 @@ func resourceMetalOrganizationMemberDelete(d *schema.ResourceData, meta interfac
- listOpts := &packngo.ListOptions{Includes: []string{"user"}}
- invitations, _, err := client.Invitations.List(d.Get("organization_id").(string), listOpts)
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
- // If the org was destroyed, mark as gone.
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- d.SetId("")
- return nil
- }
-@@ -238,9 +241,9 @@ func resourceMetalOrganizationMemberDelete(d *schema.ResourceData, meta interfac
- orgID := d.Get("organization_id").(string)
- org, _, err := client.Organizations.Get(orgID, &packngo.GetOptions{Includes: []string{"members", "members.user"}})
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
- // If the org was destroyed, mark as gone.
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- d.SetId("")
- return nil
- }
-@@ -256,9 +259,9 @@ func resourceMetalOrganizationMemberDelete(d *schema.ResourceData, meta interfac
- if member.isMember() {
- _, err = client.Members.Delete(orgID, member.Member.ID)
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
- // If the member was deleted, mark as gone.
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- d.SetId("")
- return nil
- }
-@@ -267,9 +270,9 @@ func resourceMetalOrganizationMemberDelete(d *schema.ResourceData, meta interfac
- } else if member.isInvitation() {
- _, err = client.Invitations.Delete(member.Invitation.ID)
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
- // If the invitation was deleted, mark as gone.
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- d.SetId("")
- return nil
- }
-diff --git a/equinix/resource_metal_port.go b/equinix/resource_metal_port.go
-index aec4fdf..a37ef5d 100644
---- a/equinix/resource_metal_port.go
-+++ b/equinix/resource_metal_port.go
-@@ -5,6 +5,9 @@ import (
- "log"
- "time"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -123,7 +126,7 @@ func resourceMetalPortUpdate(ctx context.Context, d *schema.ResourceData, meta i
- start := time.Now()
- cpr, _, err := getClientPortResource(d, meta)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- for _, f := range [](func(*ClientPortResource) error){
-@@ -137,7 +140,7 @@ func resourceMetalPortUpdate(ctx context.Context, d *schema.ResourceData, meta i
- updateNativeVlan,
- } {
- if err := f(cpr); err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
-
-@@ -150,7 +153,7 @@ func resourceMetalPortRead(ctx context.Context, d *schema.ResourceData, meta int
-
- port, err := getPortByResourceData(d, client)
- if err != nil {
-- if isNotFound(err) || isForbidden(err) {
-+ if equinix_errors.IsNotFound(err) || equinix_errors.IsForbidden(err) {
- log.Printf("[WARN] Port (%s) not accessible, removing from state", d.Id())
- d.SetId("")
-
-@@ -196,7 +199,7 @@ func resourceMetalPortRead(ctx context.Context, d *schema.ResourceData, meta int
- }
-
- d.SetId(port.ID)
-- return setMap(d, m)
-+ return equinix_schema.SetMap(d, m)
- }
-
- func resourceMetalPortDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-@@ -204,7 +207,7 @@ func resourceMetalPortDelete(ctx context.Context, d *schema.ResourceData, meta i
- if resetOk && resetRaw.(bool) {
- start := time.Now()
- cpr, resp, err := getClientPortResource(d, meta)
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
- return err
- }
-
-@@ -214,7 +217,7 @@ func resourceMetalPortDelete(ctx context.Context, d *schema.ResourceData, meta i
- port := resourceMetalPort()
- copy := port.Data(d.State())
- cpr.Resource = copy
-- if err = setMap(cpr.Resource, map[string]interface{}{
-+ if err = equinix_schema.SetMap(cpr.Resource, map[string]interface{}{
- "layer2": false,
- "bonded": true,
- "native_vlan_id": nil,
-diff --git a/equinix/resource_metal_port_vlan_attachment.go b/equinix/resource_metal_port_vlan_attachment.go
-index e72efa0..9005055 100644
---- a/equinix/resource_metal_port_vlan_attachment.go
-+++ b/equinix/resource_metal_port_vlan_attachment.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "log"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -168,9 +170,9 @@ func resourceMetalPortVlanAttachmentRead(d *schema.ResourceData, meta interface{
-
- dev, _, err := client.Devices.Get(deviceID, &packngo.GetOptions{Includes: []string{"virtual_networks,project,native_virtual_network"}})
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
-
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- log.Printf("[WARN] Device (%s) for Port Vlan Attachment not found, removing from state", d.Id())
- d.SetId("")
- return nil
-@@ -244,7 +246,7 @@ func resourceMetalPortVlanAttachmentDelete(d *schema.ResourceData, meta interfac
- native := d.Get("native").(bool)
- if native {
- _, resp, err := client.DevicePorts.UnassignNative(pID)
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
- return err
- }
- }
-@@ -253,7 +255,7 @@ func resourceMetalPortVlanAttachmentDelete(d *schema.ResourceData, meta interfac
- metalMutexKV.Lock(lockId)
- defer metalMutexKV.Unlock(lockId)
- portPtr, resp, err := client.DevicePorts.Unassign(par)
-- if ignoreResponseErrors(httpForbidden, httpNotFound, isNotAssigned)(resp, err) != nil {
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound, equinix_errors.IsNotAssigned)(resp, err) != nil {
- return err
- }
- forceBond := d.Get("force_bond").(bool)
-@@ -262,11 +264,11 @@ func resourceMetalPortVlanAttachmentDelete(d *schema.ResourceData, meta interfac
- portName := d.Get("port_name").(string)
- port, err := client.DevicePorts.GetPortByName(deviceID, portName)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- _, _, err = client.DevicePorts.Bond(port, false)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
- return nil
-diff --git a/equinix/resource_metal_project.go b/equinix/resource_metal_project.go
-index 31023a4..5a1cf37 100644
---- a/equinix/resource_metal_project.go
-+++ b/equinix/resource_metal_project.go
-@@ -6,6 +6,8 @@ import (
- "regexp"
- "strings"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -135,7 +137,7 @@ func resourceMetalProjectCreate(d *schema.ResourceData, meta interface{}) error
-
- project, _, err := client.Projects.Create(createRequest)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- d.SetId(project.ID)
-@@ -145,7 +147,7 @@ func resourceMetalProjectCreate(d *schema.ResourceData, meta interface{}) error
- bgpCR := expandBGPConfig(d)
- _, err := client.BGPConfig.Create(project.ID, bgpCR)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
-
-@@ -154,7 +156,7 @@ func resourceMetalProjectCreate(d *schema.ResourceData, meta interface{}) error
- pur := packngo.ProjectUpdateRequest{BackendTransfer: &backendTransfer}
- _, _, err := client.Projects.Update(project.ID, &pur)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
- return resourceMetalProjectRead(d, meta)
-@@ -166,10 +168,10 @@ func resourceMetalProjectRead(d *schema.ResourceData, meta interface{}) error {
-
- proj, _, err := client.Projects.Get(d.Id(), nil)
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
-
- // If the project somehow already destroyed, mark as successfully gone.
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- d.SetId("")
-
- return nil
-@@ -195,7 +197,7 @@ func resourceMetalProjectRead(d *schema.ResourceData, meta interface{}) error {
- if bgpConf.ID != "" {
- err := d.Set("bgp_config", flattenBGPConfig(bgpConf))
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
- return err
- }
- }
-@@ -257,7 +259,7 @@ func resourceMetalProjectUpdate(d *schema.ResourceData, meta interface{}) error
- bgpCreateRequest := expandBGPConfig(d)
- _, err := client.BGPConfig.Create(d.Id(), bgpCreateRequest)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- } else {
- if len(oldarr) == 1 {
-@@ -272,13 +274,13 @@ func resourceMetalProjectUpdate(d *schema.ResourceData, meta interface{}) error
- m["asn"].(int))
-
- errStr := fmt.Errorf("BGP Config can not be removed from a project, please add back\n%s", bgpConfStr)
-- return friendlyError(errStr)
-+ return equinix_errors.FriendlyError(errStr)
- }
- }
- } else {
- _, _, err := client.Projects.Update(d.Id(), updateRequest)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
-
-@@ -290,8 +292,8 @@ func resourceMetalProjectDelete(d *schema.ResourceData, meta interface{}) error
- client := meta.(*config.Config).Metal
-
- resp, err := client.Projects.Delete(d.Id())
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-- return friendlyError(err)
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
-+ return equinix_errors.FriendlyError(err)
- }
-
- d.SetId("")
-diff --git a/equinix/resource_metal_project_api_key.go b/equinix/resource_metal_project_api_key.go
-index 6e8f078..2dc71b1 100644
---- a/equinix/resource_metal_project_api_key.go
-+++ b/equinix/resource_metal_project_api_key.go
-@@ -3,6 +3,9 @@ package equinix
- import (
- "log"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -67,7 +70,7 @@ func resourceMetalAPIKeyCreate(d *schema.ResourceData, meta interface{}) error {
-
- apiKey, _, err := client.APIKeys.Create(createRequest)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- d.SetId(apiKey.ID)
-@@ -103,10 +106,10 @@ func resourceMetalAPIKeyRead(d *schema.ResourceData, meta interface{}) error {
- }
-
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
- // If the key is somehow already destroyed, mark as
- // succesfully gone
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- log.Printf("[WARN] Project APIKey (%s) not found, removing from state", d.Id())
- d.SetId("")
- return nil
-@@ -131,7 +134,7 @@ func resourceMetalAPIKeyRead(d *schema.ResourceData, meta interface{}) error {
- attrMap["user_id"] = apiKey.User.ID
- }
-
-- return setMap(d, attrMap)
-+ return equinix_schema.SetMap(d, attrMap)
- }
-
- func resourceMetalAPIKeyDelete(d *schema.ResourceData, meta interface{}) error {
-@@ -139,8 +142,8 @@ func resourceMetalAPIKeyDelete(d *schema.ResourceData, meta interface{}) error {
- client := meta.(*config.Config).Metal
-
- resp, err := client.APIKeys.Delete(d.Id())
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-- return friendlyError(err)
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
-+ return equinix_errors.FriendlyError(err)
- }
-
- d.SetId("")
-diff --git a/equinix/resource_metal_reserved_ip_block.go b/equinix/resource_metal_reserved_ip_block.go
-index 7e37fc5..c518018 100644
---- a/equinix/resource_metal_reserved_ip_block.go
-+++ b/equinix/resource_metal_reserved_ip_block.go
-@@ -9,6 +9,9 @@ import (
- "strings"
- "time"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
-@@ -455,7 +458,7 @@ func loadBlock(d *schema.ResourceData, reservedBlock *packngo.IPAddressReservati
- }
- }
-
-- return setMap(d, attributeMap)
-+ return equinix_schema.SetMap(d, attributeMap)
- }
-
- func resourceMetalReservedIPBlockRead(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-@@ -468,8 +471,8 @@ func resourceMetalReservedIPBlockRead(ctx context.Context, d *schema.ResourceDat
-
- reservedBlock, _, err := client.ProjectIPs.Get(id, getOpts)
- if err != nil {
-- err = friendlyError(err)
-- if isNotFound(err) {
-+ err = equinix_errors.FriendlyError(err)
-+ if equinix_errors.IsNotFound(err) {
- log.Printf("[WARN] Reserved IP Block (%s) not found, removing from state", d.Id())
- d.SetId("")
- return nil
-@@ -497,7 +500,7 @@ func resourceMetalReservedIPBlockDelete(ctx context.Context, d *schema.ResourceD
-
- resp, err := client.ProjectIPs.Remove(id)
-
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
- return fmt.Errorf("error deleting IP reservation block %s: %s", id, err)
- }
-
-diff --git a/equinix/resource_metal_spot_market_request.go b/equinix/resource_metal_spot_market_request.go
-index 707b434..4a1a4e4 100644
---- a/equinix/resource_metal_spot_market_request.go
-+++ b/equinix/resource_metal_spot_market_request.go
-@@ -9,6 +9,9 @@ import (
- "strconv"
- "time"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
-@@ -363,8 +366,8 @@ func resourceMetalSpotMarketRequestRead(ctx context.Context, d *schema.ResourceD
-
- smr, _, err := client.SpotMarketRequests.Get(d.Id(), &packngo.GetOptions{Includes: []string{"project", "devices", "facilities", "metro"}})
- if err != nil {
-- err = friendlyError(err)
-- if isNotFound(err) {
-+ err = equinix_errors.FriendlyError(err)
-+ if equinix_errors.IsNotFound(err) {
- log.Printf("[WARN] SpotMarketRequest (%s) not found, removing from state", d.Id())
- d.SetId("")
- return nil
-@@ -377,7 +380,7 @@ func resourceMetalSpotMarketRequestRead(ctx context.Context, d *schema.ResourceD
- metro = smr.Metro.Code
- }
-
-- return setMap(d, map[string]interface{}{
-+ return equinix_schema.SetMap(d, map[string]interface{}{
- "metro": metro,
- "project_id": smr.Project.ID,
- "devices_min": smr.DevicesMin,
-@@ -428,13 +431,13 @@ func resourceMetalSpotMarketRequestDelete(ctx context.Context, d *schema.Resourc
-
- for _, d := range smr.Devices {
- resp, err := client.Devices.Delete(d.ID, true)
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
- return err
- }
- }
- }
- resp, err := client.SpotMarketRequests.Delete(d.Id(), true)
-- return ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err)
-+ return equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err)
- }
-
- func resourceStateRefreshFunc(d *schema.ResourceData, meta interface{}) retry.StateRefreshFunc {
-diff --git a/equinix/resource_metal_ssh_key.go b/equinix/resource_metal_ssh_key.go
-index 087063b..2faaba7 100644
---- a/equinix/resource_metal_ssh_key.go
-+++ b/equinix/resource_metal_ssh_key.go
-@@ -5,6 +5,8 @@ import (
- "path"
- "strings"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -80,7 +82,7 @@ func resourceMetalSSHKeyCreate(d *schema.ResourceData, meta interface{}) error {
-
- key, _, err := client.SSHKeys.Create(createRequest)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- d.SetId(key.ID)
-@@ -94,11 +96,11 @@ func resourceMetalSSHKeyRead(d *schema.ResourceData, meta interface{}) error {
-
- key, _, err := client.SSHKeys.Get(d.Id(), nil)
- if err != nil {
-- err = friendlyError(err)
-+ err = equinix_errors.FriendlyError(err)
-
- // If the key is somehow already destroyed, mark as
- // succesfully gone
-- if isNotFound(err) {
-+ if equinix_errors.IsNotFound(err) {
- log.Printf("[WARN] SSHKey (%s) not found, removing from state", d.Id())
- d.SetId("")
- return nil
-@@ -142,7 +144,7 @@ func resourceMetalSSHKeyUpdate(d *schema.ResourceData, meta interface{}) error {
-
- _, _, err := client.SSHKeys.Update(d.Id(), updateRequest)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- return resourceMetalSSHKeyRead(d, meta)
-@@ -153,8 +155,8 @@ func resourceMetalSSHKeyDelete(d *schema.ResourceData, meta interface{}) error {
- client := meta.(*config.Config).Metal
-
- resp, err := client.SSHKeys.Delete(d.Id())
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-- return friendlyError(err)
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
-+ return equinix_errors.FriendlyError(err)
- }
-
- d.SetId("")
-diff --git a/equinix/resource_metal_virtual_circuit.go b/equinix/resource_metal_virtual_circuit.go
-index a832bc8..61f561c 100644
---- a/equinix/resource_metal_virtual_circuit.go
-+++ b/equinix/resource_metal_virtual_circuit.go
-@@ -9,6 +9,9 @@ import (
- "strconv"
- "time"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
-@@ -227,7 +230,7 @@ func resourceMetalVirtualCircuitRead(ctx context.Context, d *schema.ResourceData
- log.Printf("[DEBUG] Could not parse connection and port ID from port href %s", vc.Port.Href.Href)
- }
-
-- return setMap(d, map[string]interface{}{
-+ return equinix_schema.SetMap(d, map[string]interface{}{
- "project_id": vc.Project.ID,
- "port_id": portID,
- "vlan_id": func(d *schema.ResourceData, k string) error {
-@@ -317,13 +320,13 @@ func resourceMetalVirtualCircuitUpdate(ctx context.Context, d *schema.ResourceDa
- }
- ur.Tags = &sts
- default:
-- return friendlyError(fmt.Errorf("garbage in tags: %s", ts))
-+ return equinix_errors.FriendlyError(fmt.Errorf("garbage in tags: %s", ts))
- }
- }
-
- if !reflect.DeepEqual(ur, packngo.VCUpdateRequest{}) {
- if _, _, err := client.VirtualCircuits.Update(d.Id(), &ur, nil); err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- }
- return resourceMetalVirtualCircuitRead(ctx, d, meta)
-@@ -334,8 +337,8 @@ func resourceMetalVirtualCircuitDelete(ctx context.Context, d *schema.ResourceDa
- client := meta.(*config.Config).Metal
-
- resp, err := client.VirtualCircuits.Delete(d.Id())
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-- return friendlyError(err)
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
-+ return equinix_errors.FriendlyError(err)
- }
-
- deleteWaiter := getVCStateWaiter(
-@@ -347,7 +350,7 @@ func resourceMetalVirtualCircuitDelete(ctx context.Context, d *schema.ResourceDa
- )
-
- _, err = deleteWaiter.WaitForStateContext(ctx)
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(nil, err) != nil {
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(nil, err) != nil {
- return fmt.Errorf("Error deleting virtual circuit %s: %s", d.Id(), err)
- }
- d.SetId("")
-diff --git a/equinix/resource_metal_vlan.go b/equinix/resource_metal_vlan.go
-index 2b39fcc..0dc8b95 100644
---- a/equinix/resource_metal_vlan.go
-+++ b/equinix/resource_metal_vlan.go
-@@ -4,6 +4,8 @@ import (
- "errors"
- "path"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -86,10 +88,10 @@ func resourceMetalVlanCreate(d *schema.ResourceData, meta interface{}) error {
- vxlanRaw, vxlanOk := d.GetOk("vxlan")
-
- if !facOk && !metroOk {
-- return friendlyError(errors.New("one of facility or metro must be configured"))
-+ return equinix_errors.FriendlyError(errors.New("one of facility or metro must be configured"))
- }
- if facOk && vxlanOk {
-- return friendlyError(errors.New("you can set vxlan only for metro vlans"))
-+ return equinix_errors.FriendlyError(errors.New("you can set vxlan only for metro vlans"))
- }
-
- createRequest := &packngo.VirtualNetworkCreateRequest{
-@@ -105,7 +107,7 @@ func resourceMetalVlanCreate(d *schema.ResourceData, meta interface{}) error {
- }
- vlan, _, err := client.ProjectVirtualNetworks.Create(createRequest)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
- d.SetId(vlan.ID)
- return resourceMetalVlanRead(d, meta)
-@@ -118,8 +120,8 @@ func resourceMetalVlanRead(d *schema.ResourceData, meta interface{}) error {
- vlan, _, err := client.ProjectVirtualNetworks.Get(d.Id(),
- &packngo.GetOptions{Includes: []string{"assigned_to"}})
- if err != nil {
-- err = friendlyError(err)
-- if isNotFound(err) {
-+ err = equinix_errors.FriendlyError(err)
-+ if equinix_errors.IsNotFound(err) {
- d.SetId("")
- return nil
- }
-@@ -140,8 +142,8 @@ func resourceMetalVlanDelete(d *schema.ResourceData, meta interface{}) error {
-
- id := d.Id()
- vlan, resp, err := client.ProjectVirtualNetworks.Get(id, &packngo.GetOptions{Includes: []string{"instances", "instances.network_ports.virtual_networks", "internet_gateway"}})
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-- return friendlyError(err)
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
-+ return equinix_errors.FriendlyError(err)
- } else if err != nil {
- // missing vlans are deleted
- return nil
-@@ -158,8 +160,8 @@ func resourceMetalVlanDelete(d *schema.ResourceData, meta interface{}) error {
- if aID == id {
- _, resp, err := client.Ports.Unassign(p.ID, id)
-
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) != nil {
-- return friendlyError(err)
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) != nil {
-+ return equinix_errors.FriendlyError(err)
- }
- }
- }
-@@ -168,5 +170,5 @@ func resourceMetalVlanDelete(d *schema.ResourceData, meta interface{}) error {
-
- // TODO(displague) do we need to unassign gateway connections before delete?
-
-- return friendlyError(ignoreResponseErrors(httpForbidden, httpNotFound)(client.ProjectVirtualNetworks.Delete(id)))
-+ return equinix_errors.FriendlyError(equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(client.ProjectVirtualNetworks.Delete(id)))
- }
-diff --git a/equinix/resource_metal_vrf.go b/equinix/resource_metal_vrf.go
-index 4f35916..559e9df 100644
---- a/equinix/resource_metal_vrf.go
-+++ b/equinix/resource_metal_vrf.go
-@@ -4,6 +4,9 @@ import (
- "context"
- "log"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-+ equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/packethost/packngo"
-@@ -72,7 +75,7 @@ func resourceMetalVRFCreate(ctx context.Context, d *schema.ResourceData, meta in
- projectId := d.Get("project_id").(string)
- vrf, _, err := client.VRFs.Create(projectId, createRequest)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- d.SetId(vrf.ID)
-@@ -104,7 +107,7 @@ func resourceMetalVRFUpdate(ctx context.Context, d *schema.ResourceData, meta in
-
- _, _, err := client.VRFs.Update(d.Id(), updateRequest)
- if err != nil {
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-
- return resourceMetalVRFRead(ctx, d, meta)
-@@ -118,7 +121,7 @@ func resourceMetalVRFRead(ctx context.Context, d *schema.ResourceData, meta inte
-
- vrf, _, err := client.VRFs.Get(d.Id(), getOpts)
- if err != nil {
-- if isNotFound(err) || isForbidden(err) {
-+ if equinix_errors.IsNotFound(err) || equinix_errors.IsForbidden(err) {
- log.Printf("[WARN] VRF (%s) not accessible, removing from state", d.Id())
- d.SetId("")
-
-@@ -135,7 +138,7 @@ func resourceMetalVRFRead(ctx context.Context, d *schema.ResourceData, meta inte
- "project_id": vrf.Project.ID,
- }
-
-- return setMap(d, m)
-+ return equinix_schema.SetMap(d, m)
- }
-
- func resourceMetalVRFDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) error {
-@@ -143,9 +146,9 @@ func resourceMetalVRFDelete(ctx context.Context, d *schema.ResourceData, meta in
- client := meta.(*config.Config).Metal
-
- resp, err := client.VRFs.Delete(d.Id())
-- if ignoreResponseErrors(httpForbidden, httpNotFound)(resp, err) == nil {
-+ if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) == nil {
- d.SetId("")
- }
-
-- return friendlyError(err)
-+ return equinix_errors.FriendlyError(err)
- }
-diff --git a/equinix/errors.go b/internal/errors/errors.go
-similarity index 66%
-rename from equinix/errors.go
-rename to internal/errors/errors.go
-index c3c5467..a50c7d5 100644
---- a/equinix/errors.go
-+++ b/internal/errors/errors.go
-@@ -1,20 +1,16 @@
--package equinix
-+package errors
-
- import (
- "fmt"
- "net/http"
-- "sort"
- "strings"
-
-- "github.com/hashicorp/go-multierror"
-- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
--
- "github.com/packethost/packngo"
- )
-
--// friendlyError improves error messages when the API error is blank or in an
-+// FriendlyError improves error messages when the API error is blank or in an
- // alternate format (as is the case with invalid token or loadbalancer errors)
--func friendlyError(err error) error {
-+func FriendlyError(err error) error {
- if e, ok := err.(*packngo.ErrorResponse); ok {
- resp := e.Response
- errors := Errors(e.Errors)
-@@ -28,7 +24,7 @@ func friendlyError(err error) error {
- return err
- }
-
--func friendlyErrorForMetalGo(err error, resp *http.Response) error {
-+func FriendlyErrorForMetalGo(err error, resp *http.Response) error {
- errors := Errors([]string{err.Error()})
- return convertToFriendlyError(errors, resp)
- }
-@@ -51,7 +47,7 @@ func convertToFriendlyError(errors Errors, resp *http.Response) error {
- return er
- }
-
--func isForbidden(err error) bool {
-+func IsForbidden(err error) bool {
- r, ok := err.(*packngo.ErrorResponse)
- if ok && r.Response != nil {
- return r.Response.StatusCode == http.StatusForbidden
-@@ -62,7 +58,7 @@ func isForbidden(err error) bool {
- return false
- }
-
--func isNotFound(err error) bool {
-+func IsNotFound(err error) bool {
- if r, ok := err.(*ErrorResponse); ok {
- return r.StatusCode == http.StatusNotFound && r.IsAPIError
- }
-@@ -96,36 +92,8 @@ func (er *ErrorResponse) Error() string {
- return ret
- }
-
--// setMap sets the map of values to ResourceData, checking and returning the
--// errors. Typically d.Set is not error checked. This helper makes checking
--// those errors less tedious. Because this works with a map, the order of the
--// errors would not be predictable, to avoid this the errors will be sorted.
--func setMap(d *schema.ResourceData, m map[string]interface{}) error {
-- errs := &multierror.Error{}
-- for key, v := range m {
-- var err error
-- if f, ok := v.(setFn); ok {
-- err = f(d, key)
-- } else {
-- if key == "router" {
-- d.Set("gateway", v)
-- }
-- err = d.Set(key, v)
-- }
--
-- if err != nil {
-- errs = multierror.Append(errs, err)
-- }
-- }
-- sort.Sort(errs)
--
-- return errs.ErrorOrNil()
--}
--
--type setFn = func(d *schema.ResourceData, key string) error
--
--// isNotAssigned matches errors reported from unassigned virtual networks
--func isNotAssigned(resp *http.Response, err error) bool {
-+// IsNotAssigned matches errors reported from unassigned virtual networks
-+func IsNotAssigned(resp *http.Response, err error) bool {
- if resp.StatusCode != http.StatusUnprocessableEntity {
- return false
- }
-@@ -139,34 +107,34 @@ func isNotAssigned(resp *http.Response, err error) bool {
- return false
- }
-
--func httpForbidden(resp *http.Response, err error) bool {
-+func HttpForbidden(resp *http.Response, err error) bool {
- if resp != nil && (resp.StatusCode != http.StatusForbidden) {
- return false
- }
-
- switch err := err.(type) {
- case *ErrorResponse, *packngo.ErrorResponse:
-- return isForbidden(err)
-+ return IsForbidden(err)
- }
-
- return false
- }
-
--func httpNotFound(resp *http.Response, err error) bool {
-+func HttpNotFound(resp *http.Response, err error) bool {
- if resp != nil && (resp.StatusCode != http.StatusNotFound) {
- return false
- }
-
- switch err := err.(type) {
- case *ErrorResponse, *packngo.ErrorResponse:
-- return isNotFound(err)
-+ return IsNotFound(err)
- }
- return false
- }
-
- // ignoreResponseErrors ignores http response errors when matched by one of the
- // provided checks
--func ignoreResponseErrors(ignore ...func(resp *http.Response, err error) bool) func(resp *packngo.Response, err error) error {
-+func IgnoreResponseErrors(ignore ...func(resp *http.Response, err error) bool) func(resp *packngo.Response, err error) error {
- return func(resp *packngo.Response, err error) error {
- var r *http.Response
- if resp != nil && resp.Response != nil {
-diff --git a/internal/schema/schema.go b/internal/schema/schema.go
-new file mode 100644
-index 0000000..426436f
---- /dev/null
-+++ b/internal/schema/schema.go
-@@ -0,0 +1,36 @@
-+package utils
-+
-+import (
-+ "sort"
-+
-+ "github.com/hashicorp/go-multierror"
-+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-+)
-+
-+type setFn = func(d *schema.ResourceData, key string) error
-+
-+// setMap sets the map of values to ResourceData, checking and returning the
-+// errors. Typically d.Set is not error checked. This helper makes checking
-+// those errors less tedious. Because this works with a map, the order of the
-+// errors would not be predictable, to avoid this the errors will be sorted.
-+func SetMap(d *schema.ResourceData, m map[string]interface{}) error {
-+ errs := &multierror.Error{}
-+ for key, v := range m {
-+ var err error
-+ if f, ok := v.(setFn); ok {
-+ err = f(d, key)
-+ } else {
-+ if key == "router" {
-+ d.Set("gateway", v)
-+ }
-+ err = d.Set(key, v)
-+ }
-+
-+ if err != nil {
-+ errs = multierror.Append(errs, err)
-+ }
-+ }
-+ sort.Sort(errs)
-+
-+ return errs.ErrorOrNil()
-+}
diff --git a/patches/0031-fix-rename-schema.go-to-set_map.go.patch b/patches/0031-fix-rename-schema.go-to-set_map.go.patch
deleted file mode 100644
index 7d93c609..00000000
--- a/patches/0031-fix-rename-schema.go-to-set_map.go.patch
+++ /dev/null
@@ -1,10 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tomas Karasek
-Date: Mon, 4 Dec 2023 13:59:24 +0100
-Subject: [PATCH 31/51] fix: rename schema.go to set_map.go
-
-
-diff --git a/internal/schema/schema.go b/internal/schema/set_map.go
-similarity index 100%
-rename from internal/schema/schema.go
-rename to internal/schema/set_map.go
diff --git a/patches/0032-fix-fixing-schemas-for-Servicetoken-and-accesspoint..patch b/patches/0032-fix-fixing-schemas-for-Servicetoken-and-accesspoint..patch
deleted file mode 100644
index 9ad839a8..00000000
--- a/patches/0032-fix-fixing-schemas-for-Servicetoken-and-accesspoint..patch
+++ /dev/null
@@ -1,155 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: srushti-patl
-Date: Fri, 1 Dec 2023 16:27:58 -0800
-Subject: [PATCH 32/51] fix: fixing schemas for Servicetoken and
- accesspoint.interface.
-
-
-diff --git a/equinix/fabric_connection_read_schema.go b/equinix/fabric_connection_read_schema.go
-index eb97614..8f478e0 100644
---- a/equinix/fabric_connection_read_schema.go
-+++ b/equinix/fabric_connection_read_schema.go
-@@ -9,6 +9,7 @@ func readServiceTokenSch() map[string]*schema.Schema {
- "type": {
- Type: schema.TypeString,
- Computed: true,
-+ Optional: true,
- Description: "Token type - VC_TOKEN",
- },
- "href": {
-@@ -332,15 +333,18 @@ func readAccessPointInterface() map[string]*schema.Schema {
- "uuid": {
- Type: schema.TypeString,
- Computed: true,
-+ Optional: true,
- Description: "Equinix-assigned interface identifier",
- },
- "id": {
-- Type: schema.TypeString,
-+ Type: schema.TypeInt,
- Computed: true,
-+ Optional: true,
- Description: "Access Point Interface id",
- },
- "type": {
- Type: schema.TypeString,
-+ Optional: true,
- Computed: true,
- Description: "Interface type- CSP",
- },
-@@ -481,6 +485,7 @@ func readFabricConnectionSideSch() map[string]*schema.Schema {
- "service_token": {
- Type: schema.TypeSet,
- Computed: true,
-+ Optional: true,
- Description: "For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets",
- Elem: &schema.Resource{
- Schema: readServiceTokenSch(),
-diff --git a/equinix/fabric_connection_schema.go b/equinix/fabric_connection_schema.go
-index 4b841d3..0d26d1e 100644
---- a/equinix/fabric_connection_schema.go
-+++ b/equinix/fabric_connection_schema.go
-@@ -247,6 +247,7 @@ func createAccessPointInterface() map[string]*schema.Schema {
- "id": {
- Type: schema.TypeInt,
- Computed: true,
-+ Optional: true,
- Description: "id",
- },
- "type": {
-diff --git a/equinix/fabric_mapping_helper.go b/equinix/fabric_mapping_helper.go
-index 5a03142..d66948b 100644
---- a/equinix/fabric_mapping_helper.go
-+++ b/equinix/fabric_mapping_helper.go
-@@ -8,16 +8,24 @@ import (
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- )
-
--func serviceTokenToFabric(serviceTokenRequest []interface{}) v4.ServiceToken {
-+func serviceTokenToFabric(serviceTokenRequest []interface{}) (v4.ServiceToken, error) {
- mappedST := v4.ServiceToken{}
- for _, str := range serviceTokenRequest {
- stMap := str.(map[string]interface{})
- stType := stMap["type"].(string)
- uuid := stMap["uuid"].(string)
-- stTypeObj := v4.ServiceTokenType(stType)
-- mappedST = v4.ServiceToken{Type_: &stTypeObj, Uuid: uuid}
-+ if stType != "" {
-+ if stType != "VC_TOKEN" {
-+ return v4.ServiceToken{}, fmt.Errorf("invalid service token type in config. Must be: VC_TOKEN; Received: %s", stType)
-+ }
-+ stTypeObj := v4.ServiceTokenType(stType)
-+ mappedST = v4.ServiceToken{Uuid: uuid, Type_: &stTypeObj}
-+ } else {
-+ mappedST = v4.ServiceToken{Uuid: uuid}
-+ }
-+
- }
-- return mappedST
-+ return mappedST, nil
- }
-
- func additionalInfoToFabric(additionalInfoRequest []interface{}) []v4.ConnectionSideAdditionalInfo {
-@@ -241,6 +249,7 @@ func simplifiedServiceProfileToFabric(profileList []interface{}) v4.SimplifiedSe
- spte := v4.ServiceProfileTypeEnum(ptype)
- uuid := plMap["uuid"].(string)
- ssp = v4.SimplifiedServiceProfile{Uuid: uuid, Type_: &spte}
-+
- }
- return ssp
- }
-@@ -715,7 +724,7 @@ func interfaceToTerra(mInterface *v4.ModelInterface) *schema.Set {
- mappedMInterfaces := make([]interface{}, len(mInterfaces))
- for _, mInterface := range mInterfaces {
- mappedMInterface := make(map[string]interface{})
-- mappedMInterface["id"] = mInterface.Id
-+ mappedMInterface["id"] = int(mInterface.Id)
- mappedMInterface["type"] = mInterface.Type_
- mappedMInterface["uuid"] = mInterface.Uuid
- mappedMInterfaces = append(mappedMInterfaces, mappedMInterface)
-diff --git a/equinix/resource_fabric_connection.go b/equinix/resource_fabric_connection.go
-index d9e1063..7746aec 100644
---- a/equinix/resource_fabric_connection.go
-+++ b/equinix/resource_fabric_connection.go
-@@ -52,7 +52,7 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- projectReq := d.Get("project").(*schema.Set).List()
- project := projectToFabric(projectReq)
- additionalInfo := d.Get("additional_info").([]interface{})
-- additionalinfo := additionalInfoToFabric(additionalInfo)
-+ additionalinfoGoToTerraState := additionalInfoToFabric(additionalInfo)
- connectionASide := v4.ConnectionSide{}
- for _, as := range aside {
- asideMap := as.(map[string]interface{})
-@@ -65,7 +65,10 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- connectionASide = v4.ConnectionSide{AccessPoint: &ap}
- }
- if len(serviceTokenRequest) != 0 {
-- mappedServiceToken := serviceTokenToFabric(serviceTokenRequest)
-+ mappedServiceToken, err := serviceTokenToFabric(serviceTokenRequest)
-+ if err != nil {
-+ return diag.FromErr(err)
-+ }
- connectionASide = v4.ConnectionSide{ServiceToken: &mappedServiceToken}
- }
- if len(additionalInfoRequest) != 0 {
-@@ -86,7 +89,10 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- connectionZSide = v4.ConnectionSide{AccessPoint: &ap}
- }
- if len(serviceTokenRequest) != 0 {
-- mappedServiceToken := serviceTokenToFabric(serviceTokenRequest)
-+ mappedServiceToken, err := serviceTokenToFabric(serviceTokenRequest)
-+ if err != nil {
-+ return diag.FromErr(err)
-+ }
- connectionZSide = v4.ConnectionSide{ServiceToken: &mappedServiceToken}
- }
- if len(additionalInfoRequest) != 0 {
-@@ -101,7 +107,7 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- Order: &order,
- Notifications: notifications,
- Bandwidth: int32(d.Get("bandwidth").(int)),
-- AdditionalInfo: additionalinfo,
-+ AdditionalInfo: additionalinfoGoToTerraState,
- Redundancy: &red,
- ASide: &connectionASide,
- ZSide: &connectionZSide,
diff --git a/patches/0033-fix-fixing-variables-and-method-names-for-additional.patch b/patches/0033-fix-fixing-variables-and-method-names-for-additional.patch
deleted file mode 100644
index 965d77aa..00000000
--- a/patches/0033-fix-fixing-variables-and-method-names-for-additional.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: srushti-patl
-Date: Mon, 4 Dec 2023 22:41:51 -0800
-Subject: [PATCH 33/51] fix: fixing variables and method names for
- additional_info parameter
-
-
-diff --git a/equinix/fabric_mapping_helper.go b/equinix/fabric_mapping_helper.go
-index d66948b..5f0b79f 100644
---- a/equinix/fabric_mapping_helper.go
-+++ b/equinix/fabric_mapping_helper.go
-@@ -28,7 +28,7 @@ func serviceTokenToFabric(serviceTokenRequest []interface{}) (v4.ServiceToken, e
- return mappedST, nil
- }
-
--func additionalInfoToFabric(additionalInfoRequest []interface{}) []v4.ConnectionSideAdditionalInfo {
-+func additionalInfoTerraToGo(additionalInfoRequest []interface{}) []v4.ConnectionSideAdditionalInfo {
- var mappedaiArray []v4.ConnectionSideAdditionalInfo
- for _, ai := range additionalInfoRequest {
- aiMap := ai.(map[string]interface{})
-diff --git a/equinix/resource_fabric_connection.go b/equinix/resource_fabric_connection.go
-index 7746aec..269df58 100644
---- a/equinix/resource_fabric_connection.go
-+++ b/equinix/resource_fabric_connection.go
-@@ -51,8 +51,8 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- aside := d.Get("a_side").(*schema.Set).List()
- projectReq := d.Get("project").(*schema.Set).List()
- project := projectToFabric(projectReq)
-- additionalInfo := d.Get("additional_info").([]interface{})
-- additionalinfoGoToTerraState := additionalInfoToFabric(additionalInfo)
-+ additionalInfoTerraConfig := d.Get("additional_info").([]interface{})
-+ additionalInfo := additionalInfoTerraToGo(additionalInfoTerraConfig)
- connectionASide := v4.ConnectionSide{}
- for _, as := range aside {
- asideMap := as.(map[string]interface{})
-@@ -72,7 +72,7 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- connectionASide = v4.ConnectionSide{ServiceToken: &mappedServiceToken}
- }
- if len(additionalInfoRequest) != 0 {
-- mappedAdditionalInfo := additionalInfoToFabric(additionalInfoRequest)
-+ mappedAdditionalInfo := additionalInfoTerraToGo(additionalInfoRequest)
- connectionASide = v4.ConnectionSide{AdditionalInfo: mappedAdditionalInfo}
- }
- }
-@@ -96,7 +96,7 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- connectionZSide = v4.ConnectionSide{ServiceToken: &mappedServiceToken}
- }
- if len(additionalInfoRequest) != 0 {
-- mappedAdditionalInfo := additionalInfoToFabric(additionalInfoRequest)
-+ mappedAdditionalInfo := additionalInfoTerraToGo(additionalInfoRequest)
- connectionZSide = v4.ConnectionSide{AdditionalInfo: mappedAdditionalInfo}
- }
- }
-@@ -107,7 +107,7 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- Order: &order,
- Notifications: notifications,
- Bandwidth: int32(d.Get("bandwidth").(int)),
-- AdditionalInfo: additionalinfoGoToTerraState,
-+ AdditionalInfo: additionalInfo,
- Redundancy: &red,
- ASide: &connectionASide,
- ZSide: &connectionZSide,
-@@ -124,7 +124,7 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- return diag.Errorf("error waiting for connection (%s) to be created: %s", d.Id(), err)
- }
-
-- awsSecrets, hasAWSSecrets := additionalInfoContainsAWSSecrets(additionalInfo)
-+ awsSecrets, hasAWSSecrets := additionalInfoContainsAWSSecrets(additionalInfoTerraConfig)
- if hasAWSSecrets {
- patchChangeOperation := []v4.ConnectionChangeOperation{
- {
diff --git a/patches/0034-docs-fix-sensitive-data-URL-474.patch b/patches/0034-docs-fix-sensitive-data-URL-474.patch
deleted file mode 100644
index 3a82b361..00000000
--- a/patches/0034-docs-fix-sensitive-data-URL-474.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Marques Johansson
-Date: Wed, 6 Dec 2023 13:14:53 -0500
-Subject: [PATCH 34/51] docs: fix sensitive-data URL (#474)
-
-The current link is a 404
-
----------
-
-Signed-off-by: Marques Johansson
-
-diff --git a/docs/data-sources/equinix_metal_device.md b/docs/data-sources/equinix_metal_device.md
-index 1acc0c6..3711d1c 100644
---- a/docs/data-sources/equinix_metal_device.md
-+++ b/docs/data-sources/equinix_metal_device.md
-@@ -10,7 +10,7 @@ If you need to fetch a list of devices which meet filter criteria, you can use t
-
- ~> **Note:** All arguments including the `root_password` and `user_data` will be stored in
- the raw state as plain-text.
--[Read more about sensitive data in state](/docs/state/sensitive-data.html).
-+[Read more about sensitive data in state](https://developer.hashicorp.com/terraform/language/state/sensitive-data).
-
- ## Example Usage
-
-diff --git a/docs/resources/equinix_metal_device.md b/docs/resources/equinix_metal_device.md
-index f03faf6..14f1b22 100644
---- a/docs/resources/equinix_metal_device.md
-+++ b/docs/resources/equinix_metal_device.md
-@@ -9,7 +9,7 @@ modify, and delete devices.
-
- ~> **NOTE:** All arguments including the `root_password` and `user_data` will be stored in
- the raw state as plain-text.
--[Read more about sensitive data in state](/docs/state/sensitive-data.html).
-+[Read more about sensitive data in state](https://developer.hashicorp.com/terraform/language/state/sensitive-data).
-
- ## Example Usage
-
diff --git a/patches/0035-chore-deps-update-actions-setup-go-action-to-v5-476.patch b/patches/0035-chore-deps-update-actions-setup-go-action-to-v5-476.patch
deleted file mode 100644
index 55f830c2..00000000
--- a/patches/0035-chore-deps-update-actions-setup-go-action-to-v5-476.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Wed, 6 Dec 2023 12:26:46 -0600
-Subject: [PATCH 35/51] chore(deps): update actions/setup-go action to v5
- (#476)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[![Mend
-Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)
-
-This PR contains the following updates:
-
-| Package | Type | Update | Change |
-|---|---|---|---|
-| [actions/setup-go](https://togithub.com/actions/setup-go) | action |
-major | `v4` -> `v5` |
-
----
-
-### Release Notes
-
-
-actions/setup-go (actions/setup-go)
-
-### [`v5`](https://togithub.com/actions/setup-go/compare/v4...v5)
-
-[Compare Source](https://togithub.com/actions/setup-go/compare/v4...v5)
-
-
-
----
-
-### Configuration
-
-📅 **Schedule**: Branch creation - At any time (no schedule defined),
-Automerge - At any time (no schedule defined).
-
-🚦 **Automerge**: Disabled by config. Please merge this manually once you
-are satisfied.
-
-♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
-rebase/retry checkbox.
-
-🔕 **Ignore**: Close this PR and you won't be reminded about this update
-again.
-
----
-
-- [ ] If you want to rebase/retry this PR, check
-this box
-
----
-
-This PR has been generated by [Mend
-Renovate](https://www.mend.io/free-developer-tools/renovate/). View
-repository job log
-[here](https://developer.mend.io/github/equinix/terraform-provider-equinix).
-
-
-
-Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
-
-diff --git a/.github/workflows/acctest.yml b/.github/workflows/acctest.yml
-index 822bf66..5ba24e3 100644
---- a/.github/workflows/acctest.yml
-+++ b/.github/workflows/acctest.yml
-@@ -54,7 +54,7 @@ jobs:
- ref: ${{ github.event.pull_request.head.sha || github.ref }}
-
- - name: Set up Go
-- uses: actions/setup-go@v4
-+ uses: actions/setup-go@v5
- with:
- go-version-file: './go.mod'
- id: go
-@@ -88,7 +88,7 @@ jobs:
- ref: ${{ github.event.pull_request.head.sha || github.ref }}
-
- - name: Set up Go
-- uses: actions/setup-go@v4
-+ uses: actions/setup-go@v5
- with:
- go-version-file: './go.mod'
- id: go
-diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
-index ba377b5..2245393 100644
---- a/.github/workflows/release.yml
-+++ b/.github/workflows/release.yml
-@@ -30,7 +30,7 @@ jobs:
- fetch-depth: 0
-
- - name: Set up Go
-- uses: actions/setup-go@v4
-+ uses: actions/setup-go@v5
- with:
- go-version-file: './go.mod'
- id: go
-diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
-index be60446..9190df4 100644
---- a/.github/workflows/test.yml
-+++ b/.github/workflows/test.yml
-@@ -15,7 +15,7 @@ jobs:
- uses: actions/checkout@v4
-
- - name: Set up Go
-- uses: actions/setup-go@v4
-+ uses: actions/setup-go@v5
- with:
- go-version-file: './go.mod'
- id: go
diff --git a/patches/0036-refactor-move-data-conversion-code-to-internal-conve.patch b/patches/0036-refactor-move-data-conversion-code-to-internal-conve.patch
deleted file mode 100644
index b95a62f3..00000000
--- a/patches/0036-refactor-move-data-conversion-code-to-internal-conve.patch
+++ /dev/null
@@ -1,940 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kar=C3=A1sek?=
-
-Date: Thu, 7 Dec 2023 16:18:31 +0100
-Subject: [PATCH 36/51] refactor: move data conversion code to
- internal/converters (#473)
-
-This PR is part of a refactoring effort (#106). It moves some helper
-code to another internal subpackage.
-
-diff --git a/equinix/data_source_ecx_l2_sellerprofile.go b/equinix/data_source_ecx_l2_sellerprofile.go
-index 6454b94..1490754 100644
---- a/equinix/data_source_ecx_l2_sellerprofile.go
-+++ b/equinix/data_source_ecx_l2_sellerprofile.go
-@@ -6,6 +6,8 @@ import (
- "fmt"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/hashcode"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/equinix/ecx-go/v2"
-@@ -349,19 +351,19 @@ func ecxL2ServiceProfileSpeedBandHash(v interface{}) int {
- m := v.(map[string]interface{})
- buf.WriteString(fmt.Sprintf("%d-", m[ecxL2ServiceProfileSpeedBandSchemaNames["Speed"]].(int)))
- buf.WriteString(fmt.Sprintf("%s-", m[ecxL2ServiceProfileSpeedBandSchemaNames["SpeedUnit"]].(string)))
-- return hashcodeString(buf.String())
-+ return hashcode.String(buf.String())
- }
-
- func ecxL2SellerProfileMetroHash(v interface{}) int {
- var buf bytes.Buffer
- m := v.(map[string]interface{})
- buf.WriteString(fmt.Sprintf("%s-", m[ecxL2SellerProfileMetrosSchemaNames["Code"]].(string)))
-- return hashcodeString(buf.String())
-+ return hashcode.String(buf.String())
- }
-
- func ecxL2SellerProfileAdditionalInfoHash(v interface{}) int {
- var buf bytes.Buffer
- m := v.(map[string]interface{})
- buf.WriteString(fmt.Sprintf("%s-", m[ecxL2SellerProfileAdditionalInfosSchemaNames["Name"]].(string)))
-- return hashcodeString(buf.String())
-+ return hashcode.String(buf.String())
- }
-diff --git a/equinix/data_source_metal_facility.go b/equinix/data_source_metal_facility.go
-index 5398fd2..95d0a3b 100644
---- a/equinix/data_source_metal_facility.go
-+++ b/equinix/data_source_metal_facility.go
-@@ -4,6 +4,8 @@ import (
- "fmt"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
- "github.com/equinix/terraform-provider-equinix/internal/config"
-@@ -118,7 +120,7 @@ func dataSourceMetalFacilityRead(d *schema.ResourceData, meta interface{}) error
- for _, f := range facilities {
- if f.Code == code {
- if dfOk {
-- unsupported := difference(convertStringArr(dfRaw.(*schema.Set).List()), f.Features)
-+ unsupported := converters.Difference(converters.IfArrToStringArr(dfRaw.(*schema.Set).List()), f.Features)
- if len(unsupported) > 0 {
- return fmt.Errorf("facililty %s doesn't have feature(s) %v", f.Code, unsupported)
- }
-diff --git a/equinix/data_source_metal_ip_block_ranges.go b/equinix/data_source_metal_ip_block_ranges.go
-index 17b97f0..b76442b 100644
---- a/equinix/data_source_metal_ip_block_ranges.go
-+++ b/equinix/data_source_metal_ip_block_ranges.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -29,7 +31,7 @@ func dataSourceMetalIPBlockRanges() *schema.Resource {
- Type: schema.TypeString,
- Description: "Metro code filtering the IP blocks. Global IPv4 blocks will be listed anyway. If you omit this and facility, all the block from the project will be listed",
- Optional: true,
-- StateFunc: toLower,
-+ StateFunc: converters.ToLowerIf,
- },
- "public_ipv4": {
- Type: schema.TypeList,
-diff --git a/equinix/data_source_metal_plans.go b/equinix/data_source_metal_plans.go
-index 1edf8d0..3893ae3 100644
---- a/equinix/data_source_metal_plans.go
-+++ b/equinix/data_source_metal_plans.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/equinix/terraform-provider-equinix/internal/datalist"
-@@ -108,10 +110,10 @@ func flattenPlan(rawPlan interface{}, meta interface{}, extra map[string]interfa
- metros = append(metros, m.Code)
- }
-
-- flattenedFacs := schema.NewSet(schema.HashString, stringArrToIfArr(facs))
-- flattenedMetros := schema.NewSet(schema.HashString, stringArrToIfArr(metros))
-+ flattenedFacs := schema.NewSet(schema.HashString, converters.StringArrToIfArr(facs))
-+ flattenedMetros := schema.NewSet(schema.HashString, converters.StringArrToIfArr(metros))
- flattenedDepTypes := schema.NewSet(schema.HashString,
-- stringArrToIfArr(plan.DeploymentTypes))
-+ converters.StringArrToIfArr(plan.DeploymentTypes))
-
- flattenedPlan := map[string]interface{}{
- "id": plan.ID,
-diff --git a/equinix/data_source_metal_spot_market_price.go b/equinix/data_source_metal_spot_market_price.go
-index 1684d99..9960869 100644
---- a/equinix/data_source_metal_spot_market_price.go
-+++ b/equinix/data_source_metal_spot_market_price.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-@@ -25,7 +27,7 @@ func dataSourceSpotMarketPrice() *schema.Resource {
- Description: "Name of the metro",
- ConflictsWith: []string{"facility"},
- Optional: true,
-- StateFunc: toLower,
-+ StateFunc: converters.ToLowerIf,
- },
- "plan": {
- Type: schema.TypeString,
-diff --git a/equinix/data_source_metal_vlan.go b/equinix/data_source_metal_vlan.go
-index cb87258..11a952e 100644
---- a/equinix/data_source_metal_vlan.go
-+++ b/equinix/data_source_metal_vlan.go
-@@ -3,6 +3,8 @@ package equinix
- import (
- "fmt"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
-@@ -47,7 +49,7 @@ func dataSourceMetalVlan() *schema.Resource {
- Computed: true,
- ConflictsWith: []string{"vlan_id", "facility"},
- Description: "Metro where the VLAN is deployed",
-- StateFunc: toLower,
-+ StateFunc: converters.ToLowerIf,
- },
- "vlan_id": {
- Type: schema.TypeString,
-diff --git a/equinix/helpers_device.go b/equinix/helpers_device.go
-index 0428203..028ce80 100644
---- a/equinix/helpers_device.go
-+++ b/equinix/helpers_device.go
-@@ -12,6 +12,8 @@ import (
- "sync"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-
- metalv1 "github.com/equinix-labs/metal-go/metal/v1"
-@@ -49,7 +51,7 @@ func ifToIPCreateRequest(m interface{}) packngo.IPAddressCreateRequest {
- iacr.Public = true
- }
- iacr.CIDR = ia["cidr"].(int)
-- iacr.Reservations = convertStringArr(ia["reservation_ids"].([]interface{}))
-+ iacr.Reservations = converters.IfArrToStringArr(ia["reservation_ids"].([]interface{}))
- return iacr
- }
-
-@@ -269,7 +271,7 @@ func getDeviceMap(device metalv1.Device) map[string]interface{} {
- "ipxe_script_url": device.GetIpxeScriptUrl(),
- "always_pxe": device.GetAlwaysPxe(),
- "root_password": device.GetRootPassword(),
-- "tags": stringArrToIfArr(device.GetTags()),
-+ "tags": converters.StringArrToIfArr(device.GetTags()),
- "access_public_ipv6": networkInfo.PublicIPv6,
- "access_public_ipv4": networkInfo.PublicIPv4,
- "access_private_ipv4": networkInfo.PrivateIPv4,
-diff --git a/equinix/helpers_device_test.go b/equinix/helpers_device_test.go
-index f57c714..1f9dc75 100644
---- a/equinix/helpers_device_test.go
-+++ b/equinix/helpers_device_test.go
-@@ -6,6 +6,8 @@ import (
- "testing"
- "time"
-
-+ "golang.org/x/exp/slices"
-+
- "github.com/packethost/packngo"
- )
-
-@@ -79,7 +81,7 @@ func Test_waitUntilReservationProvisionable(t *testing.T) {
- *invoked++
-
- var device *packngo.Device
-- if opts != nil && contains(opts.Includes, "device") {
-+ if opts != nil && slices.Contains(opts.Includes, "device") {
- device = &packngo.Device{ID: response.id}
- }
- return &packngo.HardwareReservation{
-@@ -114,7 +116,7 @@ func Test_waitUntilReservationProvisionable(t *testing.T) {
- *invoked++
-
- var device *packngo.Device
-- if opts != nil && contains(opts.Includes, "device") {
-+ if opts != nil && slices.Contains(opts.Includes, "device") {
- device = &packngo.Device{ID: response.id}
- }
- return &packngo.HardwareReservation{
-diff --git a/equinix/port_helpers.go b/equinix/port_helpers.go
-index 2c11341..29faa37 100644
---- a/equinix/port_helpers.go
-+++ b/equinix/port_helpers.go
-@@ -6,6 +6,10 @@ import (
- "strings"
- "time"
-
-+ "golang.org/x/exp/slices"
-+
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
-@@ -119,12 +123,12 @@ func specifiedVlanIds(d *schema.ResourceData) []string {
- // either vlan_ids or vxlan_ids should be set, TF should ensure that
- vlanIdsRaw, vlanIdsOk := d.GetOk("vlan_ids")
- if vlanIdsOk {
-- return convertStringArr(vlanIdsRaw.(*schema.Set).List())
-+ return converters.IfArrToStringArr(vlanIdsRaw.(*schema.Set).List())
- }
-
- vxlanIdsRaw, vxlanIdsOk := d.GetOk("vxlan_ids")
- if vxlanIdsOk {
-- return convertIntArr(vxlanIdsRaw.(*schema.Set).List())
-+ return converters.IfArrToIntStringArr(vxlanIdsRaw.(*schema.Set).List())
- }
- return []string{}
- }
-@@ -133,14 +137,14 @@ func batchVlans(ctx context.Context, start time.Time, removeOnly bool) func(*Cli
- return func(cpr *ClientPortResource) error {
- var vlansToAssign []string
- var currentNative string
-- vlansToRemove := difference(
-+ vlansToRemove := converters.Difference(
- attachedVlanIds(cpr.Port),
- specifiedVlanIds(cpr.Resource),
- )
- if !removeOnly {
- currentNative = getCurrentNative(cpr.Port)
-
-- vlansToAssign = difference(
-+ vlansToAssign = converters.Difference(
- specifiedVlanIds(cpr.Resource),
- attachedVlanIds(cpr.Port),
- )
-@@ -271,7 +275,7 @@ func makeDisbond(cpr *ClientPortResource) error {
-
- func convertToL2(cpr *ClientPortResource) error {
- l2, l2Ok := cpr.Resource.GetOkExists("layer2")
-- isLayer2 := contains(l2Types, cpr.Port.NetworkType)
-+ isLayer2 := slices.Contains(l2Types, cpr.Port.NetworkType)
-
- if l2Ok && l2.(bool) && !isLayer2 {
- port, _, err := cpr.Client.Ports.ConvertToLayerTwo(cpr.Port.ID)
-@@ -285,7 +289,7 @@ func convertToL2(cpr *ClientPortResource) error {
-
- func convertToL3(cpr *ClientPortResource) error {
- l2, l2Ok := cpr.Resource.GetOkExists("layer2")
-- isLayer2 := contains(l2Types, cpr.Port.NetworkType)
-+ isLayer2 := slices.Contains(l2Types, cpr.Port.NetworkType)
-
- if l2Ok && !l2.(bool) && isLayer2 {
- ips := []packngo.AddressRequest{
-@@ -327,7 +331,7 @@ func portSanityChecks(cpr *ClientPortResource) error {
- if nativeVlanOk {
- nativeVlan := nativeVlanRaw.(string)
- vlans := specifiedVlanIds(cpr.Resource)
-- if !contains(vlans, nativeVlan) {
-+ if !slices.Contains(vlans, nativeVlan) {
- return fmt.Errorf("the native VLAN to be set is not (being) assigned to the port")
- }
- if len(vlans) < 2 {
-diff --git a/equinix/provider_test.go b/equinix/provider_test.go
-index 27f650d..590bf84 100644
---- a/equinix/provider_test.go
-+++ b/equinix/provider_test.go
-@@ -9,6 +9,8 @@ import (
- "strings"
- "testing"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/hashcode"
-+
- "github.com/equinix/ecx-go/v2"
- "github.com/equinix/rest-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
-@@ -378,7 +380,7 @@ func TestProvider_schemaSetToMap(t *testing.T) {
- }
- setFunc := func(v interface{}) int {
- i := v.(item)
-- return hashcodeString(i.id)
-+ return hashcode.String(i.id)
- }
- items := []interface{}{
- item{"id1", 100, 200},
-diff --git a/equinix/resource_metal_connection.go b/equinix/resource_metal_connection.go
-index 1475b24..d69e88e 100644
---- a/equinix/resource_metal_connection.go
-+++ b/equinix/resource_metal_connection.go
-@@ -7,6 +7,8 @@ import (
- "strconv"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
-@@ -94,7 +96,7 @@ func resourceMetalConnection() *schema.Resource {
- Description: "Metro where the connection will be created",
- ConflictsWith: []string{"facility"},
- ForceNew: true,
-- StateFunc: toLower,
-+ StateFunc: converters.ToLowerIf,
- },
- "redundancy": {
- Type: schema.TypeString,
-@@ -223,7 +225,7 @@ func resourceMetalConnectionCreate(d *schema.ResourceData, meta interface{}) err
- vlans := []int{}
- vlansNum := d.Get("vlans.#").(int)
- if vlansNum > 0 {
-- vlans = convertIntArr2(d.Get("vlans").([]interface{}))
-+ vlans = converters.IfArrToIntArr(d.Get("vlans").([]interface{}))
- }
- connRedundancy := packngo.ConnectionRedundancy(d.Get("redundancy").(string))
-
-@@ -256,7 +258,7 @@ func resourceMetalConnectionCreate(d *schema.ResourceData, meta interface{}) err
- // this could be generalized, see $ grep "d.Get(\"tags" *
- tags := d.Get("tags.#").(int)
- if tags > 0 {
-- connReq.Tags = convertStringArr(d.Get("tags").([]interface{}))
-+ connReq.Tags = converters.IfArrToStringArr(d.Get("tags").([]interface{}))
- }
-
- if metOk {
-@@ -381,8 +383,8 @@ func resourceMetalConnectionUpdate(d *schema.ResourceData, meta interface{}) err
-
- if connType == packngo.ConnectionShared {
- old, new := d.GetChange("vlans")
-- oldVlans := convertIntArr2(old.([]interface{}))
-- newVlans := convertIntArr2(new.([]interface{}))
-+ oldVlans := converters.IfArrToIntArr(old.([]interface{}))
-+ newVlans := converters.IfArrToIntArr(new.([]interface{}))
- maxVlans := int(math.Max(float64(len(oldVlans)), float64(len(newVlans))))
-
- ports := d.Get("ports").([]interface{})
-diff --git a/equinix/resource_metal_device.go b/equinix/resource_metal_device.go
-index b474774..e1a05c7 100644
---- a/equinix/resource_metal_device.go
-+++ b/equinix/resource_metal_device.go
-@@ -12,6 +12,10 @@ import (
- "sort"
- "time"
-
-+ "golang.org/x/exp/slices"
-+
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-
- "github.com/equinix/terraform-provider-equinix/internal/config"
-@@ -98,7 +102,7 @@ func resourceMetalDevice() *schema.Resource {
- }
- return old == new
- },
-- StateFunc: toLower,
-+ StateFunc: converters.ToLowerIf,
- },
- "facilities": {
- Type: schema.TypeList,
-@@ -110,12 +114,12 @@ func resourceMetalDevice() *schema.Resource {
- MinItems: 1,
- DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
- fsRaw := d.Get("facilities")
-- fs := convertStringArr(fsRaw.([]interface{}))
-+ fs := converters.IfArrToStringArr(fsRaw.([]interface{}))
- df := d.Get("deployed_facility").(string)
-- if contains(fs, df) {
-+ if slices.Contains(fs, df) {
- return true
- }
-- if contains(fs, "any") && (len(df) != 0) {
-+ if slices.Contains(fs, "any") && (len(df) != 0) {
- return true
- }
- return false
-@@ -401,7 +405,7 @@ func resourceMetalDevice() *schema.Resource {
- ValidateFunc: func(val interface{}, key string) (warns []string, errs []error) {
- attribute := val.(string)
- supportedAttributes := []string{"custom_data", "user_data"}
-- if !contains(supportedAttributes, attribute) {
-+ if !slices.Contains(supportedAttributes, attribute) {
- errs = []error{fmt.Errorf("behavior.allow_changes was given %s, but only supports %v", attribute, supportedAttributes)}
- }
- return
-@@ -463,11 +467,11 @@ func reinstallDisabledAndNoChangesAllowed(attribute string) customdiff.ResourceC
- behavior_list := behavior.([]interface{})
- behavior_config := behavior_list[0].(map[string]interface{})
-
-- allow_changes := convertStringArr(behavior_config["allow_changes"].([]interface{}))
-+ allow_changes := converters.IfArrToStringArr(behavior_config["allow_changes"].([]interface{}))
-
- // This means we got a valid behavior specification, so we set ForceNew
- // to true if behavior.allow_changes includes the attribute that is changing
-- return !contains(allow_changes, attribute)
-+ return !slices.Contains(allow_changes, attribute)
- }
-
- // This means reinstall is enabled, so it doesn't matter what the behavior
-@@ -504,7 +508,7 @@ func resourceMetalDeviceCreate(ctx context.Context, d *schema.ResourceData, meta
- }
-
- if facsOk {
-- createRequest.Facility = convertStringArr(facsRaw.([]interface{}))
-+ createRequest.Facility = converters.IfArrToStringArr(facsRaw.([]interface{}))
- }
-
- if metroOk {
-@@ -567,17 +571,17 @@ func resourceMetalDeviceCreate(ctx context.Context, d *schema.ResourceData, meta
-
- projectKeys := d.Get("project_ssh_key_ids.#").(int)
- if projectKeys > 0 {
-- createRequest.ProjectSSHKeys = convertStringArr(d.Get("project_ssh_key_ids").([]interface{}))
-+ createRequest.ProjectSSHKeys = converters.IfArrToStringArr(d.Get("project_ssh_key_ids").([]interface{}))
- }
-
- userKeys := d.Get("user_ssh_key_ids.#").(int)
- if userKeys > 0 {
-- createRequest.UserSSHKeys = convertStringArr(d.Get("user_ssh_key_ids").([]interface{}))
-+ createRequest.UserSSHKeys = converters.IfArrToStringArr(d.Get("user_ssh_key_ids").([]interface{}))
- }
-
- tags := d.Get("tags.#").(int)
- if tags > 0 {
-- createRequest.Tags = convertStringArr(d.Get("tags").([]interface{}))
-+ createRequest.Tags = converters.IfArrToStringArr(d.Get("tags").([]interface{}))
- }
-
- if attr, ok := d.GetOk("storage"); ok {
-diff --git a/equinix/resource_metal_organization_member.go b/equinix/resource_metal_organization_member.go
-index b7023c5..585a6ec 100644
---- a/equinix/resource_metal_organization_member.go
-+++ b/equinix/resource_metal_organization_member.go
-@@ -6,6 +6,8 @@ import (
- "path"
- "strings"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
-@@ -127,8 +129,8 @@ func resourceMetalOrganizationMemberCreate(d *schema.ResourceData, meta interfac
- email := d.Get("invitee").(string)
- createRequest := &packngo.InvitationCreateRequest{
- Invitee: email,
-- Roles: convertStringArr(d.Get("roles").(*schema.Set).List()),
-- ProjectsIDs: convertStringArr(d.Get("projects_ids").(*schema.Set).List()),
-+ Roles: converters.IfArrToStringArr(d.Get("roles").(*schema.Set).List()),
-+ ProjectsIDs: converters.IfArrToStringArr(d.Get("projects_ids").(*schema.Set).List()),
- Message: strings.TrimSpace(d.Get("message").(string)),
- }
-
-@@ -200,8 +202,8 @@ func resourceMetalOrganizationMemberRead(d *schema.ResourceData, meta interface{
- }
- return equinix_schema.SetMap(d, map[string]interface{}{
- "state": "active",
-- "roles": stringArrToIfArr(member.Member.Roles),
-- "projects_ids": stringArrToIfArr(projectIDs),
-+ "roles": converters.StringArrToIfArr(member.Member.Roles),
-+ "projects_ids": converters.StringArrToIfArr(projectIDs),
- "organization_id": path.Base(member.Member.Organization.URL),
- })
- } else if member.isInvitation() {
-diff --git a/equinix/resource_metal_port.go b/equinix/resource_metal_port.go
-index a37ef5d..ed173af 100644
---- a/equinix/resource_metal_port.go
-+++ b/equinix/resource_metal_port.go
-@@ -5,6 +5,8 @@ import (
- "log"
- "time"
-
-+ "golang.org/x/exp/slices"
-+
- equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
-@@ -170,8 +172,8 @@ func resourceMetalPortRead(ctx context.Context, d *schema.ResourceData, meta int
- "bonded": port.Data.Bonded,
- "disbond_supported": port.DisbondOperationSupported,
- }
-- l2 := contains(l2Types, port.NetworkType)
-- l3 := contains(l3Types, port.NetworkType)
-+ l2 := slices.Contains(l2Types, port.NetworkType)
-+ l3 := slices.Contains(l3Types, port.NetworkType)
-
- if l2 {
- m["layer2"] = true
-diff --git a/equinix/resource_metal_reserved_ip_block.go b/equinix/resource_metal_reserved_ip_block.go
-index c518018..83cf6bd 100644
---- a/equinix/resource_metal_reserved_ip_block.go
-+++ b/equinix/resource_metal_reserved_ip_block.go
-@@ -9,6 +9,8 @@ import (
- "strings"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
-@@ -134,7 +136,7 @@ func resourceMetalReservedIPBlock() *schema.Resource {
- }
- return fromState == fromHCL
- },
-- StateFunc: toLower,
-+ StateFunc: converters.ToLowerIf,
- }
- reservedBlockSchema["description"] = &schema.Schema{
- Type: schema.TypeString,
-diff --git a/equinix/resource_metal_spot_market_request.go b/equinix/resource_metal_spot_market_request.go
-index 4a1a4e4..5320350 100644
---- a/equinix/resource_metal_spot_market_request.go
-+++ b/equinix/resource_metal_spot_market_request.go
-@@ -9,6 +9,8 @@ import (
- "strconv"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
-@@ -114,7 +116,7 @@ func resourceMetalSpotMarketRequest() *schema.Resource {
- Optional: true,
- ForceNew: true,
- ConflictsWith: []string{"facilities"},
-- StateFunc: toLower,
-+ StateFunc: converters.ToLowerIf,
- },
- "instance_parameters": {
- Type: schema.TypeList,
-diff --git a/equinix/resource_metal_virtual_circuit.go b/equinix/resource_metal_virtual_circuit.go
-index 61f561c..588b0f0 100644
---- a/equinix/resource_metal_virtual_circuit.go
-+++ b/equinix/resource_metal_virtual_circuit.go
-@@ -9,6 +9,8 @@ import (
- "strconv"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
-@@ -165,7 +167,7 @@ func resourceMetalVirtualCircuitCreate(ctx context.Context, d *schema.ResourceDa
-
- tags := d.Get("tags.#").(int)
- if tags > 0 {
-- vncr.Tags = convertStringArr(d.Get("tags").([]interface{}))
-+ vncr.Tags = converters.IfArrToStringArr(d.Get("tags").([]interface{}))
- }
-
- if nniVlan, ok := d.GetOk("nni_vlan"); ok {
-diff --git a/equinix/resource_metal_vlan.go b/equinix/resource_metal_vlan.go
-index 0dc8b95..86873da 100644
---- a/equinix/resource_metal_vlan.go
-+++ b/equinix/resource_metal_vlan.go
-@@ -4,6 +4,8 @@ import (
- "errors"
- "path"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/converters"
-+
- equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-
- "github.com/equinix/terraform-provider-equinix/internal/config"
-@@ -66,7 +68,7 @@ func resourceMetalVlan() *schema.Resource {
- }
- return old == new
- },
-- StateFunc: toLower,
-+ StateFunc: converters.ToLowerIf,
- },
- "vxlan": {
- Type: schema.TypeInt,
-diff --git a/equinix/resource_network_device_link.go b/equinix/resource_network_device_link.go
-index c7feabb..756b67c 100644
---- a/equinix/resource_network_device_link.go
-+++ b/equinix/resource_network_device_link.go
-@@ -5,6 +5,8 @@ import (
- "fmt"
- "time"
-
-+ "github.com/equinix/terraform-provider-equinix/internal/hashcode"
-+
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/equinix/ne-go"
-@@ -491,7 +493,7 @@ func networkDeviceLinkDeviceKey(v interface{}) string {
- }
-
- func networkDeviceLinkDeviceHash(v interface{}) int {
-- return hashcodeString(networkDeviceLinkDeviceKey(v))
-+ return hashcode.String(networkDeviceLinkDeviceKey(v))
- }
-
- func networkDeviceLinkConnectionKey(v interface{}) string {
-@@ -513,5 +515,5 @@ func networkDeviceLinkConnectionKey(v interface{}) string {
- }
-
- func networkDeviceLinkConnectionHash(v interface{}) int {
-- return hashcodeString(networkDeviceLinkConnectionKey(v))
-+ return hashcode.String(networkDeviceLinkConnectionKey(v))
- }
-diff --git a/go.sum b/go.sum
-index 7c37dde..dcf2004 100644
---- a/go.sum
-+++ b/go.sum
-@@ -197,8 +197,6 @@ github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmy
- github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
- github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
- github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
--github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 h1:KLq8BE0KwCL+mmXnjLWEAOYO+2l2AE4YMmqG1ZpZHBs=
--github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
- github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg=
- github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
- github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
-@@ -244,6 +242,7 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH
- github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
- github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
- github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-+github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
- 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=
-@@ -260,14 +259,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m
- github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
- github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
- github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
--github.com/equinix-labs/fabric-go v0.7.0 h1:AiiVPD4aE/aeiuCK7Fhsq4bvjmJ5RzmZ3boKnp0dl4g=
--github.com/equinix-labs/fabric-go v0.7.0/go.mod h1:oqgGS3GOI8hHGPJKsAwDOEX0qRHl52sJGvwA/zMSd90=
- github.com/equinix-labs/fabric-go v0.7.1 h1:4yk0IKXMcc72rkRVbcYHokAEc1uUB06t6NXK+DtSsbs=
- github.com/equinix-labs/fabric-go v0.7.1/go.mod h1:oqgGS3GOI8hHGPJKsAwDOEX0qRHl52sJGvwA/zMSd90=
--github.com/equinix-labs/metal-go v0.25.1 h1:uL83lRKyAcOfab+9r2xujAuLD8lTsqv89+SPvVFkcBM=
--github.com/equinix-labs/metal-go v0.25.1/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
--github.com/equinix-labs/metal-go v0.26.0 h1:0rBTyjF8j58dg++kMFLRi9Jhs5gng5BFn5Y0bl5NPtM=
--github.com/equinix-labs/metal-go v0.26.0/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
- github.com/equinix-labs/metal-go v0.27.0 h1:p5Bqus/gSs5oQezHWXWpc0IzkQl06+yZgbXT5jB7AWs=
- github.com/equinix-labs/metal-go v0.27.0/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
- github.com/equinix/ecx-go/v2 v2.3.1 h1:gFcAIeyaEUw7S8ebqApmT7E/S7pC7Ac3wgScp89fkPU=
-@@ -284,8 +277,8 @@ github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYF
- github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
- github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
- github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
--github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4=
--github.com/go-git/go-git/v5 v5.8.1 h1:Zo79E4p7TRk0xoRgMq0RShiTHGKcKI4+DI6BfJc/Q+A=
-+github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
-+github.com/go-git/go-git/v5 v5.9.0 h1:cD9SFA7sHVRdJ7AYck1ZaAa/yeuBvGPxwXDL8cxrObY=
- 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=
-@@ -346,7 +339,6 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
- github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
- github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
- github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
--github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
- github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
- github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
- github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-@@ -375,7 +367,6 @@ github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc=
- github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A=
- 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.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
- github.com/google/uuid v1.3.0/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=
-@@ -419,8 +410,6 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l
- github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
- github.com/hashicorp/go-plugin v1.5.1 h1:oGm7cWBaYIp3lJpx1RUEfLWophprE2EV/KUeqBYo+6k=
- github.com/hashicorp/go-plugin v1.5.1/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4=
--github.com/hashicorp/go-retryablehttp v0.7.4 h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA=
--github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
- github.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M=
- github.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
- github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
-@@ -432,13 +421,9 @@ 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/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.0 h1:fDHnU7JNFNSQebVKYhHZ0va1bC6SrPQ8fpebsvNr2w4=
--github.com/hashicorp/hc-install v0.6.0/go.mod h1:10I912u3nntx9Umo1VAeYPUUuehk0aRQJYpMwbX5wQA=
- github.com/hashicorp/hc-install v0.6.1 h1:IGxShH7AVhPaSuSJpKtVi/EFORNjO+OYVJJrAtGG2mY=
- github.com/hashicorp/hc-install v0.6.1/go.mod h1:0fW3jpg+wraYSnFDJ6Rlie3RvLf1bIqVIkzoon4KoVE=
- github.com/hashicorp/hcl/v2 v2.9.1/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg=
--github.com/hashicorp/hcl/v2 v2.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHLl8=
--github.com/hashicorp/hcl/v2 v2.18.0/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE=
- 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/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
-@@ -447,15 +432,12 @@ github.com/hashicorp/terraform-exec v0.19.0 h1:FpqZ6n50Tk95mItTSS9BjeOVUb4eg81Sp
- github.com/hashicorp/terraform-exec v0.19.0/go.mod h1:tbxUpe3JKruE9Cuf65mycSIT8KiNPZ0FkuTE3H4urQg=
- github.com/hashicorp/terraform-json v0.17.1 h1:eMfvh/uWggKmY7Pmb3T85u86E2EQg6EQHgyRwf3RkyA=
- github.com/hashicorp/terraform-json v0.17.1/go.mod h1:Huy6zt6euxaY9knPAFKjUITn8QxUFIe9VuSzb4zn/0o=
--github.com/hashicorp/terraform-plugin-docs v0.14.1 h1:MikFi59KxrP/ewrZoaowrB9he5Vu4FtvhamZFustiA4=
--github.com/hashicorp/terraform-plugin-docs v0.14.1/go.mod h1:k2NW8+t113jAus6bb5tQYQgEAX/KueE/u8X2Z45V1GM=
-+github.com/hashicorp/terraform-plugin-docs v0.16.0 h1:UmxFr3AScl6Wged84jndJIfFccGyBZn52KtMNsS12dI=
- github.com/hashicorp/terraform-plugin-docs v0.16.0/go.mod h1:M3ZrlKBJAbPMtNOPwHicGi1c+hZUh7/g0ifT/z7TVfA=
- github.com/hashicorp/terraform-plugin-go v0.19.0 h1:BuZx/6Cp+lkmiG0cOBk6Zps0Cb2tmqQpDM3iAtnhDQU=
- github.com/hashicorp/terraform-plugin-go v0.19.0/go.mod h1:EhRSkEPNoylLQntYsk5KrDHTZJh9HQoumZXbOGOXmec=
- 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.29.0 h1:wcOKYwPI9IorAJEBLzgclh3xVolO7ZorYd6U1vnok14=
--github.com/hashicorp/terraform-plugin-sdk/v2 v2.29.0/go.mod h1:qH/34G25Ugdj5FcM95cSoXzUgIbgfhVLXCcEcYaMwq8=
- github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0 h1:X7vB6vn5tON2b49ILa4W7mFAsndeqJ7bZFOGbVO+0Cc=
- github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0/go.mod h1:ydFcxbdj6klCqYEPkPvdvFKiNGKZLUs+896ODUXCyao=
- github.com/hashicorp/terraform-registry-address v0.2.2 h1:lPQBg403El8PPicg/qONZJDC6YlgCVbWDtNmmZKtBno=
-@@ -599,8 +581,6 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t
- github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8=
- github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk=
- github.com/zclconf/go-cty v1.8.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk=
--github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc=
--github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
- github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA=
- github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
- github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8=
-@@ -627,8 +607,6 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
- golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
- golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
- golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
--golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
--golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
- golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=
- golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
- golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-@@ -641,10 +619,6 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
- 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/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc=
--golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
--golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME=
--golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
- golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
- golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
- golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
-@@ -674,10 +648,6 @@ 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.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
--golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
--golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
--golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=
--golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
- golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
- golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
- golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-@@ -733,8 +703,6 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
- golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
- golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
- golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
--golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
--golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
- golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
- golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
- golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-@@ -762,8 +730,6 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri
- golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
- golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
- golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A=
--golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY=
--golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0=
- 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/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-@@ -854,8 +820,6 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
--golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
--golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
- golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
- golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
- golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-@@ -864,7 +828,7 @@ golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
- golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
- golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
- golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
--golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek=
-+golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8=
- 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=
-@@ -878,8 +842,6 @@ 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
- golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
--golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
--golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
- 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-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-@@ -937,8 +899,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
- golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
- golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
- golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
--golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
- golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-+golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8=
- 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=
-@@ -1148,8 +1110,6 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu
- google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
- google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
- google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
--google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw=
--google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
- google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg=
- google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
- google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
-diff --git a/equinix/utils.go b/internal/converters/converters.go
-similarity index 65%
-rename from equinix/utils.go
-rename to internal/converters/converters.go
-index 3ac610b..c5b9a22 100644
---- a/equinix/utils.go
-+++ b/internal/converters/converters.go
-@@ -1,20 +1,11 @@
--package equinix
-+package converters
-
- import (
- "strconv"
- "strings"
- )
-
--func contains(s []string, e string) bool {
-- for _, a := range s {
-- if a == e {
-- return true
-- }
-- }
-- return false
--}
--
--func stringArrToIfArr(sli []string) []interface{} {
-+func StringArrToIfArr(sli []string) []interface{} {
- var arr []interface{}
- for _, v := range sli {
- arr = append(arr, v)
-@@ -22,7 +13,7 @@ func stringArrToIfArr(sli []string) []interface{} {
- return arr
- }
-
--func convertStringArr(ifaceArr []interface{}) []string {
-+func IfArrToStringArr(ifaceArr []interface{}) []string {
- var arr []string
- for _, v := range ifaceArr {
- if v == nil {
-@@ -33,7 +24,7 @@ func convertStringArr(ifaceArr []interface{}) []string {
- return arr
- }
-
--func convertIntArr(ifaceArr []interface{}) []string {
-+func IfArrToIntStringArr(ifaceArr []interface{}) []string {
- var arr []string
- for _, v := range ifaceArr {
- if v == nil {
-@@ -44,7 +35,7 @@ func convertIntArr(ifaceArr []interface{}) []string {
- return arr
- }
-
--func convertIntArr2(ifaceArr []interface{}) []int {
-+func IfArrToIntArr(ifaceArr []interface{}) []int {
- var arr []int
- for _, v := range ifaceArr {
- if v == nil {
-@@ -55,12 +46,12 @@ func convertIntArr2(ifaceArr []interface{}) []int {
- return arr
- }
-
--func toLower(v interface{}) string {
-+func ToLowerIf(v interface{}) string {
- return strings.ToLower(v.(string))
- }
-
- // from https://stackoverflow.com/a/45428032
--func difference(a, b []string) []string {
-+func Difference(a, b []string) []string {
- mb := make(map[string]struct{}, len(b))
- for _, x := range b {
- mb[x] = struct{}{}
-diff --git a/equinix/hashcode.go b/internal/hashcode/hashcode.go
-similarity index 90%
-rename from equinix/hashcode.go
-rename to internal/hashcode/hashcode.go
-index 3fb5af5..20f4213 100644
---- a/equinix/hashcode.go
-+++ b/internal/hashcode/hashcode.go
-@@ -1,4 +1,4 @@
--package equinix
-+package hashcode
-
- import (
- "hash/crc32"
-@@ -11,7 +11,7 @@ import (
- // and invert it if the result is negative.
- //
- // Originally from https://github.com/hashicorp/terraform-plugin-sdk/blob/main/internal/helper/hashcode/hashcode.go
--func hashcodeString(s string) int {
-+func String(s string) int {
- v := int(crc32.ChecksumIEEE([]byte(s)))
- if v >= 0 {
- return v
diff --git a/patches/0037-Add-initial-network-error-response-support-for-Fabri.patch b/patches/0037-Add-initial-network-error-response-support-for-Fabri.patch
deleted file mode 100644
index ebab2942..00000000
--- a/patches/0037-Add-initial-network-error-response-support-for-Fabri.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tim Hogarty
-Date: Tue, 28 Nov 2023 11:26:03 -0800
-Subject: [PATCH 37/51] Add initial network error response support for Fabric
-
-
-diff --git a/equinix/resource_fabric_connection.go b/equinix/resource_fabric_connection.go
-index 269df58..a6587e2 100644
---- a/equinix/resource_fabric_connection.go
-+++ b/equinix/resource_fabric_connection.go
-@@ -114,9 +114,9 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- Project: &project,
- }
-
-- conn, _, err := client.ConnectionsApi.CreateConnection(ctx, createRequest)
-+ conn, httpResponse, err := client.ConnectionsApi.CreateConnection(ctx, createRequest)
- if err != nil {
-- return diag.FromErr(err)
-+ return networkErrorOutput(err, httpResponse)
- }
- d.SetId(conn.Uuid)
-
-@@ -134,9 +134,9 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- },
- }
-
-- _, _, patchErr := client.ConnectionsApi.UpdateConnectionByUuid(ctx, patchChangeOperation, conn.Uuid)
-+ _, patchHttpResponse, patchErr := client.ConnectionsApi.UpdateConnectionByUuid(ctx, patchChangeOperation, conn.Uuid)
- if patchErr != nil {
-- return diag.FromErr(err)
-+ return networkErrorOutput(err, patchHttpResponse)
- }
-
- if _, statusChangeErr := waitForConnectionProviderStatusChange(d.Id(), meta, ctx); err != nil {
-@@ -166,13 +166,9 @@ func additionalInfoContainsAWSSecrets(info []interface{}) ([]interface{}, bool)
- func resourceFabricConnectionRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
- client := meta.(*config.Config).FabricClient
- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
-- conn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, d.Id(), nil)
-+ conn, httpResponse, err := client.ConnectionsApi.GetConnectionByUuid(ctx, d.Id(), nil)
- if err != nil {
-- log.Printf("[WARN] Connection %s not found , error %s", d.Id(), err)
-- if !strings.Contains(err.Error(), "500") {
-- d.SetId("")
-- }
-- return diag.FromErr(err)
-+ return networkErrorOutput(err, httpResponse)
- }
- d.SetId(conn.Uuid)
- return setFabricMap(d, conn)
-@@ -228,9 +224,9 @@ func resourceFabricConnectionUpdate(ctx context.Context, d *schema.ResourceData,
- updatedConn := dbConn
-
- for _, update := range updateRequests {
-- _, _, err := client.ConnectionsApi.UpdateConnectionByUuid(ctx, update, d.Id())
-+ _, httpResponse, err := client.ConnectionsApi.UpdateConnectionByUuid(ctx, update, d.Id())
- if err != nil {
-- diags = append(diags, diag.Diagnostic{Severity: 2, Summary: fmt.Sprintf("connectionn property update request error: %v [update payload: %v] (other updates will be successful if the payload is not shown)", err, update)})
-+ diags = append(diags, networkErrorOutput(fmt.Errorf("connectionn property update request error: %v [update payload: %v] (other updates will be successful if the payload is not shown)", err, update), httpResponse)...)
- continue
- }
-
-@@ -246,9 +242,6 @@ func resourceFabricConnectionUpdate(ctx context.Context, d *schema.ResourceData,
- conn, err := waitFunction(d.Id(), meta, ctx)
-
- if err != nil {
-- if !strings.Contains(err.Error(), "500") {
-- d.SetId("")
-- }
- diags = append(diags, diag.Diagnostic{Severity: 2, Summary: fmt.Sprintf("connection property update completion timeout error: %v [update payload: %v] (other updates will be successful if the payload is not shown)", err, update)})
- } else {
- updatedConn = conn
-@@ -384,7 +377,7 @@ func resourceFabricConnectionDelete(ctx context.Context, d *schema.ResourceData,
- diags := diag.Diagnostics{}
- client := meta.(*config.Config).FabricClient
- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
-- _, _, err := client.ConnectionsApi.DeleteConnectionByUuid(ctx, d.Id())
-+ _, httpResponse, err := client.ConnectionsApi.DeleteConnectionByUuid(ctx, d.Id())
- if err != nil {
- errors, ok := err.(v4.GenericSwaggerError).Model().([]v4.ModelError)
- if ok {
-@@ -393,7 +386,7 @@ func resourceFabricConnectionDelete(ctx context.Context, d *schema.ResourceData,
- return diags
- }
- }
-- return diag.FromErr(fmt.Errorf("error response for the connection delete: %v", err))
-+ return networkErrorOutput(fmt.Errorf("error response for the connection delete: %v", err), httpResponse)
- }
-
- err = waitUntilConnectionDeprovisioned(d.Id(), meta, ctx)
-diff --git a/internal/errors/errors.go b/internal/errors/errors.go
-index a50c7d5..136951b 100644
---- a/internal/errors/errors.go
-+++ b/internal/errors/errors.go
-@@ -1,11 +1,9 @@
- package errors
-
- import (
-- "fmt"
-+ "github.com/packethost/packngo"
- "net/http"
- "strings"
--
-- "github.com/packethost/packngo"
- )
-
- // FriendlyError improves error messages when the API error is blank or in an
diff --git a/patches/0038-Fix-typo-in-error-message.patch b/patches/0038-Fix-typo-in-error-message.patch
deleted file mode 100644
index 0f459170..00000000
--- a/patches/0038-Fix-typo-in-error-message.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tim Hogarty
-Date: Sat, 11 Nov 2023 00:13:05 -0800
-Subject: [PATCH 38/51] Fix typo in error message
-
-
-diff --git a/equinix/resource_fabric_connection.go b/equinix/resource_fabric_connection.go
-index a6587e2..8db7fe7 100644
---- a/equinix/resource_fabric_connection.go
-+++ b/equinix/resource_fabric_connection.go
-@@ -226,7 +226,7 @@ func resourceFabricConnectionUpdate(ctx context.Context, d *schema.ResourceData,
- for _, update := range updateRequests {
- _, httpResponse, err := client.ConnectionsApi.UpdateConnectionByUuid(ctx, update, d.Id())
- if err != nil {
-- diags = append(diags, networkErrorOutput(fmt.Errorf("connectionn property update request error: %v [update payload: %v] (other updates will be successful if the payload is not shown)", err, update), httpResponse)...)
-+ diags = append(diags, networkErrorOutput(fmt.Errorf("connection property update request error: %v [update payload: %v] (other updates will be successful if the payload is not shown)", err, update), httpResponse)...)
- continue
- }
-
diff --git a/patches/0039-Update-Fabric-network-error-handling.patch b/patches/0039-Update-Fabric-network-error-handling.patch
deleted file mode 100644
index 40e38d83..00000000
--- a/patches/0039-Update-Fabric-network-error-handling.patch
+++ /dev/null
@@ -1,524 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tim Hogarty
-Date: Fri, 8 Dec 2023 10:00:45 -0800
-Subject: [PATCH 39/51] Update Fabric network error handling
-
-
-diff --git a/equinix/resource_fabric_cloud_router.go b/equinix/resource_fabric_cloud_router.go
-index 6e0a99b..2a08434 100644
---- a/equinix/resource_fabric_cloud_router.go
-+++ b/equinix/resource_fabric_cloud_router.go
-@@ -7,6 +7,7 @@ import (
- "strings"
- "time"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
- "github.com/equinix/terraform-provider-equinix/internal/config"
-@@ -72,7 +73,7 @@ func resourceCloudRouterCreate(ctx context.Context, d *schema.ResourceData, meta
-
- fcr, _, err := client.CloudRoutersApi.CreateCloudRouter(ctx, createRequest)
- if err != nil {
-- return diag.FromErr(err)
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- d.SetId(fcr.Uuid)
-
-@@ -92,7 +93,7 @@ func resourceCloudRouterRead(ctx context.Context, d *schema.ResourceData, meta i
- if !strings.Contains(err.Error(), "500") {
- d.SetId("")
- }
-- return diag.FromErr(err)
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- d.SetId(CloudRouter.Uuid)
- return setCloudRouterMap(d, CloudRouter)
-@@ -139,9 +140,9 @@ func resourceCloudRouterUpdate(ctx context.Context, d *schema.ResourceData, meta
- return diag.FromErr(err)
- }
- updates := []v4.CloudRouterChangeOperation{update}
-- _, res, err := client.CloudRoutersApi.UpdateCloudRouterByUuid(ctx, updates, d.Id())
-+ _, _, err = client.CloudRoutersApi.UpdateCloudRouterByUuid(ctx, updates, d.Id())
- if err != nil {
-- return diag.FromErr(fmt.Errorf("error response for the Fabric Cloud Router update, response %v, error %v", res, err))
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- updateFg := v4.CloudRouter{}
- updateFg, err = waitForCloudRouterUpdateCompletion(d.Id(), meta, ctx)
-@@ -150,7 +151,7 @@ func resourceCloudRouterUpdate(ctx context.Context, d *schema.ResourceData, meta
- if !strings.Contains(err.Error(), "500") {
- d.SetId("")
- }
-- return diag.FromErr(fmt.Errorf("errored while waiting for successful Fabric Cloud Router update, response %v, error %v", res, err))
-+ return diag.FromErr(fmt.Errorf("errored while waiting for successful Fabric Cloud Router update, error %v", err))
- }
-
- d.SetId(updateFg.Uuid)
-@@ -165,7 +166,7 @@ func waitForCloudRouterUpdateCompletion(uuid string, meta interface{}, ctx conte
- client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.CloudRoutersApi.GetCloudRouterByUuid(ctx, uuid)
- if err != nil {
-- return "", "", err
-+ return "", "", equinix_errors.FormatFabricError(err)
- }
- return dbConn, string(*dbConn.State), nil
- },
-@@ -196,7 +197,7 @@ func waitUntilCloudRouterIsProvisioned(uuid string, meta interface{}, ctx contex
- client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.CloudRoutersApi.GetCloudRouterByUuid(ctx, uuid)
- if err != nil {
-- return "", "", err
-+ return "", "", equinix_errors.FormatFabricError(err)
- }
- return dbConn, string(*dbConn.State), nil
- },
-@@ -218,7 +219,7 @@ func resourceCloudRouterDelete(ctx context.Context, d *schema.ResourceData, meta
- diags := diag.Diagnostics{}
- client := meta.(*config.Config).FabricClient
- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
-- resp, err := client.CloudRoutersApi.DeleteCloudRouterByUuid(ctx, d.Id())
-+ _, err := client.CloudRoutersApi.DeleteCloudRouterByUuid(ctx, d.Id())
- if err != nil {
- errors, ok := err.(v4.GenericSwaggerError).Model().([]v4.ModelError)
- if ok {
-@@ -227,7 +228,7 @@ func resourceCloudRouterDelete(ctx context.Context, d *schema.ResourceData, meta
- return diags
- }
- }
-- return diag.FromErr(fmt.Errorf("error response for the Fabric Cloud Router delete. Error %v and response %v", err, resp))
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
-
- err = waitUntilCloudRouterDeprovisioned(d.Id(), meta, ctx)
-@@ -250,7 +251,7 @@ func waitUntilCloudRouterDeprovisioned(uuid string, meta interface{}, ctx contex
- client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.CloudRoutersApi.GetCloudRouterByUuid(ctx, uuid)
- if err != nil {
-- return "", "", err
-+ return "", "", equinix_errors.FormatFabricError(err)
- }
- return dbConn, string(*dbConn.State), nil
- },
-diff --git a/equinix/resource_fabric_connection.go b/equinix/resource_fabric_connection.go
-index 8db7fe7..d48f931 100644
---- a/equinix/resource_fabric_connection.go
-+++ b/equinix/resource_fabric_connection.go
-@@ -7,6 +7,7 @@ import (
- "strings"
- "time"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
- "github.com/equinix/terraform-provider-equinix/internal/config"
-@@ -114,9 +115,9 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- Project: &project,
- }
-
-- conn, httpResponse, err := client.ConnectionsApi.CreateConnection(ctx, createRequest)
-+ conn, _, err := client.ConnectionsApi.CreateConnection(ctx, createRequest)
- if err != nil {
-- return networkErrorOutput(err, httpResponse)
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- d.SetId(conn.Uuid)
-
-@@ -134,12 +135,12 @@ func resourceFabricConnectionCreate(ctx context.Context, d *schema.ResourceData,
- },
- }
-
-- _, patchHttpResponse, patchErr := client.ConnectionsApi.UpdateConnectionByUuid(ctx, patchChangeOperation, conn.Uuid)
-+ _, _, patchErr := client.ConnectionsApi.UpdateConnectionByUuid(ctx, patchChangeOperation, conn.Uuid)
- if patchErr != nil {
-- return networkErrorOutput(err, patchHttpResponse)
-+ return diag.FromErr(equinix_errors.FormatFabricError(patchErr))
- }
-
-- if _, statusChangeErr := waitForConnectionProviderStatusChange(d.Id(), meta, ctx); err != nil {
-+ if _, statusChangeErr := waitForConnectionProviderStatusChange(d.Id(), meta, ctx); statusChangeErr != nil {
- return diag.Errorf("error waiting for AWS Approval for connection %s: %v", d.Id(), statusChangeErr)
- }
- }
-@@ -166,9 +167,9 @@ func additionalInfoContainsAWSSecrets(info []interface{}) ([]interface{}, bool)
- func resourceFabricConnectionRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
- client := meta.(*config.Config).FabricClient
- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
-- conn, httpResponse, err := client.ConnectionsApi.GetConnectionByUuid(ctx, d.Id(), nil)
-+ conn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, d.Id(), nil)
- if err != nil {
-- return networkErrorOutput(err, httpResponse)
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- d.SetId(conn.Uuid)
- return setFabricMap(d, conn)
-@@ -224,9 +225,9 @@ func resourceFabricConnectionUpdate(ctx context.Context, d *schema.ResourceData,
- updatedConn := dbConn
-
- for _, update := range updateRequests {
-- _, httpResponse, err := client.ConnectionsApi.UpdateConnectionByUuid(ctx, update, d.Id())
-+ _, _, err := client.ConnectionsApi.UpdateConnectionByUuid(ctx, update, d.Id())
- if err != nil {
-- diags = append(diags, networkErrorOutput(fmt.Errorf("connection property update request error: %v [update payload: %v] (other updates will be successful if the payload is not shown)", err, update), httpResponse)...)
-+ diags = append(diags, diag.Diagnostic{Severity: 0, Summary: fmt.Sprintf("connection property update request error: %v [update payload: %v] (other updates will be successful if the payload is not shown)", equinix_errors.FormatFabricError(err), update)})
- continue
- }
-
-@@ -242,7 +243,7 @@ func resourceFabricConnectionUpdate(ctx context.Context, d *schema.ResourceData,
- conn, err := waitFunction(d.Id(), meta, ctx)
-
- if err != nil {
-- diags = append(diags, diag.Diagnostic{Severity: 2, Summary: fmt.Sprintf("connection property update completion timeout error: %v [update payload: %v] (other updates will be successful if the payload is not shown)", err, update)})
-+ diags = append(diags, diag.Diagnostic{Severity: 0, Summary: fmt.Sprintf("connection property update completion timeout error: %v [update payload: %v] (other updates will be successful if the payload is not shown)", err, update)})
- } else {
- updatedConn = conn
- }
-@@ -260,7 +261,7 @@ func waitForConnectionUpdateCompletion(uuid string, meta interface{}, ctx contex
- client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, uuid, nil)
- if err != nil {
-- return "", "", err
-+ return "", "", equinix_errors.FormatFabricError(err)
- }
- updatableState := ""
- if dbConn.Change.Status == "COMPLETED" {
-@@ -297,7 +298,7 @@ func waitUntilConnectionIsCreated(uuid string, meta interface{}, ctx context.Con
- client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, uuid, nil)
- if err != nil {
-- return "", "", err
-+ return "", "", equinix_errors.FormatFabricError(err)
- }
- return dbConn, string(*dbConn.State), nil
- },
-@@ -325,7 +326,7 @@ func waitForConnectionProviderStatusChange(uuid string, meta interface{}, ctx co
- client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, uuid, nil)
- if err != nil {
-- return "", "", err
-+ return "", "", equinix_errors.FormatFabricError(err)
- }
- return dbConn, string(*dbConn.Operation.ProviderStatus), nil
- },
-@@ -355,7 +356,7 @@ func verifyConnectionCreated(uuid string, meta interface{}, ctx context.Context)
- client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, uuid, nil)
- if err != nil {
-- return "", "", err
-+ return "", "", equinix_errors.FormatFabricError(err)
- }
- return dbConn, string(*dbConn.State), nil
- },
-@@ -377,7 +378,7 @@ func resourceFabricConnectionDelete(ctx context.Context, d *schema.ResourceData,
- diags := diag.Diagnostics{}
- client := meta.(*config.Config).FabricClient
- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
-- _, httpResponse, err := client.ConnectionsApi.DeleteConnectionByUuid(ctx, d.Id())
-+ _, _, err := client.ConnectionsApi.DeleteConnectionByUuid(ctx, d.Id())
- if err != nil {
- errors, ok := err.(v4.GenericSwaggerError).Model().([]v4.ModelError)
- if ok {
-@@ -386,7 +387,7 @@ func resourceFabricConnectionDelete(ctx context.Context, d *schema.ResourceData,
- return diags
- }
- }
-- return networkErrorOutput(fmt.Errorf("error response for the connection delete: %v", err), httpResponse)
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
-
- err = waitUntilConnectionDeprovisioned(d.Id(), meta, ctx)
-@@ -409,7 +410,7 @@ func waitUntilConnectionDeprovisioned(uuid string, meta interface{}, ctx context
- client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, uuid, nil)
- if err != nil {
-- return "", "", err
-+ return "", "", equinix_errors.FormatFabricError(err)
- }
- return dbConn, string(*dbConn.State), nil
- },
-diff --git a/equinix/resource_fabric_port.go b/equinix/resource_fabric_port.go
-index 8d62288..858ff39 100644
---- a/equinix/resource_fabric_port.go
-+++ b/equinix/resource_fabric_port.go
-@@ -8,6 +8,7 @@ import (
- "runtime/debug"
- "strings"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
- "github.com/equinix/terraform-provider-equinix/internal/config"
-@@ -27,7 +28,7 @@ func resourceFabricPortRead(ctx context.Context, d *schema.ResourceData, meta in
- if !strings.Contains(err.Error(), "500") {
- d.SetId("")
- }
-- return diag.FromErr(err)
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- d.SetId(port.Uuid)
- return setFabricPortMap(d, port)
-@@ -97,7 +98,7 @@ func resourceFabricPortGetByPortName(ctx context.Context, d *schema.ResourceData
- if !strings.Contains(err.Error(), "500") {
- d.SetId("")
- }
-- return diag.FromErr(err)
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- if len(ports.Data) != 1 {
- error := fmt.Errorf("incorrect # of records are found for the port name parameter criteria - %d , please change the criteria", len(ports.Data))
-diff --git a/equinix/resource_fabric_routing_protocol.go b/equinix/resource_fabric_routing_protocol.go
-index 639e6d0..0c1dca9 100644
---- a/equinix/resource_fabric_routing_protocol.go
-+++ b/equinix/resource_fabric_routing_protocol.go
-@@ -8,6 +8,7 @@ import (
- "strings"
- "time"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
- "github.com/equinix/terraform-provider-equinix/internal/config"
-@@ -60,7 +61,7 @@ func resourceFabricRoutingProtocolRead(ctx context.Context, d *schema.ResourceDa
- if !strings.Contains(err.Error(), "500") {
- d.SetId("")
- }
-- return diag.FromErr(err)
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- switch fabricRoutingProtocol.Type_ {
- case "BGP":
-@@ -138,7 +139,7 @@ func resourceFabricRoutingProtocolCreate(ctx context.Context, d *schema.Resource
- }
- fabricRoutingProtocol, _, err := client.RoutingProtocolsApi.CreateConnectionRoutingProtocol(ctx, createRequest, d.Get("connection_uuid").(string))
- if err != nil {
-- return diag.FromErr(err)
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
-
- switch fabricRoutingProtocol.Type_ {
-@@ -159,12 +160,6 @@ func resourceFabricRoutingProtocolUpdate(ctx context.Context, d *schema.Resource
- client := meta.(*config.Config).FabricClient
- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
-
-- /* todo: support patch bgp in the future - switch between PUT and PATCH
-- 1. get getRoutingProtocolPatchUpdateRequest()
-- 2. call PatchConnectionRoutingProtocolByUuid() with id and connection_uuid
-- 3. waitForRoutingProtocolUpdateCompletion() with change_uuid, id, and connection_uuid
-- */
--
- schemaBgpIpv4 := d.Get("bgp_ipv4").(*schema.Set).List()
- bgpIpv4 := routingProtocolBgpIpv4ToFabric(schemaBgpIpv4)
- schemaBgpIpv6 := d.Get("bgp_ipv6").(*schema.Set).List()
-@@ -224,9 +219,9 @@ func resourceFabricRoutingProtocolUpdate(ctx context.Context, d *schema.Resource
- }
- }
-
-- updatedRpResp, res, err := client.RoutingProtocolsApi.ReplaceConnectionRoutingProtocolByUuid(ctx, updateRequest, d.Id(), d.Get("connection_uuid").(string))
-+ updatedRpResp, _, err := client.RoutingProtocolsApi.ReplaceConnectionRoutingProtocolByUuid(ctx, updateRequest, d.Id(), d.Get("connection_uuid").(string))
- if err != nil {
-- return diag.FromErr(fmt.Errorf("error response for the routing protocol replace update, response %v, error %v", res, err))
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
-
- var changeUuid string
-@@ -243,7 +238,7 @@ func resourceFabricRoutingProtocolUpdate(ctx context.Context, d *schema.Resource
- if !strings.Contains(err.Error(), "500") {
- d.SetId("")
- }
-- return diag.FromErr(fmt.Errorf("errored while waiting for successful connection replace update, response %v, error %v", res, err))
-+ return diag.FromErr(fmt.Errorf("timeout updating routing protocol: %v", err))
- }
- updatedProvisionedRpResp, err := waitUntilRoutingProtocolIsProvisioned(d.Id(), d.Get("connection_uuid").(string), meta, ctx)
- if err != nil {
-@@ -257,7 +252,7 @@ func resourceFabricRoutingProtocolDelete(ctx context.Context, d *schema.Resource
- diags := diag.Diagnostics{}
- client := meta.(*config.Config).FabricClient
- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
-- _, resp, err := client.RoutingProtocolsApi.DeleteConnectionRoutingProtocolByUuid(ctx, d.Id(), d.Get("connection_uuid").(string))
-+ _, _, err := client.RoutingProtocolsApi.DeleteConnectionRoutingProtocolByUuid(ctx, d.Id(), d.Get("connection_uuid").(string))
- if err != nil {
- errors, ok := err.(v4.GenericSwaggerError).Model().([]v4.ModelError)
- if ok {
-@@ -266,7 +261,7 @@ func resourceFabricRoutingProtocolDelete(ctx context.Context, d *schema.Resource
- return diags
- }
- }
-- return diag.FromErr(fmt.Errorf("error response for the routing protocol delete. Error %v and response %v", err, resp))
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
-
- err = waitUntilRoutingProtocolIsDeprovisioned(d.Id(), d.Get("connection_uuid").(string), meta, ctx)
-@@ -331,7 +326,7 @@ func waitUntilRoutingProtocolIsProvisioned(uuid string, connUuid string, meta in
- client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.RoutingProtocolsApi.GetConnectionRoutingProtocolByUuid(ctx, uuid, connUuid)
- if err != nil {
-- return "", "", err
-+ return "", "", equinix_errors.FormatFabricError(err)
- }
- var state string
- if dbConn.Type_ == "BGP" {
-@@ -389,7 +384,7 @@ func waitForRoutingProtocolUpdateCompletion(rpChangeUuid string, uuid string, co
- client := meta.(*config.Config).FabricClient
- dbConn, _, err := client.RoutingProtocolsApi.GetConnectionRoutingProtocolsChangeByUuid(ctx, connUuid, uuid, rpChangeUuid)
- if err != nil {
-- return "", "", err
-+ return "", "", equinix_errors.FormatFabricError(err)
- }
- updatableState := ""
- if dbConn.Status == "COMPLETED" {
-diff --git a/equinix/resource_fabric_service_profile.go b/equinix/resource_fabric_service_profile.go
-index 0883bbc..0b3c08d 100644
---- a/equinix/resource_fabric_service_profile.go
-+++ b/equinix/resource_fabric_service_profile.go
-@@ -9,6 +9,7 @@ import (
- "strings"
- "time"
-
-+ equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
- equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
-
- "github.com/antihax/optional"
-@@ -46,11 +47,9 @@ func resourceFabricServiceProfileRead(ctx context.Context, d *schema.ResourceDat
- serviceProfile, _, err := client.ServiceProfilesApi.GetServiceProfileByUuid(ctx, d.Id(), nil)
- if err != nil {
- if !strings.Contains(err.Error(), "500") {
-- error := v4.ModelError{}
- d.SetId("")
-- log.Printf("Error Status Message: %s", error.ErrorMessage)
- }
-- return diag.FromErr(err)
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- d.SetId(serviceProfile.Uuid)
- return setFabricServiceProfileMap(d, serviceProfile)
-@@ -63,7 +62,7 @@ func resourceFabricServiceProfileCreate(ctx context.Context, d *schema.ResourceD
- createRequest := getServiceProfileRequestPayload(d)
- sp, _, err := client.ServiceProfilesApi.CreateServiceProfile(ctx, createRequest)
- if err != nil {
-- return diag.FromErr(err)
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- d.SetId(sp.Uuid)
- return resourceFabricServiceProfileRead(ctx, d, meta)
-@@ -142,9 +141,9 @@ func resourceFabricServiceProfileUpdate(ctx context.Context, d *schema.ResourceD
- return diag.Errorf("Either timed out or errored out while fetching service profile for uuid %s and error %v", uuid, err)
- }
-
-- _, res, err := client.ServiceProfilesApi.PutServiceProfileByUuid(ctx, updateRequest, strconv.FormatInt(eTag, 10), uuid)
-+ _, _, err = client.ServiceProfilesApi.PutServiceProfileByUuid(ctx, updateRequest, strconv.FormatInt(eTag, 10), uuid)
- if err != nil {
-- return diag.FromErr(fmt.Errorf("error response for the service profile update, response %v, error %v", res, err))
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- updatedServiceProfile := v4.ServiceProfile{}
- updatedServiceProfile, err = waitForServiceProfileUpdateCompletion(uuid, meta, ctx)
-@@ -152,7 +151,7 @@ func resourceFabricServiceProfileUpdate(ctx context.Context, d *schema.ResourceD
- if !strings.Contains(err.Error(), "500") {
- d.SetId("")
- }
-- return diag.FromErr(fmt.Errorf("errored while waiting for successful service profile update, response %v, error %v", res, err))
-+ return diag.FromErr(fmt.Errorf("errored while waiting for successful service profile update, error %v", err))
- }
- d.SetId(updatedServiceProfile.Uuid)
- return setFabricServiceProfileMap(d, updatedServiceProfile)
-@@ -166,7 +165,7 @@ func waitForServiceProfileUpdateCompletion(uuid string, meta interface{}, ctx co
- client := meta.(*config.Config).FabricClient
- dbServiceProfile, _, err := client.ServiceProfilesApi.GetServiceProfileByUuid(ctx, uuid, nil)
- if err != nil {
-- return "", "", err
-+ return "", "", equinix_errors.FormatFabricError(err)
- }
- updatableState := "COMPLETED"
- return dbServiceProfile, updatableState, nil
-@@ -194,7 +193,7 @@ func waitForActiveServiceProfileAndPopulateETag(uuid string, meta interface{}, c
- client := meta.(*config.Config).FabricClient
- dbServiceProfile, res, err := client.ServiceProfilesApi.GetServiceProfileByUuid(ctx, uuid, nil)
- if err != nil {
-- return nil, "", err
-+ return nil, "", equinix_errors.FormatFabricError(err)
- }
-
- eTagStr := res.Header.Get("ETag")
-@@ -229,9 +228,9 @@ func resourceFabricServiceProfileDelete(ctx context.Context, d *schema.ResourceD
- if uuid == "" {
- return diag.Errorf("No uuid found %v ", uuid)
- }
-- _, resp, err := client.ServiceProfilesApi.DeleteServiceProfileByUuid(ctx, uuid)
-+ _, _, err := client.ServiceProfilesApi.DeleteServiceProfileByUuid(ctx, uuid)
- if err != nil {
-- return diag.FromErr(fmt.Errorf("error response for the Service Profile delete error %v and response %v", err, resp))
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- return diags
- }
-@@ -306,11 +305,9 @@ func resourceServiceProfilesSearchRequest(ctx context.Context, d *schema.Resourc
- serviceProfiles, _, err := client.ServiceProfilesApi.SearchServiceProfiles(ctx, createServiceProfilesSearchRequest, viewPoint)
- if err != nil {
- if !strings.Contains(err.Error(), "500") {
-- error := v4.ModelError{}
- d.SetId("")
-- log.Printf("Error Status Message: %s", error.ErrorMessage)
- }
-- return diag.FromErr(err)
-+ return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
-
- if len(serviceProfiles.Data) != 1 {
-diff --git a/internal/errors/errors.go b/internal/errors/errors.go
-index 136951b..83309a0 100644
---- a/internal/errors/errors.go
-+++ b/internal/errors/errors.go
-@@ -1,6 +1,9 @@
- package errors
-
- import (
-+ "fmt"
-+ v4 "github.com/equinix-labs/fabric-go/fabric/v4"
-+
- "github.com/packethost/packngo"
- "net/http"
- "strings"
-@@ -45,6 +48,43 @@ func convertToFriendlyError(errors Errors, resp *http.Response) error {
- return er
- }
-
-+func FormatFabricAdditionalInfo(additionalInfo []v4.PriceErrorAdditionalInfo) string {
-+ var str []string
-+ for _, addInfo := range additionalInfo {
-+ property, reason := addInfo.Property, addInfo.Reason
-+ if property != "" {
-+ property = fmt.Sprintf("Property: %s, ", addInfo.Property)
-+ }
-+ if reason != "" {
-+ reason = fmt.Sprintf("%s", addInfo.Reason)
-+ } else {
-+ reason = fmt.Sprintf("Reason: Not Provided")
-+ }
-+ str = append(str, fmt.Sprintf("{%s%s}", property, reason))
-+ }
-+ return strings.Join(str, ", ")
-+}
-+
-+func FormatFabricError(err error) error {
-+ // If in future one would like to do something with the response body of the API request
-+ // The line below is how to access it with the SwaggerCodegen Fabric Go 12/7/2023 - thogarty
-+ // errors = append(errors, string(err.(v4.GenericSwaggerError).Body()))
-+ var errors []string
-+ errors = append(errors, err.Error())
-+ if fabricErrs, ok := err.(v4.GenericSwaggerError).Model().([]v4.ModelError); ok {
-+ for _, e := range fabricErrs {
-+ errors = append(errors, fmt.Sprintf("ErrorCode: %s", e.ErrorCode))
-+ errors = append(errors, fmt.Sprintf("ErrorMessage: %s", e.ErrorMessage))
-+ errors = append(errors, fmt.Sprintf("ErrorDetails: %s", e.Details))
-+ if additionalInfo := FormatFabricAdditionalInfo(e.AdditionalInfo); additionalInfo != "" {
-+ errors = append(errors, fmt.Sprintf("AdditionalInfo: [%s]", additionalInfo))
-+ }
-+ }
-+ }
-+
-+ return fmt.Errorf("%s", strings.Join(errors, ", "))
-+}
-+
- func IsForbidden(err error) bool {
- r, ok := err.(*packngo.ErrorResponse)
- if ok && r.Response != nil {
diff --git a/patches/0040-Re-add-500-error-check-and-update-error-message.patch b/patches/0040-Re-add-500-error-check-and-update-error-message.patch
deleted file mode 100644
index 6701364b..00000000
--- a/patches/0040-Re-add-500-error-check-and-update-error-message.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tim Hogarty
-Date: Fri, 8 Dec 2023 12:14:26 -0800
-Subject: [PATCH 40/51] Re-add 500 error check and update error message
-
-
-diff --git a/equinix/resource_fabric_connection.go b/equinix/resource_fabric_connection.go
-index d48f931..2df73ed 100644
---- a/equinix/resource_fabric_connection.go
-+++ b/equinix/resource_fabric_connection.go
-@@ -169,6 +169,10 @@ func resourceFabricConnectionRead(ctx context.Context, d *schema.ResourceData, m
- ctx = context.WithValue(ctx, v4.ContextAccessToken, meta.(*config.Config).FabricAuthToken)
- conn, _, err := client.ConnectionsApi.GetConnectionByUuid(ctx, d.Id(), nil)
- if err != nil {
-+ log.Printf("[WARN] Connection %s not found , error %s", d.Id(), err)
-+ if !strings.Contains(err.Error(), "500") {
-+ d.SetId("")
-+ }
- return diag.FromErr(equinix_errors.FormatFabricError(err))
- }
- d.SetId(conn.Uuid)
-diff --git a/internal/errors/errors.go b/internal/errors/errors.go
-index 83309a0..c6c322e 100644
---- a/internal/errors/errors.go
-+++ b/internal/errors/errors.go
-@@ -73,9 +73,9 @@ func FormatFabricError(err error) error {
- errors = append(errors, err.Error())
- if fabricErrs, ok := err.(v4.GenericSwaggerError).Model().([]v4.ModelError); ok {
- for _, e := range fabricErrs {
-- errors = append(errors, fmt.Sprintf("ErrorCode: %s", e.ErrorCode))
-- errors = append(errors, fmt.Sprintf("ErrorMessage: %s", e.ErrorMessage))
-- errors = append(errors, fmt.Sprintf("ErrorDetails: %s", e.Details))
-+ errors = append(errors, fmt.Sprintf("Code: %s", e.ErrorCode))
-+ errors = append(errors, fmt.Sprintf("Message: %s", e.ErrorMessage))
-+ errors = append(errors, fmt.Sprintf("Details: %s", e.Details))
- if additionalInfo := FormatFabricAdditionalInfo(e.AdditionalInfo); additionalInfo != "" {
- errors = append(errors, fmt.Sprintf("AdditionalInfo: [%s]", additionalInfo))
- }
diff --git a/patches/0041-Update-errors-imports.patch b/patches/0041-Update-errors-imports.patch
deleted file mode 100644
index 80736fd7..00000000
--- a/patches/0041-Update-errors-imports.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tim Hogarty
-Date: Fri, 8 Dec 2023 12:22:01 -0800
-Subject: [PATCH 41/51] Update errors imports
-
-
-diff --git a/internal/errors/errors.go b/internal/errors/errors.go
-index c6c322e..c06ae08 100644
---- a/internal/errors/errors.go
-+++ b/internal/errors/errors.go
-@@ -2,11 +2,11 @@ package errors
-
- import (
- "fmt"
-- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
--
-- "github.com/packethost/packngo"
- "net/http"
- "strings"
-+
-+ fabric "github.com/equinix-labs/fabric-go/fabric/v4"
-+ "github.com/packethost/packngo"
- )
-
- // FriendlyError improves error messages when the API error is blank or in an
-@@ -48,7 +48,7 @@ func convertToFriendlyError(errors Errors, resp *http.Response) error {
- return er
- }
-
--func FormatFabricAdditionalInfo(additionalInfo []v4.PriceErrorAdditionalInfo) string {
-+func FormatFabricAdditionalInfo(additionalInfo []fabric.PriceErrorAdditionalInfo) string {
- var str []string
- for _, addInfo := range additionalInfo {
- property, reason := addInfo.Property, addInfo.Reason
-@@ -68,10 +68,10 @@ func FormatFabricAdditionalInfo(additionalInfo []v4.PriceErrorAdditionalInfo) st
- func FormatFabricError(err error) error {
- // If in future one would like to do something with the response body of the API request
- // The line below is how to access it with the SwaggerCodegen Fabric Go 12/7/2023 - thogarty
-- // errors = append(errors, string(err.(v4.GenericSwaggerError).Body()))
-+ // errors = append(errors, string(err.(fabric.GenericSwaggerError).Body()))
- var errors []string
- errors = append(errors, err.Error())
-- if fabricErrs, ok := err.(v4.GenericSwaggerError).Model().([]v4.ModelError); ok {
-+ if fabricErrs, ok := err.(fabric.GenericSwaggerError).Model().([]fabric.ModelError); ok {
- for _, e := range fabricErrs {
- errors = append(errors, fmt.Sprintf("Code: %s", e.ErrorCode))
- errors = append(errors, fmt.Sprintf("Message: %s", e.ErrorMessage))
diff --git a/patches/0042-Reorder-Fabric-Error-Output.patch b/patches/0042-Reorder-Fabric-Error-Output.patch
deleted file mode 100644
index fabc61df..00000000
--- a/patches/0042-Reorder-Fabric-Error-Output.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tim Hogarty
-Date: Fri, 8 Dec 2023 12:26:21 -0800
-Subject: [PATCH 42/51] Reorder Fabric Error Output
-
-
-diff --git a/internal/errors/errors.go b/internal/errors/errors.go
-index c06ae08..fec0ef2 100644
---- a/internal/errors/errors.go
-+++ b/internal/errors/errors.go
-@@ -73,12 +73,12 @@ func FormatFabricError(err error) error {
- errors = append(errors, err.Error())
- if fabricErrs, ok := err.(fabric.GenericSwaggerError).Model().([]fabric.ModelError); ok {
- for _, e := range fabricErrs {
-- errors = append(errors, fmt.Sprintf("Code: %s", e.ErrorCode))
- errors = append(errors, fmt.Sprintf("Message: %s", e.ErrorMessage))
- errors = append(errors, fmt.Sprintf("Details: %s", e.Details))
- if additionalInfo := FormatFabricAdditionalInfo(e.AdditionalInfo); additionalInfo != "" {
- errors = append(errors, fmt.Sprintf("AdditionalInfo: [%s]", additionalInfo))
- }
-+ errors = append(errors, fmt.Sprintf("Code: %s", e.ErrorCode))
- }
- }
-
diff --git a/patches/0043-Use-Errors-type-from-Equinix-errors.go-as-return-val.patch b/patches/0043-Use-Errors-type-from-Equinix-errors.go-as-return-val.patch
deleted file mode 100644
index 0cb12a22..00000000
--- a/patches/0043-Use-Errors-type-from-Equinix-errors.go-as-return-val.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Tim Hogarty
-Date: Fri, 8 Dec 2023 12:36:44 -0800
-Subject: [PATCH 43/51] Use Errors type from Equinix errors.go as return value
-
-
-diff --git a/internal/errors/errors.go b/internal/errors/errors.go
-index fec0ef2..59a450e 100644
---- a/internal/errors/errors.go
-+++ b/internal/errors/errors.go
-@@ -69,20 +69,20 @@ func FormatFabricError(err error) error {
- // If in future one would like to do something with the response body of the API request
- // The line below is how to access it with the SwaggerCodegen Fabric Go 12/7/2023 - thogarty
- // errors = append(errors, string(err.(fabric.GenericSwaggerError).Body()))
-- var errors []string
-+ var errors Errors
- errors = append(errors, err.Error())
- if fabricErrs, ok := err.(fabric.GenericSwaggerError).Model().([]fabric.ModelError); ok {
- for _, e := range fabricErrs {
-+ errors = append(errors, fmt.Sprintf("Code: %s", e.ErrorCode))
- errors = append(errors, fmt.Sprintf("Message: %s", e.ErrorMessage))
- errors = append(errors, fmt.Sprintf("Details: %s", e.Details))
- if additionalInfo := FormatFabricAdditionalInfo(e.AdditionalInfo); additionalInfo != "" {
- errors = append(errors, fmt.Sprintf("AdditionalInfo: [%s]", additionalInfo))
- }
-- errors = append(errors, fmt.Sprintf("Code: %s", e.ErrorCode))
- }
- }
-
-- return fmt.Errorf("%s", strings.Join(errors, ", "))
-+ return errors
- }
-
- func IsForbidden(err error) bool {
diff --git a/patches/0044-refactor-clean-up-config-package-480.patch b/patches/0044-refactor-clean-up-config-package-480.patch
deleted file mode 100644
index 6f4159c7..00000000
--- a/patches/0044-refactor-clean-up-config-package-480.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Charles Treatman
-Date: Mon, 11 Dec 2023 09:30:36 -0600
-Subject: [PATCH 44/51] refactor: clean up config package (#480)
-
-When the config struct was moved to its own package, we added a couple
-public variables to replace private ones. However, the original private
-variable definitions were left in place, and all references to the
-private variables were left unchanged.
-
-On closer inspection, one of the private variables (`ipAddressTypes`) is
-only used by one resource and can remain private. The other one
-(`uuidRE`) is used for validation that duplicates a built-in terraform
-validator, so I've replaced it with the built-in validator.
-
-diff --git a/equinix/helpers_device.go b/equinix/helpers_device.go
-index 028ce80..74ecceb 100644
---- a/equinix/helpers_device.go
-+++ b/equinix/helpers_device.go
-@@ -235,7 +235,7 @@ func ipAddressSchema() *schema.Resource {
- MinItems: 1,
- Elem: &schema.Schema{
- Type: schema.TypeString,
-- ValidateFunc: validation.StringMatch(uuidRE, "must be a valid UUID"),
-+ ValidateFunc: validation.IsUUID,
- },
- },
- },
-diff --git a/equinix/resource_metal_project.go b/equinix/resource_metal_project.go
-index 5a1cf37..45b5f9b 100644
---- a/equinix/resource_metal_project.go
-+++ b/equinix/resource_metal_project.go
-@@ -3,7 +3,6 @@ package equinix
- import (
- "fmt"
- "path"
-- "regexp"
- "strings"
-
- equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-@@ -15,8 +14,6 @@ import (
- "github.com/packethost/packngo"
- )
-
--var uuidRE = regexp.MustCompile("^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[8|9|aA|bB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$")
--
- func resourceMetalProject() *schema.Resource {
- return &schema.Resource{
- Create: resourceMetalProjectCreate,
-@@ -57,7 +54,7 @@ func resourceMetalProject() *schema.Resource {
- return strings.EqualFold(strings.Trim(old, `"`), strings.Trim(new, `"`))
- },
- ValidateFunc: validation.Any(
-- validation.StringMatch(uuidRE, "must be a valid UUID"),
-+ validation.IsUUID,
- validation.StringIsEmpty,
- ),
- },
-@@ -70,7 +67,7 @@ func resourceMetalProject() *schema.Resource {
- DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
- return strings.EqualFold(strings.Trim(old, `"`), strings.Trim(new, `"`))
- },
-- ValidateFunc: validation.StringMatch(uuidRE, "must be a valid UUID"),
-+ ValidateFunc: validation.IsUUID,
- },
- "bgp_config": {
- Type: schema.TypeList,
-diff --git a/internal/config/config.go b/internal/config/config.go
-index f16ddc7..d5d116b 100644
---- a/internal/config/config.go
-+++ b/internal/config/config.go
-@@ -28,11 +28,6 @@ import (
- xoauth2 "golang.org/x/oauth2"
- )
-
--var (
-- UuidRE = regexp.MustCompile("^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[8|9|aA|bB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$")
-- IpAddressTypes = []string{"public_ipv4", "private_ipv4", "public_ipv6"}
--)
--
- type ProviderMeta struct {
- ModuleName string `cty:"module_name"`
- }
diff --git a/patches/0045-fix-fixing-fabric-connection-schema-for-port-2-netwo.patch b/patches/0045-fix-fixing-fabric-connection-schema-for-port-2-netwo.patch
deleted file mode 100644
index 4db1f148..00000000
--- a/patches/0045-fix-fixing-fabric-connection-schema-for-port-2-netwo.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: srushti-patl
-Date: Wed, 6 Dec 2023 14:59:04 -0800
-Subject: [PATCH 45/51] fix: fixing fabric connection schema for port 2 network
- connection
-
-
-diff --git a/equinix/fabric_connection_read_schema.go b/equinix/fabric_connection_read_schema.go
-index 8f478e0..80b80ed 100644
---- a/equinix/fabric_connection_read_schema.go
-+++ b/equinix/fabric_connection_read_schema.go
-@@ -796,7 +796,7 @@ func readFabricConnectionResourceSchema() map[string]*schema.Schema {
- "type": {
- Type: schema.TypeString,
- Computed: true,
-- Description: "Defines the connection type like VG_VC, EVPL_VC, EPL_VC, EC_VC, IP_VC, IPWAN_VC, ACCESS_EPL_VC",
-+ Description: "Defines the connection type like VG_VC, EVPL_VC, EPL_VC, EC_VC, IP_VC, IPWAN_VC, ACCESS_EPL_VC,EVPLAN_VC,EPLAN_VC",
- },
- "bandwidth": {
- Type: schema.TypeInt,
-diff --git a/equinix/fabric_connection_schema.go b/equinix/fabric_connection_schema.go
-index 0d26d1e..7dcdb31 100644
---- a/equinix/fabric_connection_schema.go
-+++ b/equinix/fabric_connection_schema.go
-@@ -107,6 +107,7 @@ func createGatewayProjectSch() map[string]*schema.Schema {
- "project_id": {
- Type: schema.TypeString,
- Computed: true,
-+ Optional: true,
- Description: "Project Id",
- },
- "href": {
-@@ -790,8 +791,8 @@ func createFabricConnectionResourceSchema() map[string]*schema.Schema {
- "type": {
- Type: schema.TypeString,
- Required: true,
-- ValidateFunc: validation.StringInSlice([]string{"VG_VC", "EVPL_VC", "EPL_VC", "EC_VC", "IP_VC", "IPWAN_VC", "ACCESS_EPL_VC"}, true),
-- Description: "Defines the connection type like VG_VC, EVPL_VC, EPL_VC, EC_VC, IP_VC, IPWAN_VC,ACCESS_EPL_VC",
-+ ValidateFunc: validation.StringInSlice([]string{"VG_VC", "EVPL_VC", "EPL_VC", "EC_VC", "IP_VC", "IPWAN_VC", "ACCESS_EPL_VC", "EVPLAN_VC", "EPLAN_VC"}, true),
-+ Description: "Defines the connection type like VG_VC, EVPL_VC, EPL_VC, EC_VC, IP_VC, IPWAN_VC,ACCESS_EPL_VC,EVPLAN_VC, EPLAN_VC",
- },
- "bandwidth": {
- Type: schema.TypeInt,
diff --git a/patches/0046-refactor-remove-unnecessary-wrappers-for-getting-a-r.patch b/patches/0046-refactor-remove-unnecessary-wrappers-for-getting-a-r.patch
deleted file mode 100644
index 614c0d33..00000000
--- a/patches/0046-refactor-remove-unnecessary-wrappers-for-getting-a-r.patch
+++ /dev/null
@@ -1,1004 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Charles Treatman
-Date: Mon, 11 Dec 2023 12:55:34 -0600
-Subject: [PATCH 46/51] refactor: remove unnecessary wrappers for getting a
- random string or int (#481)
-
-Some of the Network Edge tests were using `randInt` and `randString` to
-generate random integers and strings. The only thing each function does
-is call an upstream function; this replaces all calls to those functions
-with direct calls to the upstream (which matches what we do in other
-tests) and removes the unnecessary wrappers.
-
-diff --git a/equinix/provider_test.go b/equinix/provider_test.go
-index 590bf84..5a6595c 100644
---- a/equinix/provider_test.go
-+++ b/equinix/provider_test.go
-@@ -446,14 +446,6 @@ func nprintf(format string, params map[string]interface{}) string {
- return format
- }
-
--func randInt(n int) int {
-- return acctest.RandIntRange(0, n)
--}
--
--func randString(length int) string {
-- return acctest.RandString(length)
--}
--
- func getFromEnv(varName string) (string, error) {
- if v := os.Getenv(varName); v != "" {
- return v, nil
-diff --git a/equinix/resource_ecx_l2_connection_acc_test.go b/equinix/resource_ecx_l2_connection_acc_test.go
-index 45a5e0b..6338958 100644
---- a/equinix/resource_ecx_l2_connection_acc_test.go
-+++ b/equinix/resource_ecx_l2_connection_acc_test.go
-@@ -12,6 +12,7 @@ import (
- "github.com/equinix/ecx-go/v2"
- "github.com/equinix/rest-go"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
-+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -85,12 +86,12 @@ func TestAccFabricL2Connection_Port_Single_AWS(t *testing.T) {
- "port-name": portName.(string),
- "connection-resourceName": "test",
- "connection-profile_name": spName.(string),
-- "connection-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "connection-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "connection-speed": 50,
- "connection-speed_unit": "MB",
- "connection-notifications": []string{"marry@equinix.com", "john@equinix.com"},
-- "connection-purchase_order_number": randString(10),
-- "connection-vlan_stag": randInt(2000),
-+ "connection-purchase_order_number": acctest.RandString(10),
-+ "connection-vlan_stag": acctest.RandIntRange(0, 2000),
- "connection-seller_region": "us-west-1",
- "connection-seller_metro_code": "SV",
- "connection-authorization_key": authKey.(string),
-@@ -135,21 +136,21 @@ func TestAccFabricL2Connection_Port_HA_Azure(t *testing.T) {
- "port-secondary_name": secPortName.(string),
- "connection-resourceName": "test",
- "connection-profile_name": spName.(string),
-- "connection-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "connection-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "connection-speed": 50,
- "connection-speed_unit": "MB",
- "connection-notifications": []string{"marry@equinix.com", "john@equinix.com"},
-- "connection-purchase_order_number": randString(10),
-- "connection-vlan_stag": randInt(2000),
-+ "connection-purchase_order_number": acctest.RandString(10),
-+ "connection-vlan_stag": acctest.RandIntRange(0, 2000),
- "connection-seller_metro_code": "LD",
- "connection-authorization_key": serviceKey,
- "connection-named_tag": "PRIVATE",
-- "connection-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "connection-secondary_vlan_stag": randInt(2000),
-+ "connection-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "connection-secondary_vlan_stag": acctest.RandIntRange(0, 2000),
- }
- contextWithChanges := copyMap(context)
-- contextWithChanges["connection-name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-- contextWithChanges["connection-secondary_name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-+ contextWithChanges["connection-name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
-+ contextWithChanges["connection-secondary_name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
- resourceName := fmt.Sprintf("equinix_ecx_l2_connection.%s", context["connection-resourceName"].(string))
- var primary, secondary ecx.L2Connection
- resource.ParallelTest(t, resource.TestCase{
-@@ -207,35 +208,35 @@ func TestAccFabricL2Connection_Device_HA_GCP(t *testing.T) {
- "device-account_name": accountName.(string),
- "device-self_managed": true,
- "device-byol": true,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-metro_code": deviceMetro.(string),
- "device-type_code": "PA-VM",
- "device-package_code": "VM100",
- "device-notifications": []string{"marry@equinix.com", "john@equinix.com"},
-- "device-hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-term_length": 1,
- "device-version": "9.0.4",
- "device-core_count": 2,
-- "device-purchase_order_number": randString(10),
-- "device-order_reference": randString(10),
-- "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "device-secondary_hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-purchase_order_number": acctest.RandString(10),
-+ "device-order_reference": acctest.RandString(10),
-+ "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "device-secondary_hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-secondary_notifications": []string{"secondary@equinix.com"},
- "sshkey-resourceName": "test",
-- "sshkey-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "sshkey-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "sshkey-public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCXdzXBHaVpKpdO0udnB+4JOgUq7APO2rPXfrevvlZrps98AtlwXXVWZ5duRH5NFNfU4G9HCSiAPsebgjY0fG85tcShpXfHfACLt0tBW8XhfLQP2T6S50FQ1brBdURMDCMsD7duOXqvc0dlbs2/KcswHvuUmqVzob3bz7n1bQ48wIHsPg4ARqYhy5LN3OkllJH/6GEfqi8lKZx01/P/gmJMORcJujuOyXRB+F2iXBVYdhjML3Qg4+tEekBcVZOxUbERRZ0pvQ52Y6wUhn2VsjljixyqeOdmD0m6DayDQgSWms6bKPpBqN7zhXXk4qe8bXT4tQQba65b2CQ2A91jw2KgM/YZNmjyUJ+Rf1cQosJf9twqbAZDZ6rAEmj9zzvQ5vD/CGuzxdVMkePLlUK4VGjPu7cVzhXrnq4318WqZ5/lNiCST8NQ0fssChN8ANUzr/p/wwv3faFMVNmjxXTZMsbMFT/fbb2MVVuqNFN65drntlg6/xEao8gZROuRYiakBx8= user@host",
- "connection-resourceName": "test",
-- "connection-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "connection-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "connection-profile_name": priSPName.(string),
- "connection-speed": 50,
- "connection-speed_unit": "MB",
- "connection-notifications": []string{"marry@equinix.com", "john@equinix.com"},
-- "connection-purchase_order_number": randString(10),
-+ "connection-purchase_order_number": acctest.RandString(10),
- "connection-seller_metro_code": "SV",
- "connection-seller_region": "us-west2",
- "connection-authorization_key": priServiceKey.(string),
- "connection-device_interface_id": 5,
-- "connection-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "connection-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "connection-secondary_profile_name": secSPName.(string),
- "connection-secondary_speed": 100,
- "connection-secondary_speed_unit": "MB",
-diff --git a/equinix/resource_ecx_l2_connection_test.go b/equinix/resource_ecx_l2_connection_test.go
-index 219ee7d..438b6f0 100644
---- a/equinix/resource_ecx_l2_connection_test.go
-+++ b/equinix/resource_ecx_l2_connection_test.go
-@@ -5,6 +5,7 @@ import (
- "testing"
-
- "github.com/equinix/ecx-go/v2"
-+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/stretchr/testify/assert"
- )
-@@ -69,34 +70,34 @@ func TestFabricL2Connection_updateResourceData(t *testing.T) {
- // given
- d := schema.TestResourceDataRaw(t, createECXL2ConnectionResourceSchema(), make(map[string]interface{}))
- input := &ecx.L2Connection{
-- UUID: ecx.String(randString(36)),
-- Name: ecx.String(randString(36)),
-- ProfileUUID: ecx.String(randString(36)),
-+ UUID: ecx.String(acctest.RandString(36)),
-+ Name: ecx.String(acctest.RandString(36)),
-+ ProfileUUID: ecx.String(acctest.RandString(36)),
- Speed: ecx.Int(50),
- SpeedUnit: ecx.String("MB"),
- Status: ecx.String(ecx.ConnectionStatusProvisioned),
- ProviderStatus: ecx.String(ecx.ConnectionStatusProvisioned),
- Notifications: []string{"bla@bla.com"},
-- PurchaseOrderNumber: ecx.String(randString(10)),
-- PortUUID: ecx.String(randString(36)),
-- DeviceUUID: ecx.String(randString(36)),
-- VendorToken: ecx.String(randString(36)),
-- VlanSTag: ecx.Int(randInt(2000)),
-- VlanCTag: ecx.Int(randInt(2000)),
-- NamedTag: ecx.String(randString(100)),
-- AdditionalInfo: []ecx.L2ConnectionAdditionalInfo{{Name: ecx.String(randString(10)), Value: ecx.String(randString(10))}},
-- ZSidePortUUID: ecx.String(randString(36)),
-- ZSideVlanCTag: ecx.Int(randInt(2000)),
-- ZSideVlanSTag: ecx.Int(randInt(2000)),
-- SellerRegion: ecx.String(randString(10)),
-- SellerMetroCode: ecx.String(randString(2)),
-- AuthorizationKey: ecx.String(randString(10)),
-- RedundancyGroup: ecx.String(randString(36)),
-- RedundancyType: ecx.String(randString(10)),
-+ PurchaseOrderNumber: ecx.String(acctest.RandString(10)),
-+ PortUUID: ecx.String(acctest.RandString(36)),
-+ DeviceUUID: ecx.String(acctest.RandString(36)),
-+ VendorToken: ecx.String(acctest.RandString(36)),
-+ VlanSTag: ecx.Int(acctest.RandIntRange(0, 2000)),
-+ VlanCTag: ecx.Int(acctest.RandIntRange(0, 2000)),
-+ NamedTag: ecx.String(acctest.RandString(100)),
-+ AdditionalInfo: []ecx.L2ConnectionAdditionalInfo{{Name: ecx.String(acctest.RandString(10)), Value: ecx.String(acctest.RandString(10))}},
-+ ZSidePortUUID: ecx.String(acctest.RandString(36)),
-+ ZSideVlanCTag: ecx.Int(acctest.RandIntRange(0, 2000)),
-+ ZSideVlanSTag: ecx.Int(acctest.RandIntRange(0, 2000)),
-+ SellerRegion: ecx.String(acctest.RandString(10)),
-+ SellerMetroCode: ecx.String(acctest.RandString(2)),
-+ AuthorizationKey: ecx.String(acctest.RandString(10)),
-+ RedundancyGroup: ecx.String(acctest.RandString(36)),
-+ RedundancyType: ecx.String(acctest.RandString(10)),
- }
-- prevServiceToken := ecx.String(randString(20))
-+ prevServiceToken := ecx.String(acctest.RandString(20))
- d.Set(ecxL2ConnectionSchemaNames["ServiceToken"], prevServiceToken)
-- prevZsideServiceToken := ecx.String(randString(20))
-+ prevZsideServiceToken := ecx.String(acctest.RandString(20))
- d.Set(ecxL2ConnectionSchemaNames["ZSideServiceToken"], prevZsideServiceToken)
-
- // when
-@@ -138,30 +139,30 @@ func TestFabricL2Connection_updateResourceData(t *testing.T) {
- func TestFabricL2Connection_flattenSecondary(t *testing.T) {
- // given
- input := &ecx.L2Connection{
-- UUID: ecx.String(randString(36)),
-- Name: ecx.String(randString(36)),
-- ProfileUUID: ecx.String(randString(36)),
-+ UUID: ecx.String(acctest.RandString(36)),
-+ Name: ecx.String(acctest.RandString(36)),
-+ ProfileUUID: ecx.String(acctest.RandString(36)),
- Speed: ecx.Int(50),
- SpeedUnit: ecx.String("MB"),
- Status: ecx.String(ecx.ConnectionStatusProvisioned),
- ProviderStatus: ecx.String(ecx.ConnectionStatusProvisioned),
-- PortUUID: ecx.String(randString(36)),
-- DeviceUUID: ecx.String(randString(36)),
-- VlanSTag: ecx.Int(randInt(2000)),
-- VlanCTag: ecx.Int(randInt(2000)),
-- ZSidePortUUID: ecx.String(randString(36)),
-- ZSideVlanCTag: ecx.Int(randInt(2000)),
-- ZSideVlanSTag: ecx.Int(randInt(2000)),
-- SellerRegion: ecx.String(randString(10)),
-- SellerMetroCode: ecx.String(randString(2)),
-- AuthorizationKey: ecx.String(randString(10)),
-- RedundancyGroup: ecx.String(randString(10)),
-- RedundancyType: ecx.String(randString(10)),
-- VendorToken: ecx.String(randString(36)),
-+ PortUUID: ecx.String(acctest.RandString(36)),
-+ DeviceUUID: ecx.String(acctest.RandString(36)),
-+ VlanSTag: ecx.Int(acctest.RandIntRange(0, 2000)),
-+ VlanCTag: ecx.Int(acctest.RandIntRange(0, 2000)),
-+ ZSidePortUUID: ecx.String(acctest.RandString(36)),
-+ ZSideVlanCTag: ecx.Int(acctest.RandIntRange(0, 2000)),
-+ ZSideVlanSTag: ecx.Int(acctest.RandIntRange(0, 2000)),
-+ SellerRegion: ecx.String(acctest.RandString(10)),
-+ SellerMetroCode: ecx.String(acctest.RandString(2)),
-+ AuthorizationKey: ecx.String(acctest.RandString(10)),
-+ RedundancyGroup: ecx.String(acctest.RandString(10)),
-+ RedundancyType: ecx.String(acctest.RandString(10)),
-+ VendorToken: ecx.String(acctest.RandString(36)),
- }
- previousInput := &ecx.L2Connection{
-- DeviceInterfaceID: ecx.Int(randInt(10)),
-- ServiceToken: ecx.String(randString(36)),
-+ DeviceInterfaceID: ecx.Int(acctest.RandIntRange(0, 10)),
-+ ServiceToken: ecx.String(acctest.RandString(36)),
- }
- expected := []interface{}{
- map[string]interface{}{
-@@ -246,8 +247,8 @@ func TestFabricL2Connection_flattenAdditionalInfo(t *testing.T) {
- // given
- input := []ecx.L2ConnectionAdditionalInfo{
- {
-- Name: ecx.String(randString(32)),
-- Value: ecx.String(randString(32)),
-+ Name: ecx.String(acctest.RandString(32)),
-+ Value: ecx.String(acctest.RandString(32)),
- },
- }
- expected := []interface{}{
-@@ -271,8 +272,8 @@ func TestFabricL2Connection_expandAdditionalInfo(t *testing.T) {
- // given
- input := schema.NewSet(f, []interface{}{
- map[string]interface{}{
-- ecxL2ConnectionAdditionalInfoSchemaNames["Name"]: randString(36),
-- ecxL2ConnectionAdditionalInfoSchemaNames["Value"]: randString(36),
-+ ecxL2ConnectionAdditionalInfoSchemaNames["Name"]: acctest.RandString(36),
-+ ecxL2ConnectionAdditionalInfoSchemaNames["Value"]: acctest.RandString(36),
- },
- })
- inputList := input.List()
-@@ -293,16 +294,16 @@ func TestFabricL2Connection_flattenActions(t *testing.T) {
- // given
- input := []ecx.L2ConnectionAction{
- {
-- Type: ecx.String(randString(32)),
-- OperationID: ecx.String(randString(32)),
-- Message: ecx.String(randString(32)),
-+ Type: ecx.String(acctest.RandString(32)),
-+ OperationID: ecx.String(acctest.RandString(32)),
-+ Message: ecx.String(acctest.RandString(32)),
- RequiredData: []ecx.L2ConnectionActionData{
- {
-- Key: ecx.String(randString(10)),
-- Label: ecx.String(randString(10)),
-- Value: ecx.String(randString(10)),
-+ Key: ecx.String(acctest.RandString(10)),
-+ Label: ecx.String(acctest.RandString(10)),
-+ Value: ecx.String(acctest.RandString(10)),
- IsEditable: ecx.Bool(true),
-- ValidationPattern: ecx.String(randString(10)),
-+ ValidationPattern: ecx.String(acctest.RandString(10)),
- },
- },
- },
-@@ -365,7 +366,7 @@ func TestFabricL2Connection_fillUpdateRequest(t *testing.T) {
- // given
- updateReq := mockedL2ConnectionUpdateRequest{}
- changes := map[string]interface{}{
-- ecxL2ConnectionSchemaNames["Name"]: randString(32),
-+ ecxL2ConnectionSchemaNames["Name"]: acctest.RandString(32),
- ecxL2ConnectionSchemaNames["Speed"]: 50,
- ecxL2ConnectionSchemaNames["SpeedUnit"]: "MB",
- }
-diff --git a/equinix/resource_ecx_l2_serviceprofile_acc_test.go b/equinix/resource_ecx_l2_serviceprofile_acc_test.go
-index 59054a3..fb3404f 100644
---- a/equinix/resource_ecx_l2_serviceprofile_acc_test.go
-+++ b/equinix/resource_ecx_l2_serviceprofile_acc_test.go
-@@ -7,6 +7,7 @@ import (
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/equinix/ecx-go/v2"
-+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -17,8 +18,8 @@ func TestAccFabricL2ServiceProfile_Private(t *testing.T) {
- secPortName, _ := schema.EnvDefaultFunc(secPortEnvVar, "sit-001-CX-SV5-NL-Dot1q-BO-10G-SEC-JUN-36")()
- context := map[string]interface{}{
- "resourceName": "test",
-- "name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "description": randString(100),
-+ "name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "description": acctest.RandString(100),
- "bandwidth_threshold_notifications": []string{"John.Doe@example.com", "Marry.Doe@example.com"},
- "profile_statuschange_notifications": []string{"John.Doe@example.com", "Marry.Doe@example.com"},
- "vc_statuschange_notifications": []string{"John.Doe@example.com", "Marry.Doe@example.com"},
-diff --git a/equinix/resource_network_acl_template_acc_test.go b/equinix/resource_network_acl_template_acc_test.go
-index 4a9262b..317587a 100644
---- a/equinix/resource_network_acl_template_acc_test.go
-+++ b/equinix/resource_network_acl_template_acc_test.go
-@@ -9,6 +9,7 @@ import (
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/equinix/ne-go"
-+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- )
-@@ -55,13 +56,13 @@ func testSweepNetworkACLTemplate(region string) error {
- func TestAccNetworkACLTemplate(t *testing.T) {
- context := map[string]interface{}{
- "resourceName": "test",
-- "name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "description": randString(50),
-+ "name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "description": acctest.RandString(50),
- "inbound_rule_1_subnet": "10.0.0.0/16",
- "inbound_rule_1_protocol": "TCP",
- "inbound_rule_1_src_port": "any",
- "inbound_rule_1_dst_port": "22-23",
-- "inbound_rule_1_description": randString(50),
-+ "inbound_rule_1_description": acctest.RandString(50),
- "inbound_rule_2_subnet": "192.168.16.0/24",
- "inbound_rule_2_protocol": "UDP",
- "inbound_rule_2_src_port": "any",
-@@ -72,8 +73,8 @@ func TestAccNetworkACLTemplate(t *testing.T) {
- "inbound_rule_3_dst_port": "any",
- }
- contextWithChanges := copyMap(context)
-- contextWithChanges["description"] = randString(50)
-- contextWithChanges["inbound_rule_1_description"] = randString(50)
-+ contextWithChanges["description"] = acctest.RandString(50)
-+ contextWithChanges["inbound_rule_1_description"] = acctest.RandString(50)
- contextWithChanges["inbound_rule_3_subnet"] = "4.4.4.4/32"
- contextWithChanges["inbound_rule_3_protocol"] = "TCP"
- contextWithChanges["inbound_rule_3_dst_port"] = "2048"
-diff --git a/equinix/resource_network_bgp_acc_test.go b/equinix/resource_network_bgp_acc_test.go
-index cd120c3..080f9a8 100644
---- a/equinix/resource_network_bgp_acc_test.go
-+++ b/equinix/resource_network_bgp_acc_test.go
-@@ -7,6 +7,7 @@ import (
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/equinix/ne-go"
-+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -22,22 +23,22 @@ func TestAccNetworkBGP_CSR1000V_Single_AWS(t *testing.T) {
- "device-account_name": accountName.(string),
- "device-self_managed": false,
- "device-byol": false,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-throughput": 500,
- "device-throughput_unit": "Mbps",
- "device-metro_code": metro.(string),
- "device-type_code": "CSR1000V",
- "device-package_code": "SEC",
- "device-notifications": []string{"marry@equinix.com", "john@equinix.com"},
-- "device-hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-term_length": 1,
- "device-version": "16.09.05",
- "device-core_count": 2,
- "user-resourceName": "test",
-- "user-username": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "user-password": randString(10),
-+ "user-username": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "user-password": acctest.RandString(10),
- "connection-resourceName": "test",
-- "connection-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "connection-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "connection-profile_name": spName.(string),
- "connection-speed": 50,
- "connection-speed_unit": "MB",
-@@ -52,7 +53,7 @@ func TestAccNetworkBGP_CSR1000V_Single_AWS(t *testing.T) {
- "bgp-remote_asn": 22211,
- }
- contextWithChanges := copyMap(context)
-- contextWithChanges["bgp-authentication_key"] = randString(10)
-+ contextWithChanges["bgp-authentication_key"] = acctest.RandString(10)
- resourceName := fmt.Sprintf("equinix_network_bgp.%s", context["bgp-resourceName"].(string))
- var bgpConfig ne.BGPConfiguration
- resource.ParallelTest(t, resource.TestCase{
-diff --git a/equinix/resource_network_device_acc_test.go b/equinix/resource_network_device_acc_test.go
-index 3843107..a8f534c 100644
---- a/equinix/resource_network_device_acc_test.go
-+++ b/equinix/resource_network_device_acc_test.go
-@@ -9,6 +9,7 @@ import (
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/equinix/ne-go"
-+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -90,36 +91,36 @@ func TestAccNetworkDevice_CSR1000V_HA_Managed_Sub(t *testing.T) {
- "device-account_name": accountName.(string),
- "device-self_managed": false,
- "device-byol": false,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-throughput": 500,
- "device-throughput_unit": "Mbps",
- "device-metro_code": metro.(string),
- "device-type_code": "CSR1000V",
- "device-package_code": "SEC",
- "device-notifications": []string{"marry@equinix.com", "john@equinix.com"},
-- "device-hostname": fmt.Sprintf("tf-%s", randString(41)),
-+ "device-hostname": fmt.Sprintf("tf-%s", acctest.RandString(41)),
- "device-term_length": 1,
- "device-version": "16.09.05",
- "device-core_count": 2,
-- "device-purchase_order_number": randString(10),
-- "device-order_reference": randString(10),
-+ "device-purchase_order_number": acctest.RandString(10),
-+ "device-order_reference": acctest.RandString(10),
- "device-interface_count": 24,
- "device-additional_bandwidth": 0,
-- "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "device-secondary_hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "device-secondary_hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-secondary_notifications": []string{"secondary@equinix.com"},
- "user-resourceName": "tst-user",
-- "user-username": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "user-password": randString(10),
-+ "user-username": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "user-password": acctest.RandString(10),
- }
-
- contextWithACLs := copyMap(context)
- contextWithACLs["acl-resourceName"] = "acl-pri"
-- contextWithACLs["acl-name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-- contextWithACLs["acl-description"] = randString(50)
-+ contextWithACLs["acl-name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
-+ contextWithACLs["acl-description"] = acctest.RandString(50)
- contextWithACLs["acl-secondary_resourceName"] = "acl-sec"
-- contextWithACLs["acl-secondary_name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-- contextWithACLs["acl-secondary_description"] = randString(50)
-+ contextWithACLs["acl-secondary_name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
-+ contextWithACLs["acl-secondary_description"] = acctest.RandString(50)
- deviceResourceName := fmt.Sprintf("equinix_network_device.%s", context["device-resourceName"].(string))
- userResourceName := fmt.Sprintf("equinix_network_ssh_user.%s", context["user-resourceName"].(string))
- priACLResourceName := fmt.Sprintf("equinix_network_acl_template.%s", contextWithACLs["acl-resourceName"].(string))
-@@ -178,34 +179,34 @@ func TestAccNetworkDevice_CSR1000V_HA_Self_BYOL(t *testing.T) {
- "device-account_name": accountName.(string),
- "device-self_managed": true,
- "device-byol": true,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-throughput": 500,
- "device-throughput_unit": "Mbps",
- "device-metro_code": metro.(string),
- "device-type_code": "CSR1000V",
- "device-package_code": "SEC",
- "device-notifications": []string{"marry@equinix.com", "john@equinix.com"},
-- "device-hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-term_length": 1,
- "device-version": "16.09.05",
- "device-core_count": 2,
-- "device-purchase_order_number": randString(10),
-- "device-order_reference": randString(10),
-- "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "device-secondary_hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-purchase_order_number": acctest.RandString(10),
-+ "device-order_reference": acctest.RandString(10),
-+ "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "device-secondary_hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-secondary_notifications": []string{"secondary@equinix.com"},
- "sshkey-resourceName": "test",
-- "sshkey-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "sshkey-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "sshkey-public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCXdzXBHaVpKpdO0udnB+4JOgUq7APO2rPXfrevvlZrps98AtlwXXVWZ5duRH5NFNfU4G9HCSiAPsebgjY0fG85tcShpXfHfACLt0tBW8XhfLQP2T6S50FQ1brBdURMDCMsD7duOXqvc0dlbs2/KcswHvuUmqVzob3bz7n1bQ48wIHsPg4ARqYhy5LN3OkllJH/6GEfqi8lKZx01/P/gmJMORcJujuOyXRB+F2iXBVYdhjML3Qg4+tEekBcVZOxUbERRZ0pvQ52Y6wUhn2VsjljixyqeOdmD0m6DayDQgSWms6bKPpBqN7zhXXk4qe8bXT4tQQba65b2CQ2A91jw2KgM/YZNmjyUJ+Rf1cQosJf9twqbAZDZ6rAEmj9zzvQ5vD/CGuzxdVMkePLlUK4VGjPu7cVzhXrnq4318WqZ5/lNiCST8NQ0fssChN8ANUzr/p/wwv3faFMVNmjxXTZMsbMFT/fbb2MVVuqNFN65drntlg6/xEao8gZROuRYiakBx8= user@host",
- }
-
- contextWithACLs := copyMap(context)
- contextWithACLs["acl-resourceName"] = "acl-pri"
-- contextWithACLs["acl-name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-- contextWithACLs["acl-description"] = randString(50)
-+ contextWithACLs["acl-name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
-+ contextWithACLs["acl-description"] = acctest.RandString(50)
- contextWithACLs["acl-secondary_resourceName"] = "acl-sec"
-- contextWithACLs["acl-secondary_name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-- contextWithACLs["acl-secondary_description"] = randString(50)
-+ contextWithACLs["acl-secondary_name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
-+ contextWithACLs["acl-secondary_description"] = acctest.RandString(50)
- deviceResourceName := fmt.Sprintf("equinix_network_device.%s", context["device-resourceName"].(string))
- priACLResourceName := fmt.Sprintf("equinix_network_acl_template.%s", contextWithACLs["acl-resourceName"].(string))
- secACLResourceName := fmt.Sprintf("equinix_network_acl_template.%s", contextWithACLs["acl-secondary_resourceName"].(string))
-@@ -254,26 +255,26 @@ func TestAccNetworkDevice_vSRX_HA_Managed_Sub(t *testing.T) {
- "device-account_name": accountName.(string),
- "device-self_managed": false,
- "device-byol": false,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-metro_code": metro.(string),
- "device-type_code": "VSRX",
- "device-package_code": "STD",
- "device-notifications": []string{"marry@equinix.com", "john@equinix.com"},
-- "device-hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-term_length": 1,
- "device-version": "19.2R2.7",
- "device-core_count": 2,
-- "device-purchase_order_number": randString(10),
-- "device-order_reference": randString(10),
-- "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "device-secondary_hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-purchase_order_number": acctest.RandString(10),
-+ "device-order_reference": acctest.RandString(10),
-+ "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "device-secondary_hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-secondary_notifications": []string{"secondary@equinix.com"},
- }
-
- contextWithChanges := copyMap(context)
- contextWithChanges["user-resourceName"] = "test"
-- contextWithChanges["user-username"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-- contextWithChanges["user-password"] = randString(10)
-+ contextWithChanges["user-username"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
-+ contextWithChanges["user-password"] = acctest.RandString(10)
- deviceResourceName := fmt.Sprintf("equinix_network_device.%s", context["device-resourceName"].(string))
- userResourceName := fmt.Sprintf("equinix_network_ssh_user.%s", contextWithChanges["user-resourceName"].(string))
- var primary, secondary ne.Device
-@@ -324,40 +325,40 @@ func TestAccNetworkDevice_vSRX_HA_Managed_BYOL(t *testing.T) {
- "device-account_name": accountName.(string),
- "device-self_managed": false,
- "device-byol": true,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-license_file": licenseFile.(string),
- "device-metro_code": metro.(string),
- "device-type_code": "VSRX",
- "device-package_code": "STD",
- "device-notifications": []string{"marry@equinix.com", "john@equinix.com"},
-- "device-hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-term_length": 1,
- "device-version": "19.2R2.7",
- "device-core_count": 2,
-- "device-purchase_order_number": randString(10),
-- "device-order_reference": randString(10),
-- "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-purchase_order_number": acctest.RandString(10),
-+ "device-order_reference": acctest.RandString(10),
-+ "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-secondary_license_file": licenseFile.(string),
-- "device-secondary_hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-secondary_hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-secondary_notifications": []string{"secondary@equinix.com"},
- "acl-resourceName": "acl-pri",
-- "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-description": randString(50),
-+ "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-description": acctest.RandString(50),
- "acl-secondary_resourceName": "acl-sec",
-- "acl-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-secondary_description": randString(50),
-+ "acl-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-secondary_description": acctest.RandString(50),
- }
-
- contextWithChanges := copyMap(context)
-- contextWithChanges["device-name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-+ contextWithChanges["device-name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
- contextWithChanges["device-additional_bandwidth"] = 100
- contextWithChanges["device-notifications"] = []string{"jerry@equinix.com", "tom@equinix.com"}
-- contextWithChanges["device-secondary_name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-+ contextWithChanges["device-secondary_name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
- contextWithChanges["device-secondary_additional_bandwidth"] = 100
- contextWithChanges["device-secondary_notifications"] = []string{"miki@equinix.com", "mini@equinix.com"}
- contextWithChanges["user-resourceName"] = "test"
-- contextWithChanges["user-username"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-- contextWithChanges["user-password"] = randString(10)
-+ contextWithChanges["user-username"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
-+ contextWithChanges["user-password"] = acctest.RandString(10)
- deviceResourceName := fmt.Sprintf("equinix_network_device.%s", context["device-resourceName"].(string))
- userResourceName := fmt.Sprintf("equinix_network_ssh_user.%s", contextWithChanges["user-resourceName"].(string))
- var primary, secondary ne.Device
-@@ -406,28 +407,28 @@ func TestAccNetworkDevice_vSRX_HA_Self_BYOL(t *testing.T) {
- "device-account_name": accountName.(string),
- "device-self_managed": true,
- "device-byol": true,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-metro_code": metro.(string),
- "device-type_code": "VSRX",
- "device-package_code": "STD",
- "device-notifications": []string{"marry@equinix.com", "john@equinix.com"},
-- "device-hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-term_length": 1,
- "device-version": "19.2R2.7",
- "device-core_count": 2,
-- "device-purchase_order_number": randString(10),
-- "device-order_reference": randString(10),
-- "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "device-secondary_hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-purchase_order_number": acctest.RandString(10),
-+ "device-order_reference": acctest.RandString(10),
-+ "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "device-secondary_hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-secondary_notifications": []string{"secondary@equinix.com"},
- "acl-resourceName": "acl-pri",
-- "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-description": randString(50),
-+ "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-description": acctest.RandString(50),
- "acl-secondary_resourceName": "acl-sec",
-- "acl-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-secondary_description": randString(50),
-+ "acl-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-secondary_description": acctest.RandString(50),
- "sshkey-resourceName": "test",
-- "sshkey-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "sshkey-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "sshkey-public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCXdzXBHaVpKpdO0udnB+4JOgUq7APO2rPXfrevvlZrps98AtlwXXVWZ5duRH5NFNfU4G9HCSiAPsebgjY0fG85tcShpXfHfACLt0tBW8XhfLQP2T6S50FQ1brBdURMDCMsD7duOXqvc0dlbs2/KcswHvuUmqVzob3bz7n1bQ48wIHsPg4ARqYhy5LN3OkllJH/6GEfqi8lKZx01/P/gmJMORcJujuOyXRB+F2iXBVYdhjML3Qg4+tEekBcVZOxUbERRZ0pvQ52Y6wUhn2VsjljixyqeOdmD0m6DayDQgSWms6bKPpBqN7zhXXk4qe8bXT4tQQba65b2CQ2A91jw2KgM/YZNmjyUJ+Rf1cQosJf9twqbAZDZ6rAEmj9zzvQ5vD/CGuzxdVMkePLlUK4VGjPu7cVzhXrnq4318WqZ5/lNiCST8NQ0fssChN8ANUzr/p/wwv3faFMVNmjxXTZMsbMFT/fbb2MVVuqNFN65drntlg6/xEao8gZROuRYiakBx8= user@host",
- }
-
-@@ -462,34 +463,34 @@ func TestAccNetworkDevice_PaloAlto_HA_Managed_Sub(t *testing.T) {
- "device-account_name": accountName.(string),
- "device-self_managed": false,
- "device-byol": false,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-metro_code": metro.(string),
- "device-type_code": "PA-VM",
- "device-package_code": "VM100",
- "device-notifications": []string{"marry@equinix.com", "john@equinix.com"},
-- "device-hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-term_length": 1,
- "device-version": "9.0.4",
- "device-core_count": 2,
-- "device-purchase_order_number": randString(10),
-- "device-order_reference": randString(10),
-- "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "device-secondary_hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-purchase_order_number": acctest.RandString(10),
-+ "device-order_reference": acctest.RandString(10),
-+ "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "device-secondary_hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-secondary_notifications": []string{"secondary@equinix.com"},
- "acl-resourceName": "acl-pri",
-- "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-description": randString(50),
-+ "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-description": acctest.RandString(50),
- "acl-secondary_resourceName": "acl-sec",
-- "acl-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-secondary_description": randString(50),
-+ "acl-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-secondary_description": acctest.RandString(50),
- }
-
- contextWithChanges := copyMap(context)
- contextWithChanges["device-additional_bandwidth"] = 50
- contextWithChanges["device-secondary_additional_bandwidth"] = 50
- contextWithChanges["user-resourceName"] = "tst-user"
-- contextWithChanges["user-username"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-- contextWithChanges["user-password"] = randString(10)
-+ contextWithChanges["user-username"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
-+ contextWithChanges["user-password"] = acctest.RandString(10)
- var primary, secondary ne.Device
- var primaryACL, secondaryACL ne.ACLTemplate
- var user ne.SSHUser
-@@ -546,32 +547,32 @@ func TestAccNetworkDevice_PaloAlto_HA_Self_BYOL(t *testing.T) {
- "device-self_managed": true,
- "connectivity": "PRIVATE",
- "device-byol": true,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-metro_code": metro.(string),
- "device-type_code": "PA-VM",
- "device-package_code": "VM100",
- "device-notifications": []string{"marry@equinix.com", "john@equinix.com"},
-- "device-hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-term_length": 1,
- "device-version": "9.0.4",
- "device-core_count": 2,
-- "device-purchase_order_number": randString(10),
-- "device-order_reference": randString(10),
-- "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "device-secondary_hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-purchase_order_number": acctest.RandString(10),
-+ "device-order_reference": acctest.RandString(10),
-+ "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "device-secondary_hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-secondary_notifications": []string{"secondary@equinix.com"},
- "sshkey-resourceName": "test",
-- "sshkey-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "sshkey-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "sshkey-public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCXdzXBHaVpKpdO0udnB+4JOgUq7APO2rPXfrevvlZrps98AtlwXXVWZ5duRH5NFNfU4G9HCSiAPsebgjY0fG85tcShpXfHfACLt0tBW8XhfLQP2T6S50FQ1brBdURMDCMsD7duOXqvc0dlbs2/KcswHvuUmqVzob3bz7n1bQ48wIHsPg4ARqYhy5LN3OkllJH/6GEfqi8lKZx01/P/gmJMORcJujuOyXRB+F2iXBVYdhjML3Qg4+tEekBcVZOxUbERRZ0pvQ52Y6wUhn2VsjljixyqeOdmD0m6DayDQgSWms6bKPpBqN7zhXXk4qe8bXT4tQQba65b2CQ2A91jw2KgM/YZNmjyUJ+Rf1cQosJf9twqbAZDZ6rAEmj9zzvQ5vD/CGuzxdVMkePLlUK4VGjPu7cVzhXrnq4318WqZ5/lNiCST8NQ0fssChN8ANUzr/p/wwv3faFMVNmjxXTZMsbMFT/fbb2MVVuqNFN65drntlg6/xEao8gZROuRYiakBx8= user@host",
- }
-
- contextWithACLs := copyMap(context)
- contextWithACLs["acl-resourceName"] = "acl-pri"
-- contextWithACLs["acl-name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-- contextWithACLs["acl-description"] = randString(50)
-+ contextWithACLs["acl-name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
-+ contextWithACLs["acl-description"] = acctest.RandString(50)
- contextWithACLs["acl-secondary_resourceName"] = "acl-sec"
-- contextWithACLs["acl-secondary_name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6))
-- contextWithACLs["acl-secondary_description"] = randString(50)
-+ contextWithACLs["acl-secondary_name"] = fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6))
-+ contextWithACLs["acl-secondary_description"] = acctest.RandString(50)
- deviceResourceName := fmt.Sprintf("equinix_network_device.%s", context["device-resourceName"].(string))
- priACLResourceName := fmt.Sprintf("equinix_network_acl_template.%s", contextWithACLs["acl-resourceName"].(string))
- secACLResourceName := fmt.Sprintf("equinix_network_acl_template.%s", contextWithACLs["acl-secondary_resourceName"].(string))
-@@ -620,7 +621,7 @@ func TestAccNetworkDevice_CSRSDWAN_HA_Self_BYOL(t *testing.T) {
- "device-account_name": accountName.(string),
- "device-self_managed": true,
- "device-byol": true,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-metro_code": metro.(string),
- "device-license_file": licFile.(string),
- "device-throughput": 250,
-@@ -631,23 +632,23 @@ func TestAccNetworkDevice_CSRSDWAN_HA_Self_BYOL(t *testing.T) {
- "device-term_length": 1,
- "device-version": "16.12.3",
- "device-core_count": 2,
-- "device-purchase_order_number": randString(10),
-- "device-order_reference": randString(10),
-+ "device-purchase_order_number": acctest.RandString(10),
-+ "device-order_reference": acctest.RandString(10),
- "device-vendorConfig_enabled": true,
- "device-vendorConfig_siteId": "10",
- "device-vendorConfig_systemIpAddress": "1.1.1.1",
-- "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-secondary_license_file": licFile.(string),
- "device-secondary_notifications": []string{"secondary@equinix.com"},
- "device-secondary_vendorConfig_enabled": true,
- "device-secondary_vendorConfig_siteId": "20",
- "device-secondary_vendorConfig_systemIpAddress": "2.2.2.2",
- "acl-resourceName": "acl-pri",
-- "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-description": randString(50),
-+ "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-description": acctest.RandString(50),
- "acl-secondary_resourceName": "acl-sec",
-- "acl-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-secondary_description": randString(50),
-+ "acl-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-secondary_description": acctest.RandString(50),
- }
-
- deviceResourceName := fmt.Sprintf("equinix_network_device.%s", context["device-resourceName"].(string))
-@@ -697,7 +698,7 @@ func TestAccNetworkDevice_Versa_HA_Self_BYOL(t *testing.T) {
- "device-account_name": accountName.(string),
- "device-self_managed": true,
- "device-byol": true,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-metro_code": metro.(string),
- "device-type_code": "VERSA_SDWAN",
- "device-package_code": "FLEX_VNF_2",
-@@ -705,15 +706,15 @@ func TestAccNetworkDevice_Versa_HA_Self_BYOL(t *testing.T) {
- "device-term_length": 1,
- "device-version": "16.1R2S8",
- "device-core_count": 2,
-- "device-purchase_order_number": randString(10),
-- "device-order_reference": randString(10),
-+ "device-purchase_order_number": acctest.RandString(10),
-+ "device-order_reference": acctest.RandString(10),
- "device-vendorConfig_enabled": true,
- "device-vendorConfig_controller1": controller1.(string),
- "device-vendorConfig_controller2": controller2.(string),
- "device-vendorConfig_localId": localID.(string),
- "device-vendorConfig_remoteId": remoteID.(string),
- "device-vendorConfig_serialNumber": serialNumber.(string),
-- "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-secondary_notifications": []string{"secondary@equinix.com"},
- "device-secondary_vendorConfig_enabled": true,
- "device-secondary_vendorConfig_controller1": controller1.(string),
-@@ -722,11 +723,11 @@ func TestAccNetworkDevice_Versa_HA_Self_BYOL(t *testing.T) {
- "device-secondary_vendorConfig_remoteId": remoteID.(string),
- "device-secondary_vendorConfig_serialNumber": serialNumber.(string),
- "acl-resourceName": "acl-pri",
-- "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-description": randString(50),
-+ "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-description": acctest.RandString(50),
- "acl-secondary_resourceName": "acl-sec",
-- "acl-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-secondary_description": randString(50),
-+ "acl-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-secondary_description": acctest.RandString(50),
- }
-
- deviceResourceName := fmt.Sprintf("equinix_network_device.%s", context["device-resourceName"].(string))
-@@ -764,14 +765,14 @@ func TestAccNetworkDevice_Versa_HA_Self_BYOL(t *testing.T) {
- func TestAccNetworkDevice_CGENIX_HA_Self_BYOL(t *testing.T) {
- metro, _ := schema.EnvDefaultFunc(networkDeviceMetroEnvVar, "SV")()
- accountName, _ := schema.EnvDefaultFunc(networkDeviceAccountNameEnvVar, "")()
-- licenseKey, _ := schema.EnvDefaultFunc(networkDeviceCGENIXLicenseKeyEnvVar, randString(10))()
-- licenseSecret, _ := schema.EnvDefaultFunc(networkDeviceCGENIXLicenseSecretEnvVar, randString(10))()
-+ licenseKey, _ := schema.EnvDefaultFunc(networkDeviceCGENIXLicenseKeyEnvVar, acctest.RandString(10))()
-+ licenseSecret, _ := schema.EnvDefaultFunc(networkDeviceCGENIXLicenseSecretEnvVar, acctest.RandString(10))()
- context := map[string]interface{}{
- "device-resourceName": "test",
- "device-account_name": accountName.(string),
- "device-self_managed": true,
- "device-byol": true,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-metro_code": metro.(string),
- "device-type_code": "CGENIXSDWAN",
- "device-package_code": "3102V",
-@@ -779,22 +780,22 @@ func TestAccNetworkDevice_CGENIX_HA_Self_BYOL(t *testing.T) {
- "device-term_length": 1,
- "device-version": "5.2.1-b11",
- "device-core_count": 2,
-- "device-purchase_order_number": randString(10),
-- "device-order_reference": randString(10),
-+ "device-purchase_order_number": acctest.RandString(10),
-+ "device-order_reference": acctest.RandString(10),
- "device-vendorConfig_enabled": true,
- "device-vendorConfig_licenseKey": licenseKey.(string),
- "device-vendorConfig_licenseSecret": licenseSecret.(string),
-- "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-secondary_notifications": []string{"secondary@equinix.com"},
- "device-secondary_vendorConfig_enabled": true,
- "device-secondary_vendorConfig_licenseKey": licenseKey.(string),
- "device-secondary_vendorConfig_licenseSecret": licenseSecret.(string),
- "acl-resourceName": "acl-pri",
-- "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-description": randString(50),
-+ "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-description": acctest.RandString(50),
- "acl-secondary_resourceName": "acl-sec",
-- "acl-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-secondary_description": randString(50),
-+ "acl-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-secondary_description": acctest.RandString(50),
- }
-
- deviceResourceName := fmt.Sprintf("equinix_network_device.%s", context["device-resourceName"].(string))
-@@ -838,7 +839,7 @@ func TestAccNetworkDevice_PaloAlto_Cluster_Self_BYOL(t *testing.T) {
- "device-account_name": accountName.(string),
- "device-self_managed": true,
- "device-byol": true,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-metro_code": metro.(string),
- "device-type_code": "PA-VM",
- "device-package_code": "VM100",
-@@ -847,22 +848,22 @@ func TestAccNetworkDevice_PaloAlto_Cluster_Self_BYOL(t *testing.T) {
- "device-version": "10.1.3",
- "device-interface_count": 10,
- "device-core_count": 2,
-- "device-cluster_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-cluster_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-node0_vendorConfig_enabled": true,
-- "device-node0_vendorConfig_hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-node0_vendorConfig_hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-node0_license_token": licenseToken.(string),
- "device-node1_vendorConfig_enabled": true,
-- "device-node1_vendorConfig_hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-node1_vendorConfig_hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-node1_license_token": licenseToken.(string),
- "sshkey-resourceName": "test",
-- "sshkey-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "sshkey-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "sshkey-public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCXdzXBHaVpKpdO0udnB+4JOgUq7APO2rPXfrevvlZrps98AtlwXXVWZ5duRH5NFNfU4G9HCSiAPsebgjY0fG85tcShpXfHfACLt0tBW8XhfLQP2T6S50FQ1brBdURMDCMsD7duOXqvc0dlbs2/KcswHvuUmqVzob3bz7n1bQ48wIHsPg4ARqYhy5LN3OkllJH/6GEfqi8lKZx01/P/gmJMORcJujuOyXRB+F2iXBVYdhjML3Qg4+tEekBcVZOxUbERRZ0pvQ52Y6wUhn2VsjljixyqeOdmD0m6DayDQgSWms6bKPpBqN7zhXXk4qe8bXT4tQQba65b2CQ2A91jw2KgM/YZNmjyUJ+Rf1cQosJf9twqbAZDZ6rAEmj9zzvQ5vD/CGuzxdVMkePLlUK4VGjPu7cVzhXrnq4318WqZ5/lNiCST8NQ0fssChN8ANUzr/p/wwv3faFMVNmjxXTZMsbMFT/fbb2MVVuqNFN65drntlg6/xEao8gZROuRYiakBx8= user@host",
- "acl-resourceName": "acl-cluster",
-- "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "acl-description": randString(50),
-+ "acl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "acl-description": acctest.RandString(50),
- "mgmtAcl-resourceName": "mgmtAcl-cluster",
-- "mgmtAcl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-- "mgmtAcl-description": randString(50),
-+ "mgmtAcl-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
-+ "mgmtAcl-description": acctest.RandString(50),
- }
-
- deviceResourceName := fmt.Sprintf("equinix_network_device.%s", context["device-resourceName"].(string))
-diff --git a/equinix/resource_network_device_link_acc_test.go b/equinix/resource_network_device_link_acc_test.go
-index 026f91a..2069234 100644
---- a/equinix/resource_network_device_link_acc_test.go
-+++ b/equinix/resource_network_device_link_acc_test.go
-@@ -9,6 +9,7 @@ import (
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/equinix/ne-go"
-+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
-@@ -63,24 +64,24 @@ func TestAccNetworkDeviceLink(t *testing.T) {
- "device-account_name": accountName.(string),
- "device-self_managed": false,
- "device-byol": false,
-- "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-throughput": 500,
- "device-throughput_unit": "Mbps",
- "device-metro_code": metro.(string),
- "device-type_code": "CSR1000V",
- "device-package_code": "SEC",
- "device-notifications": []string{"test@equinix.com"},
-- "device-hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-term_length": 1,
- "device-version": "16.09.05",
- "device-core_count": 2,
-- "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "device-secondary_name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "device-secondary_account_name": accountNameSecondary.(string),
- "device-secondary_metro_code": metroSecondary.(string),
-- "device-secondary_hostname": fmt.Sprintf("tf-%s", randString(6)),
-+ "device-secondary_hostname": fmt.Sprintf("tf-%s", acctest.RandString(6)),
- "device-secondary_notifications": []string{"test@equinix.com"},
- "link-resourceName": "test",
-- "link-name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "link-name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "link-subnet": "10.69.1.0/24",
- "link-device_1_asn": 23404,
- "link-device_1_interface_id": 6,
-diff --git a/equinix/resource_network_file_acc_test.go b/equinix/resource_network_file_acc_test.go
-index 38fff93..d848ec1 100644
---- a/equinix/resource_network_file_acc_test.go
-+++ b/equinix/resource_network_file_acc_test.go
-@@ -7,6 +7,7 @@ import (
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/equinix/ne-go"
-+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- )
-@@ -14,8 +15,8 @@ import (
- func TestAccNetworkFile_VSRX(t *testing.T) {
- context := map[string]interface{}{
- "resourceName": "test",
-- "fileName": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)) + ".lic",
-- "content": randString(50),
-+ "fileName": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)) + ".lic",
-+ "content": acctest.RandString(50),
- "metroCode": "SV",
- "deviceTypeCode": "VSRX",
- "processType": "LICENSE",
-diff --git a/equinix/resource_network_ssh_key_acc_test.go b/equinix/resource_network_ssh_key_acc_test.go
-index 8115fac..4ef1253 100644
---- a/equinix/resource_network_ssh_key_acc_test.go
-+++ b/equinix/resource_network_ssh_key_acc_test.go
-@@ -9,6 +9,7 @@ import (
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
- "github.com/equinix/ne-go"
-+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- )
-@@ -55,7 +56,7 @@ func testSweepNetworkSSHKey(region string) error {
- func TestAccNetworkSSHKey(t *testing.T) {
- context := map[string]interface{}{
- "resourceName": "test",
-- "name": fmt.Sprintf("%s-%s", tstResourcePrefix, randString(6)),
-+ "name": fmt.Sprintf("%s-%s", tstResourcePrefix, acctest.RandString(6)),
- "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCXdzXBHaVpKpdO0udnB+4JOgUq7APO2rPXfrevvlZrps98AtlwXXVWZ5duRH5NFNfU4G9HCSiAPsebgjY0fG85tcShpXfHfACLt0tBW8XhfLQP2T6S50FQ1brBdURMDCMsD7duOXqvc0dlbs2/KcswHvuUmqVzob3bz7n1bQ48wIHsPg4ARqYhy5LN3OkllJH/6GEfqi8lKZx01/P/gmJMORcJujuOyXRB+F2iXBVYdhjML3Qg4+tEekBcVZOxUbERRZ0pvQ52Y6wUhn2VsjljixyqeOdmD0m6DayDQgSWms6bKPpBqN7zhXXk4qe8bXT4tQQba65b2CQ2A91jw2KgM/YZNmjyUJ+Rf1cQosJf9twqbAZDZ6rAEmj9zzvQ5vD/CGuzxdVMkePLlUK4VGjPu7cVzhXrnq4318WqZ5/lNiCST8NQ0fssChN8ANUzr/p/wwv3faFMVNmjxXTZMsbMFT/fbb2MVVuqNFN65drntlg6/xEao8gZROuRYiakBx8= user@host",
- "type": "RSA",
- }
diff --git a/patches/0047-refactor-move-spot-market-timeouts-out-of-provider.g.patch b/patches/0047-refactor-move-spot-market-timeouts-out-of-provider.g.patch
deleted file mode 100644
index 6cad78c9..00000000
--- a/patches/0047-refactor-move-spot-market-timeouts-out-of-provider.g.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Charles Treatman
-Date: Tue, 12 Dec 2023 09:28:08 -0600
-Subject: [PATCH 47/51] refactor: move spot market timeouts out of provider.go
- (#483)
-
-There was a private variable for default timeouts defined in
-`provider.go`, but it was only referenced in the spot market request
-data source. Other resources and data sources define their default
-timeouts inline; this does the same for the spot market request data
-source so that it will be easier to move that data source to a different
-package than the one that `provider.go` is in.
-
-diff --git a/equinix/data_source_metal_spot_market_request.go b/equinix/data_source_metal_spot_market_request.go
-index 4307153..66fb6b9 100644
---- a/equinix/data_source_metal_spot_market_request.go
-+++ b/equinix/data_source_metal_spot_market_request.go
-@@ -74,7 +74,12 @@ func dataSourceMetalSpotMarketRequest() *schema.Resource {
- Computed: true,
- },
- },
-- Timeouts: resourceDefaultTimeouts,
-+ Timeouts: &schema.ResourceTimeout{
-+ Create: schema.DefaultTimeout(60 * time.Minute),
-+ Update: schema.DefaultTimeout(60 * time.Minute),
-+ Delete: schema.DefaultTimeout(60 * time.Minute),
-+ Default: schema.DefaultTimeout(60 * time.Minute),
-+ },
- }
- }
-
-diff --git a/equinix/provider.go b/equinix/provider.go
-index 2ff4a5d..2f9ed13 100644
---- a/equinix/provider.go
-+++ b/equinix/provider.go
-@@ -233,13 +233,6 @@ func configureProvider(ctx context.Context, d *schema.ResourceData, p *schema.Pr
- return &config, nil
- }
-
--var resourceDefaultTimeouts = &schema.ResourceTimeout{
-- Create: schema.DefaultTimeout(60 * time.Minute),
-- Update: schema.DefaultTimeout(60 * time.Minute),
-- Delete: schema.DefaultTimeout(60 * time.Minute),
-- Default: schema.DefaultTimeout(60 * time.Minute),
--}
--
- func expandListToStringList(list []interface{}) []string {
- result := make([]string, len(list))
- for i, v := range list {
diff --git a/patches/0048-fix-deps-update-module-github.com-equinix-labs-metal.patch b/patches/0048-fix-deps-update-module-github.com-equinix-labs-metal.patch
deleted file mode 100644
index 20c82755..00000000
--- a/patches/0048-fix-deps-update-module-github.com-equinix-labs-metal.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
-Date: Thu, 14 Dec 2023 09:37:48 -0600
-Subject: [PATCH 48/51] fix(deps): update module
- github.com/equinix-labs/metal-go to v0.29.0 (#470)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[![Mend
-Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)
-
-This PR contains the following updates:
-
-| Package | Type | Update | Change |
-|---|---|---|---|
-|
-[github.com/equinix-labs/metal-go](https://togithub.com/equinix-labs/metal-go)
-| require | minor | `v0.27.0` -> `v0.29.0` |
-
----
-
-### Release Notes
-
-
-equinix-labs/metal-go
-(github.com/equinix-labs/metal-go)
-
-###
-[`v0.29.0`](https://togithub.com/equinix-labs/metal-go/releases/tag/v0.29.0)
-
-[Compare
-Source](https://togithub.com/equinix-labs/metal-go/compare/v0.28.0...v0.29.0)
-
-##### Features
-
-- patch bgpsession spec to remove status enum
-([#178](https://togithub.com/equinix-labs/metal-go/issues/178))
-([cd21e3a](https://togithub.com/equinix-labs/metal-go/commit/cd21e3ae50c62304b11e4a55a263f85f9ccbd8d4))
-
-###
-[`v0.28.0`](https://togithub.com/equinix-labs/metal-go/releases/tag/v0.28.0)
-
-[Compare
-Source](https://togithub.com/equinix-labs/metal-go/compare/v0.27.0...v0.28.0)
-
-##### Features
-
-- API Sync by GitHub Action (2023-11-08)
-([#171](https://togithub.com/equinix-labs/metal-go/issues/171))
-([ad2dc45](https://togithub.com/equinix-labs/metal-go/commit/ad2dc4553f61a02d6021890ad52cf045ba6b0535))
-
-##### Bug Fixes
-
-- avoid nil pointer error when debugging requests with no body
-([#176](https://togithub.com/equinix-labs/metal-go/issues/176))
-([d87441c](https://togithub.com/equinix-labs/metal-go/commit/d87441ceae54e4c83dfdba0b2950b7a50c64e884))
-
-
-
----
-
-### Configuration
-
-📅 **Schedule**: Branch creation - At any time (no schedule defined),
-Automerge - At any time (no schedule defined).
-
-🚦 **Automerge**: Disabled by config. Please merge this manually once you
-are satisfied.
-
-♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
-rebase/retry checkbox.
-
-🔕 **Ignore**: Close this PR and you won't be reminded about this update
-again.
-
----
-
-- [ ] If you want to rebase/retry this PR, check
-this box
-
----
-
-This PR has been generated by [Mend
-Renovate](https://www.mend.io/free-developer-tools/renovate/). View
-repository job log
-[here](https://developer.mend.io/github/equinix/terraform-provider-equinix).
-
-
-
-Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
-
-diff --git a/go.mod b/go.mod
-index 5ace711..c6f09fb 100644
---- a/go.mod
-+++ b/go.mod
-@@ -5,7 +5,7 @@ go 1.20
- require (
- github.com/antihax/optional v1.0.0
- github.com/equinix-labs/fabric-go v0.7.1
-- github.com/equinix-labs/metal-go v0.27.0
-+ github.com/equinix-labs/metal-go v0.29.0
- github.com/equinix/ecx-go/v2 v2.3.1
- github.com/equinix/ne-go v1.11.0
- github.com/equinix/oauth2-go v1.0.0
-diff --git a/go.sum b/go.sum
-index dcf2004..186af92 100644
---- a/go.sum
-+++ b/go.sum
-@@ -263,6 +263,8 @@ github.com/equinix-labs/fabric-go v0.7.1 h1:4yk0IKXMcc72rkRVbcYHokAEc1uUB06t6NXK
- github.com/equinix-labs/fabric-go v0.7.1/go.mod h1:oqgGS3GOI8hHGPJKsAwDOEX0qRHl52sJGvwA/zMSd90=
- github.com/equinix-labs/metal-go v0.27.0 h1:p5Bqus/gSs5oQezHWXWpc0IzkQl06+yZgbXT5jB7AWs=
- github.com/equinix-labs/metal-go v0.27.0/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
-+github.com/equinix-labs/metal-go v0.29.0 h1:dTi48+ni4Xbey0VJjHrkoAOxJvVPl9ukA/6DoJv6o8s=
-+github.com/equinix-labs/metal-go v0.29.0/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
- github.com/equinix/ecx-go/v2 v2.3.1 h1:gFcAIeyaEUw7S8ebqApmT7E/S7pC7Ac3wgScp89fkPU=
- github.com/equinix/ecx-go/v2 v2.3.1/go.mod h1:FvCdZ3jXU8Z4CPKig2DT+4J2HdwgRK17pIcznM7RXyk=
- github.com/equinix/ne-go v1.11.0 h1:ja6G2fmcGrLsOeV25Mq6pDfH+/cUlvxJbnE8uRXTGGk=
diff --git a/patches/0049-refactor-switch-from-metal-go-to-equinix-sdk-go-489.patch b/patches/0049-refactor-switch-from-metal-go-to-equinix-sdk-go-489.patch
deleted file mode 100644
index 576d6fed..00000000
--- a/patches/0049-refactor-switch-from-metal-go-to-equinix-sdk-go-489.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Charles Treatman
-Date: Thu, 14 Dec 2023 11:01:47 -0600
-Subject: [PATCH 49/51] refactor: switch from metal-go to equinix-sdk-go (#489)
-
-
-diff --git a/equinix/data_source_metal_device.go b/equinix/data_source_metal_device.go
-index 8e7e9ab..ed5548b 100644
---- a/equinix/data_source_metal_device.go
-+++ b/equinix/data_source_metal_device.go
-@@ -10,7 +10,7 @@ import (
-
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
-- metalv1 "github.com/equinix-labs/metal-go/metal/v1"
-+ "github.com/equinix/equinix-sdk-go/services/metalv1"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure"
- )
-diff --git a/equinix/data_source_metal_device_bgp_neighbors.go b/equinix/data_source_metal_device_bgp_neighbors.go
-index 641f2f8..3adf684 100644
---- a/equinix/data_source_metal_device_bgp_neighbors.go
-+++ b/equinix/data_source_metal_device_bgp_neighbors.go
-@@ -5,7 +5,7 @@ import (
-
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
-- metalv1 "github.com/equinix-labs/metal-go/metal/v1"
-+ "github.com/equinix/equinix-sdk-go/services/metalv1"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- )
-diff --git a/equinix/data_source_metal_devices.go b/equinix/data_source_metal_devices.go
-index 9e1d834..dee58d7 100644
---- a/equinix/data_source_metal_devices.go
-+++ b/equinix/data_source_metal_devices.go
-@@ -6,7 +6,7 @@ import (
-
- "github.com/equinix/terraform-provider-equinix/internal/config"
-
-- metalv1 "github.com/equinix-labs/metal-go/metal/v1"
-+ "github.com/equinix/equinix-sdk-go/services/metalv1"
- "github.com/equinix/terraform-provider-equinix/internal/datalist"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- )
-diff --git a/equinix/helpers_device.go b/equinix/helpers_device.go
-index 74ecceb..0a2932c 100644
---- a/equinix/helpers_device.go
-+++ b/equinix/helpers_device.go
-@@ -16,7 +16,7 @@ import (
-
- equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
-
-- metalv1 "github.com/equinix-labs/metal-go/metal/v1"
-+ "github.com/equinix/equinix-sdk-go/services/metalv1"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
-diff --git a/go.mod b/go.mod
-index c6f09fb..e14e4ce 100644
---- a/go.mod
-+++ b/go.mod
-@@ -5,8 +5,8 @@ go 1.20
- require (
- github.com/antihax/optional v1.0.0
- github.com/equinix-labs/fabric-go v0.7.1
-- github.com/equinix-labs/metal-go v0.29.0
- github.com/equinix/ecx-go/v2 v2.3.1
-+ github.com/equinix/equinix-sdk-go v0.30.0
- github.com/equinix/ne-go v1.11.0
- github.com/equinix/oauth2-go v1.0.0
- github.com/equinix/rest-go v1.3.0
-diff --git a/go.sum b/go.sum
-index 186af92..6ac881b 100644
---- a/go.sum
-+++ b/go.sum
-@@ -261,12 +261,10 @@ github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.
- github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
- github.com/equinix-labs/fabric-go v0.7.1 h1:4yk0IKXMcc72rkRVbcYHokAEc1uUB06t6NXK+DtSsbs=
- github.com/equinix-labs/fabric-go v0.7.1/go.mod h1:oqgGS3GOI8hHGPJKsAwDOEX0qRHl52sJGvwA/zMSd90=
--github.com/equinix-labs/metal-go v0.27.0 h1:p5Bqus/gSs5oQezHWXWpc0IzkQl06+yZgbXT5jB7AWs=
--github.com/equinix-labs/metal-go v0.27.0/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
--github.com/equinix-labs/metal-go v0.29.0 h1:dTi48+ni4Xbey0VJjHrkoAOxJvVPl9ukA/6DoJv6o8s=
--github.com/equinix-labs/metal-go v0.29.0/go.mod h1:SmxCklxW+KjmBLVMdEXgtFO5gD5/b4N0VxcNgUYbOH4=
- github.com/equinix/ecx-go/v2 v2.3.1 h1:gFcAIeyaEUw7S8ebqApmT7E/S7pC7Ac3wgScp89fkPU=
- github.com/equinix/ecx-go/v2 v2.3.1/go.mod h1:FvCdZ3jXU8Z4CPKig2DT+4J2HdwgRK17pIcznM7RXyk=
-+github.com/equinix/equinix-sdk-go v0.30.0 h1:u/+/p00mfAhDhoLvP1jTKruXndAYWoTwqN65BTbAPCg=
-+github.com/equinix/equinix-sdk-go v0.30.0/go.mod h1:qnpdRzVftHFNaJFk1VSIrAOTLrIoeDrxzUr3l8ARyvQ=
- github.com/equinix/ne-go v1.11.0 h1:ja6G2fmcGrLsOeV25Mq6pDfH+/cUlvxJbnE8uRXTGGk=
- github.com/equinix/ne-go v1.11.0/go.mod h1:eHkkxM4nbTB7DZ9X9zGnwfYnxIJWIsU3aHA+FAoZ1EI=
- github.com/equinix/oauth2-go v1.0.0 h1:fHtAPGq82PdgtK5vEThs8Vwz6f7D/8SX4tE3NJu+KcU=
-diff --git a/internal/config/config.go b/internal/config/config.go
-index d5d116b..7badd59 100644
---- a/internal/config/config.go
-+++ b/internal/config/config.go
-@@ -15,8 +15,8 @@ import (
- "time"
-
- v4 "github.com/equinix-labs/fabric-go/fabric/v4"
-- metalv1 "github.com/equinix-labs/metal-go/metal/v1"
- "github.com/equinix/ecx-go/v2"
-+ "github.com/equinix/equinix-sdk-go/services/metalv1"
- "github.com/equinix/ne-go"
- "github.com/equinix/oauth2-go"
- "github.com/equinix/terraform-provider-equinix/version"
diff --git a/patches/0050-feat-add-VM-resizing-for-device-resource-core-upgrad.patch b/patches/0050-feat-add-VM-resizing-for-device-resource-core-upgrad.patch
deleted file mode 100644
index bfd62688..00000000
--- a/patches/0050-feat-add-VM-resizing-for-device-resource-core-upgrad.patch
+++ /dev/null
@@ -1,204 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Rui Ling <82846950+rling-equinix@users.noreply.github.com>
-Date: Fri, 15 Dec 2023 11:24:07 -0800
-Subject: [PATCH 50/51] feat: add VM resizing for device resource core upgrade
- and new device status for device data source (#492)
-
-In Dec release, we added the "core" field to the [Update Virtual
-Device](https://developer.equinix.com/dev-docs/ne/api-reference/virtual-devices#update-virtual-device)
-API to allow users to resize their devices. After device is provisioned,
-the customer can send a PATCH request to upgrade its core number. The
-device will be marked as "RESOURCE_UPGRADE_IN_PROGRESS" and once the
-upgrade is done, the device status will be provisioned again.
-More details could be found in our API documentation.
-reference: https://developer.equinix.com/docs?page=/dev-docs/ne/overview
-product reference:
-https://docs.equinix.com/en-us/Content/Interconnection/NE/user-guide/NE-VNF-resize.htm#UpgradeResourceSizeforClusterDeviceDeployment
-
-diff --git a/docs/data-sources/equinix_network_device.md b/docs/data-sources/equinix_network_device.md
-index e359ae7..01b21e9 100644
---- a/docs/data-sources/equinix_network_device.md
-+++ b/docs/data-sources/equinix_network_device.md
-@@ -42,6 +42,8 @@ NOTE: Exactly one of either `uuid` or `name` must be specified.
- * FAILED
- * DEPROVISIONING
- * DEPROVISIONED
-+ * RESOURCE_UPGRADE_IN_PROGRESS
-+ * RESOURCE_UPGRADE_FAILED
- * `valid_status_list` - Comma separated list of device states (from see `status` for full list) to be considered valid. Default is 'PROVISIONED'. Case insensitive.
- * `license_status` - Device license registration status
- * APPLYING_LICENSE
-diff --git a/docs/resources/equinix_network_device.md b/docs/resources/equinix_network_device.md
-index f3ccb52..1b6a606 100644
---- a/docs/resources/equinix_network_device.md
-+++ b/docs/resources/equinix_network_device.md
-@@ -227,7 +227,7 @@ The following arguments are supported:
- * `hostname` - (Optional) Device hostname prefix.
- * `package_code` - (Required) Device software package code.
- * `version` - (Required) Device software software version.
--* `core_count` - (Required) Number of CPU cores used by device.
-+* `core_count` - (Required) Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**)
- * `term_length` - (Required) Device term length.
- * `self_managed` - (Optional) Boolean value that determines device management mode, i.e.,
- `self-managed` or `Equinix-managed` (default).
-@@ -356,7 +356,7 @@ In addition to all arguments above, the following attributes are exported:
- * `status` - Device provisioning status. Possible values are
- `INITIALIZING`, `PROVISIONING`, `WAITING_FOR_PRIMARY`, `WAITING_FOR_SECONDARY`,
- `WAITING_FOR_REPLICA_CLUSTER_NODES`, `CLUSTER_SETUP_IN_PROGRESS`, `FAILED`, `PROVISIONED`,
-- `DEPROVISIONING`, `DEPROVISIONED`.
-+ `DEPROVISIONING`, `DEPROVISIONED`, `RESOURCE_UPGRADE_IN_PROGRESS`, `RESOURCE_UPGRADE_FAILED`.
- * `license_status` - Device license registration status. Possible values are `APPLYING_LICENSE`,
- `REGISTERED`, `APPLIED`, `WAITING_FOR_CLUSTER_SETUP`, `REGISTRATION_FAILED`.
- * `license_file_id` - Unique identifier of applied license file.
-@@ -394,7 +394,7 @@ This resource provides the following [Timeouts configuration](https://www.terraf
- options:
-
- * create - Default is 90 minutes
--* update - Default is 30 minutes
-+* update - Default is 90 minutes
- * delete - Default is 30 minutes
-
- ## Import
-diff --git a/equinix/data_source_network_device.go b/equinix/data_source_network_device.go
-index f248530..a040ec4 100644
---- a/equinix/data_source_network_device.go
-+++ b/equinix/data_source_network_device.go
-@@ -23,6 +23,8 @@ var neDeviceStateMap = map[string]string{
- "waiting_for_replica_cluster_nodes": ne.DeviceStateWaitingClusterNodes,
- "waiting_for_primary": ne.DeviceStateWaitingPrimary,
- "waiting_for_secondary": ne.DeviceStateWaitingSecondary,
-+ "resource_upgrade_in_progress": ne.DeviceStateResourceUpgradeInProgress,
-+ "resource_upgrade_failed": ne.DeviceStateResourceUpgradeFailed,
- }
-
- func getNeDeviceStatusList(deviceStateText string) (*[]string, error) {
-diff --git a/equinix/resource_network_device.go b/equinix/resource_network_device.go
-index b625096..9b0da7d 100644
---- a/equinix/resource_network_device.go
-+++ b/equinix/resource_network_device.go
-@@ -205,7 +205,7 @@ func resourceNetworkDevice() *schema.Resource {
- Schema: createNetworkDeviceSchema(),
- Timeouts: &schema.ResourceTimeout{
- Create: schema.DefaultTimeout(90 * time.Minute),
-- Update: schema.DefaultTimeout(30 * time.Minute),
-+ Update: schema.DefaultTimeout(90 * time.Minute),
- Delete: schema.DefaultTimeout(30 * time.Minute),
- },
- Description: "Resource allows creation and management of Equinix Network Edge virtual devices",
-@@ -425,7 +425,6 @@ func createNetworkDeviceSchema() map[string]*schema.Schema {
- neDeviceSchemaNames["CoreCount"]: {
- Type: schema.TypeInt,
- Required: true,
-- ForceNew: true,
- ValidateFunc: validation.IntAtLeast(1),
- Description: neDeviceDescriptions["CoreCount"],
- },
-@@ -959,7 +958,7 @@ func resourceNetworkDeviceUpdate(ctx context.Context, d *schema.ResourceData, m
- m.(*config.Config).AddModuleToNEUserAgent(&client, d)
- var diags diag.Diagnostics
- supportedChanges := []string{
-- neDeviceSchemaNames["Name"], neDeviceSchemaNames["TermLength"],
-+ neDeviceSchemaNames["Name"], neDeviceSchemaNames["TermLength"], neDeviceSchemaNames["CoreCount"],
- neDeviceSchemaNames["Notifications"], neDeviceSchemaNames["AdditionalBandwidth"],
- neDeviceSchemaNames["ACLTemplateUUID"], neDeviceSchemaNames["MgmtAclTemplateUuid"],
- }
-@@ -1499,6 +1498,8 @@ func fillNetworkDeviceUpdateRequest(updateReq ne.DeviceUpdateRequest, changes ma
- updateReq.WithTermLength(changeValue.(int))
- case neDeviceSchemaNames["Notifications"]:
- updateReq.WithNotifications(expandSetToStringList(changeValue.(*schema.Set)))
-+ case neDeviceSchemaNames["CoreCount"]:
-+ updateReq.WithCore(changeValue.(int))
- case neDeviceSchemaNames["AdditionalBandwidth"]:
- updateReq.WithAdditionalBandwidth(changeValue.(int))
- case neDeviceSchemaNames["ACLTemplateUUID"]:
-@@ -1532,6 +1533,11 @@ func getNetworkDeviceStateChangeConfigs(c ne.Client, deviceID string, timeout ti
- createNetworkDeviceAdditionalBandwidthStatusWaitConfiguration(c.GetDeviceAdditionalBandwidthDetails, deviceID, 1*time.Second, timeout),
- )
- }
-+ if _, found := changes[neDeviceSchemaNames["CoreCount"]]; found {
-+ configs = append(configs,
-+ createNetworkDeviceStatusResourceUpgradeWaitConfiguration(c.GetDevice, deviceID, 5*time.Second, timeout),
-+ )
-+ }
- return configs
- }
-
-@@ -1592,6 +1598,19 @@ func createNetworkDeviceStatusDeleteWaitConfiguration(fetchFunc getDevice, id st
- return createNetworkDeviceStatusWaitConfiguration(fetchFunc, id, delay, timeout, target, pending)
- }
-
-+func createNetworkDeviceStatusResourceUpgradeWaitConfiguration(fetchFunc getDevice, id string, delay time.Duration, timeout time.Duration) *retry.StateChangeConf {
-+ pending := []string{
-+ ne.DeviceStateResourceUpgradeInProgress,
-+ ne.DeviceStateWaitingPrimary,
-+ ne.DeviceStateWaitingSecondary,
-+ ne.DeviceStateWaitingClusterNodes,
-+ }
-+ target := []string{
-+ ne.DeviceStateProvisioned,
-+ }
-+ return createNetworkDeviceStatusWaitConfiguration(fetchFunc, id, delay, timeout, target, pending)
-+}
-+
- func createNetworkDeviceStatusWaitConfiguration(fetchFunc getDevice, id string, delay time.Duration, timeout time.Duration, target []string, pending []string) *retry.StateChangeConf {
- return &retry.StateChangeConf{
- Pending: pending,
-diff --git a/equinix/resource_network_device_test.go b/equinix/resource_network_device_test.go
-index 60db267..6c39fc4 100644
---- a/equinix/resource_network_device_test.go
-+++ b/equinix/resource_network_device_test.go
-@@ -379,6 +379,26 @@ func TestNetworkDevice_statusDeleteWaitConfiguration(t *testing.T) {
- assert.Equal(t, delay, waitConfig.MinTimeout, "Device status wait configuration min timeout matches")
- }
-
-+func TestNetworkDevice_statusResourceUpgradeWaitConfiguration(t *testing.T) {
-+ // given
-+ deviceID := "test"
-+ var queriedDeviceID string
-+ fetchFunc := func(uuid string) (*ne.Device, error) {
-+ queriedDeviceID = uuid
-+ return &ne.Device{Status: ne.String(ne.DeviceStateProvisioned)}, nil
-+ }
-+ delay := 100 * time.Millisecond
-+ timeout := 10 * time.Minute
-+ // when
-+ waitConfig := createNetworkDeviceStatusResourceUpgradeWaitConfiguration(fetchFunc, deviceID, delay, timeout)
-+ _, err := waitConfig.WaitForStateContext(context.Background())
-+ // then
-+ assert.Nil(t, err, "WaitForState does not return an error")
-+ assert.Equal(t, deviceID, queriedDeviceID, "Queried device ID matches")
-+ assert.Equal(t, timeout, waitConfig.Timeout, "Device status wait configuration timeout matches")
-+ assert.Equal(t, delay, waitConfig.MinTimeout, "Device status wait configuration min timeout matches")
-+}
-+
- func TestNetworkDevice_licenseStatusWaitConfiguration(t *testing.T) {
- // given
- deviceID := "test"
-diff --git a/go.mod b/go.mod
-index e14e4ce..ca4a6a0 100644
---- a/go.mod
-+++ b/go.mod
-@@ -7,7 +7,7 @@ require (
- github.com/equinix-labs/fabric-go v0.7.1
- github.com/equinix/ecx-go/v2 v2.3.1
- github.com/equinix/equinix-sdk-go v0.30.0
-- github.com/equinix/ne-go v1.11.0
-+ github.com/equinix/ne-go v1.12.0
- github.com/equinix/oauth2-go v1.0.0
- github.com/equinix/rest-go v1.3.0
- github.com/google/uuid v1.4.0
-diff --git a/go.sum b/go.sum
-index 6ac881b..2302fa2 100644
---- a/go.sum
-+++ b/go.sum
-@@ -265,8 +265,8 @@ github.com/equinix/ecx-go/v2 v2.3.1 h1:gFcAIeyaEUw7S8ebqApmT7E/S7pC7Ac3wgScp89fk
- github.com/equinix/ecx-go/v2 v2.3.1/go.mod h1:FvCdZ3jXU8Z4CPKig2DT+4J2HdwgRK17pIcznM7RXyk=
- github.com/equinix/equinix-sdk-go v0.30.0 h1:u/+/p00mfAhDhoLvP1jTKruXndAYWoTwqN65BTbAPCg=
- github.com/equinix/equinix-sdk-go v0.30.0/go.mod h1:qnpdRzVftHFNaJFk1VSIrAOTLrIoeDrxzUr3l8ARyvQ=
--github.com/equinix/ne-go v1.11.0 h1:ja6G2fmcGrLsOeV25Mq6pDfH+/cUlvxJbnE8uRXTGGk=
--github.com/equinix/ne-go v1.11.0/go.mod h1:eHkkxM4nbTB7DZ9X9zGnwfYnxIJWIsU3aHA+FAoZ1EI=
-+github.com/equinix/ne-go v1.12.0 h1:xZxnVWRIqFkos4ls9nSx92FMGkV8jSPTEaosLGE4Vvw=
-+github.com/equinix/ne-go v1.12.0/go.mod h1:eHkkxM4nbTB7DZ9X9zGnwfYnxIJWIsU3aHA+FAoZ1EI=
- github.com/equinix/oauth2-go v1.0.0 h1:fHtAPGq82PdgtK5vEThs8Vwz6f7D/8SX4tE3NJu+KcU=
- github.com/equinix/oauth2-go v1.0.0/go.mod h1:4pulXvUNMktJlewLPnUeJyMW52iCoF1aM+A/Z5xY1ws=
- github.com/equinix/rest-go v1.3.0 h1:m38scYTOfV6N+gcrwchgVDutDffYd+QoYCMm9Jn6jyk=
diff --git a/patches/0051-user-agent.patch b/patches/0051-user-agent.patch
deleted file mode 100644
index 4389ccb0..00000000
--- a/patches/0051-user-agent.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: ocobleseqx
-Date: Thu, 16 Nov 2023 18:47:17 +0100
-Subject: [PATCH 51/51] user agent
-
-Signed-off-by: ocobleseqx
-
-diff --git a/internal/config/config.go b/internal/config/config.go
-index 7badd59..9056240 100644
---- a/internal/config/config.go
-+++ b/internal/config/config.go
-@@ -23,7 +23,6 @@ import (
- "github.com/hashicorp/go-retryablehttp"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/logging"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-- "github.com/hashicorp/terraform-plugin-sdk/v2/meta"
- "github.com/packethost/packngo"
- xoauth2 "golang.org/x/oauth2"
- )
-@@ -272,9 +271,8 @@ func MetalRetryPolicy(ctx context.Context, resp *http.Response, err error) (bool
- return false, nil
- }
-
--func terraformUserAgent(version string) string {
-- ua := fmt.Sprintf("HashiCorp Terraform/%s (+https://www.terraform.io) Terraform Plugin SDK/%s",
-- version, meta.SDKVersionString())
-+func pulumiUserAgent(version string) string {
-+ ua := fmt.Sprintf("Pulumi/%s (+https://www.pulumi.com)", version)
-
- if add := os.Getenv(uaEnvVar); add != "" {
- add = strings.TrimSpace(add)
-@@ -329,7 +327,9 @@ func generateModuleUserAgentString(d *schema.ResourceData, baseUserAgent string)
- }
-
- func (c *Config) fullUserAgent(suffix string) string {
-- tfUserAgent := terraformUserAgent(c.TerraformVersion)
-- userAgent := fmt.Sprintf("%s terraform-provider-equinix/%s %s", tfUserAgent, version.ProviderVersion, suffix)
-+ // FORK: this gives us the ability to add a Pulumi Specific user agent
-+ // TODO (ocobles) override pulumi sdk version with ldflags
-+ pulumiUserAgent := pulumiUserAgent("3.0")
-+ userAgent := fmt.Sprintf("%s pulumi-equinix/%s %s", pulumiUserAgent, version.ProviderVersion, suffix)
- return strings.TrimSpace(userAgent)
- }
diff --git a/provider/cmd/pulumi-resource-equinix/schema.json b/provider/cmd/pulumi-resource-equinix/schema.json
index ff3b2b1a..5f01c35c 100644
--- a/provider/cmd/pulumi-resource-equinix/schema.json
+++ b/provider/cmd/pulumi-resource-equinix/schema.json
@@ -85,10 +85,12 @@
"description": "The Equinix API base URL to point out desired environment. Defaults to https://api.equinix.com\n"
},
"maxRetries": {
- "type": "integer"
+ "type": "integer",
+ "description": "Maximum number of retries.\n"
},
"maxRetryWaitSeconds": {
- "type": "integer"
+ "type": "integer",
+ "description": "Maximum number of seconds to wait before retrying a request.\n"
},
"requestTimeout": {
"type": "integer",
@@ -124,40 +126,52 @@
"equinix:fabric/CloudRouterChangeLog:CloudRouterChangeLog": {
"properties": {
"createdBy": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Key\n"
},
"createdByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
"createdByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Full Name\n"
},
"createdDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Created by Date and Time\n"
},
"deletedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Key\n"
},
"deletedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
},
"deletedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
},
"deletedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
},
"updatedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Key\n"
},
"updatedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Email Address\n"
},
"updatedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Full Name\n"
},
"updatedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by Date and Time\n"
}
},
"type": "object",
@@ -258,8 +272,10 @@
"language": {
"nodejs": {
"requiredOutputs": [
+ "billingTier",
"orderId",
- "orderNumber"
+ "orderNumber",
+ "purchaseOrderNumber"
]
}
}
@@ -329,6 +345,7 @@
},
"gateway": {
"$ref": "#/types/equinix:fabric/ConnectionASideAccessPointGateway:ConnectionASideAccessPointGateway",
+ "description": "**Deprecated** `gateway` Use `router` attribute instead\n",
"deprecationMessage": "use router attribute instead; gateway is no longer a part of the supported backend"
},
"interface": {
@@ -345,7 +362,7 @@
},
"network": {
"$ref": "#/types/equinix:fabric/ConnectionASideAccessPointNetwork:ConnectionASideAccessPointNetwork",
- "description": "Simplified Network\n"
+ "description": "network access point information\n"
},
"peeringType": {
"type": "string",
@@ -374,14 +391,7 @@
},
"router": {
"$ref": "#/types/equinix:fabric/ConnectionASideAccessPointRouter:ConnectionASideAccessPointRouter",
- "description": "Cloud Router access point information that replaces `gateway` (refers to below for nested schema)\n"
- },
- "routingProtocols": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/ConnectionASideAccessPointRoutingProtocol:ConnectionASideAccessPointRoutingProtocol"
- },
- "description": "Access point routing protocols configuration\n"
+ "description": "Cloud Router access point information that replaces `gateway`\n"
},
"sellerRegion": {
"type": "string",
@@ -418,25 +428,36 @@
"equinix:fabric/ConnectionASideAccessPointAccount:ConnectionASideAccessPointAccount": {
"properties": {
"accountName": {
- "type": "string"
+ "type": "string",
+ "description": "Legal name of the accountholder.\n"
},
"accountNumber": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned account number.\n"
},
"globalCustId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrgId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrganizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's parent organization.\n"
},
"orgId": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned ID of the subscriber's organization.\n"
},
"organizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's organization.\n"
+ },
+ "ucmId": {
+ "type": "string",
+ "description": "Enterprise datastore id\n"
}
},
"type": "object",
@@ -449,7 +470,8 @@
"globalOrgId",
"globalOrganizationName",
"orgId",
- "organizationName"
+ "organizationName",
+ "ucmId"
]
}
}
@@ -462,7 +484,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -486,7 +508,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -585,7 +607,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -616,7 +638,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -633,15 +655,25 @@
},
"equinix:fabric/ConnectionASideAccessPointPortRedundancy:ConnectionASideAccessPointPortRedundancy": {
"properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Access point redundancy\n"
+ },
+ "group": {
+ "type": "string",
+ "description": "Redundancy group identifier (Use the redundancy.0.group UUID of primary connection; e.g. one(equinix*fabric*connection.primary*port*connection.redundancy).group or equinix*fabric*connection.primary*port*connection.redundancy.0.group)\n"
+ },
"priority": {
"type": "string",
- "description": "Priority type- PRIMARY, SECONDARY\n"
+ "description": "Connection priority in redundancy group - PRIMARY, SECONDARY\n"
}
},
"type": "object",
"language": {
"nodejs": {
"requiredOutputs": [
+ "enabled",
+ "group",
"priority"
]
}
@@ -683,7 +715,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -712,7 +744,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -733,7 +765,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -745,23 +777,6 @@
}
}
},
- "equinix:fabric/ConnectionASideAccessPointRoutingProtocol:ConnectionASideAccessPointRoutingProtocol": {
- "properties": {
- "state": {
- "type": "string",
- "description": "Routing protocol instance state\n"
- },
- "type": {
- "type": "string",
- "description": "Interface type\n"
- },
- "uuid": {
- "type": "string",
- "description": "Equinix-assigned interface identifier\n"
- }
- },
- "type": "object"
- },
"equinix:fabric/ConnectionASideAccessPointVirtualDevice:ConnectionASideAccessPointVirtualDevice": {
"properties": {
"href": {
@@ -778,7 +793,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -828,7 +843,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -844,25 +859,36 @@
"equinix:fabric/ConnectionAccount:ConnectionAccount": {
"properties": {
"accountName": {
- "type": "string"
+ "type": "string",
+ "description": "Legal name of the accountholder.\n"
},
"accountNumber": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned account number.\n"
},
"globalCustId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrgId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrganizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's parent organization.\n"
},
"orgId": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned ID of the subscriber's organization.\n"
},
"organizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's organization.\n"
+ },
+ "ucmId": {
+ "type": "string",
+ "description": "Enterprise datastore id\n"
}
},
"type": "object",
@@ -875,7 +901,8 @@
"globalOrgId",
"globalOrganizationName",
"orgId",
- "organizationName"
+ "organizationName",
+ "ucmId"
]
}
}
@@ -883,40 +910,52 @@
"equinix:fabric/ConnectionChangeLog:ConnectionChangeLog": {
"properties": {
"createdBy": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Key\n"
},
"createdByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
"createdByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Full Name\n"
},
"createdDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Created by Date and Time\n"
},
"deletedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Key\n"
},
"deletedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
},
"deletedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
},
"deletedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
},
"updatedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Key\n"
},
"updatedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Email Address\n"
},
"updatedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Full Name\n"
},
"updatedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by Date and Time\n"
}
},
"type": "object",
@@ -975,16 +1014,19 @@
"equinix:fabric/ConnectionOperation:ConnectionOperation": {
"properties": {
"equinixStatus": {
- "type": "string"
+ "type": "string",
+ "description": "Connection status\n"
},
"errors": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/ConnectionOperationError:ConnectionOperationError"
- }
+ },
+ "description": "Errors occurred\n"
},
"providerStatus": {
- "type": "string"
+ "type": "string",
+ "description": "Connection provider readiness status\n"
}
},
"type": "object",
@@ -1008,19 +1050,24 @@
"description": "Connection side additional information\n"
},
"correlationId": {
- "type": "string"
+ "type": "string",
+ "description": "CorrelationId\n"
},
"details": {
- "type": "string"
+ "type": "string",
+ "description": "Details\n"
},
"errorCode": {
- "type": "string"
+ "type": "string",
+ "description": "Error code\n"
},
"errorMessage": {
- "type": "string"
+ "type": "string",
+ "description": "Error Message\n"
},
"help": {
- "type": "string"
+ "type": "string",
+ "description": "Help\n"
}
},
"type": "object",
@@ -1040,10 +1087,12 @@
"equinix:fabric/ConnectionOperationErrorAdditionalInfo:ConnectionOperationErrorAdditionalInfo": {
"properties": {
"property": {
- "type": "string"
+ "type": "string",
+ "description": "Property at which the error potentially occurred\n"
},
"reason": {
- "type": "string"
+ "type": "string",
+ "description": "Reason for the error\n"
}
},
"type": "object",
@@ -1079,8 +1128,10 @@
"language": {
"nodejs": {
"requiredOutputs": [
+ "billingTier",
"orderId",
- "orderNumber"
+ "orderNumber",
+ "purchaseOrderNumber"
]
}
}
@@ -1110,18 +1161,19 @@
"properties": {
"group": {
"type": "string",
- "description": "Redundancy group identifier\n"
+ "description": "Redundancy group identifier (Use the redundancy.0.group UUID of primary connection; e.g. one(equinix*fabric*connection.primary*port*connection.redundancy).group or equinix*fabric*connection.primary*port*connection.redundancy.0.group)\n"
},
"priority": {
"type": "string",
- "description": "Priority type- PRIMARY, SECONDARY\n"
+ "description": "Connection priority in redundancy group - PRIMARY, SECONDARY\n"
}
},
"type": "object",
"language": {
"nodejs": {
"requiredOutputs": [
- "group"
+ "group",
+ "priority"
]
}
}
@@ -1158,6 +1210,7 @@
},
"gateway": {
"$ref": "#/types/equinix:fabric/ConnectionZSideAccessPointGateway:ConnectionZSideAccessPointGateway",
+ "description": "**Deprecated** `gateway` Use `router` attribute instead\n",
"deprecationMessage": "use router attribute instead; gateway is no longer a part of the supported backend"
},
"interface": {
@@ -1174,7 +1227,7 @@
},
"network": {
"$ref": "#/types/equinix:fabric/ConnectionZSideAccessPointNetwork:ConnectionZSideAccessPointNetwork",
- "description": "Simplified Network\n"
+ "description": "network access point information\n"
},
"peeringType": {
"type": "string",
@@ -1203,14 +1256,7 @@
},
"router": {
"$ref": "#/types/equinix:fabric/ConnectionZSideAccessPointRouter:ConnectionZSideAccessPointRouter",
- "description": "Cloud Router access point information that replaces `gateway` (refers to below for nested schema)\n"
- },
- "routingProtocols": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/ConnectionZSideAccessPointRoutingProtocol:ConnectionZSideAccessPointRoutingProtocol"
- },
- "description": "Access point routing protocols configuration\n"
+ "description": "Cloud Router access point information that replaces `gateway`\n"
},
"sellerRegion": {
"type": "string",
@@ -1247,25 +1293,36 @@
"equinix:fabric/ConnectionZSideAccessPointAccount:ConnectionZSideAccessPointAccount": {
"properties": {
"accountName": {
- "type": "string"
+ "type": "string",
+ "description": "Legal name of the accountholder.\n"
},
"accountNumber": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned account number.\n"
},
"globalCustId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrgId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrganizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's parent organization.\n"
},
"orgId": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned ID of the subscriber's organization.\n"
},
"organizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's organization.\n"
+ },
+ "ucmId": {
+ "type": "string",
+ "description": "Enterprise datastore id\n"
}
},
"type": "object",
@@ -1278,7 +1335,8 @@
"globalOrgId",
"globalOrganizationName",
"orgId",
- "organizationName"
+ "organizationName",
+ "ucmId"
]
}
}
@@ -1291,7 +1349,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -1315,7 +1373,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -1414,7 +1472,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -1445,7 +1503,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -1462,15 +1520,25 @@
},
"equinix:fabric/ConnectionZSideAccessPointPortRedundancy:ConnectionZSideAccessPointPortRedundancy": {
"properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Access point redundancy\n"
+ },
+ "group": {
+ "type": "string",
+ "description": "Redundancy group identifier (Use the redundancy.0.group UUID of primary connection; e.g. one(equinix*fabric*connection.primary*port*connection.redundancy).group or equinix*fabric*connection.primary*port*connection.redundancy.0.group)\n"
+ },
"priority": {
"type": "string",
- "description": "Priority type- PRIMARY, SECONDARY\n"
+ "description": "Connection priority in redundancy group - PRIMARY, SECONDARY\n"
}
},
"type": "object",
"language": {
"nodejs": {
"requiredOutputs": [
+ "enabled",
+ "group",
"priority"
]
}
@@ -1512,7 +1580,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -1541,7 +1609,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -1562,7 +1630,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -1574,23 +1642,6 @@
}
}
},
- "equinix:fabric/ConnectionZSideAccessPointRoutingProtocol:ConnectionZSideAccessPointRoutingProtocol": {
- "properties": {
- "state": {
- "type": "string",
- "description": "Routing protocol instance state\n"
- },
- "type": {
- "type": "string",
- "description": "Interface type\n"
- },
- "uuid": {
- "type": "string",
- "description": "Equinix-assigned interface identifier\n"
- }
- },
- "type": "object"
- },
"equinix:fabric/ConnectionZSideAccessPointVirtualDevice:ConnectionZSideAccessPointVirtualDevice": {
"properties": {
"href": {
@@ -1607,7 +1658,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -1657,7 +1708,7 @@
},
"uuid": {
"type": "string",
- "description": "Equinix-assigned interface identifier\n"
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
@@ -1670,88 +1721,271 @@
}
}
},
- "equinix:fabric/RoutingProtocolBfd:RoutingProtocolBfd": {
- "properties": {
- "enabled": {
- "type": "boolean",
- "description": "Bidirectional Forwarding Detection enablement\n"
- },
- "interval": {
- "type": "string",
- "description": "Interval range between the received BFD control packets\n"
- }
- },
- "type": "object",
- "required": [
- "enabled"
- ]
- },
- "equinix:fabric/RoutingProtocolBgpIpv4:RoutingProtocolBgpIpv4": {
+ "equinix:fabric/NetworkChange:NetworkChange": {
"properties": {
- "customerPeerIp": {
+ "href": {
"type": "string",
- "description": "Customer side peering ip\n"
+ "description": "Absolute URL that returns the details of the given change.\nExample: https://api.equinix.com/fabric/v4/networks/92dc376a-a932-43aa-a6a2-c806dedbd784\n"
},
- "enabled": {
- "type": "boolean",
- "description": "Admin status for the BGP session\n"
+ "type": {
+ "type": "string",
+ "description": "Asset instance change request type.: NETWORK_CREATION, NETWORK_UPDATE, NETWORK_DELETION\n"
},
- "equinixPeerIp": {
+ "uuid": {
"type": "string",
- "description": "Equinix side peering ip\n"
+ "description": "Asset change request identifier.\n"
}
},
"type": "object",
- "required": [
- "customerPeerIp"
- ],
"language": {
"nodejs": {
"requiredOutputs": [
- "customerPeerIp",
- "equinixPeerIp"
+ "href",
+ "type",
+ "uuid"
]
}
}
},
- "equinix:fabric/RoutingProtocolBgpIpv6:RoutingProtocolBgpIpv6": {
+ "equinix:fabric/NetworkChangeLog:NetworkChangeLog": {
"properties": {
- "customerPeerIp": {
+ "createdBy": {
"type": "string",
- "description": "Customer side peering ip\n"
+ "description": "Created by User Key\n"
},
- "enabled": {
- "type": "boolean",
- "description": "Admin status for the BGP session\n"
+ "createdByEmail": {
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
- "equinixPeerIp": {
+ "createdByFullName": {
"type": "string",
- "description": "Equinix side peering ip\n"
- }
- },
- "type": "object",
- "required": [
- "customerPeerIp"
- ],
- "language": {
- "nodejs": {
- "requiredOutputs": [
- "customerPeerIp",
- "equinixPeerIp"
- ]
- }
- }
- },
- "equinix:fabric/RoutingProtocolChange:RoutingProtocolChange": {
- "properties": {
- "href": {
- "type": "string"
+ "description": "Created by User Full Name\n"
},
- "type": {
- "type": "string"
+ "createdDateTime": {
+ "type": "string",
+ "description": "Created by Date and Time\n"
+ },
+ "deletedBy": {
+ "type": "string",
+ "description": "Deleted by User Key\n"
+ },
+ "deletedByEmail": {
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
+ },
+ "deletedByFullName": {
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
+ },
+ "deletedDateTime": {
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
+ },
+ "updatedBy": {
+ "type": "string",
+ "description": "Updated by User Key\n"
+ },
+ "updatedByEmail": {
+ "type": "string",
+ "description": "Updated by User Email Address\n"
+ },
+ "updatedByFullName": {
+ "type": "string",
+ "description": "Updated by User Full Name\n"
+ },
+ "updatedDateTime": {
+ "type": "string",
+ "description": "Updated by Date and Time\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "createdBy",
+ "createdByEmail",
+ "createdByFullName",
+ "createdDateTime",
+ "deletedBy",
+ "deletedByEmail",
+ "deletedByFullName",
+ "deletedDateTime",
+ "updatedBy",
+ "updatedByEmail",
+ "updatedByFullName",
+ "updatedDateTime"
+ ]
+ }
+ }
+ },
+ "equinix:fabric/NetworkLocation:NetworkLocation": {
+ "properties": {
+ "ibx": {
+ "type": "string",
+ "description": "IBX Code\n"
+ },
+ "metroCode": {
+ "type": "string",
+ "description": "Access point metro code\n"
+ },
+ "metroName": {
+ "type": "string",
+ "description": "Access point metro name\n"
+ },
+ "region": {
+ "type": "string",
+ "description": "Access point region\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "ibx",
+ "metroCode",
+ "metroName",
+ "region"
+ ]
+ }
+ }
+ },
+ "equinix:fabric/NetworkNotification:NetworkNotification": {
+ "properties": {
+ "emails": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Array of contact emails\n"
+ },
+ "sendInterval": {
+ "type": "string",
+ "description": "Send interval\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Notification Type - ALL,CONNECTION*APPROVAL,SALES*REP_NOTIFICATIONS, NOTIFICATIONS\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "emails",
+ "type"
+ ]
+ },
+ "equinix:fabric/NetworkOperation:NetworkOperation": {
+ "properties": {
+ "equinixStatus": {
+ "type": "string",
+ "description": "Progress towards provisioning a given asset.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "equinixStatus"
+ ]
+ }
+ }
+ },
+ "equinix:fabric/NetworkProject:NetworkProject": {
+ "properties": {
+ "projectId": {
+ "type": "string",
+ "description": "Customer project identifier\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "projectId"
+ ]
+ },
+ "equinix:fabric/RoutingProtocolBfd:RoutingProtocolBfd": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Bidirectional Forwarding Detection enablement\n"
+ },
+ "interval": {
+ "type": "string",
+ "description": "Interval range between the received BFD control packets\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "enabled"
+ ]
+ },
+ "equinix:fabric/RoutingProtocolBgpIpv4:RoutingProtocolBgpIpv4": {
+ "properties": {
+ "customerPeerIp": {
+ "type": "string",
+ "description": "Customer side peering ip\n"
+ },
+ "enabled": {
+ "type": "boolean",
+ "description": "Admin status for the BGP session\n"
+ },
+ "equinixPeerIp": {
+ "type": "string",
+ "description": "Equinix side peering ip\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "customerPeerIp"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "customerPeerIp",
+ "equinixPeerIp"
+ ]
+ }
+ }
+ },
+ "equinix:fabric/RoutingProtocolBgpIpv6:RoutingProtocolBgpIpv6": {
+ "properties": {
+ "customerPeerIp": {
+ "type": "string",
+ "description": "Customer side peering ip\n"
+ },
+ "enabled": {
+ "type": "boolean",
+ "description": "Admin status for the BGP session\n"
+ },
+ "equinixPeerIp": {
+ "type": "string",
+ "description": "Equinix side peering ip\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "customerPeerIp"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "customerPeerIp",
+ "equinixPeerIp"
+ ]
+ }
+ }
+ },
+ "equinix:fabric/RoutingProtocolChange:RoutingProtocolChange": {
+ "properties": {
+ "href": {
+ "type": "string",
+ "description": "Routing Protocol Change URI\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of change\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Uniquely identifies a change\n"
}
},
"type": "object",
@@ -1768,40 +2002,52 @@
"equinix:fabric/RoutingProtocolChangeLog:RoutingProtocolChangeLog": {
"properties": {
"createdBy": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Key\n"
},
"createdByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
"createdByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Full Name\n"
},
"createdDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Created by Date and Time\n"
},
"deletedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Key\n"
},
"deletedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
},
"deletedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
},
"deletedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
},
"updatedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Key\n"
},
"updatedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Email Address\n"
},
"updatedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Full Name\n"
},
"updatedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by Date and Time\n"
}
},
"type": "object",
@@ -1851,7 +2097,8 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/RoutingProtocolOperationError:RoutingProtocolOperationError"
- }
+ },
+ "description": "Errors occurred\n"
}
},
"type": "object",
@@ -1869,22 +2116,28 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/RoutingProtocolOperationErrorAdditionalInfo:RoutingProtocolOperationErrorAdditionalInfo"
- }
+ },
+ "description": "Pricing error additional Info\n"
},
"correlationId": {
- "type": "string"
+ "type": "string",
+ "description": "CorrelationId\n"
},
"details": {
- "type": "string"
+ "type": "string",
+ "description": "Details\n"
},
"errorCode": {
- "type": "string"
+ "type": "string",
+ "description": "Error code\n"
},
"errorMessage": {
- "type": "string"
+ "type": "string",
+ "description": "Error Message\n"
},
"help": {
- "type": "string"
+ "type": "string",
+ "description": "Help\n"
}
},
"type": "object",
@@ -1904,10 +2157,12 @@
"equinix:fabric/RoutingProtocolOperationErrorAdditionalInfo:RoutingProtocolOperationErrorAdditionalInfo": {
"properties": {
"property": {
- "type": "string"
+ "type": "string",
+ "description": "Property at which the error potentially occurred\n"
},
"reason": {
- "type": "string"
+ "type": "string",
+ "description": "Reason for the error\n"
}
},
"type": "object",
@@ -2012,11 +2267,11 @@
},
"apiAvailable": {
"type": "boolean",
- "description": "Setting indicating whether the API is available (true) or not (false)\n"
+ "description": "Indicates if it's possible to establish connections based on the given service profile using the Equinix Fabric API.\n"
},
"bandwidthFromApi": {
"type": "boolean",
- "description": "Bandwidth from api\n"
+ "description": "Indicates if the connection bandwidth can be obtained directly from the cloud service provider.\n"
},
"equinixManagedPort": {
"type": "boolean",
@@ -2028,11 +2283,11 @@
},
"integrationId": {
"type": "string",
- "description": "Integration id\n"
+ "description": "A unique identifier issued during onboarding and used to integrate the customer's service profile with the Equinix Fabric API.\n"
},
"overSubscriptionLimit": {
"type": "integer",
- "description": "A cap on over subscription\n"
+ "description": "Port bandwidth multiplier that determines the total bandwidth that can be allocated to users creating connections to your services. For example, a 10 Gbps port combined with an overSubscriptionLimit parameter value of 10 allows your subscribers to create connections with a total bandwidth of 100 Gbps.\n"
}
},
"type": "object"
@@ -2041,15 +2296,15 @@
"properties": {
"description": {
"type": "string",
- "description": "Description\n"
+ "description": "Description of authorization key\n"
},
"label": {
"type": "string",
- "description": "Label\n"
+ "description": "Name of the parameter that must be provided to authorize the connection.\n"
},
"required": {
"type": "boolean",
- "description": "Required\n"
+ "description": "Requirement to configure an authentication key.\n"
}
},
"type": "object"
@@ -2058,15 +2313,15 @@
"properties": {
"encapsulation": {
"type": "string",
- "description": "Port Encapsulation\n"
+ "description": "Data frames encapsulation standard.UNTAGGED - Untagged encapsulation for EPL connections. DOT1Q - DOT1Q encapsulation standard. QINQ - QINQ encapsulation standard.\n"
},
"encapsulationStrategy": {
"type": "string",
- "description": "Encapsulation strategy\n"
+ "description": "Additional tagging information required by the seller profile.\n"
},
"reuseVlanSTag": {
"type": "boolean",
- "description": "Reuse vlan sTag\n"
+ "description": "Automatically accept subsequent DOT1Q to QINQ connections that use the same authentication key. These connections will have the same VLAN S-tag assigned as the initial connection.\n"
}
},
"type": "object"
@@ -2075,76 +2330,102 @@
"properties": {
"accountName": {
"type": "string",
- "description": "Account Name\n"
+ "description": "Legal name of the accountholder.\n"
},
"accountNumber": {
"type": "integer",
- "description": "Account Number\n"
+ "description": "Equinix-assigned account number.\n"
},
"globalCustId": {
"type": "string",
- "description": "Global Customer organization identifier\n"
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrgId": {
"type": "string",
- "description": "Global organization identifier\n"
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrganizationName": {
"type": "string",
- "description": "Global organization name\n"
+ "description": "Equinix-assigned name of the subscriber's parent organization.\n"
},
"orgId": {
"type": "integer",
- "description": "Customer organization identifier\n"
+ "description": "Equinix-assigned ID of the subscriber's organization.\n"
},
"organizationName": {
"type": "string",
- "description": "Customer organization name\n"
+ "description": "Equinix-assigned name of the subscriber's organization.\n"
},
"ucmId": {
"type": "string",
"description": "Enterprise datastore id\n"
}
},
- "type": "object"
- },
- "equinix:fabric/ServiceProfileChangeLog:ServiceProfileChangeLog": {
- "properties": {
- "createdBy": {
- "type": "string"
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "accountName",
+ "accountNumber",
+ "globalCustId",
+ "globalOrgId",
+ "globalOrganizationName",
+ "orgId",
+ "organizationName",
+ "ucmId"
+ ]
+ }
+ }
+ },
+ "equinix:fabric/ServiceProfileChangeLog:ServiceProfileChangeLog": {
+ "properties": {
+ "createdBy": {
+ "type": "string",
+ "description": "Created by User Key\n"
},
"createdByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
"createdByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Full Name\n"
},
"createdDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Created by Date and Time\n"
},
"deletedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Key\n"
},
"deletedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
},
"deletedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
},
"deletedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
},
"updatedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Key\n"
},
"updatedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Email Address\n"
},
"updatedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Full Name\n"
},
"updatedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by Date and Time\n"
}
},
"type": "object",
@@ -2228,7 +2509,7 @@
"properties": {
"description": {
"type": "string",
- "description": "Description\n"
+ "description": "Description of authorization key\n"
},
"subTitle": {
"type": "string",
@@ -2560,37 +2841,14 @@
},
"equinix:fabric/getCloudRouterAccount:getCloudRouterAccount": {
"properties": {
- "accountName": {
- "type": "string"
- },
"accountNumber": {
- "type": "integer"
- },
- "globalCustId": {
- "type": "string"
- },
- "globalOrgId": {
- "type": "string"
- },
- "globalOrganizationName": {
- "type": "string"
- },
- "orgId": {
- "type": "integer"
- },
- "organizationName": {
- "type": "string"
+ "type": "integer",
+ "description": "Account Number\n"
}
},
"type": "object",
"required": [
- "accountName",
- "accountNumber",
- "globalCustId",
- "globalOrgId",
- "globalOrganizationName",
- "orgId",
- "organizationName"
+ "accountNumber"
],
"language": {
"nodejs": {
@@ -2601,40 +2859,52 @@
"equinix:fabric/getCloudRouterChangeLog:getCloudRouterChangeLog": {
"properties": {
"createdBy": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Key\n"
},
"createdByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
"createdByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Full Name\n"
},
"createdDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Created by Date and Time\n"
},
"deletedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Key\n"
},
"deletedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
},
"deletedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
},
"deletedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
},
"updatedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Key\n"
},
"updatedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Email Address\n"
},
"updatedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Full Name\n"
},
"updatedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by Date and Time\n"
}
},
"type": "object",
@@ -2660,25 +2930,25 @@
},
"equinix:fabric/getCloudRouterLocation:getCloudRouterLocation": {
"properties": {
- "href": {
- "type": "string"
- },
"ibx": {
- "type": "string"
+ "type": "string",
+ "description": "IBX Code\n"
},
"metroCode": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro code\n"
},
"metroName": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro name\n"
},
"region": {
- "type": "string"
+ "type": "string",
+ "description": "Access point region\n"
}
},
"type": "object",
"required": [
- "href",
"ibx",
"metroCode",
"metroName",
@@ -2696,19 +2966,21 @@
"type": "array",
"items": {
"type": "string"
- }
+ },
+ "description": "Array of contact emails\n"
},
"sendInterval": {
- "type": "string"
+ "type": "string",
+ "description": "Send interval\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"
}
},
"type": "object",
"required": [
"emails",
- "sendInterval",
"type"
],
"language": {
@@ -2720,16 +2992,20 @@
"equinix:fabric/getCloudRouterOrder:getCloudRouterOrder": {
"properties": {
"billingTier": {
- "type": "string"
+ "type": "string",
+ "description": "Billing tier for connection bandwidth\n"
},
"orderId": {
- "type": "string"
+ "type": "string",
+ "description": "Order Identification\n"
},
"orderNumber": {
- "type": "string"
+ "type": "string",
+ "description": "Order Reference Number\n"
},
"purchaseOrderNumber": {
- "type": "string"
+ "type": "string",
+ "description": "Purchase order number\n"
}
},
"type": "object",
@@ -2748,7 +3024,8 @@
"equinix:fabric/getCloudRouterPackage:getCloudRouterPackage": {
"properties": {
"code": {
- "type": "string"
+ "type": "string",
+ "description": "Fabric Cloud Router package code\n"
}
},
"type": "object",
@@ -2786,22 +3063,22 @@
"equinix:fabric/getConnectionASide:getConnectionASide": {
"properties": {
"accessPoint": {
- "$ref": "#/types/equinix:fabric/getConnectionASideAccessPoint:getConnectionASideAccessPoint"
+ "$ref": "#/types/equinix:fabric/getConnectionASideAccessPoint:getConnectionASideAccessPoint",
+ "description": "Point of access details\n"
+ },
+ "additionalInfos": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/equinix:fabric/getConnectionASideAdditionalInfo:getConnectionASideAdditionalInfo"
+ },
+ "description": "Connection side additional information\n"
},
"serviceToken": {
- "$ref": "#/types/equinix:fabric/getConnectionASideServiceToken:getConnectionASideServiceToken"
+ "$ref": "#/types/equinix:fabric/getConnectionASideServiceToken:getConnectionASideServiceToken",
+ "description": "For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets\n"
}
},
- "type": "object",
- "required": [
- "accessPoint",
- "serviceToken"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getConnectionASideAccessPoint:getConnectionASideAccessPoint": {
"properties": {
@@ -2809,90 +3086,71 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getConnectionASideAccessPointAccount:getConnectionASideAccessPointAccount"
- }
+ },
+ "description": "Account\n"
},
"authenticationKey": {
- "type": "string"
+ "type": "string",
+ "description": "Authentication key for provider based connections\n"
},
- "gateways": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointGateway:getConnectionASideAccessPointGateway"
- },
- "deprecationMessage": "router attribute will be returned instead"
+ "gateway": {
+ "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointGateway:getConnectionASideAccessPointGateway",
+ "description": "**Deprecated** `gateway` Use `router` attribute instead\n",
+ "deprecationMessage": "use router attribute instead; gateway is no longer a part of the supported backend"
},
- "interfaces": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointInterface:getConnectionASideAccessPointInterface"
- }
+ "interface": {
+ "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointInterface:getConnectionASideAccessPointInterface",
+ "description": "Virtual device interface\n"
},
- "linkProtocols": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointLinkProtocol:getConnectionASideAccessPointLinkProtocol"
- }
+ "linkProtocol": {
+ "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointLinkProtocol:getConnectionASideAccessPointLinkProtocol",
+ "description": "Connection link protocol\n"
},
- "locations": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointLocation:getConnectionASideAccessPointLocation"
- }
+ "location": {
+ "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointLocation:getConnectionASideAccessPointLocation",
+ "description": "Access point location\n"
+ },
+ "network": {
+ "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointNetwork:getConnectionASideAccessPointNetwork",
+ "description": "network access point information\n"
},
"peeringType": {
- "type": "string"
+ "type": "string",
+ "description": "Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL\n"
},
- "ports": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointPort:getConnectionASideAccessPointPort"
- }
+ "port": {
+ "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointPort:getConnectionASideAccessPointPort",
+ "description": "Port access point information\n"
},
- "profiles": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointProfile:getConnectionASideAccessPointProfile"
- }
+ "profile": {
+ "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointProfile:getConnectionASideAccessPointProfile",
+ "description": "Service Profile\n"
},
"providerConnectionId": {
- "type": "string"
+ "type": "string",
+ "description": "Provider assigned Connection Id\n"
},
- "routers": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointRouter:getConnectionASideAccessPointRouter"
- },
- "description": "CloudRouter; Replaces `gateway` attribute (Set of Object)\n"
+ "router": {
+ "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointRouter:getConnectionASideAccessPointRouter",
+ "description": "Cloud Router access point information that replaces `gateway`\n"
},
"sellerRegion": {
- "type": "string"
+ "type": "string",
+ "description": "Access point seller region\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Access point type - COLO, VD, VG, SP, IGW, SUBNET, CLOUD_ROUTER, NETWORK\n"
},
- "virtualDevices": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointVirtualDevice:getConnectionASideAccessPointVirtualDevice"
- }
+ "virtualDevice": {
+ "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointVirtualDevice:getConnectionASideAccessPointVirtualDevice",
+ "description": "Virtual device\n"
}
},
"type": "object",
"required": [
"accounts",
- "authenticationKey",
- "gateways",
- "interfaces",
- "linkProtocols",
- "locations",
- "peeringType",
- "ports",
- "profiles",
- "providerConnectionId",
- "routers",
- "sellerRegion",
- "type",
- "virtualDevices"
+ "location"
],
"language": {
"nodejs": {
@@ -2903,25 +3161,36 @@
"equinix:fabric/getConnectionASideAccessPointAccount:getConnectionASideAccessPointAccount": {
"properties": {
"accountName": {
- "type": "string"
+ "type": "string",
+ "description": "Legal name of the accountholder.\n"
},
"accountNumber": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned account number.\n"
},
"globalCustId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrgId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrganizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's parent organization.\n"
},
"orgId": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned ID of the subscriber's organization.\n"
},
"organizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's organization.\n"
+ },
+ "ucmId": {
+ "type": "string",
+ "description": "Enterprise datastore id\n"
}
},
"type": "object",
@@ -2932,7 +3201,8 @@
"globalOrgId",
"globalOrganizationName",
"orgId",
- "organizationName"
+ "organizationName",
+ "ucmId"
],
"language": {
"nodejs": {
@@ -2943,20 +3213,17 @@
"equinix:fabric/getConnectionASideAccessPointGateway:getConnectionASideAccessPointGateway": {
"properties": {
"href": {
- "type": "string"
- },
- "state": {
- "type": "string"
+ "type": "string",
+ "description": "Unique Resource Identifier\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
"required": [
- "href",
- "state",
- "uuid"
+ "href"
],
"language": {
"nodejs": {
@@ -2967,20 +3234,21 @@
"equinix:fabric/getConnectionASideAccessPointInterface:getConnectionASideAccessPointInterface": {
"properties": {
"id": {
- "type": "integer"
+ "type": "integer",
+ "description": "id\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Interface type\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned interface identifier\n"
}
},
"type": "object",
"required": [
- "id",
- "type",
- "uuid"
+ "id"
],
"language": {
"nodejs": {
@@ -2991,21 +3259,24 @@
"equinix:fabric/getConnectionASideAccessPointLinkProtocol:getConnectionASideAccessPointLinkProtocol": {
"properties": {
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"
},
"vlanCTag": {
- "type": "integer"
- },
+ "type": "integer",
+ "description": "Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"
+ },
"vlanSTag": {
- "type": "integer"
+ "type": "integer",
+ "description": "Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"
},
"vlanTag": {
- "type": "integer"
+ "type": "integer",
+ "description": "Vlan Tag information, vlanTag value specified for DOT1Q connections\n"
}
},
"type": "object",
"required": [
- "type",
"vlanCTag",
"vlanSTag",
"vlanTag"
@@ -3018,25 +3289,25 @@
},
"equinix:fabric/getConnectionASideAccessPointLocation:getConnectionASideAccessPointLocation": {
"properties": {
- "href": {
- "type": "string"
- },
"ibx": {
- "type": "string"
+ "type": "string",
+ "description": "IBX Code\n"
},
"metroCode": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro code\n"
},
"metroName": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro name\n"
},
"region": {
- "type": "string"
+ "type": "string",
+ "description": "Access point region\n"
}
},
"type": "object",
"required": [
- "href",
"ibx",
"metroCode",
"metroName",
@@ -3048,22 +3319,47 @@
}
}
},
+ "equinix:fabric/getConnectionASideAccessPointNetwork:getConnectionASideAccessPointNetwork": {
+ "properties": {
+ "href": {
+ "type": "string",
+ "description": "Unique Resource Identifier\n"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned Network identifier\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "href"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
"equinix:fabric/getConnectionASideAccessPointPort:getConnectionASideAccessPointPort": {
"properties": {
"href": {
- "type": "string"
+ "type": "string",
+ "description": "Unique Resource Identifier\n"
},
"name": {
- "type": "string"
+ "type": "string",
+ "description": "Port name\n"
},
"redundancies": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getConnectionASideAccessPointPortRedundancy:getConnectionASideAccessPointPortRedundancy"
- }
+ },
+ "description": "Redundancy Information\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned Port identifier\n"
}
},
"type": "object",
@@ -3081,12 +3377,23 @@
},
"equinix:fabric/getConnectionASideAccessPointPortRedundancy:getConnectionASideAccessPointPortRedundancy": {
"properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Access point redundancy\n"
+ },
+ "group": {
+ "type": "string",
+ "description": "Port redundancy group\n"
+ },
"priority": {
- "type": "string"
+ "type": "string",
+ "description": "Priority type-Primary or Secondary\n"
}
},
"type": "object",
"required": [
+ "enabled",
+ "group",
"priority"
],
"language": {
@@ -3101,22 +3408,28 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getConnectionASideAccessPointProfileAccessPointTypeConfig:getConnectionASideAccessPointProfileAccessPointTypeConfig"
- }
+ },
+ "description": "Access point config information\n"
},
"description": {
- "type": "string"
+ "type": "string",
+ "description": "User-provided service description\n"
},
"href": {
- "type": "string"
+ "type": "string",
+ "description": "Service Profile URI response attribute\n"
},
"name": {
- "type": "string"
+ "type": "string",
+ "description": "Customer-assigned service profile name\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix assigned service profile identifier\n"
}
},
"type": "object",
@@ -3136,75 +3449,17 @@
},
"equinix:fabric/getConnectionASideAccessPointProfileAccessPointTypeConfig:getConnectionASideAccessPointProfileAccessPointTypeConfig": {
"properties": {
- "allowBandwidthAutoApproval": {
- "type": "boolean"
- },
- "allowBandwidthUpgrade": {
- "type": "boolean"
- },
- "allowCustomBandwidth": {
- "type": "boolean"
- },
- "allowRemoteConnections": {
- "type": "boolean"
- },
- "apiConfigs": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointProfileAccessPointTypeConfigApiConfig:getConnectionASideAccessPointProfileAccessPointTypeConfigApiConfig"
- }
- },
- "authenticationKeys": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointProfileAccessPointTypeConfigAuthenticationKey:getConnectionASideAccessPointProfileAccessPointTypeConfigAuthenticationKey"
- }
- },
- "bandwidthAlertThreshold": {
- "type": "number"
- },
- "connectionLabel": {
- "type": "string"
- },
- "connectionRedundancyRequired": {
- "type": "boolean"
- },
- "enableAutoGenerateServiceKey": {
- "type": "boolean"
- },
- "linkProtocolConfigs": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionASideAccessPointProfileAccessPointTypeConfigLinkProtocolConfig:getConnectionASideAccessPointProfileAccessPointTypeConfigLinkProtocolConfig"
- }
- },
- "supportedBandwidths": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Type of access point type config - VD, COLO\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned access point type config identifier\n"
}
},
"type": "object",
"required": [
- "allowBandwidthAutoApproval",
- "allowBandwidthUpgrade",
- "allowCustomBandwidth",
- "allowRemoteConnections",
- "apiConfigs",
- "authenticationKeys",
- "bandwidthAlertThreshold",
- "connectionLabel",
- "connectionRedundancyRequired",
- "enableAutoGenerateServiceKey",
- "linkProtocolConfigs",
- "supportedBandwidths",
"type",
"uuid"
],
@@ -3214,111 +3469,20 @@
}
}
},
- "equinix:fabric/getConnectionASideAccessPointProfileAccessPointTypeConfigApiConfig:getConnectionASideAccessPointProfileAccessPointTypeConfigApiConfig": {
- "properties": {
- "allowOverSubscription": {
- "type": "boolean"
- },
- "apiAvailable": {
- "type": "boolean"
- },
- "bandwidthFromApi": {
- "type": "boolean"
- },
- "equinixManagedPort": {
- "type": "boolean"
- },
- "equinixManagedVlan": {
- "type": "boolean"
- },
- "integrationId": {
- "type": "string"
- },
- "overSubscriptionLimit": {
- "type": "integer"
- }
- },
- "type": "object",
- "required": [
- "allowOverSubscription",
- "apiAvailable",
- "bandwidthFromApi",
- "equinixManagedPort",
- "equinixManagedVlan",
- "integrationId",
- "overSubscriptionLimit"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
- },
- "equinix:fabric/getConnectionASideAccessPointProfileAccessPointTypeConfigAuthenticationKey:getConnectionASideAccessPointProfileAccessPointTypeConfigAuthenticationKey": {
- "properties": {
- "description": {
- "type": "string"
- },
- "label": {
- "type": "string"
- },
- "required": {
- "type": "boolean"
- }
- },
- "type": "object",
- "required": [
- "description",
- "label",
- "required"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
- },
- "equinix:fabric/getConnectionASideAccessPointProfileAccessPointTypeConfigLinkProtocolConfig:getConnectionASideAccessPointProfileAccessPointTypeConfigLinkProtocolConfig": {
- "properties": {
- "encapsulation": {
- "type": "string"
- },
- "encapsulationStrategy": {
- "type": "string"
- },
- "reuseVlanSTag": {
- "type": "boolean"
- }
- },
- "type": "object",
- "required": [
- "encapsulation",
- "encapsulationStrategy",
- "reuseVlanSTag"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
- },
"equinix:fabric/getConnectionASideAccessPointRouter:getConnectionASideAccessPointRouter": {
"properties": {
"href": {
- "type": "string"
- },
- "state": {
- "type": "string"
+ "type": "string",
+ "description": "Unique Resource Identifier\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
"required": [
- "href",
- "state",
- "uuid"
+ "href"
],
"language": {
"nodejs": {
@@ -3329,20 +3493,25 @@
"equinix:fabric/getConnectionASideAccessPointVirtualDevice:getConnectionASideAccessPointVirtualDevice": {
"properties": {
"href": {
- "type": "string"
+ "type": "string",
+ "description": "Unique Resource Identifier\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Customer-assigned Virtual Device Name\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Virtual Device type\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned Virtual Device identifier\n"
}
},
"type": "object",
"required": [
- "href",
- "type",
- "uuid"
+ "href"
],
"language": {
"nodejs": {
@@ -3350,27 +3519,42 @@
}
}
},
+ "equinix:fabric/getConnectionASideAdditionalInfo:getConnectionASideAdditionalInfo": {
+ "properties": {
+ "key": {
+ "type": "string",
+ "description": "Additional information key\n"
+ },
+ "value": {
+ "type": "string",
+ "description": "Additional information value\n"
+ }
+ },
+ "type": "object"
+ },
"equinix:fabric/getConnectionASideServiceToken:getConnectionASideServiceToken": {
"properties": {
"description": {
- "type": "string"
+ "type": "string",
+ "description": "Service token description\n"
},
"href": {
- "type": "string"
+ "type": "string",
+ "description": "An absolute URL that is the subject of the link's context\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Token type - VC_TOKEN\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned service token identifier\n"
}
},
"type": "object",
"required": [
"description",
- "href",
- "type",
- "uuid"
+ "href"
],
"language": {
"nodejs": {
@@ -3381,26 +3565,37 @@
"equinix:fabric/getConnectionAccount:getConnectionAccount": {
"properties": {
"accountName": {
- "type": "string"
+ "type": "string",
+ "description": "Legal name of the accountholder.\n"
},
"accountNumber": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned account number.\n"
},
"globalCustId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrgId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrganizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's parent organization.\n"
},
"orgId": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned ID of the subscriber's organization.\n"
},
"organizationName": {
- "type": "string"
- }
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's organization.\n"
+ },
+ "ucmId": {
+ "type": "string",
+ "description": "Enterprise datastore id\n"
+ }
},
"type": "object",
"required": [
@@ -3410,27 +3605,8 @@
"globalOrgId",
"globalOrganizationName",
"orgId",
- "organizationName"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
- },
- "equinix:fabric/getConnectionAdditionalInfo:getConnectionAdditionalInfo": {
- "properties": {
- "key": {
- "type": "string"
- },
- "value": {
- "type": "string"
- }
- },
- "type": "object",
- "required": [
- "key",
- "value"
+ "organizationName",
+ "ucmId"
],
"language": {
"nodejs": {
@@ -3441,40 +3617,52 @@
"equinix:fabric/getConnectionChangeLog:getConnectionChangeLog": {
"properties": {
"createdBy": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Key\n"
},
"createdByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
"createdByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Full Name\n"
},
"createdDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Created by Date and Time\n"
},
"deletedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Key\n"
},
"deletedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
},
"deletedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
},
"deletedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
},
"updatedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Key\n"
},
"updatedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Email Address\n"
},
"updatedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Full Name\n"
},
"updatedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by Date and Time\n"
}
},
"type": "object",
@@ -3504,19 +3692,21 @@
"type": "array",
"items": {
"type": "string"
- }
+ },
+ "description": "Array of contact emails\n"
},
"sendInterval": {
- "type": "string"
+ "type": "string",
+ "description": "Send interval\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"
}
},
"type": "object",
"required": [
"emails",
- "sendInterval",
"type"
],
"language": {
@@ -3528,16 +3718,19 @@
"equinix:fabric/getConnectionOperation:getConnectionOperation": {
"properties": {
"equinixStatus": {
- "type": "string"
+ "type": "string",
+ "description": "Connection status\n"
},
"errors": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getConnectionOperationError:getConnectionOperationError"
- }
+ },
+ "description": "Errors occurred\n"
},
"providerStatus": {
- "type": "string"
+ "type": "string",
+ "description": "Connection provider readiness status\n"
}
},
"type": "object",
@@ -3558,22 +3751,28 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getConnectionOperationErrorAdditionalInfo:getConnectionOperationErrorAdditionalInfo"
- }
+ },
+ "description": "Pricing error additional Info\n"
},
"correlationId": {
- "type": "string"
+ "type": "string",
+ "description": "CorrelationId\n"
},
"details": {
- "type": "string"
+ "type": "string",
+ "description": "Details\n"
},
"errorCode": {
- "type": "string"
+ "type": "string",
+ "description": "Error code\n"
},
"errorMessage": {
- "type": "string"
+ "type": "string",
+ "description": "Error Message\n"
},
"help": {
- "type": "string"
+ "type": "string",
+ "description": "Help\n"
}
},
"type": "object",
@@ -3594,10 +3793,12 @@
"equinix:fabric/getConnectionOperationErrorAdditionalInfo:getConnectionOperationErrorAdditionalInfo": {
"properties": {
"property": {
- "type": "string"
+ "type": "string",
+ "description": "Property at which the error potentially occurred\n"
},
"reason": {
- "type": "string"
+ "type": "string",
+ "description": "Reason for the error\n"
}
},
"type": "object",
@@ -3614,16 +3815,20 @@
"equinix:fabric/getConnectionOrder:getConnectionOrder": {
"properties": {
"billingTier": {
- "type": "string"
+ "type": "string",
+ "description": "Billing tier for connection bandwidth\n"
},
"orderId": {
- "type": "string"
+ "type": "string",
+ "description": "Order Identification\n"
},
"orderNumber": {
- "type": "string"
+ "type": "string",
+ "description": "Order Reference Number\n"
},
"purchaseOrderNumber": {
- "type": "string"
+ "type": "string",
+ "description": "Purchase order number\n"
}
},
"type": "object",
@@ -3664,10 +3869,12 @@
"equinix:fabric/getConnectionRedundancy:getConnectionRedundancy": {
"properties": {
"group": {
- "type": "string"
+ "type": "string",
+ "description": "Redundancy group identifier (Use the redundancy.0.group UUID of primary connection; e.g. one(equinix_fabric_connection.primary_port_connection.redundancy).group or equinix_fabric_connection.primary_port_connection.redundancy.0.group)\n"
},
"priority": {
- "type": "string"
+ "type": "string",
+ "description": "Connection priority in redundancy group - PRIMARY, SECONDARY\n"
}
},
"type": "object",
@@ -3684,22 +3891,22 @@
"equinix:fabric/getConnectionZSide:getConnectionZSide": {
"properties": {
"accessPoint": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPoint:getConnectionZSideAccessPoint"
+ "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPoint:getConnectionZSideAccessPoint",
+ "description": "Point of access details\n"
+ },
+ "additionalInfos": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/equinix:fabric/getConnectionZSideAdditionalInfo:getConnectionZSideAdditionalInfo"
+ },
+ "description": "Connection side additional information\n"
},
"serviceToken": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideServiceToken:getConnectionZSideServiceToken"
+ "$ref": "#/types/equinix:fabric/getConnectionZSideServiceToken:getConnectionZSideServiceToken",
+ "description": "For service token based connections, Service tokens authorize users to access protected resources and services. Resource owners can distribute the tokens to trusted partners and vendors, allowing selected third parties to work directly with Equinix network assets\n"
}
},
- "type": "object",
- "required": [
- "accessPoint",
- "serviceToken"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getConnectionZSideAccessPoint:getConnectionZSideAccessPoint": {
"properties": {
@@ -3707,90 +3914,71 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointAccount:getConnectionZSideAccessPointAccount"
- }
+ },
+ "description": "Account\n"
},
"authenticationKey": {
- "type": "string"
+ "type": "string",
+ "description": "Authentication key for provider based connections\n"
},
- "gateways": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointGateway:getConnectionZSideAccessPointGateway"
- },
- "deprecationMessage": "router attribute will be returned instead"
+ "gateway": {
+ "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointGateway:getConnectionZSideAccessPointGateway",
+ "description": "**Deprecated** `gateway` Use `router` attribute instead\n",
+ "deprecationMessage": "use router attribute instead; gateway is no longer a part of the supported backend"
},
- "interfaces": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointInterface:getConnectionZSideAccessPointInterface"
- }
+ "interface": {
+ "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointInterface:getConnectionZSideAccessPointInterface",
+ "description": "Virtual device interface\n"
},
- "linkProtocols": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointLinkProtocol:getConnectionZSideAccessPointLinkProtocol"
- }
+ "linkProtocol": {
+ "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointLinkProtocol:getConnectionZSideAccessPointLinkProtocol",
+ "description": "Connection link protocol\n"
},
- "locations": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointLocation:getConnectionZSideAccessPointLocation"
- }
+ "location": {
+ "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointLocation:getConnectionZSideAccessPointLocation",
+ "description": "Access point location\n"
+ },
+ "network": {
+ "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointNetwork:getConnectionZSideAccessPointNetwork",
+ "description": "network access point information\n"
},
"peeringType": {
- "type": "string"
+ "type": "string",
+ "description": "Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL\n"
},
- "ports": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointPort:getConnectionZSideAccessPointPort"
- }
+ "port": {
+ "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointPort:getConnectionZSideAccessPointPort",
+ "description": "Port access point information\n"
},
- "profiles": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointProfile:getConnectionZSideAccessPointProfile"
- }
+ "profile": {
+ "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointProfile:getConnectionZSideAccessPointProfile",
+ "description": "Service Profile\n"
},
"providerConnectionId": {
- "type": "string"
+ "type": "string",
+ "description": "Provider assigned Connection Id\n"
},
- "routers": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointRouter:getConnectionZSideAccessPointRouter"
- },
- "description": "CloudRouter; Replaces `gateway` attribute (Set of Object)\n"
+ "router": {
+ "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointRouter:getConnectionZSideAccessPointRouter",
+ "description": "Cloud Router access point information that replaces `gateway`\n"
},
"sellerRegion": {
- "type": "string"
+ "type": "string",
+ "description": "Access point seller region\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Access point type - COLO, VD, VG, SP, IGW, SUBNET, CLOUD_ROUTER, NETWORK\n"
},
- "virtualDevices": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointVirtualDevice:getConnectionZSideAccessPointVirtualDevice"
- }
+ "virtualDevice": {
+ "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointVirtualDevice:getConnectionZSideAccessPointVirtualDevice",
+ "description": "Virtual device\n"
}
},
"type": "object",
"required": [
"accounts",
- "authenticationKey",
- "gateways",
- "interfaces",
- "linkProtocols",
- "locations",
- "peeringType",
- "ports",
- "profiles",
- "providerConnectionId",
- "routers",
- "sellerRegion",
- "type",
- "virtualDevices"
+ "location"
],
"language": {
"nodejs": {
@@ -3801,25 +3989,36 @@
"equinix:fabric/getConnectionZSideAccessPointAccount:getConnectionZSideAccessPointAccount": {
"properties": {
"accountName": {
- "type": "string"
+ "type": "string",
+ "description": "Legal name of the accountholder.\n"
},
"accountNumber": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned account number.\n"
},
"globalCustId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrgId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrganizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's parent organization.\n"
},
"orgId": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned ID of the subscriber's organization.\n"
},
"organizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's organization.\n"
+ },
+ "ucmId": {
+ "type": "string",
+ "description": "Enterprise datastore id\n"
}
},
"type": "object",
@@ -3830,7 +4029,8 @@
"globalOrgId",
"globalOrganizationName",
"orgId",
- "organizationName"
+ "organizationName",
+ "ucmId"
],
"language": {
"nodejs": {
@@ -3841,20 +4041,17 @@
"equinix:fabric/getConnectionZSideAccessPointGateway:getConnectionZSideAccessPointGateway": {
"properties": {
"href": {
- "type": "string"
- },
- "state": {
- "type": "string"
+ "type": "string",
+ "description": "Unique Resource Identifier\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned virtual gateway identifier\n"
}
},
"type": "object",
"required": [
- "href",
- "state",
- "uuid"
+ "href"
],
"language": {
"nodejs": {
@@ -3865,20 +4062,21 @@
"equinix:fabric/getConnectionZSideAccessPointInterface:getConnectionZSideAccessPointInterface": {
"properties": {
"id": {
- "type": "integer"
+ "type": "integer",
+ "description": "id\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Interface type\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned interface identifier\n"
}
},
"type": "object",
"required": [
- "id",
- "type",
- "uuid"
+ "id"
],
"language": {
"nodejs": {
@@ -3889,21 +4087,24 @@
"equinix:fabric/getConnectionZSideAccessPointLinkProtocol:getConnectionZSideAccessPointLinkProtocol": {
"properties": {
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Type of the link protocol - UNTAGGED, DOT1Q, QINQ, EVPN_VXLAN\n"
},
"vlanCTag": {
- "type": "integer"
+ "type": "integer",
+ "description": "Vlan Customer Tag information, vlanCTag value specified for QINQ connections\n"
},
"vlanSTag": {
- "type": "integer"
+ "type": "integer",
+ "description": "Vlan Provider Tag information, vlanSTag value specified for QINQ connections\n"
},
"vlanTag": {
- "type": "integer"
+ "type": "integer",
+ "description": "Vlan Tag information, vlanTag value specified for DOT1Q connections\n"
}
},
"type": "object",
"required": [
- "type",
"vlanCTag",
"vlanSTag",
"vlanTag"
@@ -3916,25 +4117,25 @@
},
"equinix:fabric/getConnectionZSideAccessPointLocation:getConnectionZSideAccessPointLocation": {
"properties": {
- "href": {
- "type": "string"
- },
"ibx": {
- "type": "string"
+ "type": "string",
+ "description": "IBX Code\n"
},
"metroCode": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro code\n"
},
"metroName": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro name\n"
},
"region": {
- "type": "string"
+ "type": "string",
+ "description": "Access point region\n"
}
},
"type": "object",
"required": [
- "href",
"ibx",
"metroCode",
"metroName",
@@ -3946,22 +4147,47 @@
}
}
},
- "equinix:fabric/getConnectionZSideAccessPointPort:getConnectionZSideAccessPointPort": {
+ "equinix:fabric/getConnectionZSideAccessPointNetwork:getConnectionZSideAccessPointNetwork": {
"properties": {
"href": {
- "type": "string"
- },
- "name": {
- "type": "string"
+ "type": "string",
+ "description": "Unique Resource Identifier\n"
},
- "redundancies": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointPortRedundancy:getConnectionZSideAccessPointPortRedundancy"
- }
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned Network identifier\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "href"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "equinix:fabric/getConnectionZSideAccessPointPort:getConnectionZSideAccessPointPort": {
+ "properties": {
+ "href": {
+ "type": "string",
+ "description": "Unique Resource Identifier\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Port name\n"
+ },
+ "redundancies": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointPortRedundancy:getConnectionZSideAccessPointPortRedundancy"
+ },
+ "description": "Redundancy Information\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned Port identifier\n"
}
},
"type": "object",
@@ -3979,12 +4205,23 @@
},
"equinix:fabric/getConnectionZSideAccessPointPortRedundancy:getConnectionZSideAccessPointPortRedundancy": {
"properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Access point redundancy\n"
+ },
+ "group": {
+ "type": "string",
+ "description": "Port redundancy group\n"
+ },
"priority": {
- "type": "string"
+ "type": "string",
+ "description": "Priority type-Primary or Secondary\n"
}
},
"type": "object",
"required": [
+ "enabled",
+ "group",
"priority"
],
"language": {
@@ -3999,22 +4236,28 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointProfileAccessPointTypeConfig:getConnectionZSideAccessPointProfileAccessPointTypeConfig"
- }
+ },
+ "description": "Access point config information\n"
},
"description": {
- "type": "string"
+ "type": "string",
+ "description": "User-provided service description\n"
},
"href": {
- "type": "string"
+ "type": "string",
+ "description": "Service Profile URI response attribute\n"
},
"name": {
- "type": "string"
+ "type": "string",
+ "description": "Customer-assigned service profile name\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix assigned service profile identifier\n"
}
},
"type": "object",
@@ -4034,77 +4277,69 @@
},
"equinix:fabric/getConnectionZSideAccessPointProfileAccessPointTypeConfig:getConnectionZSideAccessPointProfileAccessPointTypeConfig": {
"properties": {
- "allowBandwidthAutoApproval": {
- "type": "boolean"
- },
- "allowBandwidthUpgrade": {
- "type": "boolean"
- },
- "allowCustomBandwidth": {
- "type": "boolean"
- },
- "allowRemoteConnections": {
- "type": "boolean"
- },
- "apiConfigs": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointProfileAccessPointTypeConfigApiConfig:getConnectionZSideAccessPointProfileAccessPointTypeConfigApiConfig"
- }
- },
- "authenticationKeys": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointProfileAccessPointTypeConfigAuthenticationKey:getConnectionZSideAccessPointProfileAccessPointTypeConfigAuthenticationKey"
- }
- },
- "bandwidthAlertThreshold": {
- "type": "number"
- },
- "connectionLabel": {
- "type": "string"
- },
- "connectionRedundancyRequired": {
- "type": "boolean"
+ "type": {
+ "type": "string",
+ "description": "Type of access point type config - VD, COLO\n"
},
- "enableAutoGenerateServiceKey": {
- "type": "boolean"
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned access point type config identifier\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type",
+ "uuid"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "equinix:fabric/getConnectionZSideAccessPointRouter:getConnectionZSideAccessPointRouter": {
+ "properties": {
+ "href": {
+ "type": "string",
+ "description": "Unique Resource Identifier\n"
},
- "linkProtocolConfigs": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getConnectionZSideAccessPointProfileAccessPointTypeConfigLinkProtocolConfig:getConnectionZSideAccessPointProfileAccessPointTypeConfigLinkProtocolConfig"
- }
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned virtual gateway identifier\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "href"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "equinix:fabric/getConnectionZSideAccessPointVirtualDevice:getConnectionZSideAccessPointVirtualDevice": {
+ "properties": {
+ "href": {
+ "type": "string",
+ "description": "Unique Resource Identifier\n"
},
- "supportedBandwidths": {
- "type": "array",
- "items": {
- "type": "integer"
- }
+ "name": {
+ "type": "string",
+ "description": "Customer-assigned Virtual Device Name\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Virtual Device type\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned Virtual Device identifier\n"
}
},
"type": "object",
"required": [
- "allowBandwidthAutoApproval",
- "allowBandwidthUpgrade",
- "allowCustomBandwidth",
- "allowRemoteConnections",
- "apiConfigs",
- "authenticationKeys",
- "bandwidthAlertThreshold",
- "connectionLabel",
- "connectionRedundancyRequired",
- "enableAutoGenerateServiceKey",
- "linkProtocolConfigs",
- "supportedBandwidths",
- "type",
- "uuid"
+ "href"
],
"language": {
"nodejs": {
@@ -4112,39 +4347,69 @@
}
}
},
- "equinix:fabric/getConnectionZSideAccessPointProfileAccessPointTypeConfigApiConfig:getConnectionZSideAccessPointProfileAccessPointTypeConfigApiConfig": {
+ "equinix:fabric/getConnectionZSideAdditionalInfo:getConnectionZSideAdditionalInfo": {
"properties": {
- "allowOverSubscription": {
- "type": "boolean"
+ "key": {
+ "type": "string",
+ "description": "Additional information key\n"
},
- "apiAvailable": {
- "type": "boolean"
+ "value": {
+ "type": "string",
+ "description": "Additional information value\n"
+ }
+ },
+ "type": "object"
+ },
+ "equinix:fabric/getConnectionZSideServiceToken:getConnectionZSideServiceToken": {
+ "properties": {
+ "description": {
+ "type": "string",
+ "description": "Service token description\n"
},
- "bandwidthFromApi": {
- "type": "boolean"
+ "href": {
+ "type": "string",
+ "description": "An absolute URL that is the subject of the link's context\n"
},
- "equinixManagedPort": {
- "type": "boolean"
+ "type": {
+ "type": "string",
+ "description": "Token type - VC_TOKEN\n"
},
- "equinixManagedVlan": {
- "type": "boolean"
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned service token identifier\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "description",
+ "href"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "equinix:fabric/getNetworkChange:getNetworkChange": {
+ "properties": {
+ "href": {
+ "type": "string",
+ "description": "Absolute URL that returns the details of the given change.\nExample: https://api.equinix.com/fabric/v4/networks/92dc376a-a932-43aa-a6a2-c806dedbd784\n"
},
- "integrationId": {
- "type": "string"
+ "type": {
+ "type": "string",
+ "description": "Asset instance change request type.: NETWORK_CREATION, NETWORK_UPDATE, NETWORK_DELETION\n"
},
- "overSubscriptionLimit": {
- "type": "integer"
+ "uuid": {
+ "type": "string",
+ "description": "Asset change request identifier.\n"
}
},
"type": "object",
"required": [
- "allowOverSubscription",
- "apiAvailable",
- "bandwidthFromApi",
- "equinixManagedPort",
- "equinixManagedVlan",
- "integrationId",
- "overSubscriptionLimit"
+ "href",
+ "type",
+ "uuid"
],
"language": {
"nodejs": {
@@ -4152,23 +4417,71 @@
}
}
},
- "equinix:fabric/getConnectionZSideAccessPointProfileAccessPointTypeConfigAuthenticationKey:getConnectionZSideAccessPointProfileAccessPointTypeConfigAuthenticationKey": {
+ "equinix:fabric/getNetworkChangeLog:getNetworkChangeLog": {
"properties": {
- "description": {
- "type": "string"
+ "createdBy": {
+ "type": "string",
+ "description": "Created by User Key\n"
},
- "label": {
- "type": "string"
+ "createdByEmail": {
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
- "required": {
- "type": "boolean"
+ "createdByFullName": {
+ "type": "string",
+ "description": "Created by User Full Name\n"
+ },
+ "createdDateTime": {
+ "type": "string",
+ "description": "Created by Date and Time\n"
+ },
+ "deletedBy": {
+ "type": "string",
+ "description": "Deleted by User Key\n"
+ },
+ "deletedByEmail": {
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
+ },
+ "deletedByFullName": {
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
+ },
+ "deletedDateTime": {
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
+ },
+ "updatedBy": {
+ "type": "string",
+ "description": "Updated by User Key\n"
+ },
+ "updatedByEmail": {
+ "type": "string",
+ "description": "Updated by User Email Address\n"
+ },
+ "updatedByFullName": {
+ "type": "string",
+ "description": "Updated by User Full Name\n"
+ },
+ "updatedDateTime": {
+ "type": "string",
+ "description": "Updated by Date and Time\n"
}
},
"type": "object",
"required": [
- "description",
- "label",
- "required"
+ "createdBy",
+ "createdByEmail",
+ "createdByFullName",
+ "createdDateTime",
+ "deletedBy",
+ "deletedByEmail",
+ "deletedByFullName",
+ "deletedDateTime",
+ "updatedBy",
+ "updatedByEmail",
+ "updatedByFullName",
+ "updatedDateTime"
],
"language": {
"nodejs": {
@@ -4176,23 +4489,31 @@
}
}
},
- "equinix:fabric/getConnectionZSideAccessPointProfileAccessPointTypeConfigLinkProtocolConfig:getConnectionZSideAccessPointProfileAccessPointTypeConfigLinkProtocolConfig": {
+ "equinix:fabric/getNetworkLocation:getNetworkLocation": {
"properties": {
- "encapsulation": {
- "type": "string"
+ "ibx": {
+ "type": "string",
+ "description": "IBX Code\n"
},
- "encapsulationStrategy": {
- "type": "string"
+ "metroCode": {
+ "type": "string",
+ "description": "Access point metro code\n"
},
- "reuseVlanSTag": {
- "type": "boolean"
+ "metroName": {
+ "type": "string",
+ "description": "Access point metro name\n"
+ },
+ "region": {
+ "type": "string",
+ "description": "Access point region\n"
}
},
"type": "object",
"required": [
- "encapsulation",
- "encapsulationStrategy",
- "reuseVlanSTag"
+ "ibx",
+ "metroCode",
+ "metroName",
+ "region"
],
"language": {
"nodejs": {
@@ -4200,23 +4521,28 @@
}
}
},
- "equinix:fabric/getConnectionZSideAccessPointRouter:getConnectionZSideAccessPointRouter": {
+ "equinix:fabric/getNetworkNotification:getNetworkNotification": {
"properties": {
- "href": {
- "type": "string"
+ "emails": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Array of contact emails\n"
},
- "state": {
- "type": "string"
+ "sendInterval": {
+ "type": "string",
+ "description": "Send interval\n"
},
- "uuid": {
- "type": "string"
+ "type": {
+ "type": "string",
+ "description": "Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"
}
},
"type": "object",
"required": [
- "href",
- "state",
- "uuid"
+ "emails",
+ "type"
],
"language": {
"nodejs": {
@@ -4224,23 +4550,16 @@
}
}
},
- "equinix:fabric/getConnectionZSideAccessPointVirtualDevice:getConnectionZSideAccessPointVirtualDevice": {
+ "equinix:fabric/getNetworkOperation:getNetworkOperation": {
"properties": {
- "href": {
- "type": "string"
- },
- "type": {
- "type": "string"
- },
- "uuid": {
- "type": "string"
+ "equinixStatus": {
+ "type": "string",
+ "description": "Progress towards provisioning a given asset.\n"
}
},
"type": "object",
"required": [
- "href",
- "type",
- "uuid"
+ "equinixStatus"
],
"language": {
"nodejs": {
@@ -4248,27 +4567,16 @@
}
}
},
- "equinix:fabric/getConnectionZSideServiceToken:getConnectionZSideServiceToken": {
+ "equinix:fabric/getNetworkProject:getNetworkProject": {
"properties": {
- "description": {
- "type": "string"
- },
- "href": {
- "type": "string"
- },
- "type": {
- "type": "string"
- },
- "uuid": {
- "type": "string"
+ "projectId": {
+ "type": "string",
+ "description": "Customer project identifier\n"
}
},
"type": "object",
"required": [
- "description",
- "href",
- "type",
- "uuid"
+ "projectId"
],
"language": {
"nodejs": {
@@ -4279,25 +4587,36 @@
"equinix:fabric/getPortAccount:getPortAccount": {
"properties": {
"accountName": {
- "type": "string"
+ "type": "string",
+ "description": "Legal name of the accountholder.\n"
},
"accountNumber": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned account number.\n"
},
"globalCustId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrgId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrganizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's parent organization.\n"
},
"orgId": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned ID of the subscriber's organization.\n"
},
"organizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's organization.\n"
+ },
+ "ucmId": {
+ "type": "string",
+ "description": "Enterprise datastore id\n"
}
},
"type": "object",
@@ -4308,7 +4627,8 @@
"globalOrgId",
"globalOrganizationName",
"orgId",
- "organizationName"
+ "organizationName",
+ "ucmId"
],
"language": {
"nodejs": {
@@ -4319,40 +4639,52 @@
"equinix:fabric/getPortChangeLog:getPortChangeLog": {
"properties": {
"createdBy": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Key\n"
},
"createdByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
"createdByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Full Name\n"
},
"createdDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Created by Date and Time\n"
},
"deletedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Key\n"
},
"deletedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
},
"deletedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
},
"deletedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
},
"updatedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Key\n"
},
"updatedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Email Address\n"
},
"updatedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Full Name\n"
},
"updatedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by Date and Time\n"
}
},
"type": "object",
@@ -4379,13 +4711,15 @@
"equinix:fabric/getPortDevice:getPortDevice": {
"properties": {
"name": {
- "type": "string"
+ "type": "string",
+ "description": "Port name\n"
},
"redundancies": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getPortDeviceRedundancy:getPortDeviceRedundancy"
- }
+ },
+ "description": "Port device redundancy\n"
}
},
"type": "object",
@@ -4401,15 +4735,22 @@
},
"equinix:fabric/getPortDeviceRedundancy:getPortDeviceRedundancy": {
"properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Access point redundancy\n"
+ },
"group": {
- "type": "string"
+ "type": "string",
+ "description": "Port redundancy group\n"
},
"priority": {
- "type": "string"
+ "type": "string",
+ "description": "Priority type-Primary or Secondary\n"
}
},
"type": "object",
"required": [
+ "enabled",
"group",
"priority"
],
@@ -4422,10 +4763,12 @@
"equinix:fabric/getPortEncapsulation:getPortEncapsulation": {
"properties": {
"tagProtocolId": {
- "type": "string"
+ "type": "string",
+ "description": "Port encapsulation Tag Protocol Identifier\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Port encapsulation protocol type\n"
}
},
"type": "object",
@@ -4441,25 +4784,25 @@
},
"equinix:fabric/getPortLocation:getPortLocation": {
"properties": {
- "href": {
- "type": "string"
- },
"ibx": {
- "type": "string"
+ "type": "string",
+ "description": "IBX Code\n"
},
"metroCode": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro code\n"
},
"metroName": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro name\n"
},
"region": {
- "type": "string"
+ "type": "string",
+ "description": "Access point region\n"
}
},
"type": "object",
"required": [
- "href",
"ibx",
"metroCode",
"metroName",
@@ -4474,13 +4817,16 @@
"equinix:fabric/getPortOperation:getPortOperation": {
"properties": {
"connectionCount": {
- "type": "integer"
+ "type": "integer",
+ "description": "Total number of current connections\n"
},
"opStatusChangedAt": {
- "type": "string"
+ "type": "string",
+ "description": "Date and time at which port availability changed\n"
},
"operationalStatus": {
- "type": "string"
+ "type": "string",
+ "description": "Port operation status\n"
}
},
"type": "object",
@@ -4498,13 +4844,16 @@
"equinix:fabric/getPortRedundancy:getPortRedundancy": {
"properties": {
"enabled": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Access point redundancy\n"
},
"group": {
- "type": "string"
+ "type": "string",
+ "description": "Port redundancy group\n"
},
"priority": {
- "type": "string"
+ "type": "string",
+ "description": "Priority type-Primary or Secondary\n"
}
},
"type": "object",
@@ -4525,76 +4874,94 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getPortsDatumAccount:getPortsDatumAccount"
- }
+ },
+ "description": "Customer account information that is associated with this port\n"
},
"availableBandwidth": {
- "type": "integer"
+ "type": "integer",
+ "description": "Port available bandwidth in Mbps\n"
},
"bandwidth": {
- "type": "integer"
+ "type": "integer",
+ "description": "Port bandwidth in Mbps\n"
},
"changeLogs": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getPortsDatumChangeLog:getPortsDatumChangeLog"
- }
+ },
+ "description": "Captures port lifecycle change information\n"
},
"description": {
- "type": "string"
+ "type": "string",
+ "description": "Port description\n"
},
"devices": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getPortsDatumDevice:getPortsDatumDevice"
- }
+ },
+ "description": "Port device\n"
},
"encapsulations": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getPortsDatumEncapsulation:getPortsDatumEncapsulation"
- }
+ },
+ "description": "Port encapsulation protocol\n"
},
"href": {
- "type": "string"
+ "type": "string",
+ "description": "Port URI information\n"
},
"lagEnabled": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Port Lag\n"
},
"locations": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getPortsDatumLocation:getPortsDatumLocation"
- }
+ },
+ "description": "Port location information\n"
},
"name": {
- "type": "string"
+ "type": "string",
+ "description": "Port name\n"
},
"operations": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getPortsDatumOperation:getPortsDatumOperation"
- }
+ },
+ "description": "Port specific operational data\n"
},
"redundancies": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getPortsDatumRedundancy:getPortsDatumRedundancy"
- }
+ },
+ "description": "Port redundancy information\n"
},
"serviceType": {
- "type": "string"
+ "type": "string",
+ "description": "Port service type\n"
},
"state": {
- "type": "string"
+ "type": "string",
+ "description": "Port state\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Port type\n"
},
"usedBandwidth": {
- "type": "integer"
+ "type": "integer",
+ "description": "Port used bandwidth in Mbps\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned port identifier\n"
}
},
"type": "object",
@@ -4615,7 +4982,8 @@
"serviceType",
"state",
"type",
- "usedBandwidth"
+ "usedBandwidth",
+ "uuid"
],
"language": {
"nodejs": {
@@ -4626,25 +4994,36 @@
"equinix:fabric/getPortsDatumAccount:getPortsDatumAccount": {
"properties": {
"accountName": {
- "type": "string"
+ "type": "string",
+ "description": "Legal name of the accountholder.\n"
},
"accountNumber": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned account number.\n"
},
"globalCustId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrgId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrganizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's parent organization.\n"
},
"orgId": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned ID of the subscriber's organization.\n"
},
"organizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's organization.\n"
+ },
+ "ucmId": {
+ "type": "string",
+ "description": "Enterprise datastore id\n"
}
},
"type": "object",
@@ -4655,7 +5034,8 @@
"globalOrgId",
"globalOrganizationName",
"orgId",
- "organizationName"
+ "organizationName",
+ "ucmId"
],
"language": {
"nodejs": {
@@ -4666,40 +5046,52 @@
"equinix:fabric/getPortsDatumChangeLog:getPortsDatumChangeLog": {
"properties": {
"createdBy": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Key\n"
},
"createdByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
"createdByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Full Name\n"
},
"createdDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Created by Date and Time\n"
},
"deletedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Key\n"
},
"deletedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
},
"deletedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
},
"deletedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
},
"updatedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Key\n"
},
"updatedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Email Address\n"
},
"updatedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Full Name\n"
},
"updatedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by Date and Time\n"
}
},
"type": "object",
@@ -4726,13 +5118,15 @@
"equinix:fabric/getPortsDatumDevice:getPortsDatumDevice": {
"properties": {
"name": {
- "type": "string"
+ "type": "string",
+ "description": "Port name\n"
},
"redundancies": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getPortsDatumDeviceRedundancy:getPortsDatumDeviceRedundancy"
- }
+ },
+ "description": "Port device redundancy\n"
}
},
"type": "object",
@@ -4748,15 +5142,22 @@
},
"equinix:fabric/getPortsDatumDeviceRedundancy:getPortsDatumDeviceRedundancy": {
"properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Access point redundancy\n"
+ },
"group": {
- "type": "string"
+ "type": "string",
+ "description": "Port redundancy group\n"
},
"priority": {
- "type": "string"
+ "type": "string",
+ "description": "Priority type-Primary or Secondary\n"
}
},
"type": "object",
"required": [
+ "enabled",
"group",
"priority"
],
@@ -4769,10 +5170,12 @@
"equinix:fabric/getPortsDatumEncapsulation:getPortsDatumEncapsulation": {
"properties": {
"tagProtocolId": {
- "type": "string"
+ "type": "string",
+ "description": "Port encapsulation Tag Protocol Identifier\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Port encapsulation protocol type\n"
}
},
"type": "object",
@@ -4788,25 +5191,25 @@
},
"equinix:fabric/getPortsDatumLocation:getPortsDatumLocation": {
"properties": {
- "href": {
- "type": "string"
- },
"ibx": {
- "type": "string"
+ "type": "string",
+ "description": "IBX Code\n"
},
"metroCode": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro code\n"
},
"metroName": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro name\n"
},
"region": {
- "type": "string"
+ "type": "string",
+ "description": "Access point region\n"
}
},
"type": "object",
"required": [
- "href",
"ibx",
"metroCode",
"metroName",
@@ -4821,13 +5224,16 @@
"equinix:fabric/getPortsDatumOperation:getPortsDatumOperation": {
"properties": {
"connectionCount": {
- "type": "integer"
+ "type": "integer",
+ "description": "Total number of current connections\n"
},
"opStatusChangedAt": {
- "type": "string"
+ "type": "string",
+ "description": "Date and time at which port availability changed\n"
},
"operationalStatus": {
- "type": "string"
+ "type": "string",
+ "description": "Port operation status\n"
}
},
"type": "object",
@@ -4845,13 +5251,16 @@
"equinix:fabric/getPortsDatumRedundancy:getPortsDatumRedundancy": {
"properties": {
"enabled": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Access point redundancy\n"
},
"group": {
- "type": "string"
+ "type": "string",
+ "description": "Port redundancy group\n"
},
"priority": {
- "type": "string"
+ "type": "string",
+ "description": "Priority type-Primary or Secondary\n"
}
},
"type": "object",
@@ -4873,7 +5282,10 @@
"description": "Query Parameter to Get Ports By Name\n"
}
},
- "type": "object"
+ "type": "object",
+ "required": [
+ "name"
+ ]
},
"equinix:fabric/getRoutingProtocolBfd:getRoutingProtocolBfd": {
"properties": {
@@ -4889,7 +5301,12 @@
"type": "object",
"required": [
"enabled"
- ]
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
},
"equinix:fabric/getRoutingProtocolBgpIpv4:getRoutingProtocolBgpIpv4": {
"properties": {
@@ -4913,9 +5330,7 @@
],
"language": {
"nodejs": {
- "requiredInputs": [
- "customerPeerIp"
- ]
+ "requiredInputs": []
}
}
},
@@ -4941,22 +5356,23 @@
],
"language": {
"nodejs": {
- "requiredInputs": [
- "customerPeerIp"
- ]
+ "requiredInputs": []
}
}
},
"equinix:fabric/getRoutingProtocolChange:getRoutingProtocolChange": {
"properties": {
"href": {
- "type": "string"
+ "type": "string",
+ "description": "Routing Protocol Change URI\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Type of change\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Uniquely identifies a change\n"
}
},
"type": "object",
@@ -4974,40 +5390,52 @@
"equinix:fabric/getRoutingProtocolChangeLog:getRoutingProtocolChangeLog": {
"properties": {
"createdBy": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Key\n"
},
"createdByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
"createdByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Full Name\n"
},
"createdDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Created by Date and Time\n"
},
"deletedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Key\n"
},
"deletedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
},
"deletedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
},
"deletedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
},
"updatedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Key\n"
},
"updatedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Email Address\n"
},
"updatedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Full Name\n"
},
"updatedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by Date and Time\n"
}
},
"type": "object",
@@ -5041,7 +5469,12 @@
"type": "object",
"required": [
"equinixIfaceIp"
- ]
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
},
"equinix:fabric/getRoutingProtocolDirectIpv6:getRoutingProtocolDirectIpv6": {
"properties": {
@@ -5058,7 +5491,8 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getRoutingProtocolOperationError:getRoutingProtocolOperationError"
- }
+ },
+ "description": "Errors occurred\n"
}
},
"type": "object",
@@ -5077,22 +5511,28 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getRoutingProtocolOperationErrorAdditionalInfo:getRoutingProtocolOperationErrorAdditionalInfo"
- }
+ },
+ "description": "Pricing error additional Info\n"
},
"correlationId": {
- "type": "string"
+ "type": "string",
+ "description": "CorrelationId\n"
},
"details": {
- "type": "string"
+ "type": "string",
+ "description": "Details\n"
},
"errorCode": {
- "type": "string"
+ "type": "string",
+ "description": "Error code\n"
},
"errorMessage": {
- "type": "string"
+ "type": "string",
+ "description": "Error Message\n"
},
"help": {
- "type": "string"
+ "type": "string",
+ "description": "Help\n"
}
},
"type": "object",
@@ -5113,10 +5553,12 @@
"equinix:fabric/getRoutingProtocolOperationErrorAdditionalInfo:getRoutingProtocolOperationErrorAdditionalInfo": {
"properties": {
"property": {
- "type": "string"
+ "type": "string",
+ "description": "Property at which the error potentially occurred\n"
},
"reason": {
- "type": "string"
+ "type": "string",
+ "description": "Reason for the error\n"
}
},
"type": "object",
@@ -5133,74 +5575,67 @@
"equinix:fabric/getServiceProfileAccessPointTypeConfig:getServiceProfileAccessPointTypeConfig": {
"properties": {
"allowBandwidthAutoApproval": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Setting to enable or disable the ability of the buyer to change connection bandwidth without approval of the seller\n"
},
"allowBandwidthUpgrade": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Availability of a bandwidth upgrade. The default is false\n"
},
"allowCustomBandwidth": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Setting to enable or disable the ability of the buyer to customize the bandwidth\n"
},
"allowRemoteConnections": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Setting to allow or prohibit remote connections to the service profile\n"
},
- "apiConfigs": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getServiceProfileAccessPointTypeConfigApiConfig:getServiceProfileAccessPointTypeConfigApiConfig"
- }
+ "apiConfig": {
+ "$ref": "#/types/equinix:fabric/getServiceProfileAccessPointTypeConfigApiConfig:getServiceProfileAccessPointTypeConfigApiConfig",
+ "description": "Api configuration details\n"
},
- "authenticationKeys": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getServiceProfileAccessPointTypeConfigAuthenticationKey:getServiceProfileAccessPointTypeConfigAuthenticationKey"
- }
+ "authenticationKey": {
+ "$ref": "#/types/equinix:fabric/getServiceProfileAccessPointTypeConfigAuthenticationKey:getServiceProfileAccessPointTypeConfigAuthenticationKey",
+ "description": "Authentication key details\n"
},
"bandwidthAlertThreshold": {
- "type": "number"
+ "type": "number",
+ "description": "Percentage of port bandwidth at which an allocation alert is generated\n"
},
"connectionLabel": {
- "type": "string"
+ "type": "string",
+ "description": "Custom name for Connection\n"
},
"connectionRedundancyRequired": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Mandate redundant connections\n"
},
"enableAutoGenerateServiceKey": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Enable auto generate service key\n"
},
- "linkProtocolConfigs": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getServiceProfileAccessPointTypeConfigLinkProtocolConfig:getServiceProfileAccessPointTypeConfigLinkProtocolConfig"
- }
+ "linkProtocolConfig": {
+ "$ref": "#/types/equinix:fabric/getServiceProfileAccessPointTypeConfigLinkProtocolConfig:getServiceProfileAccessPointTypeConfigLinkProtocolConfig",
+ "description": "Link protocol configuration details\n"
},
"supportedBandwidths": {
"type": "array",
"items": {
"type": "integer"
- }
+ },
+ "description": "Supported bandwidths\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Type of access point type config - VD, COLO\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Colo/Port Uuid\n"
}
},
"type": "object",
"required": [
- "allowBandwidthAutoApproval",
- "allowBandwidthUpgrade",
- "allowCustomBandwidth",
- "allowRemoteConnections",
- "apiConfigs",
- "authenticationKeys",
- "bandwidthAlertThreshold",
- "connectionLabel",
- "connectionRedundancyRequired",
- "enableAutoGenerateServiceKey",
- "linkProtocolConfigs",
- "supportedBandwidths",
"type",
"uuid"
],
@@ -5213,116 +5648,103 @@
"equinix:fabric/getServiceProfileAccessPointTypeConfigApiConfig:getServiceProfileAccessPointTypeConfigApiConfig": {
"properties": {
"allowOverSubscription": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Setting showing that oversubscription support is available (true) or not (false). The default is false\n"
},
"apiAvailable": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Indicates if it's possible to establish connections based on the given service profile using the Equinix Fabric API.\n"
},
"bandwidthFromApi": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Indicates if the connection bandwidth can be obtained directly from the cloud service provider.\n"
},
"equinixManagedPort": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Setting indicating that the port is managed by Equinix (true) or not (false)\n"
},
"equinixManagedVlan": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Setting indicating that the VLAN is managed by Equinix (true) or not (false)\n"
},
"integrationId": {
- "type": "string"
+ "type": "string",
+ "description": "A unique identifier issued during onboarding and used to integrate the customer's service profile with the Equinix Fabric API.\n"
},
"overSubscriptionLimit": {
- "type": "integer"
+ "type": "integer",
+ "description": "Port bandwidth multiplier that determines the total bandwidth that can be allocated to users creating connections to your services. For example, a 10 Gbps port combined with an overSubscriptionLimit parameter value of 10 allows your subscribers to create connections with a total bandwidth of 100 Gbps.\n"
}
},
- "type": "object",
- "required": [
- "allowOverSubscription",
- "apiAvailable",
- "bandwidthFromApi",
- "equinixManagedPort",
- "equinixManagedVlan",
- "integrationId",
- "overSubscriptionLimit"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getServiceProfileAccessPointTypeConfigAuthenticationKey:getServiceProfileAccessPointTypeConfigAuthenticationKey": {
"properties": {
"description": {
- "type": "string"
+ "type": "string",
+ "description": "Description of authorization key\n"
},
"label": {
- "type": "string"
+ "type": "string",
+ "description": "Name of the parameter that must be provided to authorize the connection.\n"
},
"required": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Requirement to configure an authentication key.\n"
}
},
- "type": "object",
- "required": [
- "description",
- "label",
- "required"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getServiceProfileAccessPointTypeConfigLinkProtocolConfig:getServiceProfileAccessPointTypeConfigLinkProtocolConfig": {
"properties": {
"encapsulation": {
- "type": "string"
+ "type": "string",
+ "description": "Data frames encapsulation standard.UNTAGGED - Untagged encapsulation for EPL connections. DOT1Q - DOT1Q encapsulation standard. QINQ - QINQ encapsulation standard.\n"
},
"encapsulationStrategy": {
- "type": "string"
+ "type": "string",
+ "description": "Additional tagging information required by the seller profile.\n"
},
"reuseVlanSTag": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Automatically accept subsequent DOT1Q to QINQ connections that use the same authentication key. These connections will have the same VLAN S-tag assigned as the initial connection.\n"
}
},
- "type": "object",
- "required": [
- "encapsulation",
- "encapsulationStrategy",
- "reuseVlanSTag"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getServiceProfileAccount:getServiceProfileAccount": {
"properties": {
"accountName": {
- "type": "string"
+ "type": "string",
+ "description": "Legal name of the accountholder.\n"
},
"accountNumber": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned account number.\n"
},
"globalCustId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrgId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrganizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's parent organization.\n"
},
"orgId": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned ID of the subscriber's organization.\n"
},
"organizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's organization.\n"
},
"ucmId": {
- "type": "string"
+ "type": "string",
+ "description": "Enterprise datastore id\n"
}
},
"type": "object",
@@ -5345,40 +5767,52 @@
"equinix:fabric/getServiceProfileChangeLog:getServiceProfileChangeLog": {
"properties": {
"createdBy": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Key\n"
},
"createdByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
"createdByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Full Name\n"
},
"createdDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Created by Date and Time\n"
},
"deletedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Key\n"
},
"deletedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
},
"deletedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
},
"deletedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
},
"updatedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Key\n"
},
"updatedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Email Address\n"
},
"updatedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Full Name\n"
},
"updatedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by Date and Time\n"
}
},
"type": "object",
@@ -5405,34 +5839,37 @@
"equinix:fabric/getServiceProfileCustomField:getServiceProfileCustomField": {
"properties": {
"captureInEmail": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Required field\n"
},
"dataType": {
- "type": "string"
+ "type": "string",
+ "description": "Data type\n"
},
"description": {
- "type": "string"
+ "type": "string",
+ "description": "Description\n"
},
"label": {
- "type": "string"
+ "type": "string",
+ "description": "Label\n"
},
"options": {
"type": "array",
"items": {
"type": "string"
- }
+ },
+ "description": "Options\n"
},
"required": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Required field\n"
}
},
"type": "object",
"required": [
- "captureInEmail",
"dataType",
- "description",
"label",
- "options",
"required"
],
"language": {
@@ -5444,95 +5881,74 @@
"equinix:fabric/getServiceProfileMarketingInfo:getServiceProfileMarketingInfo": {
"properties": {
"logo": {
- "type": "string"
+ "type": "string",
+ "description": "Logo\n"
},
"processSteps": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getServiceProfileMarketingInfoProcessStep:getServiceProfileMarketingInfoProcessStep"
- }
+ },
+ "description": "Process Step\n"
},
"promotion": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Promotion\n"
}
},
- "type": "object",
- "required": [
- "logo",
- "processSteps",
- "promotion"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getServiceProfileMarketingInfoProcessStep:getServiceProfileMarketingInfoProcessStep": {
"properties": {
"description": {
- "type": "string"
+ "type": "string",
+ "description": "Description\n"
},
"subTitle": {
- "type": "string"
+ "type": "string",
+ "description": "Sub Title\n"
},
"title": {
- "type": "string"
+ "type": "string",
+ "description": "Title\n"
}
},
- "type": "object",
- "required": [
- "description",
- "subTitle",
- "title"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getServiceProfileMetro:getServiceProfileMetro": {
"properties": {
"code": {
- "type": "string"
+ "type": "string",
+ "description": "Metro Code - Example SV\n"
},
"displayName": {
- "type": "string"
+ "type": "string",
+ "description": "Display Name\n"
},
"ibxs": {
"type": "array",
"items": {
"type": "string"
- }
+ },
+ "description": "IBX- Equinix International Business Exchange list\n"
},
"inTrail": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "In Trail\n"
},
"name": {
- "type": "string"
+ "type": "string",
+ "description": "Metro Name\n"
},
"sellerRegions": {
"type": "object",
"additionalProperties": {
"type": "string"
- }
+ },
+ "description": "Seller Regions\n"
}
},
- "type": "object",
- "required": [
- "code",
- "displayName",
- "ibxs",
- "inTrail",
- "name",
- "sellerRegions"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getServiceProfileNotification:getServiceProfileNotification": {
"properties": {
@@ -5540,19 +5956,21 @@
"type": "array",
"items": {
"type": "string"
- }
+ },
+ "description": "Array of contact emails\n"
},
"sendInterval": {
- "type": "string"
+ "type": "string",
+ "description": "Send interval\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"
}
},
"type": "object",
"required": [
"emails",
- "sendInterval",
"type"
],
"language": {
@@ -5564,33 +5982,32 @@
"equinix:fabric/getServiceProfilePort:getServiceProfilePort": {
"properties": {
"crossConnectId": {
- "type": "string"
+ "type": "string",
+ "description": "Cross Connect Id\n"
},
- "locations": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getServiceProfilePortLocation:getServiceProfilePortLocation"
- }
+ "location": {
+ "$ref": "#/types/equinix:fabric/getServiceProfilePortLocation:getServiceProfilePortLocation",
+ "description": "Colo/Port Location\n"
},
"sellerRegion": {
- "type": "string"
+ "type": "string",
+ "description": "Seller Region\n"
},
"sellerRegionDescription": {
- "type": "string"
+ "type": "string",
+ "description": "Seller Region details\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Colo/Port Type\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Colo/Port Uuid\n"
}
},
"type": "object",
"required": [
- "crossConnectId",
- "locations",
- "sellerRegion",
- "sellerRegionDescription",
"type",
"uuid"
],
@@ -5603,16 +6020,20 @@
"equinix:fabric/getServiceProfilePortLocation:getServiceProfilePortLocation": {
"properties": {
"ibx": {
- "type": "string"
+ "type": "string",
+ "description": "IBX Code\n"
},
"metroCode": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro code\n"
},
"metroName": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro name\n"
},
"region": {
- "type": "string"
+ "type": "string",
+ "description": "Access point region\n"
}
},
"type": "object",
@@ -5631,10 +6052,12 @@
"equinix:fabric/getServiceProfileProject:getServiceProfileProject": {
"properties": {
"href": {
- "type": "string"
+ "type": "string",
+ "description": "Unique Resource URL\n"
},
"projectId": {
- "type": "string"
+ "type": "string",
+ "description": "Project Id\n"
}
},
"type": "object",
@@ -5648,97 +6071,185 @@
}
}
},
+ "equinix:fabric/getServiceProfileVirtualDevice:getServiceProfileVirtualDevice": {
+ "properties": {
+ "interfaceUuid": {
+ "type": "string",
+ "description": "Device Interface Uuid\n"
+ },
+ "location": {
+ "$ref": "#/types/equinix:fabric/getServiceProfileVirtualDeviceLocation:getServiceProfileVirtualDeviceLocation",
+ "description": "Device Location\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Virtual Device Type\n"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "Virtual Device Uuid\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type",
+ "uuid"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "equinix:fabric/getServiceProfileVirtualDeviceLocation:getServiceProfileVirtualDeviceLocation": {
+ "properties": {
+ "ibx": {
+ "type": "string",
+ "description": "IBX Code\n"
+ },
+ "metroCode": {
+ "type": "string",
+ "description": "Access point metro code\n"
+ },
+ "metroName": {
+ "type": "string",
+ "description": "Access point metro name\n"
+ },
+ "region": {
+ "type": "string",
+ "description": "Access point region\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ibx",
+ "metroCode",
+ "metroName",
+ "region"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
"equinix:fabric/getServiceProfilesDatum:getServiceProfilesDatum": {
"properties": {
"accessPointTypeConfigs": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getServiceProfilesDatumAccessPointTypeConfig:getServiceProfilesDatumAccessPointTypeConfig"
- }
+ },
+ "description": "Access point config information\n"
},
"accounts": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getServiceProfilesDatumAccount:getServiceProfilesDatumAccount"
- }
+ },
+ "description": "Service Profile Owner Account Information\n"
},
"allowedEmails": {
"type": "array",
"items": {
"type": "string"
- }
+ },
+ "description": "Array of contact emails\n"
},
"changeLogs": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getServiceProfilesDatumChangeLog:getServiceProfilesDatumChangeLog"
- }
+ },
+ "description": "Captures connection lifecycle change information\n"
},
"customFields": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getServiceProfilesDatumCustomField:getServiceProfilesDatumCustomField"
- }
+ },
+ "description": "Custom Fields\n"
},
"description": {
- "type": "string"
+ "type": "string",
+ "description": "User-provided service description\n"
},
"href": {
- "type": "string"
+ "type": "string",
+ "description": "Service Profile URI response attribute\n"
},
"marketingInfos": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getServiceProfilesDatumMarketingInfo:getServiceProfilesDatumMarketingInfo"
- }
+ },
+ "description": "Marketing Info\n"
},
"metros": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getServiceProfilesDatumMetro:getServiceProfilesDatumMetro"
- }
+ },
+ "description": "Access point config information\n"
},
"name": {
- "type": "string"
+ "type": "string",
+ "description": "Customer-assigned service profile name\n"
},
"notifications": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getServiceProfilesDatumNotification:getServiceProfilesDatumNotification"
- }
+ },
+ "description": "Preferences for notifications on connection configuration or status changes\n"
},
"ports": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getServiceProfilesDatumPort:getServiceProfilesDatumPort"
- }
+ },
+ "description": "Ports\n"
},
"projects": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getServiceProfilesDatumProject:getServiceProfilesDatumProject"
- }
+ },
+ "description": "Project information\n"
},
"selfProfile": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Self Profile indicating if the profile is created for customer's self use\n"
},
"state": {
- "type": "string"
+ "type": "string",
+ "description": "Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED\n"
},
"tags": {
"type": "array",
"items": {
"type": "string"
- }
+ },
+ "description": "Tags attached to the connection\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Service profile type - L2_PROFILE, L3_PROFILE, ECIA_PROFILE, ECMC_PROFILE\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix assigned service profile identifier\n"
+ },
+ "virtualDevices": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/equinix:fabric/getServiceProfilesDatumVirtualDevice:getServiceProfilesDatumVirtualDevice"
+ },
+ "description": "Virtual Devices\n"
},
"visibility": {
- "type": "string"
+ "type": "string",
+ "description": "Service profile visibility - PUBLIC, PRIVATE\n"
}
},
"type": "object",
@@ -5757,8 +6268,11 @@
"ports",
"projects",
"selfProfile",
+ "state",
"tags",
"type",
+ "uuid",
+ "virtualDevices",
"visibility"
],
"language": {
@@ -5770,74 +6284,67 @@
"equinix:fabric/getServiceProfilesDatumAccessPointTypeConfig:getServiceProfilesDatumAccessPointTypeConfig": {
"properties": {
"allowBandwidthAutoApproval": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Setting to enable or disable the ability of the buyer to change connection bandwidth without approval of the seller\n"
},
"allowBandwidthUpgrade": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Availability of a bandwidth upgrade. The default is false\n"
},
"allowCustomBandwidth": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Setting to enable or disable the ability of the buyer to customize the bandwidth\n"
},
"allowRemoteConnections": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Setting to allow or prohibit remote connections to the service profile\n"
},
- "apiConfigs": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigApiConfig:getServiceProfilesDatumAccessPointTypeConfigApiConfig"
- }
+ "apiConfig": {
+ "$ref": "#/types/equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigApiConfig:getServiceProfilesDatumAccessPointTypeConfigApiConfig",
+ "description": "Api configuration details\n"
},
- "authenticationKeys": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigAuthenticationKey:getServiceProfilesDatumAccessPointTypeConfigAuthenticationKey"
- }
+ "authenticationKey": {
+ "$ref": "#/types/equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigAuthenticationKey:getServiceProfilesDatumAccessPointTypeConfigAuthenticationKey",
+ "description": "Authentication key details\n"
},
"bandwidthAlertThreshold": {
- "type": "number"
+ "type": "number",
+ "description": "Percentage of port bandwidth at which an allocation alert is generated\n"
},
"connectionLabel": {
- "type": "string"
+ "type": "string",
+ "description": "Custom name for Connection\n"
},
"connectionRedundancyRequired": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Mandate redundant connections\n"
},
"enableAutoGenerateServiceKey": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Enable auto generate service key\n"
},
- "linkProtocolConfigs": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigLinkProtocolConfig:getServiceProfilesDatumAccessPointTypeConfigLinkProtocolConfig"
- }
+ "linkProtocolConfig": {
+ "$ref": "#/types/equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigLinkProtocolConfig:getServiceProfilesDatumAccessPointTypeConfigLinkProtocolConfig",
+ "description": "Link protocol configuration details\n"
},
"supportedBandwidths": {
"type": "array",
"items": {
"type": "integer"
- }
+ },
+ "description": "Supported bandwidths\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Type of access point type config - VD, COLO\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Colo/Port Uuid\n"
}
},
"type": "object",
"required": [
- "allowBandwidthAutoApproval",
- "allowBandwidthUpgrade",
- "allowCustomBandwidth",
- "allowRemoteConnections",
- "apiConfigs",
- "authenticationKeys",
- "bandwidthAlertThreshold",
- "connectionLabel",
- "connectionRedundancyRequired",
- "enableAutoGenerateServiceKey",
- "linkProtocolConfigs",
- "supportedBandwidths",
"type",
"uuid"
],
@@ -5850,116 +6357,103 @@
"equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigApiConfig:getServiceProfilesDatumAccessPointTypeConfigApiConfig": {
"properties": {
"allowOverSubscription": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Setting showing that oversubscription support is available (true) or not (false). The default is false\n"
},
"apiAvailable": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Indicates if it's possible to establish connections based on the given service profile using the Equinix Fabric API.\n"
},
"bandwidthFromApi": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Indicates if the connection bandwidth can be obtained directly from the cloud service provider.\n"
},
"equinixManagedPort": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Setting indicating that the port is managed by Equinix (true) or not (false)\n"
},
"equinixManagedVlan": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Setting indicating that the VLAN is managed by Equinix (true) or not (false)\n"
},
"integrationId": {
- "type": "string"
+ "type": "string",
+ "description": "A unique identifier issued during onboarding and used to integrate the customer's service profile with the Equinix Fabric API.\n"
},
"overSubscriptionLimit": {
- "type": "integer"
+ "type": "integer",
+ "description": "Port bandwidth multiplier that determines the total bandwidth that can be allocated to users creating connections to your services. For example, a 10 Gbps port combined with an overSubscriptionLimit parameter value of 10 allows your subscribers to create connections with a total bandwidth of 100 Gbps.\n"
}
},
- "type": "object",
- "required": [
- "allowOverSubscription",
- "apiAvailable",
- "bandwidthFromApi",
- "equinixManagedPort",
- "equinixManagedVlan",
- "integrationId",
- "overSubscriptionLimit"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigAuthenticationKey:getServiceProfilesDatumAccessPointTypeConfigAuthenticationKey": {
"properties": {
"description": {
- "type": "string"
+ "type": "string",
+ "description": "Description of authorization key\n"
},
"label": {
- "type": "string"
+ "type": "string",
+ "description": "Name of the parameter that must be provided to authorize the connection.\n"
},
"required": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Requirement to configure an authentication key.\n"
}
},
- "type": "object",
- "required": [
- "description",
- "label",
- "required"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getServiceProfilesDatumAccessPointTypeConfigLinkProtocolConfig:getServiceProfilesDatumAccessPointTypeConfigLinkProtocolConfig": {
"properties": {
"encapsulation": {
- "type": "string"
+ "type": "string",
+ "description": "Data frames encapsulation standard.UNTAGGED - Untagged encapsulation for EPL connections. DOT1Q - DOT1Q encapsulation standard. QINQ - QINQ encapsulation standard.\n"
},
"encapsulationStrategy": {
- "type": "string"
+ "type": "string",
+ "description": "Additional tagging information required by the seller profile.\n"
},
"reuseVlanSTag": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Automatically accept subsequent DOT1Q to QINQ connections that use the same authentication key. These connections will have the same VLAN S-tag assigned as the initial connection.\n"
}
},
- "type": "object",
- "required": [
- "encapsulation",
- "encapsulationStrategy",
- "reuseVlanSTag"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getServiceProfilesDatumAccount:getServiceProfilesDatumAccount": {
"properties": {
"accountName": {
- "type": "string"
+ "type": "string",
+ "description": "Legal name of the accountholder.\n"
},
"accountNumber": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned account number.\n"
},
"globalCustId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrgId": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned ID of the subscriber's parent organization.\n"
},
"globalOrganizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's parent organization.\n"
},
"orgId": {
- "type": "integer"
+ "type": "integer",
+ "description": "Equinix-assigned ID of the subscriber's organization.\n"
},
"organizationName": {
- "type": "string"
+ "type": "string",
+ "description": "Equinix-assigned name of the subscriber's organization.\n"
},
"ucmId": {
- "type": "string"
+ "type": "string",
+ "description": "Enterprise datastore id\n"
}
},
"type": "object",
@@ -5982,40 +6476,52 @@
"equinix:fabric/getServiceProfilesDatumChangeLog:getServiceProfilesDatumChangeLog": {
"properties": {
"createdBy": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Key\n"
},
"createdByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Email Address\n"
},
"createdByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Created by User Full Name\n"
},
"createdDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Created by Date and Time\n"
},
"deletedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Key\n"
},
"deletedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Email Address\n"
},
"deletedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by User Full Name\n"
},
"deletedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Deleted by Date and Time\n"
},
"updatedBy": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Key\n"
},
"updatedByEmail": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Email Address\n"
},
"updatedByFullName": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by User Full Name\n"
},
"updatedDateTime": {
- "type": "string"
+ "type": "string",
+ "description": "Updated by Date and Time\n"
}
},
"type": "object",
@@ -6042,34 +6548,37 @@
"equinix:fabric/getServiceProfilesDatumCustomField:getServiceProfilesDatumCustomField": {
"properties": {
"captureInEmail": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Required field\n"
},
"dataType": {
- "type": "string"
+ "type": "string",
+ "description": "Data type\n"
},
"description": {
- "type": "string"
+ "type": "string",
+ "description": "Description\n"
},
"label": {
- "type": "string"
+ "type": "string",
+ "description": "Label\n"
},
"options": {
"type": "array",
"items": {
"type": "string"
- }
+ },
+ "description": "Options\n"
},
"required": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Required field\n"
}
},
"type": "object",
"required": [
- "captureInEmail",
"dataType",
- "description",
"label",
- "options",
"required"
],
"language": {
@@ -6081,89 +6590,167 @@
"equinix:fabric/getServiceProfilesDatumMarketingInfo:getServiceProfilesDatumMarketingInfo": {
"properties": {
"logo": {
- "type": "string"
+ "type": "string",
+ "description": "Logo\n"
},
"processSteps": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getServiceProfilesDatumMarketingInfoProcessStep:getServiceProfilesDatumMarketingInfoProcessStep"
- }
+ },
+ "description": "Process Step\n"
},
"promotion": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Promotion\n"
}
},
- "type": "object",
- "required": [
- "logo",
- "processSteps",
- "promotion"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getServiceProfilesDatumMarketingInfoProcessStep:getServiceProfilesDatumMarketingInfoProcessStep": {
"properties": {
"description": {
- "type": "string"
+ "type": "string",
+ "description": "Description\n"
},
"subTitle": {
- "type": "string"
+ "type": "string",
+ "description": "Sub Title\n"
},
"title": {
- "type": "string"
+ "type": "string",
+ "description": "Title\n"
}
},
- "type": "object",
- "required": [
- "description",
- "subTitle",
- "title"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
+ "type": "object"
},
"equinix:fabric/getServiceProfilesDatumMetro:getServiceProfilesDatumMetro": {
"properties": {
"code": {
- "type": "string"
+ "type": "string",
+ "description": "Metro Code - Example SV\n"
},
"displayName": {
- "type": "string"
+ "type": "string",
+ "description": "Display Name\n"
},
"ibxs": {
"type": "array",
"items": {
"type": "string"
- }
+ },
+ "description": "IBX- Equinix International Business Exchange list\n"
},
"inTrail": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "In Trail\n"
},
"name": {
- "type": "string"
+ "type": "string",
+ "description": "Metro Name\n"
},
"sellerRegions": {
"type": "object",
"additionalProperties": {
"type": "string"
- }
+ },
+ "description": "Seller Regions\n"
+ }
+ },
+ "type": "object"
+ },
+ "equinix:fabric/getServiceProfilesDatumNotification:getServiceProfilesDatumNotification": {
+ "properties": {
+ "emails": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Array of contact emails\n"
+ },
+ "sendInterval": {
+ "type": "string",
+ "description": "Send interval\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Notification Type - ALL,CONNECTION_APPROVAL,SALES_REP_NOTIFICATIONS, NOTIFICATIONS\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "emails",
+ "type"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "equinix:fabric/getServiceProfilesDatumPort:getServiceProfilesDatumPort": {
+ "properties": {
+ "crossConnectId": {
+ "type": "string",
+ "description": "Cross Connect Id\n"
+ },
+ "location": {
+ "$ref": "#/types/equinix:fabric/getServiceProfilesDatumPortLocation:getServiceProfilesDatumPortLocation",
+ "description": "Colo/Port Location\n"
+ },
+ "sellerRegion": {
+ "type": "string",
+ "description": "Seller Region\n"
+ },
+ "sellerRegionDescription": {
+ "type": "string",
+ "description": "Seller Region details\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Colo/Port Type\n"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "Colo/Port Uuid\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type",
+ "uuid"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "equinix:fabric/getServiceProfilesDatumPortLocation:getServiceProfilesDatumPortLocation": {
+ "properties": {
+ "ibx": {
+ "type": "string",
+ "description": "IBX Code\n"
+ },
+ "metroCode": {
+ "type": "string",
+ "description": "Access point metro code\n"
+ },
+ "metroName": {
+ "type": "string",
+ "description": "Access point metro name\n"
+ },
+ "region": {
+ "type": "string",
+ "description": "Access point region\n"
}
},
"type": "object",
"required": [
- "code",
- "displayName",
- "ibxs",
- "inTrail",
- "name",
- "sellerRegions"
+ "ibx",
+ "metroCode",
+ "metroName",
+ "region"
],
"language": {
"nodejs": {
@@ -6171,26 +6758,21 @@
}
}
},
- "equinix:fabric/getServiceProfilesDatumNotification:getServiceProfilesDatumNotification": {
+ "equinix:fabric/getServiceProfilesDatumProject:getServiceProfilesDatumProject": {
"properties": {
- "emails": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "sendInterval": {
- "type": "string"
+ "href": {
+ "type": "string",
+ "description": "Unique Resource URL\n"
},
- "type": {
- "type": "string"
+ "projectId": {
+ "type": "string",
+ "description": "Project Id\n"
}
},
"type": "object",
"required": [
- "emails",
- "sendInterval",
- "type"
+ "href",
+ "projectId"
],
"language": {
"nodejs": {
@@ -6198,36 +6780,27 @@
}
}
},
- "equinix:fabric/getServiceProfilesDatumPort:getServiceProfilesDatumPort": {
+ "equinix:fabric/getServiceProfilesDatumVirtualDevice:getServiceProfilesDatumVirtualDevice": {
"properties": {
- "crossConnectId": {
- "type": "string"
- },
- "locations": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getServiceProfilesDatumPortLocation:getServiceProfilesDatumPortLocation"
- }
- },
- "sellerRegion": {
- "type": "string"
+ "interfaceUuid": {
+ "type": "string",
+ "description": "Device Interface Uuid\n"
},
- "sellerRegionDescription": {
- "type": "string"
+ "location": {
+ "$ref": "#/types/equinix:fabric/getServiceProfilesDatumVirtualDeviceLocation:getServiceProfilesDatumVirtualDeviceLocation",
+ "description": "Device Location\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Virtual Device Type\n"
},
"uuid": {
- "type": "string"
+ "type": "string",
+ "description": "Virtual Device Uuid\n"
}
},
"type": "object",
"required": [
- "crossConnectId",
- "locations",
- "sellerRegion",
- "sellerRegionDescription",
"type",
"uuid"
],
@@ -6237,19 +6810,23 @@
}
}
},
- "equinix:fabric/getServiceProfilesDatumPortLocation:getServiceProfilesDatumPortLocation": {
+ "equinix:fabric/getServiceProfilesDatumVirtualDeviceLocation:getServiceProfilesDatumVirtualDeviceLocation": {
"properties": {
"ibx": {
- "type": "string"
+ "type": "string",
+ "description": "IBX Code\n"
},
"metroCode": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro code\n"
},
"metroName": {
- "type": "string"
+ "type": "string",
+ "description": "Access point metro name\n"
},
"region": {
- "type": "string"
+ "type": "string",
+ "description": "Access point region\n"
}
},
"type": "object",
@@ -6265,26 +6842,6 @@
}
}
},
- "equinix:fabric/getServiceProfilesDatumProject:getServiceProfilesDatumProject": {
- "properties": {
- "href": {
- "type": "string"
- },
- "projectId": {
- "type": "string"
- }
- },
- "type": "object",
- "required": [
- "href",
- "projectId"
- ],
- "language": {
- "nodejs": {
- "requiredInputs": []
- }
- }
- },
"equinix:fabric/getServiceProfilesFilter:getServiceProfilesFilter": {
"properties": {
"operator": {
@@ -6755,6 +7312,15 @@
},
"type": "object"
},
+ "equinix:metal/GatewayTimeouts:GatewayTimeouts": {
+ "properties": {
+ "delete": {
+ "type": "string",
+ "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
+ }
+ },
+ "type": "object"
+ },
"equinix:metal/InterconnectionPort:InterconnectionPort": {
"properties": {
"id": {
@@ -6772,7 +7338,7 @@
},
"speed": {
"type": "integer",
- "description": "Connection speed - one of 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps.\n"
+ "description": "Connection speed - Values must be in the format '\u003cnumber\u003eMbps' or '\u003cnumber\u003eGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.\n"
},
"status": {
"type": "string",
@@ -6786,19 +7352,15 @@
}
},
"type": "object",
- "language": {
- "nodejs": {
- "requiredOutputs": [
- "id",
- "linkStatus",
- "name",
- "role",
- "speed",
- "status",
- "virtualCircuitIds"
- ]
- }
- }
+ "required": [
+ "id",
+ "linkStatus",
+ "name",
+ "role",
+ "speed",
+ "status",
+ "virtualCircuitIds"
+ ]
},
"equinix:metal/InterconnectionServiceToken:InterconnectionServiceToken": {
"properties": {
@@ -6823,18 +7385,14 @@
}
},
"type": "object",
- "language": {
- "nodejs": {
- "requiredOutputs": [
- "expiresAt",
- "id",
- "maxAllowedSpeed",
- "role",
- "state",
- "type"
- ]
- }
- }
+ "required": [
+ "expiresAt",
+ "id",
+ "maxAllowedSpeed",
+ "role",
+ "state",
+ "type"
+ ]
},
"equinix:metal/OrganizationAddress:OrganizationAddress": {
"properties": {
@@ -7413,62 +7971,77 @@
"equinix:metal/getDevicesDevice:getDevicesDevice": {
"properties": {
"accessPrivateIpv4": {
- "type": "string"
+ "type": "string",
+ "description": "The ipv4 private IP assigned to the device\n"
},
"accessPublicIpv4": {
- "type": "string"
+ "type": "string",
+ "description": "The ipv4 management IP assigned to the device\n"
},
"accessPublicIpv6": {
- "type": "string"
+ "type": "string",
+ "description": "The ipv6 management IP assigned to the device\n"
},
"alwaysPxe": {
"type": "boolean"
},
"billingCycle": {
- "type": "string"
+ "type": "string",
+ "description": "The billing cycle of the device (monthly or hourly)\n"
},
"description": {
- "type": "string"
+ "type": "string",
+ "description": "Description string for the device\n"
},
"deviceId": {
- "type": "string"
+ "type": "string",
+ "description": "Device ID\n"
},
"facility": {
"type": "string",
+ "description": "The facility where the device is deployed\n",
"deprecationMessage": "Use metro instead of facility. For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"
},
"hardwareReservationId": {
- "type": "string"
+ "type": "string",
+ "description": "The id of hardware reservation which this device occupies\n"
},
"hostname": {
- "type": "string"
+ "type": "string",
+ "description": "The device name\n"
},
"ipxeScriptUrl": {
"type": "string"
},
"metro": {
- "type": "string"
+ "type": "string",
+ "description": "The metro where the device is deployed\n"
},
"networkType": {
- "type": "string"
+ "type": "string",
+ "description": "L2 network type of the device, one oflayer3, hybrid, layer2-individual, layer2-bonded\n"
},
"networks": {
"type": "array",
"items": {
"$ref": "#/types/equinix:metal/getDevicesDeviceNetwork:getDevicesDeviceNetwork"
- }
+ },
+ "description": "The device's private and public IP (v4 and v6) network details. When a device is run without any special network configuration, it will have 3 networks: ublic IPv4 at equinix_metal_device.name.network.0, IPv6 at equinix_metal_device.name.network.1 and private IPv4 at equinix_metal_device.name.network.2. Elastic addresses then stack by type - an assigned public IPv4 will go after the management public IPv4 (to index 1), and will then shift the indices of the IPv6 and private IPv4. Assigned private IPv4 will go after the management private IPv4 (to the end of the network list).\n"
},
"operatingSystem": {
- "type": "string"
+ "type": "string",
+ "description": "The operating system running on the device\n"
},
"plan": {
- "type": "string"
+ "type": "string",
+ "description": "The hardware config of the device\n"
},
"ports": {
"type": "array",
"items": {
"$ref": "#/types/equinix:metal/getDevicesDevicePort:getDevicesDevicePort"
- }
+ },
+ "description": "Ports assigned to the device\n"
},
"projectId": {
"type": "string",
@@ -7476,19 +8049,23 @@
},
"rootPassword": {
"type": "string",
+ "description": "Root password to the server (if still available)\n",
"secret": true
},
"sosHostname": {
- "type": "string"
+ "type": "string",
+ "description": "The hostname to use for [Serial over SSH](https://deploy.equinix.com/developers/docs/metal/resilience-recovery/serial-over-ssh/) access to the device\n"
},
"sshKeyIds": {
"type": "array",
"items": {
"type": "string"
- }
+ },
+ "description": "List of IDs of SSH keys deployed in the device, can be both user or project SSH keys\n"
},
"state": {
- "type": "string"
+ "type": "string",
+ "description": "The state of the device\n"
},
"storage": {
"type": "string"
@@ -7497,7 +8074,8 @@
"type": "array",
"items": {
"type": "string"
- }
+ },
+ "description": "Tags attached to the device\n"
}
},
"type": "object",
@@ -7536,19 +8114,24 @@
"equinix:metal/getDevicesDeviceNetwork:getDevicesDeviceNetwork": {
"properties": {
"address": {
- "type": "string"
+ "type": "string",
+ "description": "IPv4 or IPv6 address string\n"
},
"cidr": {
- "type": "integer"
+ "type": "integer",
+ "description": "Bit length of the network mask of the address\n"
},
"family": {
- "type": "integer"
+ "type": "integer",
+ "description": "IP version - \"4\" or \"6\"\n"
},
"gateway": {
- "type": "string"
+ "type": "string",
+ "description": "Address of router\n"
},
"public": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Whether the address is routable from the Internet\n"
}
},
"type": "object",
@@ -7568,19 +8151,24 @@
"equinix:metal/getDevicesDevicePort:getDevicesDevicePort": {
"properties": {
"bonded": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Whether this port is part of a bond in bonded network setup\n"
},
"id": {
- "type": "string"
+ "type": "string",
+ "description": "The ID of the device\n"
},
"mac": {
- "type": "string"
+ "type": "string",
+ "description": "MAC address assigned to the port\n"
},
"name": {
- "type": "string"
+ "type": "string",
+ "description": "Name of the port (e.g. eth0, or bond0)\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Type of the port (e.g. NetworkPort or NetworkBondPort)\n"
}
},
"type": "object",
@@ -7632,7 +8220,8 @@
"description": "The attribute used to filter. Filter attributes are case-sensitive\n"
},
"direction": {
- "type": "string"
+ "type": "string",
+ "description": "Sort results in ascending or descending order. Strings are sorted in alphabetical order. One of: asc, desc\n"
}
},
"type": "object",
@@ -8451,10 +9040,12 @@
"description": "Inbound traffic protocol. One of `IP`, `TCP`, `UDP`.\n"
},
"sequenceNumber": {
- "type": "integer"
+ "type": "integer",
+ "description": "Inbound rule sequence number\n"
},
"sourceType": {
"type": "string",
+ "description": "Type of traffic source used in a given inbound rule\n",
"deprecationMessage": "Source Type will not be returned"
},
"srcPort": {
@@ -8907,6 +9498,10 @@
},
"description": "List of email addresses that will receive notifications about\nsecondary device.\n"
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the device is scoped to.If you\nleave it out, the device will be created under the default project id of your organization.\n"
+ },
"redundancyType": {
"type": "string",
"description": "Device redundancy type applicable for HA devices, either\nprimary or secondary.\n"
@@ -8929,6 +9524,7 @@
},
"sshKey": {
"$ref": "#/types/equinix:networkedge/DeviceSecondaryDeviceSshKey:DeviceSecondaryDeviceSshKey",
+ "description": "Definition of SSH key that will be provisioned on a device\n",
"willReplaceOnChanges": true
},
"status": {
@@ -8949,6 +9545,7 @@
},
"wanInterfaceId": {
"type": "string",
+ "description": "device interface id picked for WAN\n",
"willReplaceOnChanges": true
},
"zoneCode": {
@@ -8976,6 +9573,7 @@
"metroCode",
"name",
"notifications",
+ "projectId",
"redundancyType",
"redundantId",
"region",
@@ -9043,7 +9641,8 @@
"equinix:networkedge/DeviceSecondaryDeviceSshKey:DeviceSecondaryDeviceSshKey": {
"properties": {
"keyName": {
- "type": "string"
+ "type": "string",
+ "description": "Reference by name to previously provisioned public SSH key\n"
},
"username": {
"type": "string",
@@ -9059,7 +9658,8 @@
"equinix:networkedge/DeviceSshKey:DeviceSshKey": {
"properties": {
"keyName": {
- "type": "string"
+ "type": "string",
+ "description": "Reference by name to previously provisioned public SSH key\n"
},
"username": {
"type": "string",
@@ -9109,19 +9709,22 @@
"description": "The id of the cluster\n"
},
"clusterName": {
- "type": "string"
+ "type": "string",
+ "description": "The name of the cluster device\n"
},
"node0s": {
"type": "array",
"items": {
"$ref": "#/types/equinix:networkedge/getDeviceClusterDetailNode0:getDeviceClusterDetailNode0"
- }
+ },
+ "description": "An object that has node0 details\n"
},
"node1s": {
"type": "array",
"items": {
"$ref": "#/types/equinix:networkedge/getDeviceClusterDetailNode1:getDeviceClusterDetailNode1"
- }
+ },
+ "description": "An object that has node1 details\n"
},
"numOfNodes": {
"type": "integer",
@@ -9150,7 +9753,8 @@
"secret": true
},
"licenseToken": {
- "type": "string"
+ "type": "string",
+ "description": "License token. This is necessary for Palo Alto clusters\n"
},
"name": {
"type": "string",
@@ -9164,7 +9768,8 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:networkedge/getDeviceClusterDetailNode0VendorConfiguration:getDeviceClusterDetailNode0VendorConfiguration"
- }
+ },
+ "description": "An object that has fields relevant to the vendor of the cluster device\n"
}
},
"type": "object",
@@ -9185,23 +9790,29 @@
"properties": {
"activationKey": {
"type": "string",
+ "description": "Activation key. This is required for Velocloud clusters\n",
"secret": true
},
"adminPassword": {
"type": "string",
+ "description": "The administrative password of the device. You can use it to log in to the console. This field is not available for all device types\n",
"secret": true
},
"controller1": {
- "type": "string"
+ "type": "string",
+ "description": "System IP Address. Mandatory for the Fortinet SDWAN cluster device\n"
},
"controllerFqdn": {
- "type": "string"
+ "type": "string",
+ "description": "Controller fqdn. This is required for Velocloud clusters\n"
},
"hostname": {
- "type": "string"
+ "type": "string",
+ "description": "Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters\n"
},
"rootPassword": {
"type": "string",
+ "description": "The CLI password of the device. This field is relevant only for the Velocloud SDWAN cluster\n",
"secret": true
}
},
@@ -9228,7 +9839,8 @@
"secret": true
},
"licenseToken": {
- "type": "string"
+ "type": "string",
+ "description": "License token. This is necessary for Palo Alto clusters\n"
},
"name": {
"type": "string",
@@ -9242,7 +9854,8 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:networkedge/getDeviceClusterDetailNode1VendorConfiguration:getDeviceClusterDetailNode1VendorConfiguration"
- }
+ },
+ "description": "An object that has fields relevant to the vendor of the cluster device\n"
}
},
"type": "object",
@@ -9263,23 +9876,29 @@
"properties": {
"activationKey": {
"type": "string",
+ "description": "Activation key. This is required for Velocloud clusters\n",
"secret": true
},
"adminPassword": {
"type": "string",
+ "description": "The administrative password of the device. You can use it to log in to the console. This field is not available for all device types\n",
"secret": true
},
"controller1": {
- "type": "string"
+ "type": "string",
+ "description": "System IP Address. Mandatory for the Fortinet SDWAN cluster device\n"
},
"controllerFqdn": {
- "type": "string"
+ "type": "string",
+ "description": "Controller fqdn. This is required for Velocloud clusters\n"
},
"hostname": {
- "type": "string"
+ "type": "string",
+ "description": "Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters\n"
},
"rootPassword": {
"type": "string",
+ "description": "The CLI password of the device. This field is relevant only for the Velocloud SDWAN cluster\n",
"secret": true
}
},
@@ -9301,30 +9920,36 @@
"equinix:networkedge/getDeviceInterface:getDeviceInterface": {
"properties": {
"assignedType": {
- "type": "string"
+ "type": "string",
+ "description": "Interface management type (Equinix Managed or empty)\n"
},
"id": {
- "type": "integer"
+ "type": "integer",
+ "description": "Interface identifier\n"
},
"ipAddress": {
- "type": "string"
+ "type": "string",
+ "description": "interface IP address\n"
},
"macAddress": {
- "type": "string"
+ "type": "string",
+ "description": "Interface MAC addres\n"
},
"name": {
"type": "string",
"description": "Name of an existing Equinix Network Edge device\n"
},
"operationalStatus": {
- "type": "string"
+ "type": "string",
+ "description": "Interface operational status (up or down)\n"
},
"status": {
"type": "string",
"description": "Device provisioning status\n* INITIALIZING\n* PROVISIONING\n* PROVISIONED (**NOTE: By default data source will only return devices in this state. To include other states see `valid_state_list`**)\n* WAITING_FOR_PRIMARY\n* WAITING_FOR_SECONDARY\n* WAITING_FOR_REPLICA_CLUSTER_NODES\n* CLUSTER_SETUP_IN_PROGRESS\n* FAILED\n* DEPROVISIONING\n* DEPROVISIONED\n* RESOURCE_UPGRADE_IN_PROGRESS\n* RESOURCE_UPGRADE_FAILED\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Interface type\n"
}
},
"type": "object",
@@ -9347,24 +9972,28 @@
"equinix:networkedge/getDeviceSecondaryDevice:getDeviceSecondaryDevice": {
"properties": {
"accountNumber": {
- "type": "string"
+ "type": "string",
+ "description": "Device billing account number\n"
},
"aclTemplateId": {
"type": "string",
"description": "Unique identifier of applied ACL template\n"
},
"additionalBandwidth": {
- "type": "integer"
+ "type": "integer",
+ "description": "Additional Internet bandwidth, in Mbps, that will be allocated to the device\n"
},
"asn": {
"type": "integer",
"description": "Autonomous system number\n"
},
"cloudInitFileId": {
- "type": "string"
+ "type": "string",
+ "description": "Unique identifier of applied cloud init file\n"
},
"hostname": {
- "type": "string"
+ "type": "string",
+ "description": "Device hostname prefix\n"
},
"ibx": {
"type": "string",
@@ -9378,7 +10007,8 @@
"description": "List of device interfaces\n* `interface.#.id` - interface identifier\n* `interface.#.name` - interface name\n* `interface.#.status` - interface status (AVAILABLE, RESERVED, ASSIGNED)\n* `interface.#.operational_status` - interface operational status (up or down)\n* `interface.#.mac_address` - interface MAC address\n* `interface.#.ip_address` - interface IP address\n* `interface.#.assigned_type` - interface management type (Equinix Managed or empty)\n* `interface.#.type` - interface type\n"
},
"licenseFile": {
- "type": "string"
+ "type": "string",
+ "description": "Path to the license file that will be uploaded and applied on a device, applicable for some device types in BYOL licensing mode\n"
},
"licenseFileId": {
"type": "string",
@@ -9389,13 +10019,16 @@
"description": "Device license registration status\n* APPLYING_LICENSE\n* REGISTERED\n* APPLIED\n* WAITING_FOR_CLUSTER_SETUP\n* REGISTRATION_FAILED\n* NA\n"
},
"licenseToken": {
- "type": "string"
+ "type": "string",
+ "description": "License Token applicable for some device types in BYOL licensing mode\n"
},
"metroCode": {
- "type": "string"
+ "type": "string",
+ "description": "Device location metro code\n"
},
"mgmtAclTemplateUuid": {
- "type": "string"
+ "type": "string",
+ "description": "Unique identifier of applied MGMT ACL template\n"
},
"name": {
"type": "string",
@@ -9405,7 +10038,12 @@
"type": "array",
"items": {
"type": "string"
- }
+ },
+ "description": "List of email addresses that will receive device status notifications\n"
+ },
+ "projectId": {
+ "type": "string",
+ "description": "The unique identifier of Project Resource to which device is scoped to\n"
},
"redundancyType": {
"type": "string",
@@ -9431,7 +10069,8 @@
"type": "array",
"items": {
"$ref": "#/types/equinix:networkedge/getDeviceSecondaryDeviceSshKey:getDeviceSecondaryDeviceSshKey"
- }
+ },
+ "description": "Definition of SSH key that will be provisioned on a device\n"
},
"status": {
"type": "string",
@@ -9445,10 +10084,12 @@
"type": "object",
"additionalProperties": {
"type": "string"
- }
+ },
+ "description": "Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress)\n"
},
"wanInterfaceId": {
- "type": "string"
+ "type": "string",
+ "description": "device interface id picked for WAN\n"
},
"zoneCode": {
"type": "string",
@@ -9473,6 +10114,7 @@
"mgmtAclTemplateUuid",
"name",
"notifications",
+ "projectId",
"redundancyType",
"redundantId",
"region",
@@ -9494,30 +10136,36 @@
"equinix:networkedge/getDeviceSecondaryDeviceInterface:getDeviceSecondaryDeviceInterface": {
"properties": {
"assignedType": {
- "type": "string"
+ "type": "string",
+ "description": "Interface management type (Equinix Managed or empty)\n"
},
"id": {
- "type": "integer"
+ "type": "integer",
+ "description": "Interface identifier\n"
},
"ipAddress": {
- "type": "string"
+ "type": "string",
+ "description": "interface IP address\n"
},
"macAddress": {
- "type": "string"
+ "type": "string",
+ "description": "Interface MAC addres\n"
},
"name": {
"type": "string",
"description": "Name of an existing Equinix Network Edge device\n"
},
"operationalStatus": {
- "type": "string"
+ "type": "string",
+ "description": "Interface operational status (up or down)\n"
},
"status": {
"type": "string",
"description": "Device provisioning status\n* INITIALIZING\n* PROVISIONING\n* PROVISIONED (**NOTE: By default data source will only return devices in this state. To include other states see `valid_state_list`**)\n* WAITING_FOR_PRIMARY\n* WAITING_FOR_SECONDARY\n* WAITING_FOR_REPLICA_CLUSTER_NODES\n* CLUSTER_SETUP_IN_PROGRESS\n* FAILED\n* DEPROVISIONING\n* DEPROVISIONED\n* RESOURCE_UPGRADE_IN_PROGRESS\n* RESOURCE_UPGRADE_FAILED\n"
},
"type": {
- "type": "string"
+ "type": "string",
+ "description": "Interface type\n"
}
},
"type": "object",
@@ -9540,10 +10188,12 @@
"equinix:networkedge/getDeviceSecondaryDeviceSshKey:getDeviceSecondaryDeviceSshKey": {
"properties": {
"keyName": {
- "type": "string"
+ "type": "string",
+ "description": "Reference by name to previously provisioned public SSH key\n"
},
"username": {
- "type": "string"
+ "type": "string",
+ "description": "Username associated with given key\n"
}
},
"type": "object",
@@ -9560,10 +10210,12 @@
"equinix:networkedge/getDeviceSshKey:getDeviceSshKey": {
"properties": {
"keyName": {
- "type": "string"
+ "type": "string",
+ "description": "Reference by name to previously provisioned public SSH key\n"
},
"username": {
- "type": "string"
+ "type": "string",
+ "description": "Username associated with given key\n"
}
},
"type": "object",
@@ -9611,10 +10263,12 @@
"description": "The Equinix API base URL to point out desired environment. Defaults to https://api.equinix.com\n"
},
"maxRetries": {
- "type": "integer"
+ "type": "integer",
+ "description": "Maximum number of retries.\n"
},
"maxRetryWaitSeconds": {
- "type": "integer"
+ "type": "integer",
+ "description": "Maximum number of seconds to wait before retrying a request.\n"
},
"requestTimeout": {
"type": "integer",
@@ -9647,10 +10301,12 @@
"description": "The Equinix API base URL to point out desired environment. Defaults to https://api.equinix.com\n"
},
"maxRetries": {
- "type": "integer"
+ "type": "integer",
+ "description": "Maximum number of retries.\n"
},
"maxRetryWaitSeconds": {
- "type": "integer"
+ "type": "integer",
+ "description": "Maximum number of seconds to wait before retrying a request.\n"
},
"requestTimeout": {
"type": "integer",
@@ -9668,7 +10324,7 @@
},
"resources": {
"equinix:fabric/cloudRouter:CloudRouter": {
- "description": "{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst metro = config.get(\"metro\") || \"FR\";\nconst accountNum = config.requireNumber(\"accountNum\");\nconst router = new equinix.fabric.CloudRouter(\"router\", {\n name: \"My-Fabric-Cloud-Router\",\n type: \"XF_ROUTER\",\n location: {\n metroCode: metro,\n },\n \"package\": {\n code: \"BASIC\",\n },\n notifications: [{\n type: \"ALL\",\n emails: [\"example@equinix.com\"],\n }],\n account: {\n accountNumber: 272010,\n },\n});\nexport const routerId = router.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"FR\"\naccount_num = config.require_int(\"accountNum\")\nrouter = equinix.fabric.CloudRouter(\"router\",\n name=\"My-Fabric-Cloud-Router\",\n type=\"XF_ROUTER\",\n location=equinix.fabric.CloudRouterLocationArgs(\n metro_code=metro,\n ),\n package=equinix.fabric.CloudRouterPackageArgs(\n code=\"BASIC\",\n ),\n notifications=[equinix.fabric.CloudRouterNotificationArgs(\n type=\"ALL\",\n emails=[\"example@equinix.com\"],\n )],\n account=equinix.fabric.CloudRouterAccountArgs(\n account_number=272010,\n ))\npulumi.export(\"routerId\", router.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tmetro := \"FR\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\taccountNum := cfg.RequireInt(\"accountNum\")\n\t\trouter, err := fabric.NewCloudRouter(ctx, \"router\", \u0026fabric.CloudRouterArgs{\n\t\t\tName: pulumi.String(\"My-Fabric-Cloud-Router\"),\n\t\t\tType: pulumi.String(\"XF_ROUTER\"),\n\t\t\tLocation: \u0026fabric.CloudRouterLocationArgs{\n\t\t\t\tMetroCode: pulumi.String(metro),\n\t\t\t},\n\t\t\tPackage: \u0026fabric.CloudRouterPackageArgs{\n\t\t\t\tCode: pulumi.String(\"BASIC\"),\n\t\t\t},\n\t\t\tNotifications: fabric.CloudRouterNotificationArray{\n\t\t\t\t\u0026fabric.CloudRouterNotificationArgs{\n\t\t\t\t\tType: pulumi.String(\"ALL\"),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAccount: \u0026fabric.CloudRouterAccountArgs{\n\t\t\t\tAccountNumber: pulumi.Int(272010),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"routerId\", router.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var metro = config.Get(\"metro\") ?? \"FR\";\n var accountNum = config.RequireInt32(\"accountNum\");\n var router = new Equinix.Fabric.CloudRouter(\"router\", new()\n {\n Name = \"My-Fabric-Cloud-Router\",\n Type = \"XF_ROUTER\",\n Location = new Equinix.Fabric.Inputs.CloudRouterLocationArgs\n {\n MetroCode = metro,\n },\n Package = new Equinix.Fabric.Inputs.CloudRouterPackageArgs\n {\n Code = \"BASIC\",\n },\n Notifications = new[]\n {\n new Equinix.Fabric.Inputs.CloudRouterNotificationArgs\n {\n Type = \"ALL\",\n Emails = new[]\n {\n \"example@equinix.com\",\n },\n },\n },\n Account = new Equinix.Fabric.Inputs.CloudRouterAccountArgs\n {\n AccountNumber = 272010,\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"routerId\"] = router.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.CloudRouter;\nimport com.pulumi.equinix.fabric.CloudRouterArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterLocationArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterPackageArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var metro = config.get(\"metro\").orElse(\"FR\");\n final var accountNum = config.get(\"accountNum\");\n var router = new CloudRouter(\"router\", CloudRouterArgs.builder() \n .name(\"My-Fabric-Cloud-Router\")\n .type(\"XF_ROUTER\")\n .location(CloudRouterLocationArgs.builder()\n .metroCode(metro)\n .build())\n .package_(CloudRouterPackageArgs.builder()\n .code(\"BASIC\")\n .build())\n .notifications(CloudRouterNotificationArgs.builder()\n .type(\"ALL\")\n .emails(\"example@equinix.com\")\n .build())\n .account(CloudRouterAccountArgs.builder()\n .accountNumber(272010)\n .build())\n .build());\n\n ctx.export(\"routerId\", router.id());\n }\n}\n```\n```yaml\nconfig:\n metro:\n type: string\n default: FR\n accountNum:\n type: integer\nresources:\n router:\n type: equinix:fabric:CloudRouter\n properties:\n name: My-Fabric-Cloud-Router\n type: XF_ROUTER\n location:\n metroCode: ${metro}\n package:\n code: BASIC\n notifications:\n - type: ALL\n emails:\n - example@equinix.com\n account:\n accountNumber: 272010\noutputs:\n routerId: ${router.id}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "Fabric V4 API compatible resource allows creation and management of [Equinix Fabric Cloud Router](https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-intro.htm#HowItWorks).\n\nAdditional Fabric Cloud Router documentation:\n* Getting Started: \u003chttps://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-intro.htm#HowItWorks\u003e\n* API: \u003chttps://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#fabric-cloud-routers\u003e\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst metro = config.get(\"metro\") || \"FR\";\nconst accountNum = config.requireNumber(\"accountNum\");\nconst router = new equinix.fabric.CloudRouter(\"router\", {\n name: \"My-Fabric-Cloud-Router\",\n type: \"XF_ROUTER\",\n location: {\n metroCode: metro,\n },\n \"package\": {\n code: \"BASIC\",\n },\n notifications: [{\n type: \"ALL\",\n emails: [\"example@equinix.com\"],\n }],\n account: {\n accountNumber: 272010,\n },\n});\nexport const routerId = router.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"FR\"\naccount_num = config.require_int(\"accountNum\")\nrouter = equinix.fabric.CloudRouter(\"router\",\n name=\"My-Fabric-Cloud-Router\",\n type=\"XF_ROUTER\",\n location=equinix.fabric.CloudRouterLocationArgs(\n metro_code=metro,\n ),\n package=equinix.fabric.CloudRouterPackageArgs(\n code=\"BASIC\",\n ),\n notifications=[equinix.fabric.CloudRouterNotificationArgs(\n type=\"ALL\",\n emails=[\"example@equinix.com\"],\n )],\n account=equinix.fabric.CloudRouterAccountArgs(\n account_number=272010,\n ))\npulumi.export(\"routerId\", router.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tmetro := \"FR\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\taccountNum := cfg.RequireInt(\"accountNum\")\n\t\trouter, err := fabric.NewCloudRouter(ctx, \"router\", \u0026fabric.CloudRouterArgs{\n\t\t\tName: pulumi.String(\"My-Fabric-Cloud-Router\"),\n\t\t\tType: pulumi.String(\"XF_ROUTER\"),\n\t\t\tLocation: \u0026fabric.CloudRouterLocationArgs{\n\t\t\t\tMetroCode: pulumi.String(metro),\n\t\t\t},\n\t\t\tPackage: \u0026fabric.CloudRouterPackageArgs{\n\t\t\t\tCode: pulumi.String(\"BASIC\"),\n\t\t\t},\n\t\t\tNotifications: fabric.CloudRouterNotificationArray{\n\t\t\t\t\u0026fabric.CloudRouterNotificationArgs{\n\t\t\t\t\tType: pulumi.String(\"ALL\"),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAccount: \u0026fabric.CloudRouterAccountArgs{\n\t\t\t\tAccountNumber: pulumi.Int(272010),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"routerId\", router.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var metro = config.Get(\"metro\") ?? \"FR\";\n var accountNum = config.RequireInt32(\"accountNum\");\n var router = new Equinix.Fabric.CloudRouter(\"router\", new()\n {\n Name = \"My-Fabric-Cloud-Router\",\n Type = \"XF_ROUTER\",\n Location = new Equinix.Fabric.Inputs.CloudRouterLocationArgs\n {\n MetroCode = metro,\n },\n Package = new Equinix.Fabric.Inputs.CloudRouterPackageArgs\n {\n Code = \"BASIC\",\n },\n Notifications = new[]\n {\n new Equinix.Fabric.Inputs.CloudRouterNotificationArgs\n {\n Type = \"ALL\",\n Emails = new[]\n {\n \"example@equinix.com\",\n },\n },\n },\n Account = new Equinix.Fabric.Inputs.CloudRouterAccountArgs\n {\n AccountNumber = 272010,\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"routerId\"] = router.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.CloudRouter;\nimport com.pulumi.equinix.fabric.CloudRouterArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterLocationArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterPackageArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.CloudRouterAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var metro = config.get(\"metro\").orElse(\"FR\");\n final var accountNum = config.get(\"accountNum\");\n var router = new CloudRouter(\"router\", CloudRouterArgs.builder() \n .name(\"My-Fabric-Cloud-Router\")\n .type(\"XF_ROUTER\")\n .location(CloudRouterLocationArgs.builder()\n .metroCode(metro)\n .build())\n .package_(CloudRouterPackageArgs.builder()\n .code(\"BASIC\")\n .build())\n .notifications(CloudRouterNotificationArgs.builder()\n .type(\"ALL\")\n .emails(\"example@equinix.com\")\n .build())\n .account(CloudRouterAccountArgs.builder()\n .accountNumber(272010)\n .build())\n .build());\n\n ctx.export(\"routerId\", router.id());\n }\n}\n```\n```yaml\nconfig:\n metro:\n type: string\n default: FR\n accountNum:\n type: integer\nresources:\n router:\n type: equinix:fabric:CloudRouter\n properties:\n name: My-Fabric-Cloud-Router\n type: XF_ROUTER\n location:\n metroCode: ${metro}\n package:\n code: BASIC\n notifications:\n - type: ALL\n emails:\n - example@equinix.com\n account:\n accountNumber: 272010\noutputs:\n routerId: ${router.id}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"account": {
"$ref": "#/types/equinix:fabric/CloudRouterAccount:CloudRouterAccount",
@@ -9676,11 +10332,11 @@
},
"bgpIpv4RoutesCount": {
"type": "integer",
- "description": "Access point used and maximum number of IPv4 BGP routes\n"
+ "description": "Number of IPv4 BGP routes in use (including non-distinct prefixes)\n"
},
"bgpIpv6RoutesCount": {
"type": "integer",
- "description": "Access point used and maximum number of IPv6 BGP routes\n"
+ "description": "Number of IPv6 BGP routes in use (including non-distinct prefixes)\n"
},
"changeLogs": {
"type": "array",
@@ -9691,12 +10347,20 @@
},
"connectionsCount": {
"type": "integer",
- "description": "Number of connections associated with this Access point\n"
+ "description": "Number of connections associated with this Fabric Cloud Router instance\n"
},
"description": {
"type": "string",
"description": "Customer-provided Fabric Cloud Router description\n"
},
+ "distinctIpv4PrefixesCount": {
+ "type": "integer",
+ "description": "Number of distinct IPv4 routes\n"
+ },
+ "distinctIpv6PrefixesCount": {
+ "type": "integer",
+ "description": "Number of distinct IPv6 routes\n"
+ },
"equinixAsn": {
"type": "integer",
"description": "Equinix ASN\n"
@@ -9726,11 +10390,11 @@
},
"package": {
"$ref": "#/types/equinix:fabric/CloudRouterPackage:CloudRouterPackage",
- "description": "Fabric Cloud Router package\n"
+ "description": "Fabric Cloud Router Package Type\n"
},
"project": {
"$ref": "#/types/equinix:fabric/CloudRouterProject:CloudRouterProject",
- "description": "Fabric Cloud Router project\n"
+ "description": "Customer resource hierarchy project information.Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects\n"
},
"state": {
"type": "string",
@@ -9739,21 +10403,31 @@
"type": {
"type": "string",
"description": "Notification Type - ALL,CONNECTION*APPROVAL,SALES*REP_NOTIFICATIONS, NOTIFICATIONS\n"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned Fabric Cloud Router identifier\n"
}
},
"required": [
+ "account",
"bgpIpv4RoutesCount",
"bgpIpv6RoutesCount",
"changeLogs",
"connectionsCount",
+ "distinctIpv4PrefixesCount",
+ "distinctIpv6PrefixesCount",
"equinixAsn",
"href",
"location",
"name",
"notifications",
+ "order",
"package",
+ "project",
"state",
- "type"
+ "type",
+ "uuid"
],
"inputProperties": {
"account": {
@@ -9764,6 +10438,10 @@
"type": "string",
"description": "Customer-provided Fabric Cloud Router description\n"
},
+ "href": {
+ "type": "string",
+ "description": "Unique Resource URL\n"
+ },
"location": {
"$ref": "#/types/equinix:fabric/CloudRouterLocation:CloudRouterLocation",
"description": "Fabric Cloud Router location\n"
@@ -9785,21 +10463,28 @@
},
"package": {
"$ref": "#/types/equinix:fabric/CloudRouterPackage:CloudRouterPackage",
- "description": "Fabric Cloud Router package\n"
+ "description": "Fabric Cloud Router Package Type\n"
},
"project": {
"$ref": "#/types/equinix:fabric/CloudRouterProject:CloudRouterProject",
- "description": "Fabric Cloud Router project\n"
+ "description": "Customer resource hierarchy project information.Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects\n"
},
"type": {
"type": "string",
"description": "Notification Type - ALL,CONNECTION*APPROVAL,SALES*REP_NOTIFICATIONS, NOTIFICATIONS\n"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned Fabric Cloud Router identifier\n"
}
},
"requiredInputs": [
+ "account",
"location",
"notifications",
+ "order",
"package",
+ "project",
"type"
],
"stateInputs": {
@@ -9811,11 +10496,11 @@
},
"bgpIpv4RoutesCount": {
"type": "integer",
- "description": "Access point used and maximum number of IPv4 BGP routes\n"
+ "description": "Number of IPv4 BGP routes in use (including non-distinct prefixes)\n"
},
"bgpIpv6RoutesCount": {
"type": "integer",
- "description": "Access point used and maximum number of IPv6 BGP routes\n"
+ "description": "Number of IPv6 BGP routes in use (including non-distinct prefixes)\n"
},
"changeLogs": {
"type": "array",
@@ -9826,12 +10511,20 @@
},
"connectionsCount": {
"type": "integer",
- "description": "Number of connections associated with this Access point\n"
+ "description": "Number of connections associated with this Fabric Cloud Router instance\n"
},
"description": {
"type": "string",
"description": "Customer-provided Fabric Cloud Router description\n"
},
+ "distinctIpv4PrefixesCount": {
+ "type": "integer",
+ "description": "Number of distinct IPv4 routes\n"
+ },
+ "distinctIpv6PrefixesCount": {
+ "type": "integer",
+ "description": "Number of distinct IPv6 routes\n"
+ },
"equinixAsn": {
"type": "integer",
"description": "Equinix ASN\n"
@@ -9861,11 +10554,11 @@
},
"package": {
"$ref": "#/types/equinix:fabric/CloudRouterPackage:CloudRouterPackage",
- "description": "Fabric Cloud Router package\n"
+ "description": "Fabric Cloud Router Package Type\n"
},
"project": {
"$ref": "#/types/equinix:fabric/CloudRouterProject:CloudRouterProject",
- "description": "Fabric Cloud Router project\n"
+ "description": "Customer resource hierarchy project information.Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects\n"
},
"state": {
"type": "string",
@@ -9874,13 +10567,17 @@
"type": {
"type": "string",
"description": "Notification Type - ALL,CONNECTION*APPROVAL,SALES*REP_NOTIFICATIONS, NOTIFICATIONS\n"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned Fabric Cloud Router identifier\n"
}
},
"type": "object"
}
},
"equinix:fabric/connection:Connection": {
- "description": "{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst metro = config.get(\"metro\") || \"FR\";\nconst speedInMbps = config.getNumber(\"speedInMbps\") || 50;\nconst fabricPortName = config.require(\"fabricPortName\");\nconst awsRegion = config.get(\"awsRegion\") || \"eu-central-1\";\nconst awsAccountId = config.require(\"awsAccountId\");\nconst serviceProfileId = equinix.fabric.getServiceProfiles({\n filter: {\n property: \"/name\",\n operator: \"=\",\n values: [\"AWS Direct Connect\"],\n },\n}).then(invoke =\u003e invoke.data?.[0]?.uuid!);\nconst portId = equinix.fabric.getPorts({\n filter: {\n name: fabricPortName,\n },\n}).then(invoke =\u003e invoke.data?.[0]?.uuid!);\nconst colo2Aws = new equinix.fabric.Connection(\"colo2Aws\", {\n name: \"Pulumi-colo2Aws\",\n type: \"EVPL_VC\",\n notifications: [{\n type: \"ALL\",\n emails: [\"example@equinix.com\"],\n }],\n bandwidth: speedInMbps,\n redundancy: {\n priority: \"PRIMARY\",\n },\n aSide: {\n accessPoint: {\n type: \"COLO\",\n port: {\n uuid: portId,\n },\n linkProtocol: {\n type: \"DOT1Q\",\n vlanTag: 1234,\n },\n },\n },\n zSide: {\n accessPoint: {\n type: \"SP\",\n authenticationKey: awsAccountId,\n sellerRegion: awsRegion,\n profile: {\n type: \"L2_PROFILE\",\n uuid: serviceProfileId,\n },\n location: {\n metroCode: metro,\n },\n },\n },\n});\nexport const connectionId = colo2Aws.id;\nexport const connectionStatus = colo2Aws.operation.apply(operation =\u003e operation.equinixStatus);\nexport const connectionProviderStatus = colo2Aws.operation.apply(operation =\u003e operation.providerStatus);\nexport const awsDirectConnectId = colo2Aws.zSide.apply(zSide =\u003e zSide.accessPoint?.providerConnectionId);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"FR\"\nspeed_in_mbps = config.get_int(\"speedInMbps\")\nif speed_in_mbps is None:\n speed_in_mbps = 50\nfabric_port_name = config.require(\"fabricPortName\")\naws_region = config.get(\"awsRegion\")\nif aws_region is None:\n aws_region = \"eu-central-1\"\naws_account_id = config.require(\"awsAccountId\")\nservice_profile_id = equinix.fabric.get_service_profiles(filter=equinix.fabric.GetServiceProfilesFilterArgs(\n property=\"/name\",\n operator=\"=\",\n values=[\"AWS Direct Connect\"],\n)).data[0].uuid\nport_id = equinix.fabric.get_ports(filter=equinix.fabric.GetPortsFilterArgs(\n name=fabric_port_name,\n)).data[0].uuid\ncolo2_aws = equinix.fabric.Connection(\"colo2Aws\",\n name=\"Pulumi-colo2Aws\",\n type=\"EVPL_VC\",\n notifications=[equinix.fabric.ConnectionNotificationArgs(\n type=\"ALL\",\n emails=[\"example@equinix.com\"],\n )],\n bandwidth=speed_in_mbps,\n redundancy=equinix.fabric.ConnectionRedundancyArgs(\n priority=\"PRIMARY\",\n ),\n a_side=equinix.fabric.ConnectionASideArgs(\n access_point=equinix.fabric.ConnectionASideAccessPointArgs(\n type=\"COLO\",\n port=equinix.fabric.ConnectionASideAccessPointPortArgs(\n uuid=port_id,\n ),\n link_protocol=equinix.fabric.ConnectionASideAccessPointLinkProtocolArgs(\n type=\"DOT1Q\",\n vlan_tag=1234,\n ),\n ),\n ),\n z_side=equinix.fabric.ConnectionZSideArgs(\n access_point=equinix.fabric.ConnectionZSideAccessPointArgs(\n type=\"SP\",\n authentication_key=aws_account_id,\n seller_region=aws_region,\n profile=equinix.fabric.ConnectionZSideAccessPointProfileArgs(\n type=\"L2_PROFILE\",\n uuid=service_profile_id,\n ),\n location=equinix.fabric.ConnectionZSideAccessPointLocationArgs(\n metro_code=metro,\n ),\n ),\n ))\npulumi.export(\"connectionId\", colo2_aws.id)\npulumi.export(\"connectionStatus\", colo2_aws.operation.equinix_status)\npulumi.export(\"connectionProviderStatus\", colo2_aws.operation.provider_status)\npulumi.export(\"awsDirectConnectId\", colo2_aws.z_side.access_point.provider_connection_id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tmetro := \"FR\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\tspeedInMbps := 50\n\t\tif param := cfg.GetInt(\"speedInMbps\"); param != 0 {\n\t\t\tspeedInMbps = param\n\t\t}\n\t\tfabricPortName := cfg.Require(\"fabricPortName\")\n\t\tawsRegion := \"eu-central-1\"\n\t\tif param := cfg.Get(\"awsRegion\"); param != \"\" {\n\t\t\tawsRegion = param\n\t\t}\n\t\tawsAccountId := cfg.Require(\"awsAccountId\")\n\t\tserviceProfileId := fabric.GetServiceProfiles(ctx, \u0026fabric.GetServiceProfilesArgs{\n\t\t\tFilter: fabric.GetServiceProfilesFilter{\n\t\t\t\tProperty: pulumi.StringRef(\"/name\"),\n\t\t\t\tOperator: pulumi.StringRef(\"=\"),\n\t\t\t\tValues: []string{\n\t\t\t\t\t\"AWS Direct Connect\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil).Data[0].Uuid\n\t\tportId := fabric.GetPorts(ctx, \u0026fabric.GetPortsArgs{\n\t\t\tFilter: fabric.GetPortsFilter{\n\t\t\t\tName: pulumi.StringRef(fabricPortName),\n\t\t\t},\n\t\t}, nil).Data[0].Uuid\n\t\tcolo2Aws, err := fabric.NewConnection(ctx, \"colo2Aws\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"Pulumi-colo2Aws\"),\n\t\t\tType: pulumi.String(\"EVPL_VC\"),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(\"ALL\"),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(speedInMbps),\n\t\t\tRedundancy: \u0026fabric.ConnectionRedundancyArgs{\n\t\t\t\tPriority: pulumi.String(\"PRIMARY\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(\"COLO\"),\n\t\t\t\t\tPort: \u0026fabric.ConnectionASideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: *pulumi.String(portId),\n\t\t\t\t\t},\n\t\t\t\t\tLinkProtocol: \u0026fabric.ConnectionASideAccessPointLinkProtocolArgs{\n\t\t\t\t\t\tType: pulumi.String(\"DOT1Q\"),\n\t\t\t\t\t\tVlanTag: pulumi.Int(1234),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(\"SP\"),\n\t\t\t\t\tAuthenticationKey: pulumi.String(awsAccountId),\n\t\t\t\t\tSellerRegion: pulumi.String(awsRegion),\n\t\t\t\t\tProfile: \u0026fabric.ConnectionZSideAccessPointProfileArgs{\n\t\t\t\t\t\tType: pulumi.String(\"L2_PROFILE\"),\n\t\t\t\t\t\tUuid: *pulumi.String(serviceProfileId),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(metro),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectionId\", colo2Aws.ID())\n\t\tctx.Export(\"connectionStatus\", colo2Aws.Operation.ApplyT(func(operation fabric.ConnectionOperation) (*string, error) {\n\t\t\treturn \u0026operation.EquinixStatus, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"connectionProviderStatus\", colo2Aws.Operation.ApplyT(func(operation fabric.ConnectionOperation) (*string, error) {\n\t\t\treturn \u0026operation.ProviderStatus, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"awsDirectConnectId\", colo2Aws.ZSide.ApplyT(func(zSide fabric.ConnectionZSide) (*string, error) {\n\t\t\treturn \u0026zSide.AccessPoint.ProviderConnectionId, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var metro = config.Get(\"metro\") ?? \"FR\";\n var speedInMbps = config.GetNumber(\"speedInMbps\") ?? 50;\n var fabricPortName = config.Require(\"fabricPortName\");\n var awsRegion = config.Get(\"awsRegion\") ?? \"eu-central-1\";\n var awsAccountId = config.Require(\"awsAccountId\");\n var serviceProfileId = Equinix.Fabric.GetServiceProfiles.Invoke(new()\n {\n Filter = new Equinix.Fabric.Inputs.GetServiceProfilesFilterInputArgs\n {\n Property = \"/name\",\n Operator = \"=\",\n Values = new[]\n {\n \"AWS Direct Connect\",\n },\n },\n }).Apply(invoke =\u003e invoke.Data[0]?.Uuid);\n\n var portId = Equinix.Fabric.GetPorts.Invoke(new()\n {\n Filter = new Equinix.Fabric.Inputs.GetPortsFilterInputArgs\n {\n Name = fabricPortName,\n },\n }).Apply(invoke =\u003e invoke.Data[0]?.Uuid);\n\n var colo2Aws = new Equinix.Fabric.Connection(\"colo2Aws\", new()\n {\n Name = \"Pulumi-colo2Aws\",\n Type = \"EVPL_VC\",\n Notifications = new[]\n {\n new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n {\n Type = \"ALL\",\n Emails = new[]\n {\n \"example@equinix.com\",\n },\n },\n },\n Bandwidth = speedInMbps,\n Redundancy = new Equinix.Fabric.Inputs.ConnectionRedundancyArgs\n {\n Priority = \"PRIMARY\",\n },\n ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n {\n AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n {\n Type = \"COLO\",\n Port = new Equinix.Fabric.Inputs.ConnectionASideAccessPointPortArgs\n {\n Uuid = portId,\n },\n LinkProtocol = new Equinix.Fabric.Inputs.ConnectionASideAccessPointLinkProtocolArgs\n {\n Type = \"DOT1Q\",\n VlanTag = 1234,\n },\n },\n },\n ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n {\n AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n {\n Type = \"SP\",\n AuthenticationKey = awsAccountId,\n SellerRegion = awsRegion,\n Profile = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointProfileArgs\n {\n Type = \"L2_PROFILE\",\n Uuid = serviceProfileId,\n },\n Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n {\n MetroCode = metro,\n },\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"connectionId\"] = colo2Aws.Id,\n [\"connectionStatus\"] = colo2Aws.Operation.Apply(operation =\u003e operation.EquinixStatus),\n [\"connectionProviderStatus\"] = colo2Aws.Operation.Apply(operation =\u003e operation.ProviderStatus),\n [\"awsDirectConnectId\"] = colo2Aws.ZSide.Apply(zSide =\u003e zSide.AccessPoint?.ProviderConnectionId),\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.fabric.Connection;\nimport com.equinix.pulumi.fabric.ConnectionArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionNotificationArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionRedundancyArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionASideArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionASideAccessPointPortArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionASideAccessPointLinkProtocolArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionZSideArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionZSideAccessPointProfileArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport com.equinix.pulumi.fabric.inputs.GetServiceProfilesArgs;\nimport com.equinix.pulumi.fabric.inputs.GetServiceProfilesFilterArgs;\nimport com.equinix.pulumi.fabric.inputs.GetPortsArgs;\nimport com.equinix.pulumi.fabric.inputs.GetPortsFilterArgs;\nimport com.equinix.pulumi.fabric.FabricFunctions;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var metro = config.get(\"metro\").orElse(\"FR\");\n final var speedInMbps = Integer.parseInt(config.get(\"speedInMbps\").orElse(\"50\"));\n final var fabricPortName = config.get(\"fabricPortName\").get().toString();\n final var awsRegion = config.get(\"awsRegion\").orElse(\"eu-central-1\");\n final var awsAccountId = config.get(\"awsAccountId\").get().toString();\n System.out.println(System.getProperty(\"java.classpath\"));\n final var serviceProfileId = FabricFunctions.getServiceProfiles(GetServiceProfilesArgs.builder()\n .filter(GetServiceProfilesFilterArgs.builder()\n .property(\"/name\")\n .operator(\"=\")\n .values(\"AWS Direct Connect\")\n .build())\n .build()).applyValue(data -\u003e data.data().get(0).uuid().get());\n\n final var portId = FabricFunctions.getPorts(GetPortsArgs.builder()\n .filter(GetPortsFilterArgs.builder()\n .name(fabricPortName)\n .build())\n .build()).applyValue(data -\u003e data.data().get(0).uuid().get());\n\n var colo2Aws = new Connection(\"colo2Aws\", ConnectionArgs.builder() \n .name(\"Pulumi-colo2Aws\")\n .type(\"EVPL_VC\")\n .notifications(ConnectionNotificationArgs.builder()\n .type(\"ALL\")\n .emails(\"example@equinix.com\")\n .build())\n .bandwidth(speedInMbps)\n .redundancy(ConnectionRedundancyArgs.builder()\n .priority(\"PRIMARY\")\n .build())\n .aSide(ConnectionASideArgs.builder()\n .accessPoint(ConnectionASideAccessPointArgs.builder()\n .type(\"COLO\")\n .port(ConnectionASideAccessPointPortArgs.builder()\n .uuid(portId)\n .build())\n .linkProtocol(ConnectionASideAccessPointLinkProtocolArgs.builder()\n .type(\"DOT1Q\")\n .vlanTag(1234)\n .build())\n .build())\n .build())\n .zSide(ConnectionZSideArgs.builder()\n .accessPoint(ConnectionZSideAccessPointArgs.builder()\n .type(\"SP\")\n .authenticationKey(awsAccountId)\n .sellerRegion(awsRegion)\n .profile(ConnectionZSideAccessPointProfileArgs.builder()\n .type(\"L2_PROFILE\")\n .uuid(serviceProfileId)\n .build())\n .location(ConnectionZSideAccessPointLocationArgs.builder()\n .metroCode(metro)\n .build())\n .build())\n .build())\n .build());\n\n ctx.export(\"connectionId\", colo2Aws.id());\n ctx.export(\"connectionStatus\", colo2Aws.operation().applyValue(operation -\u003e operation.equinixStatus()));\n ctx.export(\"connectionProviderStatus\", colo2Aws.operation().applyValue(operation -\u003e operation.providerStatus()));\n ctx.export(\"awsDirectConnectId\", colo2Aws.zSide().applyValue(zSide -\u003e zSide.accessPoint().get().providerConnectionId()));\n }\n}\n```\n```yaml\nconfig:\n metro:\n type: string\n default: FR\n speedInMbps:\n type: integer\n default: 50\n fabricPortName:\n type: string\n awsRegion:\n type: string\n default: eu-central-1\n awsAccountId:\n type: string\nvariables:\n serviceProfileId:\n fn::invoke:\n function: equinix:fabric:getServiceProfiles\n arguments:\n filter:\n property: /name\n operator: \"=\"\n values:\n - AWS Direct Connect\n return: data[0].uuid\n portId:\n fn::invoke:\n function: equinix:fabric:getPorts\n arguments:\n filter:\n name: ${fabricPortName}\n return: data[0].uuid\nresources:\n colo2Aws:\n type: equinix:fabric:Connection\n properties:\n name: Pulumi-colo2Aws\n type: EVPL_VC\n notifications:\n - type: ALL\n emails:\n - example@equinix.com\n bandwidth: ${speedInMbps}\n redundancy:\n priority: PRIMARY\n aSide:\n accessPoint:\n type: COLO\n port:\n uuid: ${portId}\n linkProtocol:\n type: DOT1Q\n vlanTag: 1234\n zSide:\n accessPoint:\n type: SP\n authenticationKey: ${awsAccountId}\n sellerRegion: ${awsRegion}\n profile:\n type: L2_PROFILE\n uuid: ${serviceProfileId}\n location:\n metroCode: ${metro}\noutputs:\n connectionId: ${colo2Aws.id}\n connectionStatus: ${colo2Aws.operation.equinixStatus}\n connectionProviderStatus: ${colo2Aws.operation.providerStatus}\n awsDirectConnectId: ${colo2Aws.zSide.accessPoint.providerConnectionId}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "Fabric V4 API compatible resource allows creation and management of Equinix Fabric connection\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst metro = config.get(\"metro\") || \"FR\";\nconst speedInMbps = config.getNumber(\"speedInMbps\") || 50;\nconst fabricPortName = config.require(\"fabricPortName\");\nconst awsRegion = config.get(\"awsRegion\") || \"eu-central-1\";\nconst awsAccountId = config.require(\"awsAccountId\");\nconst serviceProfileId = equinix.fabric.getServiceProfiles({\n filter: {\n property: \"/name\",\n operator: \"=\",\n values: [\"AWS Direct Connect\"],\n },\n}).then(invoke =\u003e invoke.data?.[0]?.uuid!);\nconst portId = equinix.fabric.getPorts({\n filter: {\n name: fabricPortName,\n },\n}).then(invoke =\u003e invoke.data?.[0]?.uuid!);\nconst colo2Aws = new equinix.fabric.Connection(\"colo2Aws\", {\n name: \"Pulumi-colo2Aws\",\n type: \"EVPL_VC\",\n notifications: [{\n type: \"ALL\",\n emails: [\"example@equinix.com\"],\n }],\n bandwidth: speedInMbps,\n redundancy: {\n priority: \"PRIMARY\",\n },\n aSide: {\n accessPoint: {\n type: \"COLO\",\n port: {\n uuid: portId,\n },\n linkProtocol: {\n type: \"DOT1Q\",\n vlanTag: 1234,\n },\n },\n },\n zSide: {\n accessPoint: {\n type: \"SP\",\n authenticationKey: awsAccountId,\n sellerRegion: awsRegion,\n profile: {\n type: \"L2_PROFILE\",\n uuid: serviceProfileId,\n },\n location: {\n metroCode: metro,\n },\n },\n },\n});\nexport const connectionId = colo2Aws.id;\nexport const connectionStatus = colo2Aws.operation.apply(operation =\u003e operation.equinixStatus);\nexport const connectionProviderStatus = colo2Aws.operation.apply(operation =\u003e operation.providerStatus);\nexport const awsDirectConnectId = colo2Aws.zSide.apply(zSide =\u003e zSide.accessPoint?.providerConnectionId);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"FR\"\nspeed_in_mbps = config.get_int(\"speedInMbps\")\nif speed_in_mbps is None:\n speed_in_mbps = 50\nfabric_port_name = config.require(\"fabricPortName\")\naws_region = config.get(\"awsRegion\")\nif aws_region is None:\n aws_region = \"eu-central-1\"\naws_account_id = config.require(\"awsAccountId\")\nservice_profile_id = equinix.fabric.get_service_profiles(filter=equinix.fabric.GetServiceProfilesFilterArgs(\n property=\"/name\",\n operator=\"=\",\n values=[\"AWS Direct Connect\"],\n)).data[0].uuid\nport_id = equinix.fabric.get_ports(filter=equinix.fabric.GetPortsFilterArgs(\n name=fabric_port_name,\n)).data[0].uuid\ncolo2_aws = equinix.fabric.Connection(\"colo2Aws\",\n name=\"Pulumi-colo2Aws\",\n type=\"EVPL_VC\",\n notifications=[equinix.fabric.ConnectionNotificationArgs(\n type=\"ALL\",\n emails=[\"example@equinix.com\"],\n )],\n bandwidth=speed_in_mbps,\n redundancy=equinix.fabric.ConnectionRedundancyArgs(\n priority=\"PRIMARY\",\n ),\n a_side=equinix.fabric.ConnectionASideArgs(\n access_point=equinix.fabric.ConnectionASideAccessPointArgs(\n type=\"COLO\",\n port=equinix.fabric.ConnectionASideAccessPointPortArgs(\n uuid=port_id,\n ),\n link_protocol=equinix.fabric.ConnectionASideAccessPointLinkProtocolArgs(\n type=\"DOT1Q\",\n vlan_tag=1234,\n ),\n ),\n ),\n z_side=equinix.fabric.ConnectionZSideArgs(\n access_point=equinix.fabric.ConnectionZSideAccessPointArgs(\n type=\"SP\",\n authentication_key=aws_account_id,\n seller_region=aws_region,\n profile=equinix.fabric.ConnectionZSideAccessPointProfileArgs(\n type=\"L2_PROFILE\",\n uuid=service_profile_id,\n ),\n location=equinix.fabric.ConnectionZSideAccessPointLocationArgs(\n metro_code=metro,\n ),\n ),\n ))\npulumi.export(\"connectionId\", colo2_aws.id)\npulumi.export(\"connectionStatus\", colo2_aws.operation.equinix_status)\npulumi.export(\"connectionProviderStatus\", colo2_aws.operation.provider_status)\npulumi.export(\"awsDirectConnectId\", colo2_aws.z_side.access_point.provider_connection_id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tmetro := \"FR\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\tspeedInMbps := 50\n\t\tif param := cfg.GetInt(\"speedInMbps\"); param != 0 {\n\t\t\tspeedInMbps = param\n\t\t}\n\t\tfabricPortName := cfg.Require(\"fabricPortName\")\n\t\tawsRegion := \"eu-central-1\"\n\t\tif param := cfg.Get(\"awsRegion\"); param != \"\" {\n\t\t\tawsRegion = param\n\t\t}\n\t\tawsAccountId := cfg.Require(\"awsAccountId\")\n\t\tserviceProfileId := fabric.GetServiceProfiles(ctx, \u0026fabric.GetServiceProfilesArgs{\n\t\t\tFilter: fabric.GetServiceProfilesFilter{\n\t\t\t\tProperty: pulumi.StringRef(\"/name\"),\n\t\t\t\tOperator: pulumi.StringRef(\"=\"),\n\t\t\t\tValues: []string{\n\t\t\t\t\t\"AWS Direct Connect\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil).Data[0].Uuid\n\t\tportId := fabric.GetPorts(ctx, \u0026fabric.GetPortsArgs{\n\t\t\tFilter: fabric.GetPortsFilter{\n\t\t\t\tName: pulumi.StringRef(fabricPortName),\n\t\t\t},\n\t\t}, nil).Data[0].Uuid\n\t\tcolo2Aws, err := fabric.NewConnection(ctx, \"colo2Aws\", \u0026fabric.ConnectionArgs{\n\t\t\tName: pulumi.String(\"Pulumi-colo2Aws\"),\n\t\t\tType: pulumi.String(\"EVPL_VC\"),\n\t\t\tNotifications: fabric.ConnectionNotificationArray{\n\t\t\t\t\u0026fabric.ConnectionNotificationArgs{\n\t\t\t\t\tType: pulumi.String(\"ALL\"),\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBandwidth: pulumi.Int(speedInMbps),\n\t\t\tRedundancy: \u0026fabric.ConnectionRedundancyArgs{\n\t\t\t\tPriority: pulumi.String(\"PRIMARY\"),\n\t\t\t},\n\t\t\tASide: \u0026fabric.ConnectionASideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionASideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(\"COLO\"),\n\t\t\t\t\tPort: \u0026fabric.ConnectionASideAccessPointPortArgs{\n\t\t\t\t\t\tUuid: *pulumi.String(portId),\n\t\t\t\t\t},\n\t\t\t\t\tLinkProtocol: \u0026fabric.ConnectionASideAccessPointLinkProtocolArgs{\n\t\t\t\t\t\tType: pulumi.String(\"DOT1Q\"),\n\t\t\t\t\t\tVlanTag: pulumi.Int(1234),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZSide: \u0026fabric.ConnectionZSideArgs{\n\t\t\t\tAccessPoint: \u0026fabric.ConnectionZSideAccessPointArgs{\n\t\t\t\t\tType: pulumi.String(\"SP\"),\n\t\t\t\t\tAuthenticationKey: pulumi.String(awsAccountId),\n\t\t\t\t\tSellerRegion: pulumi.String(awsRegion),\n\t\t\t\t\tProfile: \u0026fabric.ConnectionZSideAccessPointProfileArgs{\n\t\t\t\t\t\tType: pulumi.String(\"L2_PROFILE\"),\n\t\t\t\t\t\tUuid: *pulumi.String(serviceProfileId),\n\t\t\t\t\t},\n\t\t\t\t\tLocation: \u0026fabric.ConnectionZSideAccessPointLocationArgs{\n\t\t\t\t\t\tMetroCode: pulumi.String(metro),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectionId\", colo2Aws.ID())\n\t\tctx.Export(\"connectionStatus\", colo2Aws.Operation.ApplyT(func(operation fabric.ConnectionOperation) (*string, error) {\n\t\t\treturn \u0026operation.EquinixStatus, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"connectionProviderStatus\", colo2Aws.Operation.ApplyT(func(operation fabric.ConnectionOperation) (*string, error) {\n\t\t\treturn \u0026operation.ProviderStatus, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"awsDirectConnectId\", colo2Aws.ZSide.ApplyT(func(zSide fabric.ConnectionZSide) (*string, error) {\n\t\t\treturn \u0026zSide.AccessPoint.ProviderConnectionId, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var metro = config.Get(\"metro\") ?? \"FR\";\n var speedInMbps = config.GetNumber(\"speedInMbps\") ?? 50;\n var fabricPortName = config.Require(\"fabricPortName\");\n var awsRegion = config.Get(\"awsRegion\") ?? \"eu-central-1\";\n var awsAccountId = config.Require(\"awsAccountId\");\n var serviceProfileId = Equinix.Fabric.GetServiceProfiles.Invoke(new()\n {\n Filter = new Equinix.Fabric.Inputs.GetServiceProfilesFilterInputArgs\n {\n Property = \"/name\",\n Operator = \"=\",\n Values = new[]\n {\n \"AWS Direct Connect\",\n },\n },\n }).Apply(invoke =\u003e invoke.Data[0]?.Uuid);\n\n var portId = Equinix.Fabric.GetPorts.Invoke(new()\n {\n Filter = new Equinix.Fabric.Inputs.GetPortsFilterInputArgs\n {\n Name = fabricPortName,\n },\n }).Apply(invoke =\u003e invoke.Data[0]?.Uuid);\n\n var colo2Aws = new Equinix.Fabric.Connection(\"colo2Aws\", new()\n {\n Name = \"Pulumi-colo2Aws\",\n Type = \"EVPL_VC\",\n Notifications = new[]\n {\n new Equinix.Fabric.Inputs.ConnectionNotificationArgs\n {\n Type = \"ALL\",\n Emails = new[]\n {\n \"example@equinix.com\",\n },\n },\n },\n Bandwidth = speedInMbps,\n Redundancy = new Equinix.Fabric.Inputs.ConnectionRedundancyArgs\n {\n Priority = \"PRIMARY\",\n },\n ASide = new Equinix.Fabric.Inputs.ConnectionASideArgs\n {\n AccessPoint = new Equinix.Fabric.Inputs.ConnectionASideAccessPointArgs\n {\n Type = \"COLO\",\n Port = new Equinix.Fabric.Inputs.ConnectionASideAccessPointPortArgs\n {\n Uuid = portId,\n },\n LinkProtocol = new Equinix.Fabric.Inputs.ConnectionASideAccessPointLinkProtocolArgs\n {\n Type = \"DOT1Q\",\n VlanTag = 1234,\n },\n },\n },\n ZSide = new Equinix.Fabric.Inputs.ConnectionZSideArgs\n {\n AccessPoint = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointArgs\n {\n Type = \"SP\",\n AuthenticationKey = awsAccountId,\n SellerRegion = awsRegion,\n Profile = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointProfileArgs\n {\n Type = \"L2_PROFILE\",\n Uuid = serviceProfileId,\n },\n Location = new Equinix.Fabric.Inputs.ConnectionZSideAccessPointLocationArgs\n {\n MetroCode = metro,\n },\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"connectionId\"] = colo2Aws.Id,\n [\"connectionStatus\"] = colo2Aws.Operation.Apply(operation =\u003e operation.EquinixStatus),\n [\"connectionProviderStatus\"] = colo2Aws.Operation.Apply(operation =\u003e operation.ProviderStatus),\n [\"awsDirectConnectId\"] = colo2Aws.ZSide.Apply(zSide =\u003e zSide.AccessPoint?.ProviderConnectionId),\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.fabric.Connection;\nimport com.equinix.pulumi.fabric.ConnectionArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionNotificationArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionRedundancyArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionASideArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionASideAccessPointArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionASideAccessPointPortArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionASideAccessPointLinkProtocolArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionZSideArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionZSideAccessPointArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionZSideAccessPointProfileArgs;\nimport com.equinix.pulumi.fabric.inputs.ConnectionZSideAccessPointLocationArgs;\nimport com.equinix.pulumi.fabric.inputs.GetServiceProfilesArgs;\nimport com.equinix.pulumi.fabric.inputs.GetServiceProfilesFilterArgs;\nimport com.equinix.pulumi.fabric.inputs.GetPortsArgs;\nimport com.equinix.pulumi.fabric.inputs.GetPortsFilterArgs;\nimport com.equinix.pulumi.fabric.FabricFunctions;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var metro = config.get(\"metro\").orElse(\"FR\");\n final var speedInMbps = Integer.parseInt(config.get(\"speedInMbps\").orElse(\"50\"));\n final var fabricPortName = config.get(\"fabricPortName\").get().toString();\n final var awsRegion = config.get(\"awsRegion\").orElse(\"eu-central-1\");\n final var awsAccountId = config.get(\"awsAccountId\").get().toString();\n System.out.println(System.getProperty(\"java.classpath\"));\n final var serviceProfileId = FabricFunctions.getServiceProfiles(GetServiceProfilesArgs.builder()\n .filter(GetServiceProfilesFilterArgs.builder()\n .property(\"/name\")\n .operator(\"=\")\n .values(\"AWS Direct Connect\")\n .build())\n .build()).applyValue(data -\u003e data.data().get(0).uuid().get());\n\n final var portId = FabricFunctions.getPorts(GetPortsArgs.builder()\n .filter(GetPortsFilterArgs.builder()\n .name(fabricPortName)\n .build())\n .build()).applyValue(data -\u003e data.data().get(0).uuid().get());\n\n var colo2Aws = new Connection(\"colo2Aws\", ConnectionArgs.builder() \n .name(\"Pulumi-colo2Aws\")\n .type(\"EVPL_VC\")\n .notifications(ConnectionNotificationArgs.builder()\n .type(\"ALL\")\n .emails(\"example@equinix.com\")\n .build())\n .bandwidth(speedInMbps)\n .redundancy(ConnectionRedundancyArgs.builder()\n .priority(\"PRIMARY\")\n .build())\n .aSide(ConnectionASideArgs.builder()\n .accessPoint(ConnectionASideAccessPointArgs.builder()\n .type(\"COLO\")\n .port(ConnectionASideAccessPointPortArgs.builder()\n .uuid(portId)\n .build())\n .linkProtocol(ConnectionASideAccessPointLinkProtocolArgs.builder()\n .type(\"DOT1Q\")\n .vlanTag(1234)\n .build())\n .build())\n .build())\n .zSide(ConnectionZSideArgs.builder()\n .accessPoint(ConnectionZSideAccessPointArgs.builder()\n .type(\"SP\")\n .authenticationKey(awsAccountId)\n .sellerRegion(awsRegion)\n .profile(ConnectionZSideAccessPointProfileArgs.builder()\n .type(\"L2_PROFILE\")\n .uuid(serviceProfileId)\n .build())\n .location(ConnectionZSideAccessPointLocationArgs.builder()\n .metroCode(metro)\n .build())\n .build())\n .build())\n .build());\n\n ctx.export(\"connectionId\", colo2Aws.id());\n ctx.export(\"connectionStatus\", colo2Aws.operation().applyValue(operation -\u003e operation.equinixStatus()));\n ctx.export(\"connectionProviderStatus\", colo2Aws.operation().applyValue(operation -\u003e operation.providerStatus()));\n ctx.export(\"awsDirectConnectId\", colo2Aws.zSide().applyValue(zSide -\u003e zSide.accessPoint().get().providerConnectionId()));\n }\n}\n```\n```yaml\nconfig:\n metro:\n type: string\n default: FR\n speedInMbps:\n type: integer\n default: 50\n fabricPortName:\n type: string\n awsRegion:\n type: string\n default: eu-central-1\n awsAccountId:\n type: string\nvariables:\n serviceProfileId:\n fn::invoke:\n function: equinix:fabric:getServiceProfiles\n arguments:\n filter:\n property: /name\n operator: \"=\"\n values:\n - AWS Direct Connect\n return: data[0].uuid\n portId:\n fn::invoke:\n function: equinix:fabric:getPorts\n arguments:\n filter:\n name: ${fabricPortName}\n return: data[0].uuid\nresources:\n colo2Aws:\n type: equinix:fabric:Connection\n properties:\n name: Pulumi-colo2Aws\n type: EVPL_VC\n notifications:\n - type: ALL\n emails:\n - example@equinix.com\n bandwidth: ${speedInMbps}\n redundancy:\n priority: PRIMARY\n aSide:\n accessPoint:\n type: COLO\n port:\n uuid: ${portId}\n linkProtocol:\n type: DOT1Q\n vlanTag: 1234\n zSide:\n accessPoint:\n type: SP\n authenticationKey: ${awsAccountId}\n sellerRegion: ${awsRegion}\n profile:\n type: L2_PROFILE\n uuid: ${serviceProfileId}\n location:\n metroCode: ${metro}\noutputs:\n connectionId: ${colo2Aws.id}\n connectionStatus: ${colo2Aws.operation.equinixStatus}\n connectionProviderStatus: ${colo2Aws.operation.providerStatus}\n awsDirectConnectId: ${colo2Aws.zSide.accessPoint.providerConnectionId}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"aSide": {
"$ref": "#/types/equinix:fabric/ConnectionASide:ConnectionASide",
@@ -9908,6 +10605,10 @@
"$ref": "#/types/equinix:fabric/ConnectionChangeLog:ConnectionChangeLog",
"description": "Captures connection lifecycle change information\n"
},
+ "description": {
+ "type": "string",
+ "description": "User-provided service description\n"
+ },
"direction": {
"type": "string",
"description": "Connection directionality from the requester point of view\n"
@@ -9937,7 +10638,7 @@
},
"order": {
"$ref": "#/types/equinix:fabric/ConnectionOrder:ConnectionOrder",
- "description": "Order related to this connection information\n"
+ "description": "Order details\n"
},
"project": {
"$ref": "#/types/equinix:fabric/ConnectionProject:ConnectionProject",
@@ -9949,12 +10650,16 @@
},
"state": {
"type": "string",
- "description": "Routing protocol instance state\n"
+ "description": "Connection overall state\n"
},
"type": {
"type": "string",
"description": "Interface type\n"
},
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned virtual gateway identifier\n"
+ },
"zSide": {
"$ref": "#/types/equinix:fabric/ConnectionZSide:ConnectionZSide",
"description": "Destination or Provider side connection configuration object of the multi-segment connection\n"
@@ -9971,8 +10676,11 @@
"name",
"notifications",
"operation",
+ "order",
+ "project",
"state",
"type",
+ "uuid",
"zSide"
],
"inputProperties": {
@@ -9994,6 +10702,10 @@
"type": "integer",
"description": "Connection bandwidth in Mbps\n"
},
+ "description": {
+ "type": "string",
+ "description": "User-provided service description\n"
+ },
"name": {
"type": "string",
"description": "Port name\n"
@@ -10007,7 +10719,7 @@
},
"order": {
"$ref": "#/types/equinix:fabric/ConnectionOrder:ConnectionOrder",
- "description": "Order related to this connection information\n"
+ "description": "Order details\n"
},
"project": {
"$ref": "#/types/equinix:fabric/ConnectionProject:ConnectionProject",
@@ -10039,6 +10751,7 @@
"aSide",
"bandwidth",
"notifications",
+ "order",
"type",
"zSide"
],
@@ -10071,6 +10784,10 @@
"$ref": "#/types/equinix:fabric/ConnectionChangeLog:ConnectionChangeLog",
"description": "Captures connection lifecycle change information\n"
},
+ "description": {
+ "type": "string",
+ "description": "User-provided service description\n"
+ },
"direction": {
"type": "string",
"description": "Connection directionality from the requester point of view\n"
@@ -10100,7 +10817,7 @@
},
"order": {
"$ref": "#/types/equinix:fabric/ConnectionOrder:ConnectionOrder",
- "description": "Order related to this connection information\n"
+ "description": "Order details\n"
},
"project": {
"$ref": "#/types/equinix:fabric/ConnectionProject:ConnectionProject",
@@ -10112,7 +10829,7 @@
},
"state": {
"type": "string",
- "description": "Routing protocol instance state\n"
+ "description": "Connection overall state\n"
},
"type": {
"type": "string",
@@ -10127,6 +10844,10 @@
],
"description": "Interface type\n"
},
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned virtual gateway identifier\n"
+ },
"zSide": {
"$ref": "#/types/equinix:fabric/ConnectionZSide:ConnectionZSide",
"description": "Destination or Provider side connection configuration object of the multi-segment connection\n"
@@ -10135,8 +10856,179 @@
"type": "object"
}
},
+ "equinix:fabric/network:Network": {
+ "description": "Fabric V4 API compatible resource allows creation and management of Equinix Fabric Network\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst newNetwork = new equinix.fabric.Network(\"newNetwork\", {\n notifications: [{\n emails: [\n \"example@equinix.com\",\n \"test1@equinix.com\",\n ],\n type: \"ALL\",\n }],\n project: {\n projectId: \"776847000642406\",\n },\n scope: \"GLOBAL\",\n type: \"EVPLAN\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nnew_network = equinix.fabric.Network(\"newNetwork\",\n notifications=[equinix.fabric.NetworkNotificationArgs(\n emails=[\n \"example@equinix.com\",\n \"test1@equinix.com\",\n ],\n type=\"ALL\",\n )],\n project=equinix.fabric.NetworkProjectArgs(\n project_id=\"776847000642406\",\n ),\n scope=\"GLOBAL\",\n type=\"EVPLAN\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var newNetwork = new Equinix.Fabric.Network(\"newNetwork\", new()\n {\n Notifications = new[]\n {\n new Equinix.Fabric.Inputs.NetworkNotificationArgs\n {\n Emails = new[]\n {\n \"example@equinix.com\",\n \"test1@equinix.com\",\n },\n Type = \"ALL\",\n },\n },\n Project = new Equinix.Fabric.Inputs.NetworkProjectArgs\n {\n ProjectId = \"776847000642406\",\n },\n Scope = \"GLOBAL\",\n Type = \"EVPLAN\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := fabric.NewNetwork(ctx, \"newNetwork\", \u0026fabric.NetworkArgs{\n\t\t\tNotifications: fabric.NetworkNotificationArray{\n\t\t\t\t\u0026fabric.NetworkNotificationArgs{\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t\t\t\tpulumi.String(\"test1@equinix.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tType: pulumi.String(\"ALL\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: \u0026fabric.NetworkProjectArgs{\n\t\t\t\tProjectId: pulumi.String(\"776847000642406\"),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"GLOBAL\"),\n\t\t\tType: pulumi.String(\"EVPLAN\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.Network;\nimport com.pulumi.equinix.fabric.NetworkArgs;\nimport com.pulumi.equinix.fabric.inputs.NetworkNotificationArgs;\nimport com.pulumi.equinix.fabric.inputs.NetworkProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var newNetwork = new Network(\"newNetwork\", NetworkArgs.builder() \n .notifications(NetworkNotificationArgs.builder()\n .emails( \n \"example@equinix.com\",\n \"test1@equinix.com\")\n .type(\"ALL\")\n .build())\n .project(NetworkProjectArgs.builder()\n .projectId(\"776847000642406\")\n .build())\n .scope(\"GLOBAL\")\n .type(\"EVPLAN\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n newNetwork:\n type: equinix:fabric:Network\n properties:\n notifications:\n - emails:\n - example@equinix.com\n - test1@equinix.com\n type: ALL\n project:\n projectId: '776847000642406'\n scope: GLOBAL\n type: EVPLAN\n```\n{{% /example %}}\n{{% /examples %}}",
+ "properties": {
+ "change": {
+ "$ref": "#/types/equinix:fabric/NetworkChange:NetworkChange",
+ "description": "Information on asset change operation\n"
+ },
+ "changeLog": {
+ "$ref": "#/types/equinix:fabric/NetworkChangeLog:NetworkChangeLog",
+ "description": "A permanent record of asset creation, modification, or deletion\n"
+ },
+ "connectionsCount": {
+ "type": "integer",
+ "description": "Number of connections associated with this network\n"
+ },
+ "href": {
+ "type": "string",
+ "description": "Fabric Network URI information\n"
+ },
+ "location": {
+ "$ref": "#/types/equinix:fabric/NetworkLocation:NetworkLocation",
+ "description": "Fabric Network location\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Fabric Network name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"
+ },
+ "notifications": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/equinix:fabric/NetworkNotification:NetworkNotification"
+ },
+ "description": "Preferences for notifications on Fabric Network configuration or status changes\n"
+ },
+ "operation": {
+ "$ref": "#/types/equinix:fabric/NetworkOperation:NetworkOperation",
+ "description": "Network operation information that is associated with this Fabric Network\n"
+ },
+ "project": {
+ "$ref": "#/types/equinix:fabric/NetworkProject:NetworkProject",
+ "description": "Fabric Network project\n"
+ },
+ "scope": {
+ "type": "string",
+ "description": "Fabric Network scope\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "Fabric Network overall state\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Supported Network types - EVPLAN, EPLAN, IPWAN\n"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned network identifier\n"
+ }
+ },
+ "required": [
+ "change",
+ "changeLog",
+ "connectionsCount",
+ "href",
+ "location",
+ "name",
+ "notifications",
+ "operation",
+ "project",
+ "scope",
+ "state",
+ "type",
+ "uuid"
+ ],
+ "inputProperties": {
+ "location": {
+ "$ref": "#/types/equinix:fabric/NetworkLocation:NetworkLocation",
+ "description": "Fabric Network location\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Fabric Network name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"
+ },
+ "notifications": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/equinix:fabric/NetworkNotification:NetworkNotification"
+ },
+ "description": "Preferences for notifications on Fabric Network configuration or status changes\n"
+ },
+ "project": {
+ "$ref": "#/types/equinix:fabric/NetworkProject:NetworkProject",
+ "description": "Fabric Network project\n"
+ },
+ "scope": {
+ "type": "string",
+ "description": "Fabric Network scope\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Supported Network types - EVPLAN, EPLAN, IPWAN\n"
+ }
+ },
+ "requiredInputs": [
+ "notifications",
+ "project",
+ "scope",
+ "type"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering Network resources.\n",
+ "properties": {
+ "change": {
+ "$ref": "#/types/equinix:fabric/NetworkChange:NetworkChange",
+ "description": "Information on asset change operation\n"
+ },
+ "changeLog": {
+ "$ref": "#/types/equinix:fabric/NetworkChangeLog:NetworkChangeLog",
+ "description": "A permanent record of asset creation, modification, or deletion\n"
+ },
+ "connectionsCount": {
+ "type": "integer",
+ "description": "Number of connections associated with this network\n"
+ },
+ "href": {
+ "type": "string",
+ "description": "Fabric Network URI information\n"
+ },
+ "location": {
+ "$ref": "#/types/equinix:fabric/NetworkLocation:NetworkLocation",
+ "description": "Fabric Network location\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Fabric Network name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"
+ },
+ "notifications": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/equinix:fabric/NetworkNotification:NetworkNotification"
+ },
+ "description": "Preferences for notifications on Fabric Network configuration or status changes\n"
+ },
+ "operation": {
+ "$ref": "#/types/equinix:fabric/NetworkOperation:NetworkOperation",
+ "description": "Network operation information that is associated with this Fabric Network\n"
+ },
+ "project": {
+ "$ref": "#/types/equinix:fabric/NetworkProject:NetworkProject",
+ "description": "Fabric Network project\n"
+ },
+ "scope": {
+ "type": "string",
+ "description": "Fabric Network scope\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "Fabric Network overall state\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Supported Network types - EVPLAN, EPLAN, IPWAN\n"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned network identifier\n"
+ }
+ },
+ "type": "object"
+ }
+ },
"equinix:fabric/routingProtocol:RoutingProtocol": {
- "description": "{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst connectionId = config.require(\"connectionId\");\nconst routingProtocol = new equinix.fabric.RoutingProtocol(\"RoutingProtocol\", {\n connectionUuid: connectionId,\n name: \"My-Direct-route-1\",\n type: \"DIRECT\",\n directIpv4: {\n equinixIfaceIp: \"192.168.100.1/30\",\n },\n});\nexport const routingProtocolId = routingProtocol.id;\nexport const routingProtocolState = routingProtocol.state;\nexport const routingProtocolEquinixAsn = routingProtocol.equinixAsn;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nconnection_id = config.require(\"connectionId\")\nrouting_protocol = equinix.fabric.RoutingProtocol(\"RoutingProtocol\",\n connection_uuid=connection_id,\n name=\"My-Direct-route-1\",\n type=\"DIRECT\",\n direct_ipv4=equinix.fabric.RoutingProtocolDirectIpv4Args(\n equinix_iface_ip=\"192.168.100.1/30\",\n ))\npulumi.export(\"routingProtocolId\", routing_protocol.id)\npulumi.export(\"routingProtocolState\", routing_protocol.state)\npulumi.export(\"routingProtocolEquinixAsn\", routing_protocol.equinix_asn)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tconnectionId := cfg.Require(\"connectionId\")\n\t\troutingProtocol, err := fabric.NewRoutingProtocol(ctx, \"RoutingProtocol\", \u0026fabric.RoutingProtocolArgs{\n\t\t\tConnectionUuid: pulumi.String(connectionId),\n\t\t\tName: pulumi.String(\"My-Direct-route-1\"),\n\t\t\tType: pulumi.String(\"DIRECT\"),\n\t\t\tDirectIpv4: \u0026fabric.RoutingProtocolDirectIpv4Args{\n\t\t\t\tEquinixIfaceIp: pulumi.String(\"192.168.100.1/30\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"routingProtocolId\", routingProtocol.ID())\n\t\tctx.Export(\"routingProtocolState\", routingProtocol.State)\n\t\tctx.Export(\"routingProtocolEquinixAsn\", routingProtocol.EquinixAsn)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var connectionId = config.Require(\"connectionId\");\n var routingProtocol = new Equinix.Fabric.RoutingProtocol(\"RoutingProtocol\", new()\n {\n ConnectionUuid = connectionId,\n Name = \"My-Direct-route-1\",\n Type = \"DIRECT\",\n DirectIpv4 = new Equinix.Fabric.Inputs.RoutingProtocolDirectIpv4Args\n {\n EquinixIfaceIp = \"192.168.100.1/30\",\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"routingProtocolId\"] = routingProtocol.Id,\n [\"routingProtocolState\"] = routingProtocol.State,\n [\"routingProtocolEquinixAsn\"] = routingProtocol.EquinixAsn,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.RoutingProtocol;\nimport com.pulumi.equinix.fabric.RoutingProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.RoutingProtocolDirectIpv4Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var connectionId = config.get(\"connectionId\");\n var routingProtocol = new RoutingProtocol(\"routingProtocol\", RoutingProtocolArgs.builder() \n .connectionUuid(connectionId)\n .name(\"My-Direct-route-1\")\n .type(\"DIRECT\")\n .directIpv4(RoutingProtocolDirectIpv4Args.builder()\n .equinixIfaceIp(\"192.168.100.1/30\")\n .build())\n .build());\n\n ctx.export(\"routingProtocolId\", routingProtocol.id());\n ctx.export(\"routingProtocolState\", routingProtocol.state());\n ctx.export(\"routingProtocolEquinixAsn\", routingProtocol.equinixAsn());\n }\n}\n```\n```yaml\nconfig:\n connectionId:\n type: string\nresources:\n RoutingProtocol:\n type: equinix:fabric:RoutingProtocol\n properties:\n connectionUuid: ${connectionId}\n name: My-Direct-route-1\n type: DIRECT\n directIpv4:\n equinixIfaceIp: 192.168.100.1/30\noutputs:\n routingProtocolId: ${RoutingProtocol.id}\n routingProtocolState: ${RoutingProtocol.state}\n routingProtocolEquinixAsn: ${RoutingProtocol.equinixAsn}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "Fabric V4 API compatible resource allows creation and management of Equinix Fabric connection\n\nAPI documentation can be found here - https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#routing-protocols\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst connectionId = config.require(\"connectionId\");\nconst routingProtocol = new equinix.fabric.RoutingProtocol(\"RoutingProtocol\", {\n connectionUuid: connectionId,\n name: \"My-Direct-route-1\",\n type: \"DIRECT\",\n directIpv4: {\n equinixIfaceIp: \"192.168.100.1/30\",\n },\n});\nexport const routingProtocolId = routingProtocol.id;\nexport const routingProtocolState = routingProtocol.state;\nexport const routingProtocolEquinixAsn = routingProtocol.equinixAsn;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nconnection_id = config.require(\"connectionId\")\nrouting_protocol = equinix.fabric.RoutingProtocol(\"RoutingProtocol\",\n connection_uuid=connection_id,\n name=\"My-Direct-route-1\",\n type=\"DIRECT\",\n direct_ipv4=equinix.fabric.RoutingProtocolDirectIpv4Args(\n equinix_iface_ip=\"192.168.100.1/30\",\n ))\npulumi.export(\"routingProtocolId\", routing_protocol.id)\npulumi.export(\"routingProtocolState\", routing_protocol.state)\npulumi.export(\"routingProtocolEquinixAsn\", routing_protocol.equinix_asn)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tconnectionId := cfg.Require(\"connectionId\")\n\t\troutingProtocol, err := fabric.NewRoutingProtocol(ctx, \"RoutingProtocol\", \u0026fabric.RoutingProtocolArgs{\n\t\t\tConnectionUuid: pulumi.String(connectionId),\n\t\t\tName: pulumi.String(\"My-Direct-route-1\"),\n\t\t\tType: pulumi.String(\"DIRECT\"),\n\t\t\tDirectIpv4: \u0026fabric.RoutingProtocolDirectIpv4Args{\n\t\t\t\tEquinixIfaceIp: pulumi.String(\"192.168.100.1/30\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"routingProtocolId\", routingProtocol.ID())\n\t\tctx.Export(\"routingProtocolState\", routingProtocol.State)\n\t\tctx.Export(\"routingProtocolEquinixAsn\", routingProtocol.EquinixAsn)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var connectionId = config.Require(\"connectionId\");\n var routingProtocol = new Equinix.Fabric.RoutingProtocol(\"RoutingProtocol\", new()\n {\n ConnectionUuid = connectionId,\n Name = \"My-Direct-route-1\",\n Type = \"DIRECT\",\n DirectIpv4 = new Equinix.Fabric.Inputs.RoutingProtocolDirectIpv4Args\n {\n EquinixIfaceIp = \"192.168.100.1/30\",\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"routingProtocolId\"] = routingProtocol.Id,\n [\"routingProtocolState\"] = routingProtocol.State,\n [\"routingProtocolEquinixAsn\"] = routingProtocol.EquinixAsn,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.RoutingProtocol;\nimport com.pulumi.equinix.fabric.RoutingProtocolArgs;\nimport com.pulumi.equinix.fabric.inputs.RoutingProtocolDirectIpv4Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var connectionId = config.get(\"connectionId\");\n var routingProtocol = new RoutingProtocol(\"routingProtocol\", RoutingProtocolArgs.builder() \n .connectionUuid(connectionId)\n .name(\"My-Direct-route-1\")\n .type(\"DIRECT\")\n .directIpv4(RoutingProtocolDirectIpv4Args.builder()\n .equinixIfaceIp(\"192.168.100.1/30\")\n .build())\n .build());\n\n ctx.export(\"routingProtocolId\", routingProtocol.id());\n ctx.export(\"routingProtocolState\", routingProtocol.state());\n ctx.export(\"routingProtocolEquinixAsn\", routingProtocol.equinixAsn());\n }\n}\n```\n```yaml\nconfig:\n connectionId:\n type: string\nresources:\n RoutingProtocol:\n type: equinix:fabric:RoutingProtocol\n properties:\n connectionUuid: ${connectionId}\n name: My-Direct-route-1\n type: DIRECT\n directIpv4:\n equinixIfaceIp: 192.168.100.1/30\noutputs:\n routingProtocolId: ${RoutingProtocol.id}\n routingProtocolState: ${RoutingProtocol.state}\n routingProtocolEquinixAsn: ${RoutingProtocol.equinixAsn}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"bfd": {
"$ref": "#/types/equinix:fabric/RoutingProtocolBfd:RoutingProtocolBfd",
@@ -10373,7 +11265,7 @@
}
},
"equinix:fabric/serviceProfile:ServiceProfile": {
- "description": "{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst profile = new equinix.fabric.ServiceProfile(\"profile\", {\n name: \"Example Cloud Provider\",\n description: \"50 to 500 Mbps Hosted Connection to Example Cloud\",\n type: \"L2_PROFILE\",\n accessPointTypeConfigs: [{\n type: \"COLO\",\n supportedBandwidths: [\n 50,\n 100,\n 200,\n 500,\n ],\n allowRemoteConnections: true,\n allowCustomBandwidth: false,\n allowBandwidthAutoApproval: false,\n linkProtocolConfig: {\n encapsulationStrategy: \"CTAGED\",\n reuseVlanSTag: false,\n encapsulation: \"DOT1Q\",\n },\n enableAutoGenerateServiceKey: \"false,\",\n connectionRedundancyRequired: \"false,\",\n apiConfig: {\n apiAvailable: true,\n integrationId: \"Example-Connect-01\",\n bandwidthFromApi: false,\n },\n connectionLabel: \"Virtual Circuit Name\",\n authenticationKey: {\n required: true,\n label: \"Example ACCOUNT ID\",\n },\n }],\n account: {\n organizationName: \"Example Cloud\",\n globalOrganizationName: \"Example Global\",\n },\n metros: undefined,\n visibility: \"PUBLIC\",\n marketingInfo: {\n promotion: true,\n },\n});\nexport const profileId = profile.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nprofile = equinix.fabric.ServiceProfile(\"profile\",\n name=\"Example Cloud Provider\",\n description=\"50 to 500 Mbps Hosted Connection to Example Cloud\",\n type=\"L2_PROFILE\",\n access_point_type_configs=[equinix.fabric.ServiceProfileAccessPointTypeConfigArgs(\n type=\"COLO\",\n supported_bandwidths=[\n 50,\n 100,\n 200,\n 500,\n ],\n allow_remote_connections=True,\n allow_custom_bandwidth=False,\n allow_bandwidth_auto_approval=False,\n link_protocol_config=equinix.fabric.ServiceProfileAccessPointTypeConfigLinkProtocolConfigArgs(\n encapsulation_strategy=\"CTAGED\",\n reuse_vlan_s_tag=False,\n encapsulation=\"DOT1Q\",\n ),\n enable_auto_generate_service_key=\"false,\",\n connection_redundancy_required=\"false,\",\n api_config=equinix.fabric.ServiceProfileAccessPointTypeConfigApiConfigArgs(\n api_available=True,\n integration_id=\"Example-Connect-01\",\n bandwidth_from_api=False,\n ),\n connection_label=\"Virtual Circuit Name\",\n authentication_key=equinix.fabric.ServiceProfileAccessPointTypeConfigAuthenticationKeyArgs(\n required=True,\n label=\"Example ACCOUNT ID\",\n ),\n )],\n account=equinix.fabric.ServiceProfileAccountArgs(\n organization_name=\"Example Cloud\",\n global_organization_name=\"Example Global\",\n ),\n metros=None,\n visibility=\"PUBLIC\",\n marketing_info=equinix.fabric.ServiceProfileMarketingInfoArgs(\n promotion=True,\n ))\npulumi.export(\"profileId\", profile.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprofile, err := fabric.NewServiceProfile(ctx, \"profile\", \u0026fabric.ServiceProfileArgs{\n\t\t\tName: pulumi.String(\"Example Cloud Provider\"),\n\t\t\tDescription: pulumi.String(\"50 to 500 Mbps Hosted Connection to Example Cloud\"),\n\t\t\tType: pulumi.String(\"L2_PROFILE\"),\n\t\t\tAccessPointTypeConfigs: fabric.ServiceProfileAccessPointTypeConfigArray{\n\t\t\t\t\u0026fabric.ServiceProfileAccessPointTypeConfigArgs{\n\t\t\t\t\tType: pulumi.String(\"COLO\"),\n\t\t\t\t\tSupportedBandwidths: pulumi.IntArray{\n\t\t\t\t\t\tpulumi.Int(50),\n\t\t\t\t\t\tpulumi.Int(100),\n\t\t\t\t\t\tpulumi.Int(200),\n\t\t\t\t\t\tpulumi.Int(500),\n\t\t\t\t\t},\n\t\t\t\t\tAllowRemoteConnections: pulumi.Bool(true),\n\t\t\t\t\tAllowCustomBandwidth: pulumi.Bool(false),\n\t\t\t\t\tAllowBandwidthAutoApproval: pulumi.Bool(false),\n\t\t\t\t\tLinkProtocolConfig: \u0026fabric.ServiceProfileAccessPointTypeConfigLinkProtocolConfigArgs{\n\t\t\t\t\t\tEncapsulationStrategy: pulumi.String(\"CTAGED\"),\n\t\t\t\t\t\tReuseVlanSTag: pulumi.Bool(false),\n\t\t\t\t\t\tEncapsulation: pulumi.String(\"DOT1Q\"),\n\t\t\t\t\t},\n\t\t\t\t\tEnableAutoGenerateServiceKey: pulumi.Bool(\"false,\"),\n\t\t\t\t\tConnectionRedundancyRequired: pulumi.Bool(\"false,\"),\n\t\t\t\t\tApiConfig: \u0026fabric.ServiceProfileAccessPointTypeConfigApiConfigArgs{\n\t\t\t\t\t\tApiAvailable: pulumi.Bool(true),\n\t\t\t\t\t\tIntegrationId: pulumi.String(\"Example-Connect-01\"),\n\t\t\t\t\t\tBandwidthFromApi: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tConnectionLabel: pulumi.String(\"Virtual Circuit Name\"),\n\t\t\t\t\tAuthenticationKey: \u0026fabric.ServiceProfileAccessPointTypeConfigAuthenticationKeyArgs{\n\t\t\t\t\t\tRequired: pulumi.Bool(true),\n\t\t\t\t\t\tLabel: pulumi.String(\"Example ACCOUNT ID\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAccount: \u0026fabric.ServiceProfileAccountArgs{\n\t\t\t\tOrganizationName: pulumi.String(\"Example Cloud\"),\n\t\t\t\tGlobalOrganizationName: pulumi.String(\"Example Global\"),\n\t\t\t},\n\t\t\tMetros: nil,\n\t\t\tVisibility: pulumi.String(\"PUBLIC\"),\n\t\t\tMarketingInfo: \u0026fabric.ServiceProfileMarketingInfoArgs{\n\t\t\t\tPromotion: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"profileId\", profile.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var profile = new Equinix.Fabric.ServiceProfile(\"profile\", new()\n {\n Name = \"Example Cloud Provider\",\n Description = \"50 to 500 Mbps Hosted Connection to Example Cloud\",\n Type = \"L2_PROFILE\",\n AccessPointTypeConfigs = new[]\n {\n new Equinix.Fabric.Inputs.ServiceProfileAccessPointTypeConfigArgs\n {\n Type = \"COLO\",\n SupportedBandwidths = new[]\n {\n 50,\n 100,\n 200,\n 500,\n },\n AllowRemoteConnections = true,\n AllowCustomBandwidth = false,\n AllowBandwidthAutoApproval = false,\n LinkProtocolConfig = new Equinix.Fabric.Inputs.ServiceProfileAccessPointTypeConfigLinkProtocolConfigArgs\n {\n EncapsulationStrategy = \"CTAGED\",\n ReuseVlanSTag = false,\n Encapsulation = \"DOT1Q\",\n },\n EnableAutoGenerateServiceKey = \"false,\",\n ConnectionRedundancyRequired = \"false,\",\n ApiConfig = new Equinix.Fabric.Inputs.ServiceProfileAccessPointTypeConfigApiConfigArgs\n {\n ApiAvailable = true,\n IntegrationId = \"Example-Connect-01\",\n BandwidthFromApi = false,\n },\n ConnectionLabel = \"Virtual Circuit Name\",\n AuthenticationKey = new Equinix.Fabric.Inputs.ServiceProfileAccessPointTypeConfigAuthenticationKeyArgs\n {\n Required = true,\n Label = \"Example ACCOUNT ID\",\n },\n },\n },\n Account = new Equinix.Fabric.Inputs.ServiceProfileAccountArgs\n {\n OrganizationName = \"Example Cloud\",\n GlobalOrganizationName = \"Example Global\",\n },\n Metros = null,\n Visibility = \"PUBLIC\",\n MarketingInfo = new Equinix.Fabric.Inputs.ServiceProfileMarketingInfoArgs\n {\n Promotion = true,\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"profileId\"] = profile.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.fabric.ServiceProfile;\nimport com.equinix.pulumi.fabric.ServiceProfileArgs;\nimport com.equinix.pulumi.fabric.inputs.ServiceProfileAccessPointTypeConfigArgs;\nimport com.equinix.pulumi.fabric.inputs.ServiceProfileAccessPointTypeConfigLinkProtocolConfigArgs;\nimport com.equinix.pulumi.fabric.inputs.ServiceProfileAccessPointTypeConfigApiConfigArgs;\nimport com.equinix.pulumi.fabric.inputs.ServiceProfileAccessPointTypeConfigAuthenticationKeyArgs;\nimport com.equinix.pulumi.fabric.inputs.ServiceProfileAccountArgs;\nimport com.equinix.pulumi.fabric.inputs.ServiceProfileMarketingInfoArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var profile = new ServiceProfile(\"profile\", ServiceProfileArgs.builder() \n .name(\"Example Cloud Provider\")\n .description(\"50 to 500 Mbps Hosted Connection to Example Cloud\")\n .type(\"L2_PROFILE\")\n .accessPointTypeConfigs(ServiceProfileAccessPointTypeConfigArgs.builder()\n .type(\"COLO\")\n .supportedBandwidths( \n 50,\n 100,\n 200,\n 500)\n .allowRemoteConnections(true)\n .allowCustomBandwidth(false)\n .allowBandwidthAutoApproval(false)\n .linkProtocolConfig(ServiceProfileAccessPointTypeConfigLinkProtocolConfigArgs.builder()\n .encapsulationStrategy(\"CTAGED\")\n .reuseVlanSTag(false)\n .encapsulation(\"DOT1Q\")\n .build())\n .enableAutoGenerateServiceKey(false)\n .connectionRedundancyRequired(false)\n .apiConfig(ServiceProfileAccessPointTypeConfigApiConfigArgs.builder()\n .apiAvailable(true)\n .integrationId(\"Example-Connect-01\")\n .bandwidthFromApi(false)\n .build())\n .connectionLabel(\"Virtual Circuit Name\")\n .authenticationKey(ServiceProfileAccessPointTypeConfigAuthenticationKeyArgs.builder()\n .required(true)\n .label(\"Example ACCOUNT ID\")\n .build())\n .build())\n .account(ServiceProfileAccountArgs.builder()\n .organizationName(\"Example Cloud\")\n .globalOrganizationName(\"Example Global\")\n .build())\n .visibility(\"PUBLIC\")\n .marketingInfo(ServiceProfileMarketingInfoArgs.builder()\n .promotion(true)\n .build())\n .build());\n\n ctx.export(\"profileId\", profile.id());\n }\n}\n```\n```yaml\nresources:\n profile:\n type: equinix:fabric:ServiceProfile\n properties:\n name: Example Cloud Provider\n description: 50 to 500 Mbps Hosted Connection to Example Cloud\n type: L2_PROFILE\n accessPointTypeConfigs:\n - type: COLO\n supportedBandwidths: [ 50, 100, 200, 500]\n allowRemoteConnections: true\n allowCustomBandwidth: false\n allowBandwidthAutoApproval: false\n linkProtocolConfig:\n encapsulationStrategy: CTAGED\n reuseVlanSTag: false\n encapsulation: DOT1Q\n enableAutoGenerateServiceKey: false,\n connectionRedundancyRequired: false,\n apiConfig:\n apiAvailable: true\n integrationId: Example-Connect-01\n bandwidthFromApi: false\n connectionLabel: Virtual Circuit Name\n authenticationKey:\n required: true\n label: Example ACCOUNT ID\n account:\n organizationName: Example Cloud\n globalOrganizationName: Example Global\n metros:\n visibility: PUBLIC\n marketingInfo:\n promotion: true\noutputs:\n profileId: ${profile.id}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "Fabric V4 API compatible resource allows creation and management of Equinix Fabric Service Profile\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst profile = new equinix.fabric.ServiceProfile(\"profile\", {\n name: \"Example Cloud Provider\",\n description: \"50 to 500 Mbps Hosted Connection to Example Cloud\",\n type: \"L2_PROFILE\",\n accessPointTypeConfigs: [{\n type: \"COLO\",\n supportedBandwidths: [\n 50,\n 100,\n 200,\n 500,\n ],\n allowRemoteConnections: true,\n allowCustomBandwidth: false,\n allowBandwidthAutoApproval: false,\n linkProtocolConfig: {\n encapsulationStrategy: \"CTAGED\",\n reuseVlanSTag: false,\n encapsulation: \"DOT1Q\",\n },\n enableAutoGenerateServiceKey: \"false,\",\n connectionRedundancyRequired: \"false,\",\n apiConfig: {\n apiAvailable: true,\n integrationId: \"Example-Connect-01\",\n bandwidthFromApi: false,\n },\n connectionLabel: \"Virtual Circuit Name\",\n authenticationKey: {\n required: true,\n label: \"Example ACCOUNT ID\",\n },\n }],\n account: {\n organizationName: \"Example Cloud\",\n globalOrganizationName: \"Example Global\",\n },\n metros: undefined,\n visibility: \"PUBLIC\",\n marketingInfo: {\n promotion: true,\n },\n});\nexport const profileId = profile.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nprofile = equinix.fabric.ServiceProfile(\"profile\",\n name=\"Example Cloud Provider\",\n description=\"50 to 500 Mbps Hosted Connection to Example Cloud\",\n type=\"L2_PROFILE\",\n access_point_type_configs=[equinix.fabric.ServiceProfileAccessPointTypeConfigArgs(\n type=\"COLO\",\n supported_bandwidths=[\n 50,\n 100,\n 200,\n 500,\n ],\n allow_remote_connections=True,\n allow_custom_bandwidth=False,\n allow_bandwidth_auto_approval=False,\n link_protocol_config=equinix.fabric.ServiceProfileAccessPointTypeConfigLinkProtocolConfigArgs(\n encapsulation_strategy=\"CTAGED\",\n reuse_vlan_s_tag=False,\n encapsulation=\"DOT1Q\",\n ),\n enable_auto_generate_service_key=\"false,\",\n connection_redundancy_required=\"false,\",\n api_config=equinix.fabric.ServiceProfileAccessPointTypeConfigApiConfigArgs(\n api_available=True,\n integration_id=\"Example-Connect-01\",\n bandwidth_from_api=False,\n ),\n connection_label=\"Virtual Circuit Name\",\n authentication_key=equinix.fabric.ServiceProfileAccessPointTypeConfigAuthenticationKeyArgs(\n required=True,\n label=\"Example ACCOUNT ID\",\n ),\n )],\n account=equinix.fabric.ServiceProfileAccountArgs(\n organization_name=\"Example Cloud\",\n global_organization_name=\"Example Global\",\n ),\n metros=None,\n visibility=\"PUBLIC\",\n marketing_info=equinix.fabric.ServiceProfileMarketingInfoArgs(\n promotion=True,\n ))\npulumi.export(\"profileId\", profile.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprofile, err := fabric.NewServiceProfile(ctx, \"profile\", \u0026fabric.ServiceProfileArgs{\n\t\t\tName: pulumi.String(\"Example Cloud Provider\"),\n\t\t\tDescription: pulumi.String(\"50 to 500 Mbps Hosted Connection to Example Cloud\"),\n\t\t\tType: pulumi.String(\"L2_PROFILE\"),\n\t\t\tAccessPointTypeConfigs: fabric.ServiceProfileAccessPointTypeConfigArray{\n\t\t\t\t\u0026fabric.ServiceProfileAccessPointTypeConfigArgs{\n\t\t\t\t\tType: pulumi.String(\"COLO\"),\n\t\t\t\t\tSupportedBandwidths: pulumi.IntArray{\n\t\t\t\t\t\tpulumi.Int(50),\n\t\t\t\t\t\tpulumi.Int(100),\n\t\t\t\t\t\tpulumi.Int(200),\n\t\t\t\t\t\tpulumi.Int(500),\n\t\t\t\t\t},\n\t\t\t\t\tAllowRemoteConnections: pulumi.Bool(true),\n\t\t\t\t\tAllowCustomBandwidth: pulumi.Bool(false),\n\t\t\t\t\tAllowBandwidthAutoApproval: pulumi.Bool(false),\n\t\t\t\t\tLinkProtocolConfig: \u0026fabric.ServiceProfileAccessPointTypeConfigLinkProtocolConfigArgs{\n\t\t\t\t\t\tEncapsulationStrategy: pulumi.String(\"CTAGED\"),\n\t\t\t\t\t\tReuseVlanSTag: pulumi.Bool(false),\n\t\t\t\t\t\tEncapsulation: pulumi.String(\"DOT1Q\"),\n\t\t\t\t\t},\n\t\t\t\t\tEnableAutoGenerateServiceKey: pulumi.Bool(\"false,\"),\n\t\t\t\t\tConnectionRedundancyRequired: pulumi.Bool(\"false,\"),\n\t\t\t\t\tApiConfig: \u0026fabric.ServiceProfileAccessPointTypeConfigApiConfigArgs{\n\t\t\t\t\t\tApiAvailable: pulumi.Bool(true),\n\t\t\t\t\t\tIntegrationId: pulumi.String(\"Example-Connect-01\"),\n\t\t\t\t\t\tBandwidthFromApi: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tConnectionLabel: pulumi.String(\"Virtual Circuit Name\"),\n\t\t\t\t\tAuthenticationKey: \u0026fabric.ServiceProfileAccessPointTypeConfigAuthenticationKeyArgs{\n\t\t\t\t\t\tRequired: pulumi.Bool(true),\n\t\t\t\t\t\tLabel: pulumi.String(\"Example ACCOUNT ID\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAccount: \u0026fabric.ServiceProfileAccountArgs{\n\t\t\t\tOrganizationName: pulumi.String(\"Example Cloud\"),\n\t\t\t\tGlobalOrganizationName: pulumi.String(\"Example Global\"),\n\t\t\t},\n\t\t\tMetros: nil,\n\t\t\tVisibility: pulumi.String(\"PUBLIC\"),\n\t\t\tMarketingInfo: \u0026fabric.ServiceProfileMarketingInfoArgs{\n\t\t\t\tPromotion: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"profileId\", profile.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var profile = new Equinix.Fabric.ServiceProfile(\"profile\", new()\n {\n Name = \"Example Cloud Provider\",\n Description = \"50 to 500 Mbps Hosted Connection to Example Cloud\",\n Type = \"L2_PROFILE\",\n AccessPointTypeConfigs = new[]\n {\n new Equinix.Fabric.Inputs.ServiceProfileAccessPointTypeConfigArgs\n {\n Type = \"COLO\",\n SupportedBandwidths = new[]\n {\n 50,\n 100,\n 200,\n 500,\n },\n AllowRemoteConnections = true,\n AllowCustomBandwidth = false,\n AllowBandwidthAutoApproval = false,\n LinkProtocolConfig = new Equinix.Fabric.Inputs.ServiceProfileAccessPointTypeConfigLinkProtocolConfigArgs\n {\n EncapsulationStrategy = \"CTAGED\",\n ReuseVlanSTag = false,\n Encapsulation = \"DOT1Q\",\n },\n EnableAutoGenerateServiceKey = \"false,\",\n ConnectionRedundancyRequired = \"false,\",\n ApiConfig = new Equinix.Fabric.Inputs.ServiceProfileAccessPointTypeConfigApiConfigArgs\n {\n ApiAvailable = true,\n IntegrationId = \"Example-Connect-01\",\n BandwidthFromApi = false,\n },\n ConnectionLabel = \"Virtual Circuit Name\",\n AuthenticationKey = new Equinix.Fabric.Inputs.ServiceProfileAccessPointTypeConfigAuthenticationKeyArgs\n {\n Required = true,\n Label = \"Example ACCOUNT ID\",\n },\n },\n },\n Account = new Equinix.Fabric.Inputs.ServiceProfileAccountArgs\n {\n OrganizationName = \"Example Cloud\",\n GlobalOrganizationName = \"Example Global\",\n },\n Metros = null,\n Visibility = \"PUBLIC\",\n MarketingInfo = new Equinix.Fabric.Inputs.ServiceProfileMarketingInfoArgs\n {\n Promotion = true,\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"profileId\"] = profile.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.fabric.ServiceProfile;\nimport com.equinix.pulumi.fabric.ServiceProfileArgs;\nimport com.equinix.pulumi.fabric.inputs.ServiceProfileAccessPointTypeConfigArgs;\nimport com.equinix.pulumi.fabric.inputs.ServiceProfileAccessPointTypeConfigLinkProtocolConfigArgs;\nimport com.equinix.pulumi.fabric.inputs.ServiceProfileAccessPointTypeConfigApiConfigArgs;\nimport com.equinix.pulumi.fabric.inputs.ServiceProfileAccessPointTypeConfigAuthenticationKeyArgs;\nimport com.equinix.pulumi.fabric.inputs.ServiceProfileAccountArgs;\nimport com.equinix.pulumi.fabric.inputs.ServiceProfileMarketingInfoArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var profile = new ServiceProfile(\"profile\", ServiceProfileArgs.builder() \n .name(\"Example Cloud Provider\")\n .description(\"50 to 500 Mbps Hosted Connection to Example Cloud\")\n .type(\"L2_PROFILE\")\n .accessPointTypeConfigs(ServiceProfileAccessPointTypeConfigArgs.builder()\n .type(\"COLO\")\n .supportedBandwidths( \n 50,\n 100,\n 200,\n 500)\n .allowRemoteConnections(true)\n .allowCustomBandwidth(false)\n .allowBandwidthAutoApproval(false)\n .linkProtocolConfig(ServiceProfileAccessPointTypeConfigLinkProtocolConfigArgs.builder()\n .encapsulationStrategy(\"CTAGED\")\n .reuseVlanSTag(false)\n .encapsulation(\"DOT1Q\")\n .build())\n .enableAutoGenerateServiceKey(false)\n .connectionRedundancyRequired(false)\n .apiConfig(ServiceProfileAccessPointTypeConfigApiConfigArgs.builder()\n .apiAvailable(true)\n .integrationId(\"Example-Connect-01\")\n .bandwidthFromApi(false)\n .build())\n .connectionLabel(\"Virtual Circuit Name\")\n .authenticationKey(ServiceProfileAccessPointTypeConfigAuthenticationKeyArgs.builder()\n .required(true)\n .label(\"Example ACCOUNT ID\")\n .build())\n .build())\n .account(ServiceProfileAccountArgs.builder()\n .organizationName(\"Example Cloud\")\n .globalOrganizationName(\"Example Global\")\n .build())\n .visibility(\"PUBLIC\")\n .marketingInfo(ServiceProfileMarketingInfoArgs.builder()\n .promotion(true)\n .build())\n .build());\n\n ctx.export(\"profileId\", profile.id());\n }\n}\n```\n```yaml\nresources:\n profile:\n type: equinix:fabric:ServiceProfile\n properties:\n name: Example Cloud Provider\n description: 50 to 500 Mbps Hosted Connection to Example Cloud\n type: L2_PROFILE\n accessPointTypeConfigs:\n - type: COLO\n supportedBandwidths: [ 50, 100, 200, 500]\n allowRemoteConnections: true\n allowCustomBandwidth: false\n allowBandwidthAutoApproval: false\n linkProtocolConfig:\n encapsulationStrategy: CTAGED\n reuseVlanSTag: false\n encapsulation: DOT1Q\n enableAutoGenerateServiceKey: false,\n connectionRedundancyRequired: false,\n apiConfig:\n apiAvailable: true\n integrationId: Example-Connect-01\n bandwidthFromApi: false\n connectionLabel: Virtual Circuit Name\n authenticationKey:\n required: true\n label: Example ACCOUNT ID\n account:\n organizationName: Example Cloud\n globalOrganizationName: Example Global\n metros:\n visibility: PUBLIC\n marketingInfo:\n promotion: true\noutputs:\n profileId: ${profile.id}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"accessPointTypeConfigs": {
"type": "array",
@@ -10384,7 +11276,7 @@
},
"account": {
"$ref": "#/types/equinix:fabric/ServiceProfileAccount:ServiceProfileAccount",
- "description": "Account\n"
+ "description": "Service Profile Owner Account Information\n"
},
"allowedEmails": {
"type": "array",
@@ -10406,7 +11298,7 @@
},
"description": {
"type": "string",
- "description": "Description\n"
+ "description": "Description of authorization key\n"
},
"href": {
"type": "string",
@@ -10447,7 +11339,7 @@
},
"selfProfile": {
"type": "boolean",
- "description": "Self Profile\n"
+ "description": "Self Profile indicating if the profile is created for customer's self use\n"
},
"state": {
"type": "string",
@@ -10481,6 +11373,7 @@
}
},
"required": [
+ "account",
"changeLog",
"description",
"href",
@@ -10496,10 +11389,6 @@
},
"description": "Access point config information\n"
},
- "account": {
- "$ref": "#/types/equinix:fabric/ServiceProfileAccount:ServiceProfileAccount",
- "description": "Account\n"
- },
"allowedEmails": {
"type": "array",
"items": {
@@ -10516,7 +11405,7 @@
},
"description": {
"type": "string",
- "description": "Description\n"
+ "description": "Description of authorization key\n"
},
"marketingInfo": {
"$ref": "#/types/equinix:fabric/ServiceProfileMarketingInfo:ServiceProfileMarketingInfo",
@@ -10553,7 +11442,7 @@
},
"selfProfile": {
"type": "boolean",
- "description": "Self Profile\n"
+ "description": "Self Profile indicating if the profile is created for customer's self use\n"
},
"state": {
"type": "string",
@@ -10625,7 +11514,7 @@
},
"account": {
"$ref": "#/types/equinix:fabric/ServiceProfileAccount:ServiceProfileAccount",
- "description": "Account\n"
+ "description": "Service Profile Owner Account Information\n"
},
"allowedEmails": {
"type": "array",
@@ -10647,7 +11536,7 @@
},
"description": {
"type": "string",
- "description": "Description\n"
+ "description": "Description of authorization key\n"
},
"href": {
"type": "string",
@@ -10688,7 +11577,7 @@
},
"selfProfile": {
"type": "boolean",
- "description": "Self Profile\n"
+ "description": "Self Profile indicating if the profile is created for customer's self use\n"
},
"state": {
"type": "string",
@@ -10752,7 +11641,7 @@
}
},
"equinix:metal/bgpSession:BgpSession": {
- "description": "{{% examples %}}\nProvides a resource to manage BGP sessions in Equinix Metal Host. Refer to [Equinix Metal BGP documentation](https://metal.equinix.com/developers/docs/networking/local-global-bgp/) for more details.\n\nYou need to have BGP config enabled in your project.\n\nBGP session must be linked to a device running [BIRD](https://bird.network.cz) or other BGP routing daemon which will control route advertisements via the session to Equinix Metal's upstream routers.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst deviceId = config.require(\"deviceId\");\nconst bgp = new equinix.metal.BgpSession(\"bgp\", {\n deviceId: deviceId,\n addressFamily: \"ipv4\",\n});\nexport const bgpSessionStatus = bgp.status;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndevice_id = config.require(\"deviceId\")\nbgp = equinix.metal.BgpSession(\"bgp\",\n device_id=device_id,\n address_family=\"ipv4\")\npulumi.export(\"bgpSessionStatus\", bgp.status)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdeviceId := cfg.Require(\"deviceId\")\n\t\tbgp, err := metal.NewBgpSession(ctx, \"bgp\", \u0026metal.BgpSessionArgs{\n\t\t\tDeviceId: pulumi.String(deviceId),\n\t\t\tAddressFamily: pulumi.String(\"ipv4\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"bgpSessionStatus\", bgp.Status)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var deviceId = config.Require(\"deviceId\");\n var bgp = new Equinix.Metal.BgpSession(\"bgp\", new()\n {\n DeviceId = deviceId,\n AddressFamily = \"ipv4\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"bgpSessionStatus\"] = bgp.Status,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.BgpSession;\nimport com.equinix.pulumi.metal.BgpSessionArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var deviceId = config.get(\"deviceId\").get();\n var bgp = new BgpSession(\"bgp\", BgpSessionArgs.builder() \n .deviceId(deviceId)\n .addressFamily(\"ipv4\")\n .build());\n\n ctx.export(\"bgpSessionStatus\", bgp.status());\n }\n}\n```\n```yaml\nconfig:\n deviceId:\n type: string\nresources:\n bgp:\n type: equinix:metal:BgpSession\n properties:\n deviceId: ${deviceId}\n addressFamily: ipv4\noutputs:\n bgpSessionStatus: ${bgp.status}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "Provides a resource to manage BGP sessions in Equinix Metal Host. Refer to [Equinix Metal BGP documentation](https://metal.equinix.com/developers/docs/networking/local-global-bgp/) for more details.\n\nYou need to have BGP config enabled in your project.\n\nBGP session must be linked to a device running [BIRD](https://bird.network.cz) or other BGP routing daemon which will control route advertisements via the session to Equinix Metal's upstream routers.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst deviceId = config.require(\"deviceId\");\nconst bgp = new equinix.metal.BgpSession(\"bgp\", {\n deviceId: deviceId,\n addressFamily: \"ipv4\",\n});\nexport const bgpSessionStatus = bgp.status;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndevice_id = config.require(\"deviceId\")\nbgp = equinix.metal.BgpSession(\"bgp\",\n device_id=device_id,\n address_family=\"ipv4\")\npulumi.export(\"bgpSessionStatus\", bgp.status)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdeviceId := cfg.Require(\"deviceId\")\n\t\tbgp, err := metal.NewBgpSession(ctx, \"bgp\", \u0026metal.BgpSessionArgs{\n\t\t\tDeviceId: pulumi.String(deviceId),\n\t\t\tAddressFamily: pulumi.String(\"ipv4\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"bgpSessionStatus\", bgp.Status)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var deviceId = config.Require(\"deviceId\");\n var bgp = new Equinix.Metal.BgpSession(\"bgp\", new()\n {\n DeviceId = deviceId,\n AddressFamily = \"ipv4\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"bgpSessionStatus\"] = bgp.Status,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.BgpSession;\nimport com.equinix.pulumi.metal.BgpSessionArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var deviceId = config.get(\"deviceId\").get();\n var bgp = new BgpSession(\"bgp\", BgpSessionArgs.builder() \n .deviceId(deviceId)\n .addressFamily(\"ipv4\")\n .build());\n\n ctx.export(\"bgpSessionStatus\", bgp.status());\n }\n}\n```\n```yaml\nconfig:\n deviceId:\n type: string\nresources:\n bgp:\n type: equinix:metal:BgpSession\n properties:\n deviceId: ${deviceId}\n addressFamily: ipv4\noutputs:\n bgpSessionStatus: ${bgp.status}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"addressFamily": {
"type": "string",
@@ -10824,7 +11713,7 @@
}
},
"equinix:metal/device:Device": {
- "description": "{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst web = new equinix.metal.Device(\"web\", {\n hostname: \"webserver1\",\n plan: \"c3.small.x86\",\n operatingSystem: \"ubuntu_20_04\",\n metro: \"sv\",\n billingCycle: \"hourly\",\n projectId: projectId,\n});\nexport const webPublicIp = pulumi.interpolate`http://${web.accessPublicIpv4}`;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nweb = equinix.metal.Device(\"web\",\n hostname=\"webserver1\",\n plan=\"c3.small.x86\",\n operating_system=\"ubuntu_20_04\",\n metro=\"sv\",\n billing_cycle=\"hourly\",\n project_id=project_id)\npulumi.export(\"webPublicIp\", web.access_public_ipv4.apply(lambda access_public_ipv4: f\"http://{access_public_ipv4}\"))\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tweb, err := metal.NewDevice(ctx, \"web\", \u0026metal.DeviceArgs{\n\t\t\tHostname: pulumi.String(\"webserver1\"),\n\t\t\tPlan: pulumi.String(\"c3.small.x86\"),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\tMetro: pulumi.String(\"sv\"),\n\t\t\tBillingCycle: pulumi.String(\"hourly\"),\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"webPublicIp\", web.AccessPublicIpv4.ApplyT(func(accessPublicIpv4 string) (string, error) {\n\t\t\treturn fmt.Sprintf(\"http://%v\", accessPublicIpv4), nil\n\t\t}).(pulumi.StringOutput))\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var web = new Equinix.Metal.Device(\"web\", new()\n {\n Hostname = \"webserver1\",\n Plan = \"c3.small.x86\",\n OperatingSystem = \"ubuntu_20_04\",\n Metro = \"sv\",\n BillingCycle = \"hourly\",\n ProjectId = projectId,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"webPublicIp\"] = web.AccessPublicIpv4.Apply(accessPublicIpv4 =\u003e $\"http://{accessPublicIpv4}\"),\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.Device;\nimport com.equinix.pulumi.metal.DeviceArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n var web = new Device(\"web\", DeviceArgs.builder() \n .hostname(\"webserver1\")\n .plan(\"c3.small.x86\")\n .operatingSystem(\"ubuntu_20_04\")\n .metro(\"sv\")\n .billingCycle(\"hourly\")\n .projectId(projectId)\n .build());\n\n ctx.export(\"webPublicIp\", web.accessPublicIpv4().applyValue(accessPublicIpv4 -\u003e String.format(\"http://%s\", accessPublicIpv4)));\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\nresources:\n web:\n type: equinix:metal:Device\n properties:\n hostname: webserver1\n plan: c3.small.x86\n operatingSystem: ubuntu_20_04\n metro: sv\n billingCycle: hourly\n projectId: ${projectId}\noutputs:\n webPublicIp: http://${web.accessPublicIpv4}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing device ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:metal/device:Device equinix_metal_device {existing_device_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Provides an Equinix Metal device resource. This can be used to create,\nmodify, and delete devices.\n\n\u003e **NOTE:** All arguments including the `root_password` and `user_data` will be stored in\n the raw state as plain-text.\nRead more about sensitive data in state.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst web = new equinix.metal.Device(\"web\", {\n hostname: \"webserver1\",\n plan: \"c3.small.x86\",\n operatingSystem: \"ubuntu_20_04\",\n metro: \"sv\",\n billingCycle: \"hourly\",\n projectId: projectId,\n});\nexport const webPublicIp = pulumi.interpolate`http://${web.accessPublicIpv4}`;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nweb = equinix.metal.Device(\"web\",\n hostname=\"webserver1\",\n plan=\"c3.small.x86\",\n operating_system=\"ubuntu_20_04\",\n metro=\"sv\",\n billing_cycle=\"hourly\",\n project_id=project_id)\npulumi.export(\"webPublicIp\", web.access_public_ipv4.apply(lambda access_public_ipv4: f\"http://{access_public_ipv4}\"))\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tweb, err := metal.NewDevice(ctx, \"web\", \u0026metal.DeviceArgs{\n\t\t\tHostname: pulumi.String(\"webserver1\"),\n\t\t\tPlan: pulumi.String(\"c3.small.x86\"),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\tMetro: pulumi.String(\"sv\"),\n\t\t\tBillingCycle: pulumi.String(\"hourly\"),\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"webPublicIp\", web.AccessPublicIpv4.ApplyT(func(accessPublicIpv4 string) (string, error) {\n\t\t\treturn fmt.Sprintf(\"http://%v\", accessPublicIpv4), nil\n\t\t}).(pulumi.StringOutput))\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var web = new Equinix.Metal.Device(\"web\", new()\n {\n Hostname = \"webserver1\",\n Plan = \"c3.small.x86\",\n OperatingSystem = \"ubuntu_20_04\",\n Metro = \"sv\",\n BillingCycle = \"hourly\",\n ProjectId = projectId,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"webPublicIp\"] = web.AccessPublicIpv4.Apply(accessPublicIpv4 =\u003e $\"http://{accessPublicIpv4}\"),\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.Device;\nimport com.equinix.pulumi.metal.DeviceArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n var web = new Device(\"web\", DeviceArgs.builder() \n .hostname(\"webserver1\")\n .plan(\"c3.small.x86\")\n .operatingSystem(\"ubuntu_20_04\")\n .metro(\"sv\")\n .billingCycle(\"hourly\")\n .projectId(projectId)\n .build());\n\n ctx.export(\"webPublicIp\", web.accessPublicIpv4().applyValue(accessPublicIpv4 -\u003e String.format(\"http://%s\", accessPublicIpv4)));\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\nresources:\n web:\n type: equinix:metal:Device\n properties:\n hostname: webserver1\n plan: c3.small.x86\n operatingSystem: ubuntu_20_04\n metro: sv\n billingCycle: hourly\n projectId: ${projectId}\noutputs:\n webPublicIp: http://${web.accessPublicIpv4}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing device ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:metal/device:Device equinix_metal_device {existing_device_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"accessPrivateIpv4": {
"type": "string",
@@ -10886,7 +11775,7 @@
},
"hardwareReservationId": {
"type": "string",
- "description": "The UUID of the hardware reservation where you want this device deployed, or next-available if you want to pick your\nnext available reservation automatically\n"
+ "description": "The UUID of the hardware reservation where you want this\ndevice deployed, or `next-available` if you want to pick your next available reservation\nautomatically. Changing this from a reservation UUID to `next-available` will re-create the device\nin another reservation. Please be careful when using hardware reservation UUID and `next-available`\ntogether for the same pool of reservations. It might happen that the reservation which Equinix\nMetal API will pick as `next-available` is the reservation which you refer with UUID in another\nequinix.metal.Device resource. If that happens, and the equinix.metal.Device with the UUID is\ncreated later, resource creation will fail because the reservation is already in use (by the\nresource created with `next-available`). To workaround this, have the `next-available` resource\nexplicitly depend_on\nthe resource with hardware reservation UUID, so that the latter is created first. For more details,\nsee issue #176.\n"
},
"hostname": {
"type": "string",
@@ -10905,7 +11794,7 @@
},
"locked": {
"type": "boolean",
- "description": "Whether the device is locked.\n"
+ "description": "Whether the device is locked or unlocked. Locking a device prevents you from deleting or reinstalling the device or performing a firmware update on the device, and it prevents an instance with a termination time set from being reclaimed, even if the termination time was reached\n"
},
"metro": {
"type": "string",
@@ -11087,7 +11976,7 @@
},
"hardwareReservationId": {
"type": "string",
- "description": "The UUID of the hardware reservation where you want this device deployed, or next-available if you want to pick your\nnext available reservation automatically\n",
+ "description": "The UUID of the hardware reservation where you want this\ndevice deployed, or `next-available` if you want to pick your next available reservation\nautomatically. Changing this from a reservation UUID to `next-available` will re-create the device\nin another reservation. Please be careful when using hardware reservation UUID and `next-available`\ntogether for the same pool of reservations. It might happen that the reservation which Equinix\nMetal API will pick as `next-available` is the reservation which you refer with UUID in another\nequinix.metal.Device resource. If that happens, and the equinix.metal.Device with the UUID is\ncreated later, resource creation will fail because the reservation is already in use (by the\nresource created with `next-available`). To workaround this, have the `next-available` resource\nexplicitly depend_on\nthe resource with hardware reservation UUID, so that the latter is created first. For more details,\nsee issue #176.\n",
"willReplaceOnChanges": true
},
"hostname": {
@@ -11105,6 +11994,10 @@
"type": "string",
"description": "URL pointing to a hosted iPXE script. More information is in the\n[Custom iPXE](https://metal.equinix.com/developers/docs/servers/custom-ipxe/) doc.\n"
},
+ "locked": {
+ "type": "boolean",
+ "description": "Whether the device is locked or unlocked. Locking a device prevents you from deleting or reinstalling the device or performing a firmware update on the device, and it prevents an instance with a termination time set from being reclaimed, even if the termination time was reached\n"
+ },
"metro": {
"type": "string",
"description": "Metro area for the new device. Conflicts with `facilities`.\n",
@@ -11276,7 +12169,7 @@
},
"hardwareReservationId": {
"type": "string",
- "description": "The UUID of the hardware reservation where you want this device deployed, or next-available if you want to pick your\nnext available reservation automatically\n",
+ "description": "The UUID of the hardware reservation where you want this\ndevice deployed, or `next-available` if you want to pick your next available reservation\nautomatically. Changing this from a reservation UUID to `next-available` will re-create the device\nin another reservation. Please be careful when using hardware reservation UUID and `next-available`\ntogether for the same pool of reservations. It might happen that the reservation which Equinix\nMetal API will pick as `next-available` is the reservation which you refer with UUID in another\nequinix.metal.Device resource. If that happens, and the equinix.metal.Device with the UUID is\ncreated later, resource creation will fail because the reservation is already in use (by the\nresource created with `next-available`). To workaround this, have the `next-available` resource\nexplicitly depend_on\nthe resource with hardware reservation UUID, so that the latter is created first. For more details,\nsee issue #176.\n",
"willReplaceOnChanges": true
},
"hostname": {
@@ -11296,7 +12189,7 @@
},
"locked": {
"type": "boolean",
- "description": "Whether the device is locked.\n"
+ "description": "Whether the device is locked or unlocked. Locking a device prevents you from deleting or reinstalling the device or performing a firmware update on the device, and it prevents an instance with a termination time set from being reclaimed, even if the termination time was reached\n"
},
"metro": {
"type": "string",
@@ -11437,7 +12330,7 @@
}
},
"equinix:metal/deviceNetworkType:DeviceNetworkType": {
- "description": "{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst deviceId = config.require(\"deviceId\");\nconst networkType = config.get(\"networkType\") || \"hybrid\";\nconst deviceNetwork = new equinix.metal.DeviceNetworkType(\"deviceNetwork\", {\n deviceId: deviceId,\n type: networkType,\n});\nexport const deviceNetworkId = deviceNetwork.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndevice_id = config.require(\"deviceId\")\nnetwork_type = config.get(\"networkType\")\nif network_type is None:\n network_type = \"hybrid\"\ndevice_network = equinix.metal.DeviceNetworkType(\"deviceNetwork\",\n device_id=device_id,\n type=network_type)\npulumi.export(\"deviceNetworkId\", device_network.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdeviceId := cfg.Require(\"deviceId\")\n\t\tnetworkType := \"hybrid\"\n\t\tif param := cfg.Get(\"networkType\"); param != \"\" {\n\t\t\tnetworkType = param\n\t\t}\n\t\tdeviceNetwork, err := metal.NewDeviceNetworkType(ctx, \"deviceNetwork\", \u0026metal.DeviceNetworkTypeArgs{\n\t\t\tDeviceId: pulumi.String(deviceId),\n\t\t\tType: pulumi.String(networkType),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"deviceNetworkId\", deviceNetwork.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var deviceId = config.Require(\"deviceId\");\n var networkType = config.Get(\"networkType\") ?? \"hybrid\";\n var deviceNetwork = new Equinix.Metal.DeviceNetworkType(\"deviceNetwork\", new()\n {\n DeviceId = deviceId,\n Type = networkType,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"deviceNetworkId\"] = deviceNetwork.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.DeviceNetworkType;\nimport com.equinix.pulumi.metal.DeviceNetworkTypeArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var deviceId = config.get(\"deviceId\").get();\n final var networkType = config.get(\"networkType\").orElse(\"hybrid\");\n var deviceNetwork = new DeviceNetworkType(\"deviceNetwork\", DeviceNetworkTypeArgs.builder() \n .deviceId(deviceId)\n .type(networkType)\n .build());\n\n ctx.export(\"deviceNetworkId\", deviceNetwork.id());\n }\n}\n```\n```yaml\nconfig:\n deviceId:\n type: string\n networkType:\n type: string\n default: hybrid\nresources:\n deviceNetwork:\n type: equinix:metal:DeviceNetworkType\n properties:\n deviceId: ${deviceId}\n type: ${networkType}\noutputs:\n deviceNetworkId: ${deviceNetwork.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can also be imported using existing device ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:metal/deviceNetworkType:DeviceNetworkType equinix_metal_device_network_type {existing device_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst deviceId = config.require(\"deviceId\");\nconst networkType = config.get(\"networkType\") || \"hybrid\";\nconst deviceNetwork = new equinix.metal.DeviceNetworkType(\"deviceNetwork\", {\n deviceId: deviceId,\n type: networkType,\n});\nexport const deviceNetworkId = deviceNetwork.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndevice_id = config.require(\"deviceId\")\nnetwork_type = config.get(\"networkType\")\nif network_type is None:\n network_type = \"hybrid\"\ndevice_network = equinix.metal.DeviceNetworkType(\"deviceNetwork\",\n device_id=device_id,\n type=network_type)\npulumi.export(\"deviceNetworkId\", device_network.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdeviceId := cfg.Require(\"deviceId\")\n\t\tnetworkType := \"hybrid\"\n\t\tif param := cfg.Get(\"networkType\"); param != \"\" {\n\t\t\tnetworkType = param\n\t\t}\n\t\tdeviceNetwork, err := metal.NewDeviceNetworkType(ctx, \"deviceNetwork\", \u0026metal.DeviceNetworkTypeArgs{\n\t\t\tDeviceId: pulumi.String(deviceId),\n\t\t\tType: pulumi.String(networkType),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"deviceNetworkId\", deviceNetwork.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var deviceId = config.Require(\"deviceId\");\n var networkType = config.Get(\"networkType\") ?? \"hybrid\";\n var deviceNetwork = new Equinix.Metal.DeviceNetworkType(\"deviceNetwork\", new()\n {\n DeviceId = deviceId,\n Type = networkType,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"deviceNetworkId\"] = deviceNetwork.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.DeviceNetworkType;\nimport com.equinix.pulumi.metal.DeviceNetworkTypeArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var deviceId = config.get(\"deviceId\").get();\n final var networkType = config.get(\"networkType\").orElse(\"hybrid\");\n var deviceNetwork = new DeviceNetworkType(\"deviceNetwork\", DeviceNetworkTypeArgs.builder() \n .deviceId(deviceId)\n .type(networkType)\n .build());\n\n ctx.export(\"deviceNetworkId\", deviceNetwork.id());\n }\n}\n```\n```yaml\nconfig:\n deviceId:\n type: string\n networkType:\n type: string\n default: hybrid\nresources:\n deviceNetwork:\n type: equinix:metal:DeviceNetworkType\n properties:\n deviceId: ${deviceId}\n type: ${networkType}\noutputs:\n deviceNetworkId: ${deviceNetwork.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can also be imported using existing device ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:metal/deviceNetworkType:DeviceNetworkType equinix_metal_device_network_type {existing device_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"deviceId": {
"type": "string",
@@ -11484,7 +12377,7 @@
}
},
"equinix:metal/gateway:Gateway": {
- "description": "{{% examples %}}\nUse this resource to create Metal Gateway resources in Equinix Metal.\n\n\u003e VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst vlanId = config.require(\"vlanId\");\nconst gateway = new equinix.metal.Gateway(\"gateway\", {\n projectId: projectId,\n vlanId: vlanId,\n privateIpv4SubnetSize: 8,\n});\nexport const gatewayState = gateway.state;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nvlan_id = config.require(\"vlanId\")\ngateway = equinix.metal.Gateway(\"gateway\",\n project_id=project_id,\n vlan_id=vlan_id,\n private_ipv4_subnet_size=8)\npulumi.export(\"gatewayState\", gateway.state)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tvlanId := cfg.Require(\"vlanId\")\n\t\tgateway, err := metal.NewGateway(ctx, \"gateway\", \u0026metal.GatewayArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tVlanId: pulumi.String(vlanId),\n\t\t\tPrivateIpv4SubnetSize: pulumi.Int(8),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"gatewayState\", gateway.State)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var vlanId = config.Require(\"vlanId\");\n var gateway = new Equinix.Metal.Gateway(\"gateway\", new()\n {\n ProjectId = projectId,\n VlanId = vlanId,\n PrivateIpv4SubnetSize = 8,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"gatewayState\"] = gateway.State,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.Gateway;\nimport com.equinix.pulumi.metal.GatewayArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var vlanId = config.get(\"vlanId\").get();\n var gateway = new Gateway(\"gateway\", GatewayArgs.builder() \n .projectId(projectId)\n .vlanId(vlanId)\n .privateIpv4SubnetSize(8)\n .build());\n\n ctx.export(\"gatewayState\", gateway.state());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n vlanId:\n type: string\nresources:\n gateway:\n type: equinix:metal:Gateway\n properties:\n projectId: ${projectId}\n vlanId: ${vlanId}\n privateIpv4SubnetSize: 8\noutputs:\n gatewayState: ${gateway.state}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "Use this resource to create Metal Gateway resources in Equinix Metal.\n\n\u003e VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst vlanId = config.require(\"vlanId\");\nconst gateway = new equinix.metal.Gateway(\"gateway\", {\n projectId: projectId,\n vlanId: vlanId,\n privateIpv4SubnetSize: 8,\n});\nexport const gatewayState = gateway.state;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nvlan_id = config.require(\"vlanId\")\ngateway = equinix.metal.Gateway(\"gateway\",\n project_id=project_id,\n vlan_id=vlan_id,\n private_ipv4_subnet_size=8)\npulumi.export(\"gatewayState\", gateway.state)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tvlanId := cfg.Require(\"vlanId\")\n\t\tgateway, err := metal.NewGateway(ctx, \"gateway\", \u0026metal.GatewayArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tVlanId: pulumi.String(vlanId),\n\t\t\tPrivateIpv4SubnetSize: pulumi.Int(8),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"gatewayState\", gateway.State)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var vlanId = config.Require(\"vlanId\");\n var gateway = new Equinix.Metal.Gateway(\"gateway\", new()\n {\n ProjectId = projectId,\n VlanId = vlanId,\n PrivateIpv4SubnetSize = 8,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"gatewayState\"] = gateway.State,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.Gateway;\nimport com.equinix.pulumi.metal.GatewayArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var vlanId = config.get(\"vlanId\").get();\n var gateway = new Gateway(\"gateway\", GatewayArgs.builder() \n .projectId(projectId)\n .vlanId(vlanId)\n .privateIpv4SubnetSize(8)\n .build());\n\n ctx.export(\"gatewayState\", gateway.state());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n vlanId:\n type: string\nresources:\n gateway:\n type: equinix:metal:Gateway\n properties:\n projectId: ${projectId}\n vlanId: ${vlanId}\n privateIpv4SubnetSize: 8\noutputs:\n gatewayState: ${gateway.state}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"ipReservationId": {
"type": "string",
@@ -11502,6 +12395,9 @@
"type": "string",
"description": "Status of the gateway resource.\n"
},
+ "timeouts": {
+ "$ref": "#/types/equinix:metal/GatewayTimeouts:GatewayTimeouts"
+ },
"vlanId": {
"type": "string",
"description": "UUID of the VLAN where the gateway is scoped to.\n"
@@ -11512,6 +12408,7 @@
}
},
"required": [
+ "ipReservationId",
"privateIpv4SubnetSize",
"projectId",
"state",
@@ -11521,23 +12418,22 @@
"inputProperties": {
"ipReservationId": {
"type": "string",
- "description": "UUID of Public or VRF IP Reservation to associate with the gateway, the\nreservation must be in the same metro as the VLAN, conflicts with `private_ipv4_subnet_size`.\n",
- "willReplaceOnChanges": true
+ "description": "UUID of Public or VRF IP Reservation to associate with the gateway, the\nreservation must be in the same metro as the VLAN, conflicts with `private_ipv4_subnet_size`.\n"
},
"privateIpv4SubnetSize": {
"type": "integer",
- "description": "Size of the private IPv4 subnet to create for this metal\ngateway, must be one of `8`, `16`, `32`, `64`, `128`. Conflicts with `ip_reservation_id`.\n",
- "willReplaceOnChanges": true
+ "description": "Size of the private IPv4 subnet to create for this metal\ngateway, must be one of `8`, `16`, `32`, `64`, `128`. Conflicts with `ip_reservation_id`.\n"
},
"projectId": {
"type": "string",
- "description": "UUID of the project where the gateway is scoped to.\n",
- "willReplaceOnChanges": true
+ "description": "UUID of the project where the gateway is scoped to.\n"
+ },
+ "timeouts": {
+ "$ref": "#/types/equinix:metal/GatewayTimeouts:GatewayTimeouts"
},
"vlanId": {
"type": "string",
- "description": "UUID of the VLAN where the gateway is scoped to.\n",
- "willReplaceOnChanges": true
+ "description": "UUID of the VLAN where the gateway is scoped to.\n"
}
},
"requiredInputs": [
@@ -11549,27 +12445,26 @@
"properties": {
"ipReservationId": {
"type": "string",
- "description": "UUID of Public or VRF IP Reservation to associate with the gateway, the\nreservation must be in the same metro as the VLAN, conflicts with `private_ipv4_subnet_size`.\n",
- "willReplaceOnChanges": true
+ "description": "UUID of Public or VRF IP Reservation to associate with the gateway, the\nreservation must be in the same metro as the VLAN, conflicts with `private_ipv4_subnet_size`.\n"
},
"privateIpv4SubnetSize": {
"type": "integer",
- "description": "Size of the private IPv4 subnet to create for this metal\ngateway, must be one of `8`, `16`, `32`, `64`, `128`. Conflicts with `ip_reservation_id`.\n",
- "willReplaceOnChanges": true
+ "description": "Size of the private IPv4 subnet to create for this metal\ngateway, must be one of `8`, `16`, `32`, `64`, `128`. Conflicts with `ip_reservation_id`.\n"
},
"projectId": {
"type": "string",
- "description": "UUID of the project where the gateway is scoped to.\n",
- "willReplaceOnChanges": true
+ "description": "UUID of the project where the gateway is scoped to.\n"
},
"state": {
"type": "string",
"description": "Status of the gateway resource.\n"
},
+ "timeouts": {
+ "$ref": "#/types/equinix:metal/GatewayTimeouts:GatewayTimeouts"
+ },
"vlanId": {
"type": "string",
- "description": "UUID of the VLAN where the gateway is scoped to.\n",
- "willReplaceOnChanges": true
+ "description": "UUID of the VLAN where the gateway is scoped to.\n"
},
"vrfId": {
"type": "string",
@@ -11580,7 +12475,7 @@
}
},
"equinix:metal/interconnection:Interconnection": {
- "description": "{{% examples %}}\nUse this resource to request the creation an Interconnection asset to connect with other parties using [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/).\n\n\u003e Equinix Metal connection with with Service Token A-side / Z-side (service_token_type) is not generally available and may not be enabled yet for your organization.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst metro = config.get(\"metro\") || \"SV\";\nconst speedInMbps = config.getNumber(\"speedInMbps\") || 200;\nconst connection = new equinix.metal.Interconnection(\"connection\", {\n name: \"fabric-port-to-metal\",\n projectId: projectId,\n type: \"shared\",\n redundancy: \"primary\",\n metro: metro,\n speed: `${speedInMbps}Mbps`,\n serviceTokenType: \"z_side\",\n});\nexport const connectionStatus = connection.status;\nexport const connectionTokens = connection.serviceTokens;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"SV\"\nspeed_in_mbps = config.get_int(\"speedInMbps\")\nif speed_in_mbps is None:\n speed_in_mbps = 200\nconnection = equinix.metal.Interconnection(\"connection\",\n name=\"fabric-port-to-metal\",\n project_id=project_id,\n type=\"shared\",\n redundancy=\"primary\",\n metro=metro,\n speed=f\"{speed_in_mbps}Mbps\",\n service_token_type=\"z_side\")\npulumi.export(\"connectionStatus\", connection.status)\npulumi.export(\"connectionTokens\", connection.service_tokens)\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tmetro := \"SV\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\tspeedInMbps := 200\n\t\tif param := cfg.GetInt(\"speedInMbps\"); param != 0 {\n\t\t\tspeedInMbps = param\n\t\t}\n\t\tconnection, err := metal.NewInterconnection(ctx, \"connection\", \u0026metal.InterconnectionArgs{\n\t\t\tName: pulumi.String(\"fabric-port-to-metal\"),\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tType: pulumi.String(\"shared\"),\n\t\t\tRedundancy: pulumi.String(\"primary\"),\n\t\t\tMetro: pulumi.String(metro),\n\t\t\tSpeed: pulumi.String(fmt.Sprintf(\"%vMbps\", speedInMbps)),\n\t\t\tServiceTokenType: pulumi.String(\"z_side\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectionStatus\", connection.Status)\n\t\tctx.Export(\"connectionTokens\", connection.ServiceTokens)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var metro = config.Get(\"metro\") ?? \"SV\";\n var speedInMbps = config.GetNumber(\"speedInMbps\") ?? 200;\n var connection = new Equinix.Metal.Interconnection(\"connection\", new()\n {\n Name = \"fabric-port-to-metal\",\n ProjectId = projectId,\n Type = \"shared\",\n Redundancy = \"primary\",\n Metro = metro,\n Speed = $\"{speedInMbps}Mbps\",\n ServiceTokenType = \"z_side\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"connectionStatus\"] = connection.Status,\n [\"connectionTokens\"] = connection.ServiceTokens,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.metal.Interconnection;\nimport com.equinix.pulumi.metal.InterconnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var metro = config.get(\"metro\").orElse(\"SV\");\n final var speedInMbps = Integer.parseInt(config.get(\"speedInMbps\").orElse(\"200\"));\n var connection = new Interconnection(\"connection\", InterconnectionArgs.builder() \n .name(\"fabric-port-to-metal\")\n .projectId(projectId)\n .type(\"shared\")\n .redundancy(\"primary\")\n .metro(metro)\n .speed(String.format(\"%sMbps\", speedInMbps))\n .serviceTokenType(\"z_side\")\n .build());\n\n ctx.export(\"connectionStatus\", connection.status());\n ctx.export(\"connectionTokens\", connection.serviceTokens());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n metro:\n type: string\n default: SV\n speedInMbps:\n type: integer\n default: 200\nresources:\n connection:\n type: equinix:metal:Interconnection\n properties:\n name: fabric-port-to-metal\n projectId: ${projectId}\n type: shared\n redundancy: primary\n metro: ${metro}\n speed: ${speedInMbps}Mbps\n serviceTokenType: z_side\noutputs:\n connectionStatus: ${connection.status}\n connectionTokens: ${connection.serviceTokens}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "Use this resource to request the creation an Interconnection asset to connect with other parties using [Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/).\n\n\u003e Equinix Metal connection with with Service Token A-side / Z-side (service_token_type) is not generally available and may not be enabled yet for your organization.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst metro = config.get(\"metro\") || \"SV\";\nconst speedInMbps = config.getNumber(\"speedInMbps\") || 200;\nconst connection = new equinix.metal.Interconnection(\"connection\", {\n name: \"fabric-port-to-metal\",\n projectId: projectId,\n type: \"shared\",\n redundancy: \"primary\",\n metro: metro,\n speed: `${speedInMbps}Mbps`,\n serviceTokenType: \"z_side\",\n});\nexport const connectionStatus = connection.status;\nexport const connectionTokens = connection.serviceTokens;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"SV\"\nspeed_in_mbps = config.get_int(\"speedInMbps\")\nif speed_in_mbps is None:\n speed_in_mbps = 200\nconnection = equinix.metal.Interconnection(\"connection\",\n name=\"fabric-port-to-metal\",\n project_id=project_id,\n type=\"shared\",\n redundancy=\"primary\",\n metro=metro,\n speed=f\"{speed_in_mbps}Mbps\",\n service_token_type=\"z_side\")\npulumi.export(\"connectionStatus\", connection.status)\npulumi.export(\"connectionTokens\", connection.service_tokens)\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tmetro := \"SV\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\tspeedInMbps := 200\n\t\tif param := cfg.GetInt(\"speedInMbps\"); param != 0 {\n\t\t\tspeedInMbps = param\n\t\t}\n\t\tconnection, err := metal.NewInterconnection(ctx, \"connection\", \u0026metal.InterconnectionArgs{\n\t\t\tName: pulumi.String(\"fabric-port-to-metal\"),\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tType: pulumi.String(\"shared\"),\n\t\t\tRedundancy: pulumi.String(\"primary\"),\n\t\t\tMetro: pulumi.String(metro),\n\t\t\tSpeed: pulumi.String(fmt.Sprintf(\"%vMbps\", speedInMbps)),\n\t\t\tServiceTokenType: pulumi.String(\"z_side\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectionStatus\", connection.Status)\n\t\tctx.Export(\"connectionTokens\", connection.ServiceTokens)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var metro = config.Get(\"metro\") ?? \"SV\";\n var speedInMbps = config.GetNumber(\"speedInMbps\") ?? 200;\n var connection = new Equinix.Metal.Interconnection(\"connection\", new()\n {\n Name = \"fabric-port-to-metal\",\n ProjectId = projectId,\n Type = \"shared\",\n Redundancy = \"primary\",\n Metro = metro,\n Speed = $\"{speedInMbps}Mbps\",\n ServiceTokenType = \"z_side\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"connectionStatus\"] = connection.Status,\n [\"connectionTokens\"] = connection.ServiceTokens,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.metal.Interconnection;\nimport com.equinix.pulumi.metal.InterconnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var metro = config.get(\"metro\").orElse(\"SV\");\n final var speedInMbps = Integer.parseInt(config.get(\"speedInMbps\").orElse(\"200\"));\n var connection = new Interconnection(\"connection\", InterconnectionArgs.builder() \n .name(\"fabric-port-to-metal\")\n .projectId(projectId)\n .type(\"shared\")\n .redundancy(\"primary\")\n .metro(metro)\n .speed(String.format(\"%sMbps\", speedInMbps))\n .serviceTokenType(\"z_side\")\n .build());\n\n ctx.export(\"connectionStatus\", connection.status());\n ctx.export(\"connectionTokens\", connection.serviceTokens());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n metro:\n type: string\n default: SV\n speedInMbps:\n type: integer\n default: 200\nresources:\n connection:\n type: equinix:metal:Interconnection\n properties:\n name: fabric-port-to-metal\n projectId: ${projectId}\n type: shared\n redundancy: primary\n metro: ${metro}\n speed: ${speedInMbps}Mbps\n serviceTokenType: z_side\noutputs:\n connectionStatus: ${connection.status}\n connectionTokens: ${connection.serviceTokens}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"contactEmail": {
"type": "string",
@@ -11593,7 +12488,7 @@
"facility": {
"type": "string",
"description": "Facility where the connection will be created. Use metro instead; read the facility to metro migration guide\n",
- "deprecationMessage": "Use metro instead of facility. For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"
+ "deprecationMessage": "Use metro instead of facility. For more information, read the migration guide."
},
"metro": {
"type": "string",
@@ -11639,7 +12534,7 @@
},
"speed": {
"type": "string",
- "description": "Connection speed - one of 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps.\n"
+ "description": "Connection speed - Values must be in the format '\u003cnumber\u003eMbps' or '\u003cnumber\u003eGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.\n"
},
"status": {
"type": "string",
@@ -11671,8 +12566,10 @@
},
"required": [
"contactEmail",
+ "description",
"facility",
"metro",
+ "mode",
"name",
"organizationId",
"ports",
@@ -11686,8 +12583,7 @@
"inputProperties": {
"contactEmail": {
"type": "string",
- "description": "The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.\n",
- "willReplaceOnChanges": true
+ "description": "The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.\n"
},
"description": {
"type": "string",
@@ -11696,13 +12592,11 @@
"facility": {
"type": "string",
"description": "Facility where the connection will be created. Use metro instead; read the facility to metro migration guide\n",
- "deprecationMessage": "Use metro instead of facility. For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices",
- "willReplaceOnChanges": true
+ "deprecationMessage": "Use metro instead of facility. For more information, read the migration guide."
},
"metro": {
"type": "string",
- "description": "Metro where the connection will be created.\n",
- "willReplaceOnChanges": true
+ "description": "Metro where the connection will be created.\n"
},
"mode": {
"type": "string",
@@ -11710,18 +12604,15 @@
},
"name": {
"type": "string",
- "description": "Name of the connection resource\n",
- "willReplaceOnChanges": true
+ "description": "Name of the connection resource\n"
},
"organizationId": {
"type": "string",
- "description": "ID of the organization where the connection is scoped to.\n",
- "willReplaceOnChanges": true
+ "description": "ID of the organization where the connection is scoped to.\n"
},
"projectId": {
"type": "string",
- "description": "ID of the project where the connection is scoped to, must be set for.\n",
- "willReplaceOnChanges": true
+ "description": "ID of the project where the connection is scoped to, must be set for.\n"
},
"redundancy": {
"type": "string",
@@ -11733,7 +12624,7 @@
},
"speed": {
"type": "string",
- "description": "Connection speed - one of 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps.\n"
+ "description": "Connection speed - Values must be in the format '\u003cnumber\u003eMbps' or '\u003cnumber\u003eGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.\n"
},
"tags": {
"type": "array",
@@ -11744,8 +12635,7 @@
},
"type": {
"type": "string",
- "description": "Connection type - dedicated or shared.\n",
- "willReplaceOnChanges": true
+ "description": "Connection type - dedicated or shared.\n"
},
"vlans": {
"type": "array",
@@ -11764,8 +12654,7 @@
"properties": {
"contactEmail": {
"type": "string",
- "description": "The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.\n",
- "willReplaceOnChanges": true
+ "description": "The preferred email used for communication and notifications about the Equinix Fabric interconnection. Required when using a Project API key. Optional and defaults to the primary user email address when using a User API key.\n"
},
"description": {
"type": "string",
@@ -11774,13 +12663,11 @@
"facility": {
"type": "string",
"description": "Facility where the connection will be created. Use metro instead; read the facility to metro migration guide\n",
- "deprecationMessage": "Use metro instead of facility. For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices",
- "willReplaceOnChanges": true
+ "deprecationMessage": "Use metro instead of facility. For more information, read the migration guide."
},
"metro": {
"type": "string",
- "description": "Metro where the connection will be created.\n",
- "willReplaceOnChanges": true
+ "description": "Metro where the connection will be created.\n"
},
"mode": {
"type": "string",
@@ -11788,13 +12675,11 @@
},
"name": {
"type": "string",
- "description": "Name of the connection resource\n",
- "willReplaceOnChanges": true
+ "description": "Name of the connection resource\n"
},
"organizationId": {
"type": "string",
- "description": "ID of the organization where the connection is scoped to.\n",
- "willReplaceOnChanges": true
+ "description": "ID of the organization where the connection is scoped to.\n"
},
"ports": {
"type": "array",
@@ -11805,8 +12690,7 @@
},
"projectId": {
"type": "string",
- "description": "ID of the project where the connection is scoped to, must be set for.\n",
- "willReplaceOnChanges": true
+ "description": "ID of the project where the connection is scoped to, must be set for.\n"
},
"redundancy": {
"type": "string",
@@ -11825,7 +12709,7 @@
},
"speed": {
"type": "string",
- "description": "Connection speed - one of 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps.\n"
+ "description": "Connection speed - Values must be in the format '\u003cnumber\u003eMbps' or '\u003cnumber\u003eGpbs', for example '100Mbps' or '50Gbps'. Actual supported values will depend on the connection type and whether the connection uses VLANs or VRF.\n"
},
"status": {
"type": "string",
@@ -11845,8 +12729,7 @@
},
"type": {
"type": "string",
- "description": "Connection type - dedicated or shared.\n",
- "willReplaceOnChanges": true
+ "description": "Connection type - dedicated or shared.\n"
},
"vlans": {
"type": "array",
@@ -11860,7 +12743,7 @@
}
},
"equinix:metal/ipAttachment:IpAttachment": {
- "description": "{{% examples %}}\nProvides a resource to attach elastic IP subnets to devices.\n\nTo attach an IP subnet from a reserved block to a provisioned device, you must derive a subnet CIDR\nbelonging to one of your reserved blocks in the same project and metro as the target device.\n\nFor example, you have reserved IPv4 address block `147.229.10.152/30`, you can choose to assign\neither the whole block as one subnet to a device; or 2 subnets with CIDRs `147.229.10.152/31` and\n`147.229.10.154/31`; or 4 subnets with mask prefix length `32`. More about the elastic IP subnets\nis [here](https://metal.equinix.com/developers/docs/networking/elastic-ips/).\n\nDevice and reserved block must be in the same metro.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst deviceId = config.require(\"deviceId\");\nconst subnetCidr = config.get(\"subnetCidr\") || \"147.229.10.152/31\";\nconst ipAttachResource = new equinix.metal.IpAttachment(\"ipAttach\", {\n deviceId: deviceId,\n cidrNotation: subnetCidr,\n});\nexport const ipAttach = ipAttachResource.id;\nexport const ipNetmask = ipAttachResource.netmask;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndevice_id = config.require(\"deviceId\")\nsubnet_cidr = config.get(\"subnetCidr\")\nif subnet_cidr is None:\n subnet_cidr = \"147.229.10.152/31\"\nip_attach_resource = equinix.metal.IpAttachment(\"ipAttach\",\n device_id=device_id,\n cidr_notation=subnet_cidr)\npulumi.export(\"ipAttach\", ip_attach_resource.id)\npulumi.export(\"ipNetmask\", ip_attach_resource.netmask)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdeviceId := cfg.Require(\"deviceId\")\n\t\tsubnetCidr := \"147.229.10.152/31\"\n\t\tif param := cfg.Get(\"subnetCidr\"); param != \"\" {\n\t\t\tsubnetCidr = param\n\t\t}\n\t\tipAttachResource, err := metal.NewIpAttachment(ctx, \"ipAttach\", \u0026metal.IpAttachmentArgs{\n\t\t\tDeviceId: pulumi.String(deviceId),\n\t\t\tCidrNotation: pulumi.String(subnetCidr),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ipAttach\", ipAttachResource.ID())\n\t\tctx.Export(\"ipNetmask\", ipAttachResource.Netmask)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var deviceId = config.Require(\"deviceId\");\n var subnetCidr = config.Get(\"subnetCidr\") ?? \"147.229.10.152/31\";\n var ipAttachResource = new Equinix.Metal.IpAttachment(\"ipAttach\", new()\n {\n DeviceId = deviceId,\n CidrNotation = subnetCidr,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"ipAttach\"] = ipAttachResource.Id,\n [\"ipNetmask\"] = ipAttachResource.Netmask,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.IpAttachment;\nimport com.equinix.pulumi.metal.IpAttachmentArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var deviceId = config.get(\"deviceId\").get();\n final var subnetCidr = config.get(\"subnetCidr\").orElse(\"147.229.10.152/31\");\n var ipAttachResource = new IpAttachment(\"ipAttachResource\", IpAttachmentArgs.builder() \n .deviceId(deviceId)\n .cidrNotation(subnetCidr)\n .build());\n\n ctx.export(\"ipAttach\", ipAttachResource.id());\n ctx.export(\"ipNetmask\", ipAttachResource.netmask());\n }\n}\n```\n```yaml\nconfig:\n deviceId:\n type: string\n subnetCidr:\n type: string\n default: 147.229.10.152/31\nresources:\n ipAttach:\n type: equinix:metal:IpAttachment\n properties:\n deviceId: ${deviceId}\n cidrNotation: ${subnetCidr}\noutputs:\n ipAttach: ${ipAttach.id}\n ipNetmask: ${ipAttach.netmask}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "Provides a resource to attach elastic IP subnets to devices.\n\nTo attach an IP subnet from a reserved block to a provisioned device, you must derive a subnet CIDR\nbelonging to one of your reserved blocks in the same project and metro as the target device.\n\nFor example, you have reserved IPv4 address block `147.229.10.152/30`, you can choose to assign\neither the whole block as one subnet to a device; or 2 subnets with CIDRs `147.229.10.152/31` and\n`147.229.10.154/31`; or 4 subnets with mask prefix length `32`. More about the elastic IP subnets\nis [here](https://metal.equinix.com/developers/docs/networking/elastic-ips/).\n\nDevice and reserved block must be in the same metro.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst deviceId = config.require(\"deviceId\");\nconst subnetCidr = config.get(\"subnetCidr\") || \"147.229.10.152/31\";\nconst ipAttachResource = new equinix.metal.IpAttachment(\"ipAttach\", {\n deviceId: deviceId,\n cidrNotation: subnetCidr,\n});\nexport const ipAttach = ipAttachResource.id;\nexport const ipNetmask = ipAttachResource.netmask;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndevice_id = config.require(\"deviceId\")\nsubnet_cidr = config.get(\"subnetCidr\")\nif subnet_cidr is None:\n subnet_cidr = \"147.229.10.152/31\"\nip_attach_resource = equinix.metal.IpAttachment(\"ipAttach\",\n device_id=device_id,\n cidr_notation=subnet_cidr)\npulumi.export(\"ipAttach\", ip_attach_resource.id)\npulumi.export(\"ipNetmask\", ip_attach_resource.netmask)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdeviceId := cfg.Require(\"deviceId\")\n\t\tsubnetCidr := \"147.229.10.152/31\"\n\t\tif param := cfg.Get(\"subnetCidr\"); param != \"\" {\n\t\t\tsubnetCidr = param\n\t\t}\n\t\tipAttachResource, err := metal.NewIpAttachment(ctx, \"ipAttach\", \u0026metal.IpAttachmentArgs{\n\t\t\tDeviceId: pulumi.String(deviceId),\n\t\t\tCidrNotation: pulumi.String(subnetCidr),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ipAttach\", ipAttachResource.ID())\n\t\tctx.Export(\"ipNetmask\", ipAttachResource.Netmask)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var deviceId = config.Require(\"deviceId\");\n var subnetCidr = config.Get(\"subnetCidr\") ?? \"147.229.10.152/31\";\n var ipAttachResource = new Equinix.Metal.IpAttachment(\"ipAttach\", new()\n {\n DeviceId = deviceId,\n CidrNotation = subnetCidr,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"ipAttach\"] = ipAttachResource.Id,\n [\"ipNetmask\"] = ipAttachResource.Netmask,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.IpAttachment;\nimport com.equinix.pulumi.metal.IpAttachmentArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var deviceId = config.get(\"deviceId\").get();\n final var subnetCidr = config.get(\"subnetCidr\").orElse(\"147.229.10.152/31\");\n var ipAttachResource = new IpAttachment(\"ipAttachResource\", IpAttachmentArgs.builder() \n .deviceId(deviceId)\n .cidrNotation(subnetCidr)\n .build());\n\n ctx.export(\"ipAttach\", ipAttachResource.id());\n ctx.export(\"ipNetmask\", ipAttachResource.netmask());\n }\n}\n```\n```yaml\nconfig:\n deviceId:\n type: string\n subnetCidr:\n type: string\n default: 147.229.10.152/31\nresources:\n ipAttach:\n type: equinix:metal:IpAttachment\n properties:\n deviceId: ${deviceId}\n cidrNotation: ${subnetCidr}\noutputs:\n ipAttach: ${ipAttach.id}\n ipNetmask: ${ipAttach.netmask}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"address": {
"type": "string"
@@ -12000,7 +12883,7 @@
}
},
"equinix:metal/organization:Organization": {
- "description": "{{% examples %}}\nProvides a resource to manage organization resource in Equinix Metal.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst orgResource = new equinix.metal.Organization(\"org\", {\n name: \"Foo Organization\",\n address: {\n address: \"org street\",\n city: \"london\",\n country: \"GB\",\n zipCode: \"12345\",\n },\n description: \"An organization\",\n});\nexport const org = orgResource.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\norg_resource = equinix.metal.Organization(\"org\",\n name=\"Foo Organization\",\n address=equinix.metal.OrganizationAddressArgs(\n address=\"org street\",\n city=\"london\",\n country=\"GB\",\n zip_code=\"12345\",\n ),\n description=\"An organization\")\npulumi.export(\"org\", org_resource.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\torgResource, err := metal.NewOrganization(ctx, \"org\", \u0026metal.OrganizationArgs{\n\t\t\tName: pulumi.String(\"Foo Organization\"),\n\t\t\tAddress: \u0026metal.OrganizationAddressArgs{\n\t\t\t\tAddress: pulumi.String(\"org street\"),\n\t\t\t\tCity: pulumi.String(\"london\"),\n\t\t\t\tCountry: pulumi.String(\"GB\"),\n\t\t\t\tZipCode: pulumi.String(\"12345\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"An organization\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"org\", orgResource.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var orgResource = new Equinix.Metal.Organization(\"org\", new()\n {\n Name = \"Foo Organization\",\n Address = new Equinix.Metal.Inputs.OrganizationAddressArgs\n {\n Address = \"org street\",\n City = \"london\",\n Country = \"GB\",\n ZipCode = \"12345\",\n },\n Description = \"An organization\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"org\"] = orgResource.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.metal.Organization;\nimport com.equinix.pulumi.metal.OrganizationArgs;\nimport com.equinix.pulumi.metal.inputs.OrganizationAddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var orgResource = new Organization(\"orgResource\", OrganizationArgs.builder() \n .name(\"Foo Organization\")\n .address(OrganizationAddressArgs.builder()\n .address(\"org street\")\n .city(\"london\")\n .country(\"GB\")\n .zipCode(\"12345\")\n .build())\n .description(\"An organization\")\n .build());\n\n ctx.export(\"org\", orgResource.id());\n }\n}\n```\n```yaml\nresources:\n org:\n type: equinix:metal:Organization\n properties:\n name: Foo Organization\n address:\n address: org street\n city: london\n country: GB\n zipCode: \"12345\"\n description: An organization\noutputs:\n org: ${org.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing organization ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:metal/organization:Organization equinix_metal_organization {existing_organization_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Provides a resource to manage organization resource in Equinix Metal.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst orgResource = new equinix.metal.Organization(\"org\", {\n name: \"Foo Organization\",\n address: {\n address: \"org street\",\n city: \"london\",\n country: \"GB\",\n zipCode: \"12345\",\n },\n description: \"An organization\",\n});\nexport const org = orgResource.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\norg_resource = equinix.metal.Organization(\"org\",\n name=\"Foo Organization\",\n address=equinix.metal.OrganizationAddressArgs(\n address=\"org street\",\n city=\"london\",\n country=\"GB\",\n zip_code=\"12345\",\n ),\n description=\"An organization\")\npulumi.export(\"org\", org_resource.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\torgResource, err := metal.NewOrganization(ctx, \"org\", \u0026metal.OrganizationArgs{\n\t\t\tName: pulumi.String(\"Foo Organization\"),\n\t\t\tAddress: \u0026metal.OrganizationAddressArgs{\n\t\t\t\tAddress: pulumi.String(\"org street\"),\n\t\t\t\tCity: pulumi.String(\"london\"),\n\t\t\t\tCountry: pulumi.String(\"GB\"),\n\t\t\t\tZipCode: pulumi.String(\"12345\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"An organization\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"org\", orgResource.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var orgResource = new Equinix.Metal.Organization(\"org\", new()\n {\n Name = \"Foo Organization\",\n Address = new Equinix.Metal.Inputs.OrganizationAddressArgs\n {\n Address = \"org street\",\n City = \"london\",\n Country = \"GB\",\n ZipCode = \"12345\",\n },\n Description = \"An organization\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"org\"] = orgResource.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.metal.Organization;\nimport com.equinix.pulumi.metal.OrganizationArgs;\nimport com.equinix.pulumi.metal.inputs.OrganizationAddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var orgResource = new Organization(\"orgResource\", OrganizationArgs.builder() \n .name(\"Foo Organization\")\n .address(OrganizationAddressArgs.builder()\n .address(\"org street\")\n .city(\"london\")\n .country(\"GB\")\n .zipCode(\"12345\")\n .build())\n .description(\"An organization\")\n .build());\n\n ctx.export(\"org\", orgResource.id());\n }\n}\n```\n```yaml\nresources:\n org:\n type: equinix:metal:Organization\n properties:\n name: Foo Organization\n address:\n address: org street\n city: london\n country: GB\n zipCode: \"12345\"\n description: An organization\noutputs:\n org: ${org.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing organization ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:metal/organization:Organization equinix_metal_organization {existing_organization_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"address": {
"$ref": "#/types/equinix:metal/OrganizationAddress:OrganizationAddress",
@@ -12110,7 +12993,7 @@
}
},
"equinix:metal/organizationMember:OrganizationMember": {
- "description": "{{% examples %}}\nManage the membership of existing and new invitees within an Equinix Metal organization and its projects.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst organizationId = config.require(\"organizationId\");\nconst projectId = config.require(\"projectId\");\nconst userEmailAddress = config.require(\"userEmailAddress\");\nconst member = new equinix.metal.OrganizationMember(\"member\", {\n invitee: userEmailAddress,\n roles: [\"limited_collaborator\"],\n projectsIds: [projectId],\n organizationId: organizationId,\n});\nexport const memberId = member.id;\nexport const memberState = member.state;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\norganization_id = config.require(\"organizationId\")\nproject_id = config.require(\"projectId\")\nuser_email_address = config.require(\"userEmailAddress\")\nmember = equinix.metal.OrganizationMember(\"member\",\n invitee=user_email_address,\n roles=[\"limited_collaborator\"],\n projects_ids=[project_id],\n organization_id=organization_id)\npulumi.export(\"memberId\", member.id)\npulumi.export(\"memberState\", member.state)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\torganizationId := cfg.Require(\"organizationId\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tuserEmailAddress := cfg.Require(\"userEmailAddress\")\n\t\tmember, err := metal.NewOrganizationMember(ctx, \"member\", \u0026metal.OrganizationMemberArgs{\n\t\t\tInvitee: pulumi.String(userEmailAddress),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"limited_collaborator\"),\n\t\t\t},\n\t\t\tProjectsIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(projectId),\n\t\t\t},\n\t\t\tOrganizationId: pulumi.String(organizationId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"memberId\", member.ID())\n\t\tctx.Export(\"memberState\", member.State)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var organizationId = config.Require(\"organizationId\");\n var projectId = config.Require(\"projectId\");\n var userEmailAddress = config.Require(\"userEmailAddress\");\n var member = new Equinix.Metal.OrganizationMember(\"member\", new()\n {\n Invitee = userEmailAddress,\n Roles = new[]\n {\n \"limited_collaborator\",\n },\n ProjectsIds = new[]\n {\n projectId,\n },\n OrganizationId = organizationId,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"memberId\"] = member.Id,\n [\"memberState\"] = member.State,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.OrganizationMember;\nimport com.equinix.pulumi.metal.OrganizationMemberArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var organizationId = config.get(\"organizationId\").get();\n final var projectId = config.get(\"projectId\").get();\n final var userEmailAddress = config.get(\"userEmailAddress\").get();\n var member = new OrganizationMember(\"member\", OrganizationMemberArgs.builder() \n .invitee(userEmailAddress)\n .roles(\"limited_collaborator\")\n .projectsIds(projectId)\n .organizationId(organizationId)\n .build());\n\n ctx.export(\"memberId\", member.id());\n ctx.export(\"memberState\", member.state());\n }\n}\n```\n```yaml\nconfig:\n organizationId:\n type: string\n projectId:\n type: string\n userEmailAddress:\n type: string\nresources:\n member:\n type: equinix:metal:OrganizationMember\n properties:\n invitee: ${userEmailAddress}\n roles:\n - limited_collaborator\n projectsIds:\n - ${projectId}\n organizationId: ${organizationId}\noutputs:\n memberId: ${member.id}\n memberState: ${member.state}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using the `invitee` and `organization_id` as colon separated arguments: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:metal/organizationMember:OrganizationMember resource_name {invitee}:{organization_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Manage the membership of existing and new invitees within an Equinix Metal organization and its projects.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst organizationId = config.require(\"organizationId\");\nconst projectId = config.require(\"projectId\");\nconst userEmailAddress = config.require(\"userEmailAddress\");\nconst member = new equinix.metal.OrganizationMember(\"member\", {\n invitee: userEmailAddress,\n roles: [\"limited_collaborator\"],\n projectsIds: [projectId],\n organizationId: organizationId,\n});\nexport const memberId = member.id;\nexport const memberState = member.state;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\norganization_id = config.require(\"organizationId\")\nproject_id = config.require(\"projectId\")\nuser_email_address = config.require(\"userEmailAddress\")\nmember = equinix.metal.OrganizationMember(\"member\",\n invitee=user_email_address,\n roles=[\"limited_collaborator\"],\n projects_ids=[project_id],\n organization_id=organization_id)\npulumi.export(\"memberId\", member.id)\npulumi.export(\"memberState\", member.state)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\torganizationId := cfg.Require(\"organizationId\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tuserEmailAddress := cfg.Require(\"userEmailAddress\")\n\t\tmember, err := metal.NewOrganizationMember(ctx, \"member\", \u0026metal.OrganizationMemberArgs{\n\t\t\tInvitee: pulumi.String(userEmailAddress),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"limited_collaborator\"),\n\t\t\t},\n\t\t\tProjectsIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(projectId),\n\t\t\t},\n\t\t\tOrganizationId: pulumi.String(organizationId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"memberId\", member.ID())\n\t\tctx.Export(\"memberState\", member.State)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var organizationId = config.Require(\"organizationId\");\n var projectId = config.Require(\"projectId\");\n var userEmailAddress = config.Require(\"userEmailAddress\");\n var member = new Equinix.Metal.OrganizationMember(\"member\", new()\n {\n Invitee = userEmailAddress,\n Roles = new[]\n {\n \"limited_collaborator\",\n },\n ProjectsIds = new[]\n {\n projectId,\n },\n OrganizationId = organizationId,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"memberId\"] = member.Id,\n [\"memberState\"] = member.State,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.OrganizationMember;\nimport com.equinix.pulumi.metal.OrganizationMemberArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var organizationId = config.get(\"organizationId\").get();\n final var projectId = config.get(\"projectId\").get();\n final var userEmailAddress = config.get(\"userEmailAddress\").get();\n var member = new OrganizationMember(\"member\", OrganizationMemberArgs.builder() \n .invitee(userEmailAddress)\n .roles(\"limited_collaborator\")\n .projectsIds(projectId)\n .organizationId(organizationId)\n .build());\n\n ctx.export(\"memberId\", member.id());\n ctx.export(\"memberState\", member.state());\n }\n}\n```\n```yaml\nconfig:\n organizationId:\n type: string\n projectId:\n type: string\n userEmailAddress:\n type: string\nresources:\n member:\n type: equinix:metal:OrganizationMember\n properties:\n invitee: ${userEmailAddress}\n roles:\n - limited_collaborator\n projectsIds:\n - ${projectId}\n organizationId: ${organizationId}\noutputs:\n memberId: ${member.id}\n memberState: ${member.state}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using the `invitee` and `organization_id` as colon separated arguments:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:metal/organizationMember:OrganizationMember resource_name {invitee}:{organization_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"created": {
"type": "string",
@@ -12268,7 +13151,7 @@
}
},
"equinix:metal/port:Port": {
- "description": "{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst portId = config.require(\"portId\");\nconst org = new equinix.metal.Port(\"org\", {\n portId: portId,\n bonded: true,\n layer2: true,\n});\nexport const portType = port.type;\nexport const portBondedNetworkType = port.networkType;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nport_id = config.require(\"portId\")\norg = equinix.metal.Port(\"org\",\n port_id=port_id,\n bonded=True,\n layer2=True)\npulumi.export(\"portType\", port[\"type\"])\npulumi.export(\"portBondedNetworkType\", port[\"networkType\"])\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tportId := cfg.Require(\"portId\")\n\t\t_, err := metal.NewPort(ctx, \"org\", \u0026metal.PortArgs{\n\t\t\tPortId: pulumi.String(portId),\n\t\t\tBonded: pulumi.Bool(true),\n\t\t\tLayer2: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"portType\", port.Type)\n\t\tctx.Export(\"portBondedNetworkType\", port.NetworkType)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var portId = config.Require(\"portId\");\n var org = new Equinix.Metal.Port(\"org\", new()\n {\n PortId = portId,\n Bonded = true,\n Layer2 = true,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"portType\"] = port.Type,\n [\"portBondedNetworkType\"] = port.NetworkType,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.metal.Port;\nimport com.equinix.pulumi.metal.PortArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var portId = config.get(\"portId\").get();\n final var vlanId = config.get(\"vlanId\").get();\n var port = new Port(\"port\", PortArgs.builder() \n .portId(portId)\n .bonded(true)\n .layer2(false)\n .vlanIds(vlanId)\n .build());\n\n ctx.export(\"portType\", port.type());\n ctx.export(\"portBondedNetworkType\", port.networkType());\n }\n}\n```\n```yaml\nconfig:\n portId:\n type: string\nresources:\n org:\n type: equinix:metal:Port\n properties:\n portId: ${portId}\n bonded: true\n layer2: true\noutputs:\n portType: ${port.type}\n portBondedNetworkType: ${port.networkType}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst portId = config.require(\"portId\");\nconst org = new equinix.metal.Port(\"org\", {\n portId: portId,\n bonded: true,\n layer2: true,\n});\nexport const portType = port.type;\nexport const portBondedNetworkType = port.networkType;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nport_id = config.require(\"portId\")\norg = equinix.metal.Port(\"org\",\n port_id=port_id,\n bonded=True,\n layer2=True)\npulumi.export(\"portType\", port[\"type\"])\npulumi.export(\"portBondedNetworkType\", port[\"networkType\"])\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tportId := cfg.Require(\"portId\")\n\t\t_, err := metal.NewPort(ctx, \"org\", \u0026metal.PortArgs{\n\t\t\tPortId: pulumi.String(portId),\n\t\t\tBonded: pulumi.Bool(true),\n\t\t\tLayer2: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"portType\", port.Type)\n\t\tctx.Export(\"portBondedNetworkType\", port.NetworkType)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var portId = config.Require(\"portId\");\n var org = new Equinix.Metal.Port(\"org\", new()\n {\n PortId = portId,\n Bonded = true,\n Layer2 = true,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"portType\"] = port.Type,\n [\"portBondedNetworkType\"] = port.NetworkType,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.metal.Port;\nimport com.equinix.pulumi.metal.PortArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var portId = config.get(\"portId\").get();\n final var vlanId = config.get(\"vlanId\").get();\n var port = new Port(\"port\", PortArgs.builder() \n .portId(portId)\n .bonded(true)\n .layer2(false)\n .vlanIds(vlanId)\n .build());\n\n ctx.export(\"portType\", port.type());\n ctx.export(\"portBondedNetworkType\", port.networkType());\n }\n}\n```\n```yaml\nconfig:\n portId:\n type: string\nresources:\n org:\n type: equinix:metal:Port\n properties:\n portId: ${portId}\n bonded: true\n layer2: true\noutputs:\n portType: ${port.type}\n portBondedNetworkType: ${port.networkType}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"bondId": {
"type": "string",
@@ -12458,7 +13341,7 @@
}
},
"equinix:metal/portVlanAttachment:PortVlanAttachment": {
- "description": "{{% examples %}}\nProvides a resource to attach device ports to VLANs.\n\nDevice and VLAN must be in the same metro.\n\nIf you need this resource to add the port back to bond on removal, set `force_bond = true`.\n\nTo learn more about Layer 2 networking in Equinix Metal, refer to\n\n* \u003chttps://metal.equinix.com/developers/docs/networking/layer2/\u003e\n* \u003chttps://metal.equinix.com/developers/docs/networking/layer2-configs/\u003e\n\n## Attribute Referece\n\nIn addition to all arguments above, the following attributes are exported:\n\n* `id` - UUID of device port used in the assignment.\n* `vlan_id` - UUID of VLAN API resource.\n* `port_id` - UUID of device port.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst deviceId = config.require(\"deviceId\");\nconst portName = config.get(\"portName\") || \"eth1\";\nconst vxlanId = config.getNumber(\"vxlanId\") || 1004;\nconst attach = new equinix.metal.PortVlanAttachment(\"attach\", {\n deviceId: deviceId,\n portName: portName,\n vlanVnid: vxlanId,\n});\nexport const attachId = attach.id;\nexport const portId = attach.portId;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndevice_id = config.require(\"deviceId\")\nport_name = config.get(\"portName\")\nif port_name is None:\n port_name = \"eth1\"\nvxlan_id = config.get_int(\"vxlanId\")\nif vxlan_id is None:\n vxlan_id = 1004\nattach = equinix.metal.PortVlanAttachment(\"attach\",\n device_id=device_id,\n port_name=port_name,\n vlan_vnid=vxlan_id)\npulumi.export(\"attachId\", attach.id)\npulumi.export(\"portId\", attach.port_id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdeviceId := cfg.Require(\"deviceId\")\n\t\tportName := \"eth1\"\n\t\tif param := cfg.Get(\"portName\"); param != \"\" {\n\t\t\tportName = param\n\t\t}\n\t\tvxlanId := 1004\n\t\tif param := cfg.GetInt(\"vxlanId\"); param != 0 {\n\t\t\tvxlanId = param\n\t\t}\n\t\tattach, err := metal.NewPortVlanAttachment(ctx, \"attach\", \u0026metal.PortVlanAttachmentArgs{\n\t\t\tDeviceId: pulumi.String(deviceId),\n\t\t\tPortName: pulumi.String(portName),\n\t\t\tVlanVnid: pulumi.Int(vxlanId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"attachId\", attach.ID())\n\t\tctx.Export(\"portId\", attach.PortId)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var deviceId = config.Require(\"deviceId\");\n var portName = config.Get(\"portName\") ?? \"eth1\";\n var vxlanId = config.GetNumber(\"vxlanId\") ?? 1004;\n var attach = new Equinix.Metal.PortVlanAttachment(\"attach\", new()\n {\n DeviceId = deviceId,\n PortName = portName,\n VlanVnid = vxlanId,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"attachId\"] = attach.Id,\n [\"portId\"] = attach.PortId,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.PortVlanAttachment;\nimport com.equinix.pulumi.metal.PortVlanAttachmentArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var deviceId = config.get(\"deviceId\").get();\n final var portName = config.get(\"portName\").orElse(\"eth1\");\n final var vxlanId = Integer.parseInt(config.get(\"vxlanId\").orElse(\"1004\"));\n\n var attach = new PortVlanAttachment(\"attach\", PortVlanAttachmentArgs.builder() \n .deviceId(deviceId)\n .portName(portName)\n .vlanVnid(vxlanId)\n .build());\n\n ctx.export(\"attachId\", attach.id());\n ctx.export(\"portId\", attach.portId());\n }\n}\n```\n```yaml\nconfig:\n deviceId:\n type: string\n portName:\n type: string\n default: eth1\n vxlanId:\n type: integer\n default: 1004\nresources:\n attach:\n type: equinix:metal:PortVlanAttachment\n properties:\n deviceId: ${deviceId}\n portName: ${portName}\n vlanVnid: ${vxlanId}\noutputs:\n attachId: ${attach.id}\n portId: ${attach.portId}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "Provides a resource to attach device ports to VLANs.\n\nDevice and VLAN must be in the same metro.\n\nIf you need this resource to add the port back to bond on removal, set `force_bond = true`.\n\nTo learn more about Layer 2 networking in Equinix Metal, refer to\n\n* \u003chttps://metal.equinix.com/developers/docs/networking/layer2/\u003e\n* \u003chttps://metal.equinix.com/developers/docs/networking/layer2-configs/\u003e\n\n## Attribute Referece\n\nIn addition to all arguments above, the following attributes are exported:\n\n* `id` - UUID of device port used in the assignment.\n* `vlan_id` - UUID of VLAN API resource.\n* `port_id` - UUID of device port.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst deviceId = config.require(\"deviceId\");\nconst portName = config.get(\"portName\") || \"eth1\";\nconst vxlanId = config.getNumber(\"vxlanId\") || 1004;\nconst attach = new equinix.metal.PortVlanAttachment(\"attach\", {\n deviceId: deviceId,\n portName: portName,\n vlanVnid: vxlanId,\n});\nexport const attachId = attach.id;\nexport const portId = attach.portId;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndevice_id = config.require(\"deviceId\")\nport_name = config.get(\"portName\")\nif port_name is None:\n port_name = \"eth1\"\nvxlan_id = config.get_int(\"vxlanId\")\nif vxlan_id is None:\n vxlan_id = 1004\nattach = equinix.metal.PortVlanAttachment(\"attach\",\n device_id=device_id,\n port_name=port_name,\n vlan_vnid=vxlan_id)\npulumi.export(\"attachId\", attach.id)\npulumi.export(\"portId\", attach.port_id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdeviceId := cfg.Require(\"deviceId\")\n\t\tportName := \"eth1\"\n\t\tif param := cfg.Get(\"portName\"); param != \"\" {\n\t\t\tportName = param\n\t\t}\n\t\tvxlanId := 1004\n\t\tif param := cfg.GetInt(\"vxlanId\"); param != 0 {\n\t\t\tvxlanId = param\n\t\t}\n\t\tattach, err := metal.NewPortVlanAttachment(ctx, \"attach\", \u0026metal.PortVlanAttachmentArgs{\n\t\t\tDeviceId: pulumi.String(deviceId),\n\t\t\tPortName: pulumi.String(portName),\n\t\t\tVlanVnid: pulumi.Int(vxlanId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"attachId\", attach.ID())\n\t\tctx.Export(\"portId\", attach.PortId)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var deviceId = config.Require(\"deviceId\");\n var portName = config.Get(\"portName\") ?? \"eth1\";\n var vxlanId = config.GetNumber(\"vxlanId\") ?? 1004;\n var attach = new Equinix.Metal.PortVlanAttachment(\"attach\", new()\n {\n DeviceId = deviceId,\n PortName = portName,\n VlanVnid = vxlanId,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"attachId\"] = attach.Id,\n [\"portId\"] = attach.PortId,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.PortVlanAttachment;\nimport com.equinix.pulumi.metal.PortVlanAttachmentArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var deviceId = config.get(\"deviceId\").get();\n final var portName = config.get(\"portName\").orElse(\"eth1\");\n final var vxlanId = Integer.parseInt(config.get(\"vxlanId\").orElse(\"1004\"));\n\n var attach = new PortVlanAttachment(\"attach\", PortVlanAttachmentArgs.builder() \n .deviceId(deviceId)\n .portName(portName)\n .vlanVnid(vxlanId)\n .build());\n\n ctx.export(\"attachId\", attach.id());\n ctx.export(\"portId\", attach.portId());\n }\n}\n```\n```yaml\nconfig:\n deviceId:\n type: string\n portName:\n type: string\n default: eth1\n vxlanId:\n type: integer\n default: 1004\nresources:\n attach:\n type: equinix:metal:PortVlanAttachment\n properties:\n deviceId: ${deviceId}\n portName: ${portName}\n vlanVnid: ${vxlanId}\noutputs:\n attachId: ${attach.id}\n portId: ${attach.portId}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"deviceId": {
"type": "string",
@@ -12567,7 +13450,7 @@
}
},
"equinix:metal/project:Project": {
- "description": "{{% examples %}}\nProvides an Equinix Metal project resource to allow you manage devices\nin your projects.\n\n\u003e **NOTE:** Keep in mind that Equinix Metal invoicing is per project, so creating many\n`equinix.metal.Project` resources will affect the rendered invoice. If you want to keep your\nEquinix Metal bill simple and easy to review, please re-use your existing projects.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst organizationId = config.require(\"organizationId\");\nconst name = config.get(\"name\") || \"Default Project\";\nconst projectResource = new equinix.metal.Project(\"project\", {\n name: name,\n organizationId: organizationId,\n});\nexport const projectId = projectResource.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\norganization_id = config.require(\"organizationId\")\nname = config.get(\"name\")\nif name is None:\n name = \"Default Project\"\nproject_resource = equinix.metal.Project(\"project\",\n name=name,\n organization_id=organization_id)\npulumi.export(\"projectId\", project_resource.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\torganizationId := cfg.Require(\"organizationId\")\n\t\tname := \"Default Project\"\n\t\tif param := cfg.Get(\"name\"); param != \"\" {\n\t\t\tname = param\n\t\t}\n\t\tprojectResource, err := metal.NewProject(ctx, \"project\", \u0026metal.ProjectArgs{\n\t\t\tName: pulumi.String(name),\n\t\t\tOrganizationId: pulumi.String(organizationId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"projectId\", projectResource.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var organizationId = config.Require(\"organizationId\");\n var name = config.Get(\"name\") ?? \"Default Project\";\n var projectResource = new Equinix.Metal.Project(\"project\", new()\n {\n Name = name,\n OrganizationId = organizationId,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"projectId\"] = projectResource.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.Project;\nimport com.equinix.pulumi.metal.ProjectArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var organizationId = config.get(\"organizationId\").get();\n final var name = config.get(\"name\").orElse(\"Default Project\");\n var projectResource = new Project(\"projectResource\", ProjectArgs.builder() \n .name(name)\n .organizationId(organizationId)\n .build());\n\n ctx.export(\"projectId\", projectResource.id());\n }\n}\n```\n```yaml\nconfig:\n organizationId:\n type: string\n name:\n type: string\n default: Default Project\nresources:\n project:\n type: equinix:metal:Project\n properties:\n name: ${name}\n organizationId: ${organizationId}\noutputs:\n projectId: ${project.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing project ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:metal/project:Project equinix_metal_project {existing_project_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Provides an Equinix Metal project resource to allow you manage devices\nin your projects.\n\n\u003e **NOTE:** Keep in mind that Equinix Metal invoicing is per project, so creating many\n`equinix.metal.Project` resources will affect the rendered invoice. If you want to keep your\nEquinix Metal bill simple and easy to review, please re-use your existing projects.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst organizationId = config.require(\"organizationId\");\nconst name = config.get(\"name\") || \"Default Project\";\nconst projectResource = new equinix.metal.Project(\"project\", {\n name: name,\n organizationId: organizationId,\n});\nexport const projectId = projectResource.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\norganization_id = config.require(\"organizationId\")\nname = config.get(\"name\")\nif name is None:\n name = \"Default Project\"\nproject_resource = equinix.metal.Project(\"project\",\n name=name,\n organization_id=organization_id)\npulumi.export(\"projectId\", project_resource.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\torganizationId := cfg.Require(\"organizationId\")\n\t\tname := \"Default Project\"\n\t\tif param := cfg.Get(\"name\"); param != \"\" {\n\t\t\tname = param\n\t\t}\n\t\tprojectResource, err := metal.NewProject(ctx, \"project\", \u0026metal.ProjectArgs{\n\t\t\tName: pulumi.String(name),\n\t\t\tOrganizationId: pulumi.String(organizationId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"projectId\", projectResource.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var organizationId = config.Require(\"organizationId\");\n var name = config.Get(\"name\") ?? \"Default Project\";\n var projectResource = new Equinix.Metal.Project(\"project\", new()\n {\n Name = name,\n OrganizationId = organizationId,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"projectId\"] = projectResource.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.Project;\nimport com.equinix.pulumi.metal.ProjectArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var organizationId = config.get(\"organizationId\").get();\n final var name = config.get(\"name\").orElse(\"Default Project\");\n var projectResource = new Project(\"projectResource\", ProjectArgs.builder() \n .name(name)\n .organizationId(organizationId)\n .build());\n\n ctx.export(\"projectId\", projectResource.id());\n }\n}\n```\n```yaml\nconfig:\n organizationId:\n type: string\n name:\n type: string\n default: Default Project\nresources:\n project:\n type: equinix:metal:Project\n properties:\n name: ${name}\n organizationId: ${organizationId}\noutputs:\n projectId: ${project.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing project ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:metal/project:Project equinix_metal_project {existing_project_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"backendTransfer": {
"type": "boolean",
@@ -12665,7 +13548,7 @@
}
},
"equinix:metal/projectApiKey:ProjectApiKey": {
- "description": "{{% examples %}}\nUse this resource to create Metal Project API Key resources in Equinix Metal. Project API keys can\nbe used to create and read resources in a single project. Each API key contains a token which can\nbe used for authentication in Equinix Metal HTTP API (in HTTP request header `X-Auth-Token`).\n\nRead-only keys only allow to list and view existing resources, read-write keys can also be used to\ncreate resources.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst readOnly = config.getBoolean(\"readOnly\") || false;\nconst apiKey = new equinix.metal.ProjectApiKey(\"apiKey\", {\n projectId: projectId,\n description: \"A project level API Key\",\n readOnly: readOnly,\n});\nexport const apiKeyToken = apiKey.token;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nread_only = config.get_bool(\"readOnly\")\nif read_only is None:\n read_only = False\napi_key = equinix.metal.ProjectApiKey(\"apiKey\",\n project_id=project_id,\n description=\"A project level API Key\",\n read_only=read_only)\npulumi.export(\"apiKeyToken\", api_key.token)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\treadOnly := false\n\t\tif param := cfg.GetBool(\"readOnly\"); param {\n\t\t\treadOnly = param\n\t\t}\n\t\tapiKey, err := metal.NewProjectApiKey(ctx, \"apiKey\", \u0026metal.ProjectApiKeyArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tDescription: pulumi.String(\"A project level API Key\"),\n\t\t\tReadOnly: pulumi.Bool(readOnly),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"apiKeyToken\", apiKey.Token)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var readOnly = config.GetBoolean(\"readOnly\") ?? false;\n var apiKey = new Equinix.Metal.ProjectApiKey(\"apiKey\", new()\n {\n ProjectId = projectId,\n Description = \"A project level API Key\",\n ReadOnly = readOnly,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"apiKeyToken\"] = apiKey.Token,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.ProjectApiKey;\nimport com.equinix.pulumi.metal.ProjectApiKeyArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var readOnly = config.getBoolean(\"readOnly\").orElse(false);\n var apiKey = new ProjectApiKey(\"apiKey\", ProjectApiKeyArgs.builder() \n .projectId(projectId)\n .description(\"A project level API Key\")\n .readOnly(readOnly)\n .build());\n\n ctx.export(\"apiKeyToken\", apiKey.token());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n readOnly:\n type: boolean\n default: false\nresources:\n apiKey:\n type: equinix:metal:ProjectApiKey\n properties:\n projectId: ${projectId}\n description: A project level API Key\n readOnly: ${readOnly}\noutputs:\n apiKeyToken: ${apiKey.token}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "Use this resource to create Metal Project API Key resources in Equinix Metal. Project API keys can\nbe used to create and read resources in a single project. Each API key contains a token which can\nbe used for authentication in Equinix Metal HTTP API (in HTTP request header `X-Auth-Token`).\n\nRead-only keys only allow to list and view existing resources, read-write keys can also be used to\ncreate resources.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst readOnly = config.getBoolean(\"readOnly\") || false;\nconst apiKey = new equinix.metal.ProjectApiKey(\"apiKey\", {\n projectId: projectId,\n description: \"A project level API Key\",\n readOnly: readOnly,\n});\nexport const apiKeyToken = apiKey.token;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nread_only = config.get_bool(\"readOnly\")\nif read_only is None:\n read_only = False\napi_key = equinix.metal.ProjectApiKey(\"apiKey\",\n project_id=project_id,\n description=\"A project level API Key\",\n read_only=read_only)\npulumi.export(\"apiKeyToken\", api_key.token)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\treadOnly := false\n\t\tif param := cfg.GetBool(\"readOnly\"); param {\n\t\t\treadOnly = param\n\t\t}\n\t\tapiKey, err := metal.NewProjectApiKey(ctx, \"apiKey\", \u0026metal.ProjectApiKeyArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tDescription: pulumi.String(\"A project level API Key\"),\n\t\t\tReadOnly: pulumi.Bool(readOnly),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"apiKeyToken\", apiKey.Token)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var readOnly = config.GetBoolean(\"readOnly\") ?? false;\n var apiKey = new Equinix.Metal.ProjectApiKey(\"apiKey\", new()\n {\n ProjectId = projectId,\n Description = \"A project level API Key\",\n ReadOnly = readOnly,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"apiKeyToken\"] = apiKey.Token,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.ProjectApiKey;\nimport com.equinix.pulumi.metal.ProjectApiKeyArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var readOnly = config.getBoolean(\"readOnly\").orElse(false);\n var apiKey = new ProjectApiKey(\"apiKey\", ProjectApiKeyArgs.builder() \n .projectId(projectId)\n .description(\"A project level API Key\")\n .readOnly(readOnly)\n .build());\n\n ctx.export(\"apiKeyToken\", apiKey.token());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n readOnly:\n type: boolean\n default: false\nresources:\n apiKey:\n type: equinix:metal:ProjectApiKey\n properties:\n projectId: ${projectId}\n description: A project level API Key\n readOnly: ${readOnly}\noutputs:\n apiKeyToken: ${apiKey.token}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"description": {
"type": "string",
@@ -12741,7 +13624,7 @@
}
},
"equinix:metal/projectSshKey:ProjectSshKey": {
- "description": "{{% examples %}}\nProvides an Equinix Metal project SSH key resource to manage project-specific SSH keys.\nProject SSH keys will only be populated onto servers that belong to that project, in contrast to\nUser SSH Keys.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as fs from \"fs\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst sshKey = new equinix.metal.ProjectSshKey(\"sshKey\", {\n projectId: projectId,\n name: \"johnKent\",\n publicKey: fs.readFileSync(\"/Users/John/.ssh/metal_rsa.pub\"),\n});\nexport const sshKeyId = sshKey.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nssh_key = equinix.metal.ProjectSshKey(\"sshKey\",\n project_id=project_id,\n name=\"johnKent\",\n public_key=(lambda path: open(path).read())(\"/Users/John/.ssh/metal_rsa.pub\"))\npulumi.export(\"sshKeyId\", ssh_key.id)\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tsshKey, err := metal.NewProjectSshKey(ctx, \"sshKey\", \u0026metal.ProjectSshKeyArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tName: pulumi.String(\"johnKent\"),\n\t\t\tPublicKey: readFileOrPanic(\"/Users/John/.ssh/metal_rsa.pub\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sshKeyId\", sshKey.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var sshKey = new Equinix.Metal.ProjectSshKey(\"sshKey\", new()\n {\n ProjectId = projectId,\n Name = \"johnKent\",\n PublicKey = File.ReadAllText(\"/Users/John/.ssh/metal_rsa.pub\"),\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sshKeyId\"] = sshKey.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.ProjectSshKey;\nimport com.equinix.pulumi.metal.ProjectSshKeyArgs;\n\nimport java.io.IOException;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n\n String content = null;\n try {\n content = Files.readString(Paths.get(\"/Users/John/.ssh/metal_rsa.pub\"));\n } catch (IOException e) {\n e.printStackTrace();\n }\n\n var sshKey = new ProjectSshKey(\"sshKey\", ProjectSshKeyArgs.builder() \n .projectId(projectId)\n .name(\"johnKent\")\n .publicKey(content)\n .build());\n\n ctx.export(\"sshKeyId\", sshKey.id());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\nresources:\n sshKey:\n type: equinix:metal:ProjectSshKey\n properties:\n projectId: ${projectId}\n name: johnKent\n publicKey:\n fn::readFile: /Users/John/.ssh/metal_rsa.pub\noutputs:\n sshKeyId: ${sshKey.id}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "Provides an Equinix Metal project SSH key resource to manage project-specific SSH keys.\nProject SSH keys will only be populated onto servers that belong to that project, in contrast to\nUser SSH Keys.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as fs from \"fs\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst sshKey = new equinix.metal.ProjectSshKey(\"sshKey\", {\n projectId: projectId,\n name: \"johnKent\",\n publicKey: fs.readFileSync(\"/Users/John/.ssh/metal_rsa.pub\"),\n});\nexport const sshKeyId = sshKey.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nssh_key = equinix.metal.ProjectSshKey(\"sshKey\",\n project_id=project_id,\n name=\"johnKent\",\n public_key=(lambda path: open(path).read())(\"/Users/John/.ssh/metal_rsa.pub\"))\npulumi.export(\"sshKeyId\", ssh_key.id)\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tsshKey, err := metal.NewProjectSshKey(ctx, \"sshKey\", \u0026metal.ProjectSshKeyArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tName: pulumi.String(\"johnKent\"),\n\t\t\tPublicKey: readFileOrPanic(\"/Users/John/.ssh/metal_rsa.pub\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sshKeyId\", sshKey.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var sshKey = new Equinix.Metal.ProjectSshKey(\"sshKey\", new()\n {\n ProjectId = projectId,\n Name = \"johnKent\",\n PublicKey = File.ReadAllText(\"/Users/John/.ssh/metal_rsa.pub\"),\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sshKeyId\"] = sshKey.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.ProjectSshKey;\nimport com.equinix.pulumi.metal.ProjectSshKeyArgs;\n\nimport java.io.IOException;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n\n String content = null;\n try {\n content = Files.readString(Paths.get(\"/Users/John/.ssh/metal_rsa.pub\"));\n } catch (IOException e) {\n e.printStackTrace();\n }\n\n var sshKey = new ProjectSshKey(\"sshKey\", ProjectSshKeyArgs.builder() \n .projectId(projectId)\n .name(\"johnKent\")\n .publicKey(content)\n .build());\n\n ctx.export(\"sshKeyId\", sshKey.id());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\nresources:\n sshKey:\n type: equinix:metal:ProjectSshKey\n properties:\n projectId: ${projectId}\n name: johnKent\n publicKey:\n fn::readFile: /Users/John/.ssh/metal_rsa.pub\noutputs:\n sshKeyId: ${sshKey.id}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"created": {
"type": "string",
@@ -12788,13 +13671,11 @@
},
"projectId": {
"type": "string",
- "description": "The ID of parent project.\n",
- "willReplaceOnChanges": true
+ "description": "The ID of parent project.\n"
},
"publicKey": {
"type": "string",
- "description": "The public key. If this is a file, it can be read using the file interpolation function.\n",
- "willReplaceOnChanges": true
+ "description": "The public key. If this is a file, it can be read using the file interpolation function.\n"
}
},
"requiredInputs": [
@@ -12822,13 +13703,11 @@
},
"projectId": {
"type": "string",
- "description": "The ID of parent project.\n",
- "willReplaceOnChanges": true
+ "description": "The ID of parent project.\n"
},
"publicKey": {
"type": "string",
- "description": "The public key. If this is a file, it can be read using the file interpolation function.\n",
- "willReplaceOnChanges": true
+ "description": "The public key. If this is a file, it can be read using the file interpolation function.\n"
},
"updated": {
"type": "string",
@@ -12839,7 +13718,7 @@
}
},
"equinix:metal/reservedIpBlock:ReservedIpBlock": {
- "description": "{{% examples %}}\nProvides a resource to create and manage blocks of reserved IP addresses in a project.\n\nWhen a user provisions first device in a metro, Equinix Metal API automatically allocates IPv6/56 and private IPv4/25 blocks.\nThe new device then gets IPv6 and private IPv4 addresses from those block. It also gets a public IPv4/31 address.\nEvery new device in the project and metro will automatically get IPv6 and private IPv4 addresses from these pre-allocated blocks.\nThe IPv6 and private IPv4 blocks can't be created, only imported. With this resource, it's possible to create either public IPv4 blocks or global IPv4 blocks.\n\nPublic blocks are allocated in a metro. Addresses from public blocks can only be assigned to devices in the metro. Public blocks can have mask from /24 (256 addresses) to /32 (1 address). If you create public block with this resource, you must fill the metro argument.\n\nAddresses from global blocks can be assigned in any metro. Global blocks can have mask from /30 (4 addresses), to /32 (1 address). If you create global block with this resource, you must specify type = \"global_ipv4\" and you must omit the metro argument.\n\nOnce IP block is allocated or imported, an address from it can be assigned to device with the `equinix.metal.IpAttachment` resource.\n\n\u003e VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst metro = config.get(\"metro\") || \"FR\";\nconst type = config.get(\"type\") || \"public_ipv4\";\nconst quantity = config.getNumber(\"quantity\") || 1;\nconst ipBlock = new equinix.metal.ReservedIpBlock(\"ipBlock\", {\n projectId: projectId,\n type: \"public_ipv4\",\n quantity: quantity,\n metro: metro,\n});\nexport const ipBlockId = ipBlock.id;\nexport const ipBlockSubent = ipBlock.cidrNotation;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"FR\"\ntype = config.get(\"type\")\nif type is None:\n type = \"public_ipv4\"\nquantity = config.get_int(\"quantity\")\nif quantity is None:\n quantity = 1\nip_block = equinix.metal.ReservedIpBlock(\"ipBlock\",\n project_id=project_id,\n type=\"public_ipv4\",\n quantity=quantity,\n metro=metro)\npulumi.export(\"ipBlockId\", ip_block.id)\npulumi.export(\"ipBlockSubent\", ip_block.cidr_notation)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tmetro := \"FR\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\t_type := \"public_ipv4\"\n\t\tif param := cfg.Get(\"type\"); param != \"\" {\n\t\t\t_type = param\n\t\t}\n\t\tquantity := 1\n\t\tif param := cfg.GetInt(\"quantity\"); param != 0 {\n\t\t\tquantity = param\n\t\t}\n\t\tipBlock, err := metal.NewReservedIpBlock(ctx, \"ipBlock\", \u0026metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tType: pulumi.String(\"public_ipv4\"),\n\t\t\tQuantity: pulumi.Int(quantity),\n\t\t\tMetro: pulumi.String(metro),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ipBlockId\", ipBlock.ID())\n\t\tctx.Export(\"ipBlockSubent\", ipBlock.CidrNotation)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var metro = config.Get(\"metro\") ?? \"FR\";\n var type = config.Get(\"type\") ?? \"public_ipv4\";\n var quantity = config.GetNumber(\"quantity\") ?? 1;\n var ipBlock = new Equinix.Metal.ReservedIpBlock(\"ipBlock\", new()\n {\n ProjectId = projectId,\n Type = \"public_ipv4\",\n Quantity = quantity,\n Metro = metro,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"ipBlockId\"] = ipBlock.Id,\n [\"ipBlockSubent\"] = ipBlock.CidrNotation,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.ReservedIpBlock;\nimport com.equinix.pulumi.metal.ReservedIpBlockArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var metro = config.get(\"metro\").orElse(\"FR\");\n final var type = config.get(\"type\").orElse(\"public_ipv4\");\n final var quantity = Integer.parseInt(config.get(\"quantity\").orElse(\"1\"));\n var ipBlock = new ReservedIpBlock(\"ipBlock\", ReservedIpBlockArgs.builder() \n .projectId(projectId)\n .type(type)\n .quantity(quantity)\n .metro(metro)\n .build());\n\n ctx.export(\"ipBlockId\", ipBlock.id());\n ctx.export(\"ipBlockSubent\", ipBlock.cidrNotation());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n metro:\n type: string\n default: FR\n type:\n type: string\n default: public_ipv4\n quantity:\n type: integer\n default: 1\nresources:\n ipBlock:\n type: equinix:metal:ReservedIpBlock\n properties:\n projectId: ${projectId}\n type: public_ipv4\n quantity: ${quantity}\n metro: ${metro}\noutputs:\n ipBlockId: ${ipBlock.id}\n ipBlockSubent: ${ipBlock.cidrNotation}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing IP reservation ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:metal/reservedIpBlock:ReservedIpBlock equinix_metal_reserved_ip_block {existing_ip_reservation_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Provides a resource to create and manage blocks of reserved IP addresses in a project.\n\nWhen a user provisions first device in a metro, Equinix Metal API automatically allocates IPv6/56 and private IPv4/25 blocks.\nThe new device then gets IPv6 and private IPv4 addresses from those block. It also gets a public IPv4/31 address.\nEvery new device in the project and metro will automatically get IPv6 and private IPv4 addresses from these pre-allocated blocks.\nThe IPv6 and private IPv4 blocks can't be created, only imported. With this resource, it's possible to create either public IPv4 blocks or global IPv4 blocks.\n\nPublic blocks are allocated in a metro. Addresses from public blocks can only be assigned to devices in the metro. Public blocks can have mask from /24 (256 addresses) to /32 (1 address). If you create public block with this resource, you must fill the metro argument.\n\nAddresses from global blocks can be assigned in any metro. Global blocks can have mask from /30 (4 addresses), to /32 (1 address). If you create global block with this resource, you must specify type = \"global_ipv4\" and you must omit the metro argument.\n\nOnce IP block is allocated or imported, an address from it can be assigned to device with the `equinix.metal.IpAttachment` resource.\n\n\u003e VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst metro = config.get(\"metro\") || \"FR\";\nconst type = config.get(\"type\") || \"public_ipv4\";\nconst quantity = config.getNumber(\"quantity\") || 1;\nconst ipBlock = new equinix.metal.ReservedIpBlock(\"ipBlock\", {\n projectId: projectId,\n type: \"public_ipv4\",\n quantity: quantity,\n metro: metro,\n});\nexport const ipBlockId = ipBlock.id;\nexport const ipBlockSubent = ipBlock.cidrNotation;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"FR\"\ntype = config.get(\"type\")\nif type is None:\n type = \"public_ipv4\"\nquantity = config.get_int(\"quantity\")\nif quantity is None:\n quantity = 1\nip_block = equinix.metal.ReservedIpBlock(\"ipBlock\",\n project_id=project_id,\n type=\"public_ipv4\",\n quantity=quantity,\n metro=metro)\npulumi.export(\"ipBlockId\", ip_block.id)\npulumi.export(\"ipBlockSubent\", ip_block.cidr_notation)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tmetro := \"FR\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\t_type := \"public_ipv4\"\n\t\tif param := cfg.Get(\"type\"); param != \"\" {\n\t\t\t_type = param\n\t\t}\n\t\tquantity := 1\n\t\tif param := cfg.GetInt(\"quantity\"); param != 0 {\n\t\t\tquantity = param\n\t\t}\n\t\tipBlock, err := metal.NewReservedIpBlock(ctx, \"ipBlock\", \u0026metal.ReservedIpBlockArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tType: pulumi.String(\"public_ipv4\"),\n\t\t\tQuantity: pulumi.Int(quantity),\n\t\t\tMetro: pulumi.String(metro),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ipBlockId\", ipBlock.ID())\n\t\tctx.Export(\"ipBlockSubent\", ipBlock.CidrNotation)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var metro = config.Get(\"metro\") ?? \"FR\";\n var type = config.Get(\"type\") ?? \"public_ipv4\";\n var quantity = config.GetNumber(\"quantity\") ?? 1;\n var ipBlock = new Equinix.Metal.ReservedIpBlock(\"ipBlock\", new()\n {\n ProjectId = projectId,\n Type = \"public_ipv4\",\n Quantity = quantity,\n Metro = metro,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"ipBlockId\"] = ipBlock.Id,\n [\"ipBlockSubent\"] = ipBlock.CidrNotation,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.ReservedIpBlock;\nimport com.equinix.pulumi.metal.ReservedIpBlockArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var metro = config.get(\"metro\").orElse(\"FR\");\n final var type = config.get(\"type\").orElse(\"public_ipv4\");\n final var quantity = Integer.parseInt(config.get(\"quantity\").orElse(\"1\"));\n var ipBlock = new ReservedIpBlock(\"ipBlock\", ReservedIpBlockArgs.builder() \n .projectId(projectId)\n .type(type)\n .quantity(quantity)\n .metro(metro)\n .build());\n\n ctx.export(\"ipBlockId\", ipBlock.id());\n ctx.export(\"ipBlockSubent\", ipBlock.cidrNotation());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n metro:\n type: string\n default: FR\n type:\n type: string\n default: public_ipv4\n quantity:\n type: integer\n default: 1\nresources:\n ipBlock:\n type: equinix:metal:ReservedIpBlock\n properties:\n projectId: ${projectId}\n type: public_ipv4\n quantity: ${quantity}\n metro: ${metro}\noutputs:\n ipBlockId: ${ipBlock.id}\n ipBlockSubent: ${ipBlock.cidrNotation}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing IP reservation ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:metal/reservedIpBlock:ReservedIpBlock equinix_metal_reserved_ip_block {existing_ip_reservation_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"address": {
"type": "string"
@@ -13139,7 +14018,7 @@
}
},
"equinix:metal/spotMarketRequest:SpotMarketRequest": {
- "description": "{{% examples %}}\nProvides an Equinix Metal Spot Market Request resource to allow you to\nmanage spot market requests on your account. For more detail on Spot Market,\nsee [this article in Equinix Metal documentation](https://metal.equinix.com/developers/docs/deploy/spot-market/).\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst metro = config.get(\"metro\") || \"FR\";\nconst request = new equinix.metal.SpotMarketRequest(\"request\", {\n projectId: projectId,\n metro: metro,\n maxBidPrice: 0.75,\n devicesMin: 1,\n devicesMax: 1,\n instanceParameters: {\n hostname: \"testspot\",\n billingCycle: \"hourly\",\n operatingSystem: \"ubuntu_20_04\",\n plan: \"c3.small.x86\",\n },\n});\nexport const requestId = request.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"FR\"\nrequest = equinix.metal.SpotMarketRequest(\"request\",\n project_id=project_id,\n metro=metro,\n max_bid_price=0.75,\n devices_min=1,\n devices_max=1,\n instance_parameters=equinix.metal.SpotMarketRequestInstanceParametersArgs(\n hostname=\"testspot\",\n billing_cycle=\"hourly\",\n operating_system=\"ubuntu_20_04\",\n plan=\"c3.small.x86\",\n ))\npulumi.export(\"requestId\", request.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tmetro := \"FR\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\trequest, err := metal.NewSpotMarketRequest(ctx, \"request\", \u0026metal.SpotMarketRequestArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tMetro: pulumi.String(metro),\n\t\t\tMaxBidPrice: pulumi.Float64(0.75),\n\t\t\tDevicesMin: pulumi.Int(1),\n\t\t\tDevicesMax: pulumi.Int(1),\n\t\t\tInstanceParameters: \u0026metal.SpotMarketRequestInstanceParametersArgs{\n\t\t\t\tHostname: pulumi.String(\"testspot\"),\n\t\t\t\tBillingCycle: pulumi.String(\"hourly\"),\n\t\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\t\tPlan: pulumi.String(\"c3.small.x86\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"requestId\", request.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var metro = config.Get(\"metro\") ?? \"FR\";\n var request = new Equinix.Metal.SpotMarketRequest(\"request\", new()\n {\n ProjectId = projectId,\n Metro = metro,\n MaxBidPrice = 0.75,\n DevicesMin = 1,\n DevicesMax = 1,\n InstanceParameters = new Equinix.Metal.Inputs.SpotMarketRequestInstanceParametersArgs\n {\n Hostname = \"testspot\",\n BillingCycle = \"hourly\",\n OperatingSystem = \"ubuntu_20_04\",\n Plan = \"c3.small.x86\",\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"requestId\"] = request.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.SpotMarketRequest;\nimport com.equinix.pulumi.metal.SpotMarketRequestArgs;\nimport com.equinix.pulumi.metal.inputs.SpotMarketRequestInstanceParametersArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var metro = config.get(\"metro\").orElse(\"FR\");\n var request = new SpotMarketRequest(\"request\", SpotMarketRequestArgs.builder() \n .projectId(projectId)\n .metro(metro)\n .maxBidPrice(0.75)\n .devicesMin(1)\n .devicesMax(1)\n .instanceParameters(SpotMarketRequestInstanceParametersArgs.builder()\n .hostname(\"testspot\")\n .billingCycle(\"hourly\")\n .operatingSystem(\"ubuntu_20_04\")\n .plan(\"c3.small.x86\")\n .build())\n .build());\n\n ctx.export(\"requestId\", request.id());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n metro:\n type: string\n default: FR\nresources:\n request:\n type: equinix:metal:SpotMarketRequest\n properties:\n projectId: ${projectId}\n metro: ${metro}\n maxBidPrice: 0.75\n devicesMin: 1\n devicesMax: 1\n instanceParameters:\n hostname: testspot\n billingCycle: hourly\n operatingSystem: ubuntu_20_04\n plan: c3.small.x86\noutputs:\n requestId: ${request.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing spot market request ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:metal/spotMarketRequest:SpotMarketRequest equinix_metal_spot_market_request {existing_spot_market_request_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Provides an Equinix Metal Spot Market Request resource to allow you to\nmanage spot market requests on your account. For more detail on Spot Market,\nsee [this article in Equinix Metal documentation](https://metal.equinix.com/developers/docs/deploy/spot-market/).\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst metro = config.get(\"metro\") || \"FR\";\nconst request = new equinix.metal.SpotMarketRequest(\"request\", {\n projectId: projectId,\n metro: metro,\n maxBidPrice: 0.75,\n devicesMin: 1,\n devicesMax: 1,\n instanceParameters: {\n hostname: \"testspot\",\n billingCycle: \"hourly\",\n operatingSystem: \"ubuntu_20_04\",\n plan: \"c3.small.x86\",\n },\n});\nexport const requestId = request.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"FR\"\nrequest = equinix.metal.SpotMarketRequest(\"request\",\n project_id=project_id,\n metro=metro,\n max_bid_price=0.75,\n devices_min=1,\n devices_max=1,\n instance_parameters=equinix.metal.SpotMarketRequestInstanceParametersArgs(\n hostname=\"testspot\",\n billing_cycle=\"hourly\",\n operating_system=\"ubuntu_20_04\",\n plan=\"c3.small.x86\",\n ))\npulumi.export(\"requestId\", request.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tmetro := \"FR\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\trequest, err := metal.NewSpotMarketRequest(ctx, \"request\", \u0026metal.SpotMarketRequestArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tMetro: pulumi.String(metro),\n\t\t\tMaxBidPrice: pulumi.Float64(0.75),\n\t\t\tDevicesMin: pulumi.Int(1),\n\t\t\tDevicesMax: pulumi.Int(1),\n\t\t\tInstanceParameters: \u0026metal.SpotMarketRequestInstanceParametersArgs{\n\t\t\t\tHostname: pulumi.String(\"testspot\"),\n\t\t\t\tBillingCycle: pulumi.String(\"hourly\"),\n\t\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\t\tPlan: pulumi.String(\"c3.small.x86\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"requestId\", request.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var metro = config.Get(\"metro\") ?? \"FR\";\n var request = new Equinix.Metal.SpotMarketRequest(\"request\", new()\n {\n ProjectId = projectId,\n Metro = metro,\n MaxBidPrice = 0.75,\n DevicesMin = 1,\n DevicesMax = 1,\n InstanceParameters = new Equinix.Metal.Inputs.SpotMarketRequestInstanceParametersArgs\n {\n Hostname = \"testspot\",\n BillingCycle = \"hourly\",\n OperatingSystem = \"ubuntu_20_04\",\n Plan = \"c3.small.x86\",\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"requestId\"] = request.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.SpotMarketRequest;\nimport com.equinix.pulumi.metal.SpotMarketRequestArgs;\nimport com.equinix.pulumi.metal.inputs.SpotMarketRequestInstanceParametersArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var metro = config.get(\"metro\").orElse(\"FR\");\n var request = new SpotMarketRequest(\"request\", SpotMarketRequestArgs.builder() \n .projectId(projectId)\n .metro(metro)\n .maxBidPrice(0.75)\n .devicesMin(1)\n .devicesMax(1)\n .instanceParameters(SpotMarketRequestInstanceParametersArgs.builder()\n .hostname(\"testspot\")\n .billingCycle(\"hourly\")\n .operatingSystem(\"ubuntu_20_04\")\n .plan(\"c3.small.x86\")\n .build())\n .build());\n\n ctx.export(\"requestId\", request.id());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n metro:\n type: string\n default: FR\nresources:\n request:\n type: equinix:metal:SpotMarketRequest\n properties:\n projectId: ${projectId}\n metro: ${metro}\n maxBidPrice: 0.75\n devicesMin: 1\n devicesMax: 1\n instanceParameters:\n hostname: testspot\n billingCycle: hourly\n operatingSystem: ubuntu_20_04\n plan: c3.small.x86\noutputs:\n requestId: ${request.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing spot market request ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:metal/spotMarketRequest:SpotMarketRequest equinix_metal_spot_market_request {existing_spot_market_request_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"devicesMax": {
"type": "integer",
@@ -13291,7 +14170,7 @@
}
},
"equinix:metal/sshKey:SshKey": {
- "description": "{{% examples %}}\nProvides a resource to manage User SSH keys on your Equinix Metal user account. If you create a new device in a project, all the keys of the project's collaborators will be injected to the device.\n\nThe link between User SSH key and device is implicit. If you want to make sure that a key will be copied to a device, you must ensure that the device resource `depends_on` the key resource.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as fs from \"fs\";\n\nconst sshKey = new equinix.metal.SshKey(\"sshKey\", {\n name: \"johnKent\",\n publicKey: fs.readFileSync(\"/Users/John/.ssh/metal_rsa.pub\"),\n});\nexport const sshKeyId = sshKey.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nssh_key = equinix.metal.SshKey(\"sshKey\",\n name=\"johnKent\",\n public_key=(lambda path: open(path).read())(\"/Users/John/.ssh/metal_rsa.pub\"))\npulumi.export(\"sshKeyId\", ssh_key.id)\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsshKey, err := metal.NewSshKey(ctx, \"sshKey\", \u0026metal.SshKeyArgs{\n\t\t\tName: pulumi.String(\"johnKent\"),\n\t\t\tPublicKey: readFileOrPanic(\"/Users/John/.ssh/metal_rsa.pub\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sshKeyId\", sshKey.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sshKey = new Equinix.Metal.SshKey(\"sshKey\", new()\n {\n Name = \"johnKent\",\n PublicKey = File.ReadAllText(\"/Users/John/.ssh/metal_rsa.pub\"),\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sshKeyId\"] = sshKey.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.SshKey;\nimport com.equinix.pulumi.metal.SshKeyArgs;\n\nimport java.io.IOException;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n String content = null;\n try {\n content = Files.readString(Paths.get(\"/Users/John/.ssh/metal_rsa.pub\"));\n } catch (IOException e) {\n e.printStackTrace();\n }\n\n var sshKey = new SshKey(\"sshKey\", SshKeyArgs.builder() \n .name(\"johnKent\")\n .publicKey(content)\n .build());\n\n ctx.export(\"sshKeyId\", sshKey.id());\n }\n}\n```\n```yaml\nresources:\n sshKey:\n type: equinix:metal:SshKey\n properties:\n name: johnKent\n publicKey:\n fn::readFile: /Users/John/.ssh/metal_rsa.pub\noutputs:\n sshKeyId: ${sshKey.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing SSH Key ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:metal/sshKey:SshKey equinix_metal_ssh_key {existing_sshkey_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Provides a resource to manage User SSH keys on your Equinix Metal user account. If you create a new device in a project, all the keys of the project's collaborators will be injected to the device.\n\nThe link between User SSH key and device is implicit. If you want to make sure that a key will be copied to a device, you must ensure that the device resource `depends_on` the key resource.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as fs from \"fs\";\n\nconst sshKey = new equinix.metal.SshKey(\"sshKey\", {\n name: \"johnKent\",\n publicKey: fs.readFileSync(\"/Users/John/.ssh/metal_rsa.pub\"),\n});\nexport const sshKeyId = sshKey.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nssh_key = equinix.metal.SshKey(\"sshKey\",\n name=\"johnKent\",\n public_key=(lambda path: open(path).read())(\"/Users/John/.ssh/metal_rsa.pub\"))\npulumi.export(\"sshKeyId\", ssh_key.id)\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsshKey, err := metal.NewSshKey(ctx, \"sshKey\", \u0026metal.SshKeyArgs{\n\t\t\tName: pulumi.String(\"johnKent\"),\n\t\t\tPublicKey: readFileOrPanic(\"/Users/John/.ssh/metal_rsa.pub\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sshKeyId\", sshKey.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sshKey = new Equinix.Metal.SshKey(\"sshKey\", new()\n {\n Name = \"johnKent\",\n PublicKey = File.ReadAllText(\"/Users/John/.ssh/metal_rsa.pub\"),\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sshKeyId\"] = sshKey.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.SshKey;\nimport com.equinix.pulumi.metal.SshKeyArgs;\n\nimport java.io.IOException;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n String content = null;\n try {\n content = Files.readString(Paths.get(\"/Users/John/.ssh/metal_rsa.pub\"));\n } catch (IOException e) {\n e.printStackTrace();\n }\n\n var sshKey = new SshKey(\"sshKey\", SshKeyArgs.builder() \n .name(\"johnKent\")\n .publicKey(content)\n .build());\n\n ctx.export(\"sshKeyId\", sshKey.id());\n }\n}\n```\n```yaml\nresources:\n sshKey:\n type: equinix:metal:SshKey\n properties:\n name: johnKent\n publicKey:\n fn::readFile: /Users/John/.ssh/metal_rsa.pub\noutputs:\n sshKeyId: ${sshKey.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing SSH Key ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:metal/sshKey:SshKey equinix_metal_ssh_key {existing_sshkey_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"created": {
"type": "string",
@@ -13333,8 +14212,7 @@
},
"publicKey": {
"type": "string",
- "description": "The public key. If this is a file, it\ncan be read using the file interpolation function\n",
- "willReplaceOnChanges": true
+ "description": "The public key. If this is a file, it\ncan be read using the file interpolation function\n"
}
},
"requiredInputs": [
@@ -13361,8 +14239,7 @@
},
"publicKey": {
"type": "string",
- "description": "The public key. If this is a file, it\ncan be read using the file interpolation function\n",
- "willReplaceOnChanges": true
+ "description": "The public key. If this is a file, it\ncan be read using the file interpolation function\n"
},
"updated": {
"type": "string",
@@ -13373,7 +14250,7 @@
}
},
"equinix:metal/userApiKey:UserApiKey": {
- "description": "{{% examples %}}\nUse this resource to create Metal User API Key resources in Equinix Metal. Each API key contains a\ntoken which can be used for authentication in Equinix Metal HTTP API (in HTTP request header\n`X-Auth-Token`).\n\nRead-only keys only allow to list and view existing resources, read-write keys can also be used to\ncreate resources.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst description = config.get(\"description\") || \"An user level API Key\";\nconst readOnly = config.getBoolean(\"readOnly\") || false;\nconst apiKey = new equinix.metal.UserApiKey(\"apiKey\", {\n description: description,\n readOnly: readOnly,\n});\nexport const apiKeyToken = apiKey.token;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndescription = config.get(\"description\")\nif description is None:\n description = \"An user level API Key\"\nread_only = config.get_bool(\"readOnly\")\nif read_only is None:\n read_only = False\napi_key = equinix.metal.UserApiKey(\"apiKey\",\n description=description,\n read_only=read_only)\npulumi.export(\"apiKeyToken\", api_key.token)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdescription := \"An user level API Key\"\n\t\tif param := cfg.Get(\"description\"); param != \"\" {\n\t\t\tdescription = param\n\t\t}\n\t\treadOnly := false\n\t\tif param := cfg.GetBool(\"readOnly\"); param {\n\t\t\treadOnly = param\n\t\t}\n\t\tapiKey, err := metal.NewUserApiKey(ctx, \"apiKey\", \u0026metal.UserApiKeyArgs{\n\t\t\tDescription: pulumi.String(description),\n\t\t\tReadOnly: pulumi.Bool(readOnly),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"apiKeyToken\", apiKey.Token)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var description = config.Get(\"description\") ?? \"An user level API Key\";\n var readOnly = config.GetBoolean(\"readOnly\") ?? false;\n var apiKey = new Equinix.Metal.UserApiKey(\"apiKey\", new()\n {\n Description = description,\n ReadOnly = readOnly,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"apiKeyToken\"] = apiKey.Token,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.UserApiKey;\nimport com.equinix.pulumi.metal.UserApiKeyArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var description = config.get(\"description\").orElse(\"An user level API Key\");\n final var readOnly = config.getBoolean(\"readOnly\").orElse(false);\n var apiKey = new UserApiKey(\"apiKey\", UserApiKeyArgs.builder() \n .description(description)\n .readOnly(readOnly)\n .build());\n\n ctx.export(\"apiKeyToken\", apiKey.token());\n }\n}\n```\n```yaml\nconfig:\n description:\n type: string\n default: An user level API Key\n readOnly:\n type: boolean\n default: false\nresources:\n apiKey:\n type: equinix:metal:UserApiKey\n properties:\n description: ${description}\n readOnly: ${readOnly}\noutputs:\n apiKeyToken: ${apiKey.token}\n```\n{{% /example %}}\n\n{{% /examples %}}",
+ "description": "Use this resource to create Metal User API Key resources in Equinix Metal. Each API key contains a\ntoken which can be used for authentication in Equinix Metal HTTP API (in HTTP request header\n`X-Auth-Token`).\n\nRead-only keys only allow to list and view existing resources, read-write keys can also be used to\ncreate resources.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst description = config.get(\"description\") || \"An user level API Key\";\nconst readOnly = config.getBoolean(\"readOnly\") || false;\nconst apiKey = new equinix.metal.UserApiKey(\"apiKey\", {\n description: description,\n readOnly: readOnly,\n});\nexport const apiKeyToken = apiKey.token;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndescription = config.get(\"description\")\nif description is None:\n description = \"An user level API Key\"\nread_only = config.get_bool(\"readOnly\")\nif read_only is None:\n read_only = False\napi_key = equinix.metal.UserApiKey(\"apiKey\",\n description=description,\n read_only=read_only)\npulumi.export(\"apiKeyToken\", api_key.token)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdescription := \"An user level API Key\"\n\t\tif param := cfg.Get(\"description\"); param != \"\" {\n\t\t\tdescription = param\n\t\t}\n\t\treadOnly := false\n\t\tif param := cfg.GetBool(\"readOnly\"); param {\n\t\t\treadOnly = param\n\t\t}\n\t\tapiKey, err := metal.NewUserApiKey(ctx, \"apiKey\", \u0026metal.UserApiKeyArgs{\n\t\t\tDescription: pulumi.String(description),\n\t\t\tReadOnly: pulumi.Bool(readOnly),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"apiKeyToken\", apiKey.Token)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var description = config.Get(\"description\") ?? \"An user level API Key\";\n var readOnly = config.GetBoolean(\"readOnly\") ?? false;\n var apiKey = new Equinix.Metal.UserApiKey(\"apiKey\", new()\n {\n Description = description,\n ReadOnly = readOnly,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"apiKeyToken\"] = apiKey.Token,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.UserApiKey;\nimport com.equinix.pulumi.metal.UserApiKeyArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var description = config.get(\"description\").orElse(\"An user level API Key\");\n final var readOnly = config.getBoolean(\"readOnly\").orElse(false);\n var apiKey = new UserApiKey(\"apiKey\", UserApiKeyArgs.builder() \n .description(description)\n .readOnly(readOnly)\n .build());\n\n ctx.export(\"apiKeyToken\", apiKey.token());\n }\n}\n```\n```yaml\nconfig:\n description:\n type: string\n default: An user level API Key\n readOnly:\n type: boolean\n default: false\nresources:\n apiKey:\n type: equinix:metal:UserApiKey\n properties:\n description: ${description}\n readOnly: ${readOnly}\noutputs:\n apiKeyToken: ${apiKey.token}\n```\n{{% /example %}}\n\n{{% /examples %}}",
"properties": {
"description": {
"type": "string",
@@ -13442,7 +14319,7 @@
}
},
"equinix:metal/virtualCircuit:VirtualCircuit": {
- "description": "{{% examples %}}\nUse this resource to associate VLAN with a Dedicated Port from\n[Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/#associating-a-vlan-with-a-dedicated-port).\n\n\u003e VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst connectionId = config.require(\"connectionId\");\nconst vlanId = config.require(\"vlanId\");\nconst portId = equinix.metal.getInterconnection({\n connectionId: connectionId,\n}).then(invoke =\u003e invoke.ports?.[0]?.id);\nconst vc = new equinix.metal.VirtualCircuit(\"vc\", {\n connectionId: connectionId,\n projectId: projectId,\n portId: portId,\n vlanId: vlanId,\n nniVlan: 1056,\n});\nexport const vcStatus = vc.status;\nexport const vcVnid = vc.vnid;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nconnection_id = config.require(\"connectionId\")\nvlan_id = config.require(\"vlanId\")\nport_id = equinix.metal.get_interconnection(connection_id=connection_id).ports[0].id\nvc = equinix.metal.VirtualCircuit(\"vc\",\n connection_id=connection_id,\n project_id=project_id,\n port_id=port_id,\n vlan_id=vlan_id,\n nni_vlan=1056)\npulumi.export(\"vcStatus\", vc.status)\npulumi.export(\"vcVnid\", vc.vnid)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tconnectionId := cfg.Require(\"connectionId\")\n\t\tvlanId := cfg.Require(\"vlanId\")\n\t\tportId := metal.LookupInterconnection(ctx, \u0026metal.LookupInterconnectionArgs{\n\t\t\tConnectionId: connectionId,\n\t\t}, nil).Ports[0].Id\n\t\tvc, err := metal.NewVirtualCircuit(ctx, \"vc\", \u0026metal.VirtualCircuitArgs{\n\t\t\tConnectionId: pulumi.String(connectionId),\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tPortId: *pulumi.String(portId),\n\t\t\tVlanId: pulumi.String(vlanId),\n\t\t\tNniVlan: pulumi.Int(1056),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"vcStatus\", vc.Status)\n\t\tctx.Export(\"vcVnid\", vc.Vnid)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var connectionId = config.Require(\"connectionId\");\n var vlanId = config.Require(\"vlanId\");\n var portId = Equinix.Metal.GetInterconnection.Invoke(new()\n {\n ConnectionId = connectionId,\n }).Apply(invoke =\u003e invoke.Ports[0]?.Id);\n\n var vc = new Equinix.Metal.VirtualCircuit(\"vc\", new()\n {\n ConnectionId = connectionId,\n ProjectId = projectId,\n PortId = portId,\n VlanId = vlanId,\n NniVlan = 1056,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"vcStatus\"] = vc.Status,\n [\"vcVnid\"] = vc.Vnid,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.inputs.GetInterconnectionArgs;\nimport com.equinix.pulumi.metal.MetalFunctions;\nimport com.equinix.pulumi.metal.VirtualCircuit;\nimport com.equinix.pulumi.metal.VirtualCircuitArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var connectionId = config.get(\"connectionId\").get();\n final var vlanId = config.get(\"vlanId\").get();\n final var portId = MetalFunctions.getInterconnection(GetInterconnectionArgs.builder()\n .connectionId(connectionId)\n .build()).applyValue(data -\u003e data.ports().get(0).id());\n\n var vc = new VirtualCircuit(\"vc\", VirtualCircuitArgs.builder() \n .connectionId(connectionId)\n .projectId(projectId)\n .portId(portId)\n .vlanId(vlanId)\n .nniVlan(1056)\n .build());\n\n ctx.export(\"vcStatus\", vc.status());\n ctx.export(\"vcVnid\", vc.vnid());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n connectionId:\n type: string\n vlanId:\n type: string\nvariables:\n portId:\n fn::invoke:\n function: equinix:metal:getInterconnection\n arguments:\n connectionId: ${connectionId}\n return: ports[0].id\nresources:\n vc:\n type: equinix:metal:VirtualCircuit\n properties:\n connectionId: ${connectionId}\n projectId: ${projectId}\n portId: ${portId}\n vlanId: ${vlanId}\n nniVlan: 1056\noutputs:\n vcStatus: ${vc.status}\n vcVnid: ${vc.vnid}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing Virtual Circuit ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:metal/virtualCircuit:VirtualCircuit equinix_metal_virtual_circuit {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Use this resource to associate VLAN with a Dedicated Port from\n[Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/#associating-a-vlan-with-a-dedicated-port).\n\n\u003e VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst connectionId = config.require(\"connectionId\");\nconst vlanId = config.require(\"vlanId\");\nconst portId = equinix.metal.getInterconnection({\n connectionId: connectionId,\n}).then(invoke =\u003e invoke.ports?.[0]?.id);\nconst vc = new equinix.metal.VirtualCircuit(\"vc\", {\n connectionId: connectionId,\n projectId: projectId,\n portId: portId,\n vlanId: vlanId,\n nniVlan: 1056,\n});\nexport const vcStatus = vc.status;\nexport const vcVnid = vc.vnid;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nconnection_id = config.require(\"connectionId\")\nvlan_id = config.require(\"vlanId\")\nport_id = equinix.metal.get_interconnection(connection_id=connection_id).ports[0].id\nvc = equinix.metal.VirtualCircuit(\"vc\",\n connection_id=connection_id,\n project_id=project_id,\n port_id=port_id,\n vlan_id=vlan_id,\n nni_vlan=1056)\npulumi.export(\"vcStatus\", vc.status)\npulumi.export(\"vcVnid\", vc.vnid)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tconnectionId := cfg.Require(\"connectionId\")\n\t\tvlanId := cfg.Require(\"vlanId\")\n\t\tportId := metal.LookupInterconnection(ctx, \u0026metal.LookupInterconnectionArgs{\n\t\t\tConnectionId: connectionId,\n\t\t}, nil).Ports[0].Id\n\t\tvc, err := metal.NewVirtualCircuit(ctx, \"vc\", \u0026metal.VirtualCircuitArgs{\n\t\t\tConnectionId: pulumi.String(connectionId),\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tPortId: *pulumi.String(portId),\n\t\t\tVlanId: pulumi.String(vlanId),\n\t\t\tNniVlan: pulumi.Int(1056),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"vcStatus\", vc.Status)\n\t\tctx.Export(\"vcVnid\", vc.Vnid)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var connectionId = config.Require(\"connectionId\");\n var vlanId = config.Require(\"vlanId\");\n var portId = Equinix.Metal.GetInterconnection.Invoke(new()\n {\n ConnectionId = connectionId,\n }).Apply(invoke =\u003e invoke.Ports[0]?.Id);\n\n var vc = new Equinix.Metal.VirtualCircuit(\"vc\", new()\n {\n ConnectionId = connectionId,\n ProjectId = projectId,\n PortId = portId,\n VlanId = vlanId,\n NniVlan = 1056,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"vcStatus\"] = vc.Status,\n [\"vcVnid\"] = vc.Vnid,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.inputs.GetInterconnectionArgs;\nimport com.equinix.pulumi.metal.MetalFunctions;\nimport com.equinix.pulumi.metal.VirtualCircuit;\nimport com.equinix.pulumi.metal.VirtualCircuitArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var connectionId = config.get(\"connectionId\").get();\n final var vlanId = config.get(\"vlanId\").get();\n final var portId = MetalFunctions.getInterconnection(GetInterconnectionArgs.builder()\n .connectionId(connectionId)\n .build()).applyValue(data -\u003e data.ports().get(0).id());\n\n var vc = new VirtualCircuit(\"vc\", VirtualCircuitArgs.builder() \n .connectionId(connectionId)\n .projectId(projectId)\n .portId(portId)\n .vlanId(vlanId)\n .nniVlan(1056)\n .build());\n\n ctx.export(\"vcStatus\", vc.status());\n ctx.export(\"vcVnid\", vc.vnid());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n connectionId:\n type: string\n vlanId:\n type: string\nvariables:\n portId:\n fn::invoke:\n function: equinix:metal:getInterconnection\n arguments:\n connectionId: ${connectionId}\n return: ports[0].id\nresources:\n vc:\n type: equinix:metal:VirtualCircuit\n properties:\n connectionId: ${connectionId}\n projectId: ${projectId}\n portId: ${portId}\n vlanId: ${vlanId}\n nniVlan: 1056\noutputs:\n vcStatus: ${vc.status}\n vcVnid: ${vc.vnid}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing Virtual Circuit ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:metal/virtualCircuit:VirtualCircuit equinix_metal_virtual_circuit {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"connectionId": {
"type": "string",
@@ -13698,7 +14575,7 @@
}
},
"equinix:metal/vlan:Vlan": {
- "description": "{{% examples %}}\nProvides a resource to allow users to manage Virtual Networks in their projects.\n\nTo learn more about Layer 2 networking in Equinix Metal, refer to\n\n* \u003chttps://metal.equinix.com/developers/docs/networking/layer2/\u003e\n* \u003chttps://metal.equinix.com/developers/docs/networking/layer2-configs/\u003e\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst metro = config.get(\"metro\") || \"DA\";\nconst vxlan = config.requireNumber(\"vxlan\");\nconst vlan = new equinix.metal.Vlan(\"vlan\", {\n description: \"VLAN in Dallas\",\n projectId: projectId,\n metro: metro,\n vxlan: vxlan,\n});\nexport const vlanId = vlan.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"DA\"\nvxlan = config.require_int(\"vxlan\")\nvlan = equinix.metal.Vlan(\"vlan\",\n description=\"VLAN in Dallas\",\n project_id=project_id,\n metro=metro,\n vxlan=vxlan)\npulumi.export(\"vlanId\", vlan.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tmetro := \"DA\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\tvxlan := cfg.RequireInt(\"vxlan\")\n\t\tvlan, err := metal.NewVlan(ctx, \"vlan\", \u0026metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"VLAN in Dallas\"),\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tMetro: pulumi.String(metro),\n\t\t\tVxlan: pulumi.Int(vxlan),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"vlanId\", vlan.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var metro = config.Get(\"metro\") ?? \"DA\";\n var vxlan = config.RequireNumber(\"vxlan\");\n var vlan = new Equinix.Metal.Vlan(\"vlan\", new()\n {\n Description = \"VLAN in Dallas\",\n ProjectId = projectId,\n Metro = metro,\n Vxlan = vxlan,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"vlanId\"] = vlan.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.Vlan;\nimport com.equinix.pulumi.metal.VlanArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var metro = config.get(\"metro\").orElse(\"DA\");\n final var vxlan = Integer.parseInt(config.get(\"vxlan\").get());\n var vlan = new Vlan(\"vlan\", VlanArgs.builder() \n .description(\"VLAN in Dallas\")\n .projectId(projectId)\n .metro(metro)\n .vxlan(vxlan)\n .build());\n\n ctx.export(\"vlanId\", vlan.id());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n metro:\n type: string\n default: DA\n vxlan:\n type: integer\nresources:\n vlan:\n type: equinix:metal:Vlan\n properties:\n description: VLAN in Dallas\n projectId: ${projectId}\n metro: ${metro}\n vxlan: ${vxlan}\noutputs:\n vlanId: ${vlan.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing VLAN ID (UUID): \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:metal/vlan:Vlan equinix_metal_vlan {existing_vlan_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Provides a resource to allow users to manage Virtual Networks in their projects.\n\nTo learn more about Layer 2 networking in Equinix Metal, refer to\n\n* \u003chttps://metal.equinix.com/developers/docs/networking/layer2/\u003e\n* \u003chttps://metal.equinix.com/developers/docs/networking/layer2-configs/\u003e\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst metro = config.get(\"metro\") || \"DA\";\nconst vxlan = config.requireNumber(\"vxlan\");\nconst vlan = new equinix.metal.Vlan(\"vlan\", {\n description: \"VLAN in Dallas\",\n projectId: projectId,\n metro: metro,\n vxlan: vxlan,\n});\nexport const vlanId = vlan.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"DA\"\nvxlan = config.require_int(\"vxlan\")\nvlan = equinix.metal.Vlan(\"vlan\",\n description=\"VLAN in Dallas\",\n project_id=project_id,\n metro=metro,\n vxlan=vxlan)\npulumi.export(\"vlanId\", vlan.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tmetro := \"DA\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\tvxlan := cfg.RequireInt(\"vxlan\")\n\t\tvlan, err := metal.NewVlan(ctx, \"vlan\", \u0026metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"VLAN in Dallas\"),\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tMetro: pulumi.String(metro),\n\t\t\tVxlan: pulumi.Int(vxlan),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"vlanId\", vlan.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var metro = config.Get(\"metro\") ?? \"DA\";\n var vxlan = config.RequireNumber(\"vxlan\");\n var vlan = new Equinix.Metal.Vlan(\"vlan\", new()\n {\n Description = \"VLAN in Dallas\",\n ProjectId = projectId,\n Metro = metro,\n Vxlan = vxlan,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"vlanId\"] = vlan.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.Vlan;\nimport com.equinix.pulumi.metal.VlanArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var metro = config.get(\"metro\").orElse(\"DA\");\n final var vxlan = Integer.parseInt(config.get(\"vxlan\").get());\n var vlan = new Vlan(\"vlan\", VlanArgs.builder() \n .description(\"VLAN in Dallas\")\n .projectId(projectId)\n .metro(metro)\n .vxlan(vxlan)\n .build());\n\n ctx.export(\"vlanId\", vlan.id());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n metro:\n type: string\n default: DA\n vxlan:\n type: integer\nresources:\n vlan:\n type: equinix:metal:Vlan\n properties:\n description: VLAN in Dallas\n projectId: ${projectId}\n metro: ${metro}\n vxlan: ${vxlan}\noutputs:\n vlanId: ${vlan.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing VLAN ID (UUID):\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:metal/vlan:Vlan equinix_metal_vlan {existing_vlan_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"description": {
"type": "string",
@@ -13809,7 +14686,7 @@
}
},
"equinix:metal/vrf:Vrf": {
- "description": "{{% examples %}}\nUse this resource to manage a VRF.\n\n\u003e VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst metro = config.get(\"metro\") || \"DA\";\nconst vrf = new equinix.metal.Vrf(\"vrf\", {\n description: \"VRF with ASN 65000 and a pool of address space\",\n name: \"example-vrf\",\n metro: metro,\n localAsn: 65000,\n ipRanges: [\n \"192.168.100.0/25\",\n \"192.168.200.0/25\",\n ],\n projectId: projectId,\n});\nexport const vrfId = vrf.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"DA\"\nvrf = equinix.metal.Vrf(\"vrf\",\n description=\"VRF with ASN 65000 and a pool of address space\",\n name=\"example-vrf\",\n metro=metro,\n local_asn=65000,\n ip_ranges=[\n \"192.168.100.0/25\",\n \"192.168.200.0/25\",\n ],\n project_id=project_id)\npulumi.export(\"vrfId\", vrf.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tmetro := \"DA\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\tvrf, err := metal.NewVrf(ctx, \"vrf\", \u0026metal.VrfArgs{\n\t\t\tDescription: pulumi.String(\"VRF with ASN 65000 and a pool of address space\"),\n\t\t\tName: pulumi.String(\"example-vrf\"),\n\t\t\tMetro: pulumi.String(metro),\n\t\t\tLocalAsn: pulumi.Int(65000),\n\t\t\tIpRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.100.0/25\"),\n\t\t\t\tpulumi.String(\"192.168.200.0/25\"),\n\t\t\t},\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"vrfId\", vrf.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var metro = config.Get(\"metro\") ?? \"DA\";\n var vrf = new Equinix.Metal.Vrf(\"vrf\", new()\n {\n Description = \"VRF with ASN 65000 and a pool of address space\",\n Name = \"example-vrf\",\n Metro = metro,\n LocalAsn = 65000,\n IpRanges = new[]\n {\n \"192.168.100.0/25\",\n \"192.168.200.0/25\",\n },\n ProjectId = projectId,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"vrfId\"] = vrf.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.Vrf;\nimport com.equinix.pulumi.metal.VrfArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var metro = config.get(\"metro\").orElse(\"DA\");\n var vrf = new Vrf(\"vrf\", VrfArgs.builder() \n .description(\"VRF with ASN 65000 and a pool of address space\")\n .name(\"example-vrf\")\n .metro(metro)\n .localAsn(65000)\n .ipRanges( \n \"192.168.100.0/25\",\n \"192.168.200.0/25\")\n .projectId(projectId)\n .build());\n\n ctx.export(\"vrfId\", vrf.id());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n metro:\n type: string\n default: DA\nresources:\n vrf:\n type: equinix:metal:Vrf\n properties:\n description: VRF with ASN 65000 and a pool of address space\n name: example-vrf\n metro: ${metro}\n localAsn: \"65000\"\n ipRanges:\n - 192.168.100.0/25\n - 192.168.200.0/25\n projectId: ${projectId}\noutputs:\n vrfId: ${vrf.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing VRF ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:metal/vrf:Vrf equinix_metal_vrf {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Use this resource to manage a VRF.\n\n\u003e VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst projectId = config.require(\"projectId\");\nconst metro = config.get(\"metro\") || \"DA\";\nconst vrf = new equinix.metal.Vrf(\"vrf\", {\n description: \"VRF with ASN 65000 and a pool of address space\",\n name: \"example-vrf\",\n metro: metro,\n localAsn: 65000,\n ipRanges: [\n \"192.168.100.0/25\",\n \"192.168.200.0/25\",\n ],\n projectId: projectId,\n});\nexport const vrfId = vrf.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nproject_id = config.require(\"projectId\")\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"DA\"\nvrf = equinix.metal.Vrf(\"vrf\",\n description=\"VRF with ASN 65000 and a pool of address space\",\n name=\"example-vrf\",\n metro=metro,\n local_asn=65000,\n ip_ranges=[\n \"192.168.100.0/25\",\n \"192.168.200.0/25\",\n ],\n project_id=project_id)\npulumi.export(\"vrfId\", vrf.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\tmetro := \"DA\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\tvrf, err := metal.NewVrf(ctx, \"vrf\", \u0026metal.VrfArgs{\n\t\t\tDescription: pulumi.String(\"VRF with ASN 65000 and a pool of address space\"),\n\t\t\tName: pulumi.String(\"example-vrf\"),\n\t\t\tMetro: pulumi.String(metro),\n\t\t\tLocalAsn: pulumi.Int(65000),\n\t\t\tIpRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.100.0/25\"),\n\t\t\t\tpulumi.String(\"192.168.200.0/25\"),\n\t\t\t},\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"vrfId\", vrf.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var projectId = config.Require(\"projectId\");\n var metro = config.Get(\"metro\") ?? \"DA\";\n var vrf = new Equinix.Metal.Vrf(\"vrf\", new()\n {\n Description = \"VRF with ASN 65000 and a pool of address space\",\n Name = \"example-vrf\",\n Metro = metro,\n LocalAsn = 65000,\n IpRanges = new[]\n {\n \"192.168.100.0/25\",\n \"192.168.200.0/25\",\n },\n ProjectId = projectId,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"vrfId\"] = vrf.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.equinix.pulumi.metal.Vrf;\nimport com.equinix.pulumi.metal.VrfArgs;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var projectId = config.get(\"projectId\").get();\n final var metro = config.get(\"metro\").orElse(\"DA\");\n var vrf = new Vrf(\"vrf\", VrfArgs.builder() \n .description(\"VRF with ASN 65000 and a pool of address space\")\n .name(\"example-vrf\")\n .metro(metro)\n .localAsn(65000)\n .ipRanges( \n \"192.168.100.0/25\",\n \"192.168.200.0/25\")\n .projectId(projectId)\n .build());\n\n ctx.export(\"vrfId\", vrf.id());\n }\n}\n```\n```yaml\nconfig:\n projectId:\n type: string\n metro:\n type: string\n default: DA\nresources:\n vrf:\n type: equinix:metal:Vrf\n properties:\n description: VRF with ASN 65000 and a pool of address space\n name: example-vrf\n metro: ${metro}\n localAsn: \"65000\"\n ipRanges:\n - 192.168.100.0/25\n - 192.168.200.0/25\n projectId: ${projectId}\noutputs:\n vrfId: ${vrf.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing VRF ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:metal/vrf:Vrf equinix_metal_vrf {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"description": {
"type": "string",
@@ -13913,7 +14790,7 @@
}
},
"equinix:networkedge/aclTemplate:AclTemplate": {
- "description": "{{% examples %}}\nResource `equinix.networkedge.AclTemplate` allows creation and management of\nEquinix Network Edge device Access Control List templates.\n\nDevice ACL templates give possibility to define set of rules will allowed inbound\ntraffic. Templates can be assigned to the network devices.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst aclTemplate = new equinix.networkedge.AclTemplate(\"aclTemplate\", {\n name: \"test\",\n description: \"Test ACL template\",\n inboundRules: [\n {\n subnet: \"1.1.1.1/32\",\n protocol: \"IP\",\n srcPort: \"any\",\n dstPort: \"any\",\n description: \"inbound rule description\",\n },\n {\n subnet: \"2.2.2.2/28\",\n protocol: \"TCP\",\n srcPort: \"any\",\n dstPort: \"any\",\n description: \"inbound rule description\",\n },\n ],\n});\nexport const templateId = aclTemplate.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nacl_template = equinix.networkedge.AclTemplate(\"aclTemplate\",\n name=\"test\",\n description=\"Test ACL template\",\n inbound_rules=[\n equinix.networkedge.AclTemplateInboundRuleArgs(\n subnet=\"1.1.1.1/32\",\n protocol=\"IP\",\n src_port=\"any\",\n dst_port=\"any\",\n description=\"inbound rule description\",\n ),\n equinix.networkedge.AclTemplateInboundRuleArgs(\n subnet=\"2.2.2.2/28\",\n protocol=\"TCP\",\n src_port=\"any\",\n dst_port=\"any\",\n description=\"inbound rule description\",\n ),\n ])\npulumi.export(\"templateId\", acl_template.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taclTemplate, err := networkedge.NewAclTemplate(ctx, \"aclTemplate\", \u0026networkedge.AclTemplateArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"Test ACL template\"),\n\t\t\tInboundRules: networkedge.AclTemplateInboundRuleArray{\n\t\t\t\t\u0026networkedge.AclTemplateInboundRuleArgs{\n\t\t\t\t\tSubnet: pulumi.String(\"1.1.1.1/32\"),\n\t\t\t\t\tProtocol: pulumi.String(\"IP\"),\n\t\t\t\t\tSrcPort: pulumi.String(\"any\"),\n\t\t\t\t\tDstPort: pulumi.String(\"any\"),\n\t\t\t\t\tDescription: pulumi.String(\"inbound rule description\"),\n\t\t\t\t},\n\t\t\t\t\u0026networkedge.AclTemplateInboundRuleArgs{\n\t\t\t\t\tSubnet: pulumi.String(\"2.2.2.2/28\"),\n\t\t\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\t\t\tSrcPort: pulumi.String(\"any\"),\n\t\t\t\t\tDstPort: pulumi.String(\"any\"),\n\t\t\t\t\tDescription: pulumi.String(\"inbound rule description\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"templateId\", aclTemplate.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var aclTemplate = new Equinix.NetworkEdge.AclTemplate(\"aclTemplate\", new()\n {\n Name = \"test\",\n Description = \"Test ACL template\",\n InboundRules = new[]\n {\n new Equinix.NetworkEdge.Inputs.AclTemplateInboundRuleArgs\n {\n Subnet = \"1.1.1.1/32\",\n Protocol = \"IP\",\n SrcPort = \"any\",\n DstPort = \"any\",\n Description = \"inbound rule description\",\n },\n new Equinix.NetworkEdge.Inputs.AclTemplateInboundRuleArgs\n {\n Subnet = \"2.2.2.2/28\",\n Protocol = \"TCP\",\n SrcPort = \"any\",\n DstPort = \"any\",\n Description = \"inbound rule description\",\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"templateId\"] = aclTemplate.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.AclTemplate;\nimport com.equinix.pulumi.networkedge.AclTemplateArgs;\nimport com.equinix.pulumi.networkedge.inputs.AclTemplateInboundRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var aclTemplate = new AclTemplate(\"aclTemplate\", AclTemplateArgs.builder() \n .name(\"test\")\n .description(\"Test ACL template\")\n .inboundRules( \n AclTemplateInboundRuleArgs.builder()\n .subnet(\"1.1.1.1/32\")\n .protocol(\"IP\")\n .srcPort(\"any\")\n .dstPort(\"any\")\n .description(\"inbound rule description\")\n .build(),\n AclTemplateInboundRuleArgs.builder()\n .subnet(\"2.2.2.2/28\")\n .protocol(\"TCP\")\n .srcPort(\"any\")\n .dstPort(\"any\")\n .description(\"inbound rule description\")\n .build())\n .build());\n\n ctx.export(\"templateId\", aclTemplate.id());\n }\n}\n```\n```yaml\nresources:\n aclTemplate:\n type: equinix:networkedge:AclTemplate\n properties:\n name: test\n description: Test ACL template\n inboundRules:\n - subnet: 1.1.1.1/32\n protocol: IP\n srcPort: any\n dstPort: any\n description: inbound rule description\n - subnet: 2.2.2.2/28\n protocol: TCP\n srcPort: any\n dstPort: any\n description: inbound rule description\noutputs:\n templateId: ${aclTemplate.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/aclTemplate:AclTemplate example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Resource `equinix.networkedge.AclTemplate` allows creation and management of\nEquinix Network Edge device Access Control List templates.\n\nDevice ACL templates give possibility to define set of rules will allowed inbound\ntraffic. Templates can be assigned to the network devices.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst aclTemplate = new equinix.networkedge.AclTemplate(\"aclTemplate\", {\n name: \"test\",\n description: \"Test ACL template\",\n inboundRules: [\n {\n subnet: \"1.1.1.1/32\",\n protocol: \"IP\",\n srcPort: \"any\",\n dstPort: \"any\",\n description: \"inbound rule description\",\n },\n {\n subnet: \"2.2.2.2/28\",\n protocol: \"TCP\",\n srcPort: \"any\",\n dstPort: \"any\",\n description: \"inbound rule description\",\n },\n ],\n});\nexport const templateId = aclTemplate.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nacl_template = equinix.networkedge.AclTemplate(\"aclTemplate\",\n name=\"test\",\n description=\"Test ACL template\",\n inbound_rules=[\n equinix.networkedge.AclTemplateInboundRuleArgs(\n subnet=\"1.1.1.1/32\",\n protocol=\"IP\",\n src_port=\"any\",\n dst_port=\"any\",\n description=\"inbound rule description\",\n ),\n equinix.networkedge.AclTemplateInboundRuleArgs(\n subnet=\"2.2.2.2/28\",\n protocol=\"TCP\",\n src_port=\"any\",\n dst_port=\"any\",\n description=\"inbound rule description\",\n ),\n ])\npulumi.export(\"templateId\", acl_template.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taclTemplate, err := networkedge.NewAclTemplate(ctx, \"aclTemplate\", \u0026networkedge.AclTemplateArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"Test ACL template\"),\n\t\t\tInboundRules: networkedge.AclTemplateInboundRuleArray{\n\t\t\t\t\u0026networkedge.AclTemplateInboundRuleArgs{\n\t\t\t\t\tSubnet: pulumi.String(\"1.1.1.1/32\"),\n\t\t\t\t\tProtocol: pulumi.String(\"IP\"),\n\t\t\t\t\tSrcPort: pulumi.String(\"any\"),\n\t\t\t\t\tDstPort: pulumi.String(\"any\"),\n\t\t\t\t\tDescription: pulumi.String(\"inbound rule description\"),\n\t\t\t\t},\n\t\t\t\t\u0026networkedge.AclTemplateInboundRuleArgs{\n\t\t\t\t\tSubnet: pulumi.String(\"2.2.2.2/28\"),\n\t\t\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\t\t\tSrcPort: pulumi.String(\"any\"),\n\t\t\t\t\tDstPort: pulumi.String(\"any\"),\n\t\t\t\t\tDescription: pulumi.String(\"inbound rule description\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"templateId\", aclTemplate.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var aclTemplate = new Equinix.NetworkEdge.AclTemplate(\"aclTemplate\", new()\n {\n Name = \"test\",\n Description = \"Test ACL template\",\n InboundRules = new[]\n {\n new Equinix.NetworkEdge.Inputs.AclTemplateInboundRuleArgs\n {\n Subnet = \"1.1.1.1/32\",\n Protocol = \"IP\",\n SrcPort = \"any\",\n DstPort = \"any\",\n Description = \"inbound rule description\",\n },\n new Equinix.NetworkEdge.Inputs.AclTemplateInboundRuleArgs\n {\n Subnet = \"2.2.2.2/28\",\n Protocol = \"TCP\",\n SrcPort = \"any\",\n DstPort = \"any\",\n Description = \"inbound rule description\",\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"templateId\"] = aclTemplate.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.AclTemplate;\nimport com.equinix.pulumi.networkedge.AclTemplateArgs;\nimport com.equinix.pulumi.networkedge.inputs.AclTemplateInboundRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var aclTemplate = new AclTemplate(\"aclTemplate\", AclTemplateArgs.builder() \n .name(\"test\")\n .description(\"Test ACL template\")\n .inboundRules( \n AclTemplateInboundRuleArgs.builder()\n .subnet(\"1.1.1.1/32\")\n .protocol(\"IP\")\n .srcPort(\"any\")\n .dstPort(\"any\")\n .description(\"inbound rule description\")\n .build(),\n AclTemplateInboundRuleArgs.builder()\n .subnet(\"2.2.2.2/28\")\n .protocol(\"TCP\")\n .srcPort(\"any\")\n .dstPort(\"any\")\n .description(\"inbound rule description\")\n .build())\n .build());\n\n ctx.export(\"templateId\", aclTemplate.id());\n }\n}\n```\n```yaml\nresources:\n aclTemplate:\n type: equinix:networkedge:AclTemplate\n properties:\n name: test\n description: Test ACL template\n inboundRules:\n - subnet: 1.1.1.1/32\n protocol: IP\n srcPort: any\n dstPort: any\n description: inbound rule description\n - subnet: 2.2.2.2/28\n protocol: TCP\n srcPort: any\n dstPort: any\n description: inbound rule description\noutputs:\n templateId: ${aclTemplate.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/aclTemplate:AclTemplate example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"description": {
"type": "string",
@@ -13951,6 +14828,10 @@
"type": "string",
"description": "ACL template name.\n"
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the acl template is scoped to.If you\nleave it out, the ACL template will be created under the default project id of your organization.\n"
+ },
"uuid": {
"type": "string",
"description": "Device uuid.\n"
@@ -13962,6 +14843,7 @@
"deviceId",
"inboundRules",
"name",
+ "projectId",
"uuid"
],
"inputProperties": {
@@ -13984,6 +14866,11 @@
"name": {
"type": "string",
"description": "ACL template name.\n"
+ },
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the acl template is scoped to.If you\nleave it out, the ACL template will be created under the default project id of your organization.\n",
+ "willReplaceOnChanges": true
}
},
"requiredInputs": [
@@ -14028,6 +14915,11 @@
"type": "string",
"description": "ACL template name.\n"
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the acl template is scoped to.If you\nleave it out, the ACL template will be created under the default project id of your organization.\n",
+ "willReplaceOnChanges": true
+ },
"uuid": {
"type": "string",
"description": "Device uuid.\n"
@@ -14037,7 +14929,7 @@
}
},
"equinix:networkedge/bgp:Bgp": {
- "description": "{{% examples %}}\nResource `equinix.networkedge.Bgp` allows creation and management of Equinix Network\nEdge BGP peering configurations.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst bgp = new equinix.networkedge.Bgp(\"bgp\", {\n connectionId: \"54014acf-9730-4b55-a791-459283d05fb1\",\n localIpAddress: \"10.1.1.1/30\",\n localAsn: 12345,\n remoteIpAddress: \"10.1.1.2\",\n remoteAsn: 66123,\n authenticationKey: \"secret\",\n});\nexport const state = bgp.state;\nexport const provisioningStatus = bgp.provisioningStatus;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nbgp = equinix.networkedge.Bgp(\"bgp\",\n connection_id=\"54014acf-9730-4b55-a791-459283d05fb1\",\n local_ip_address=\"10.1.1.1/30\",\n local_asn=12345,\n remote_ip_address=\"10.1.1.2\",\n remote_asn=66123,\n authentication_key=\"secret\")\npulumi.export(\"state\", bgp.state)\npulumi.export(\"provisioningStatus\", bgp.provisioning_status)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbgp, err := networkedge.NewBgp(ctx, \"bgp\", \u0026networkedge.BgpArgs{\n\t\t\tConnectionId: pulumi.String(\"54014acf-9730-4b55-a791-459283d05fb1\"),\n\t\t\tLocalIpAddress: pulumi.String(\"10.1.1.1/30\"),\n\t\t\tLocalAsn: pulumi.Int(12345),\n\t\t\tRemoteIpAddress: pulumi.String(\"10.1.1.2\"),\n\t\t\tRemoteAsn: pulumi.Int(66123),\n\t\t\tAuthenticationKey: pulumi.String(\"secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"state\", bgp.State)\n\t\tctx.Export(\"provisioningStatus\", bgp.ProvisioningStatus)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bgp = new Equinix.NetworkEdge.Bgp(\"bgp\", new()\n {\n ConnectionId = \"54014acf-9730-4b55-a791-459283d05fb1\",\n LocalIpAddress = \"10.1.1.1/30\",\n LocalAsn = 12345,\n RemoteIpAddress = \"10.1.1.2\",\n RemoteAsn = 66123,\n AuthenticationKey = \"secret\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"state\"] = bgp.State,\n [\"provisioningStatus\"] = bgp.ProvisioningStatus,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.Bgp;\nimport com.equinix.pulumi.networkedge.BgpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bgp = new Bgp(\"bgp\", BgpArgs.builder() \n .connectionId(\"54014acf-9730-4b55-a791-459283d05fb1\")\n .localIpAddress(\"10.1.1.1/30\")\n .localAsn(12345)\n .remoteIpAddress(\"10.1.1.2\")\n .remoteAsn(66123)\n .authenticationKey(\"secret\")\n .build());\n\n ctx.export(\"state\", bgp.state());\n ctx.export(\"provisioningStatus\", bgp.provisioningStatus());\n }\n}\n```\n```yaml\nresources:\n bgp:\n type: equinix:networkedge:Bgp\n properties:\n connectionId: 54014acf-9730-4b55-a791-459283d05fb1\n localIpAddress: 10.1.1.1/30\n localAsn: 12345\n remoteIpAddress: 10.1.1.2\n remoteAsn: 66123\n authenticationKey: secret\noutputs:\n state: ${bgp.state}\n provisioningStatus: ${bgp.provisioningStatus}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/bgp:Bgp example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Resource `equinix.networkedge.Bgp` allows creation and management of Equinix Network\nEdge BGP peering configurations.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst bgp = new equinix.networkedge.Bgp(\"bgp\", {\n connectionId: \"54014acf-9730-4b55-a791-459283d05fb1\",\n localIpAddress: \"10.1.1.1/30\",\n localAsn: 12345,\n remoteIpAddress: \"10.1.1.2\",\n remoteAsn: 66123,\n authenticationKey: \"secret\",\n});\nexport const state = bgp.state;\nexport const provisioningStatus = bgp.provisioningStatus;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nbgp = equinix.networkedge.Bgp(\"bgp\",\n connection_id=\"54014acf-9730-4b55-a791-459283d05fb1\",\n local_ip_address=\"10.1.1.1/30\",\n local_asn=12345,\n remote_ip_address=\"10.1.1.2\",\n remote_asn=66123,\n authentication_key=\"secret\")\npulumi.export(\"state\", bgp.state)\npulumi.export(\"provisioningStatus\", bgp.provisioning_status)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbgp, err := networkedge.NewBgp(ctx, \"bgp\", \u0026networkedge.BgpArgs{\n\t\t\tConnectionId: pulumi.String(\"54014acf-9730-4b55-a791-459283d05fb1\"),\n\t\t\tLocalIpAddress: pulumi.String(\"10.1.1.1/30\"),\n\t\t\tLocalAsn: pulumi.Int(12345),\n\t\t\tRemoteIpAddress: pulumi.String(\"10.1.1.2\"),\n\t\t\tRemoteAsn: pulumi.Int(66123),\n\t\t\tAuthenticationKey: pulumi.String(\"secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"state\", bgp.State)\n\t\tctx.Export(\"provisioningStatus\", bgp.ProvisioningStatus)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bgp = new Equinix.NetworkEdge.Bgp(\"bgp\", new()\n {\n ConnectionId = \"54014acf-9730-4b55-a791-459283d05fb1\",\n LocalIpAddress = \"10.1.1.1/30\",\n LocalAsn = 12345,\n RemoteIpAddress = \"10.1.1.2\",\n RemoteAsn = 66123,\n AuthenticationKey = \"secret\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"state\"] = bgp.State,\n [\"provisioningStatus\"] = bgp.ProvisioningStatus,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.Bgp;\nimport com.equinix.pulumi.networkedge.BgpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bgp = new Bgp(\"bgp\", BgpArgs.builder() \n .connectionId(\"54014acf-9730-4b55-a791-459283d05fb1\")\n .localIpAddress(\"10.1.1.1/30\")\n .localAsn(12345)\n .remoteIpAddress(\"10.1.1.2\")\n .remoteAsn(66123)\n .authenticationKey(\"secret\")\n .build());\n\n ctx.export(\"state\", bgp.state());\n ctx.export(\"provisioningStatus\", bgp.provisioningStatus());\n }\n}\n```\n```yaml\nresources:\n bgp:\n type: equinix:networkedge:Bgp\n properties:\n connectionId: 54014acf-9730-4b55-a791-459283d05fb1\n localIpAddress: 10.1.1.1/30\n localAsn: 12345\n remoteIpAddress: 10.1.1.2\n remoteAsn: 66123\n authenticationKey: secret\noutputs:\n state: ${bgp.state}\n provisioningStatus: ${bgp.provisioningStatus}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/bgp:Bgp example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"authenticationKey": {
"type": "string",
@@ -14177,7 +15069,7 @@
}
},
"equinix:networkedge/device:Device": {
- "description": "{{% examples %}}\nResource `equinix.networkedge.Device` allows creation and management of Equinix Network Edge virtual\nnetwork devices.\n\nNetwork Edge virtual network devices can be created in two modes:\n\n* **managed** - (default) Where Equinix manages connectivity and services in the device and\ncustomer gets limited access to the device.\n* **self-configured** - Where customer provisions and manages own services in the device with less\nrestricted access. Some device types are offered only in this mode.\n\nIn addition to management modes, there are two software license modes available:\n\n* **subscription** - Where Equinix provides software license, including end-to-end support, and\nbills for the service respectively.\n* **BYOL** - [bring your own license] Where customer brings his own, already procured device\nsoftware license. There are no charges associated with such license. It is the only licensing mode\nfor `self-configured` devices.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst accountName = config.require(\"accountName\");\nconst licenseToken = config.require(\"licenseToken\");\nconst sshUserName = config.require(\"sshUserName\");\nconst sshKeyName = config.require(\"sshKeyName\");\nconst aclTemplateId = config.require(\"aclTemplateId\");\nconst metro = config.get(\"metro\") || \"SV\";\nconst devicePackageCode = config.get(\"devicePackageCode\") || \"network-essentials\";\nconst deviceVersion = config.get(\"deviceVersion\") || \"17.06.01a\";\nconst sizeInCores = config.getNumber(\"sizeInCores\") || 2;\nconst termLength = config.getNumber(\"termLength\") || 6;\nconst additionalBandwidth = config.getNumber(\"additionalBandwidth\") || 5;\nconst accountNum = equinix.networkedge.getAccount({\n name: accountName,\n metroCode: metro,\n}).then(invoke =\u003e invoke.number);\nconst c8KRouter = new equinix.networkedge.Device(\"c8kRouter\", {\n name: \"catalystRouter\",\n metroCode: metro,\n typeCode: \"C8000V\",\n selfManaged: true,\n byol: true,\n packageCode: devicePackageCode,\n notifications: [\"example@equinix.com\"],\n hostname: \"C8KV\",\n accountNumber: accountNum,\n version: deviceVersion,\n coreCount: sizeInCores,\n termLength: termLength,\n licenseToken: licenseToken,\n additionalBandwidth: additionalBandwidth,\n sshKey: {\n username: sshUserName,\n keyName: sshKeyName,\n },\n aclTemplateId: aclTemplateId,\n});\nexport const routerId = c8KRouter.id;\nexport const provisionStatus = c8KRouter.status;\nexport const licenseStatus = c8KRouter.licenseStatus;\nexport const sshIpAddress = c8KRouter.sshIpAddress;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\naccount_name = config.require(\"accountName\")\nlicense_token = config.require(\"licenseToken\")\nssh_user_name = config.require(\"sshUserName\")\nssh_key_name = config.require(\"sshKeyName\")\nacl_template_id = config.require(\"aclTemplateId\")\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"SV\"\ndevice_package_code = config.get(\"devicePackageCode\")\nif device_package_code is None:\n device_package_code = \"network-essentials\"\ndevice_version = config.get(\"deviceVersion\")\nif device_version is None:\n device_version = \"17.06.01a\"\nsize_in_cores = config.get_int(\"sizeInCores\")\nif size_in_cores is None:\n size_in_cores = 2\nterm_length = config.get_int(\"termLength\")\nif term_length is None:\n term_length = 6\nadditional_bandwidth = config.get_int(\"additionalBandwidth\")\nif additional_bandwidth is None:\n additional_bandwidth = 5\naccount_num = equinix.networkedge.get_account(name=account_name,\n metro_code=metro).number\nc8_k_router = equinix.networkedge.Device(\"c8kRouter\",\n name=\"catalystRouter\",\n metro_code=metro,\n type_code=\"C8000V\",\n self_managed=True,\n byol=True,\n package_code=device_package_code,\n notifications=[\"example@equinix.com\"],\n hostname=\"C8KV\",\n account_number=account_num,\n version=device_version,\n core_count=size_in_cores,\n term_length=term_length,\n license_token=license_token,\n additional_bandwidth=additional_bandwidth,\n ssh_key=equinix.networkedge.DeviceSshKeyArgs(\n username=ssh_user_name,\n key_name=ssh_key_name,\n ),\n acl_template_id=acl_template_id)\npulumi.export(\"routerId\", c8_k_router.id)\npulumi.export(\"provisionStatus\", c8_k_router.status)\npulumi.export(\"licenseStatus\", c8_k_router.license_status)\npulumi.export(\"sshIpAddress\", c8_k_router.ssh_ip_address)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\taccountName := cfg.Require(\"accountName\")\n\t\tlicenseToken := cfg.Require(\"licenseToken\")\n\t\tsshUserName := cfg.Require(\"sshUserName\")\n\t\tsshKeyName := cfg.Require(\"sshKeyName\")\n\t\taclTemplateId := cfg.Require(\"aclTemplateId\")\n\t\tmetro := \"SV\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\tdevicePackageCode := \"network-essentials\"\n\t\tif param := cfg.Get(\"devicePackageCode\"); param != \"\" {\n\t\t\tdevicePackageCode = param\n\t\t}\n\t\tdeviceVersion := \"17.06.01a\"\n\t\tif param := cfg.Get(\"deviceVersion\"); param != \"\" {\n\t\t\tdeviceVersion = param\n\t\t}\n\t\tsizeInCores := 2\n\t\tif param := cfg.GetInt(\"sizeInCores\"); param != 0 {\n\t\t\tsizeInCores = param\n\t\t}\n\t\ttermLength := 6\n\t\tif param := cfg.GetInt(\"termLength\"); param != 0 {\n\t\t\ttermLength = param\n\t\t}\n\t\tadditionalBandwidth := 5\n\t\tif param := cfg.GetInt(\"additionalBandwidth\"); param != 0 {\n\t\t\tadditionalBandwidth = param\n\t\t}\n\t\taccountNum := networkedge.GetAccount(ctx, \u0026networkedge.GetAccountArgs{\n\t\t\tName: pulumi.StringRef(accountName),\n\t\t\tMetroCode: metro,\n\t\t}, nil).Number\n\t\tc8KRouter, err := networkedge.NewDevice(ctx, \"c8kRouter\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"catalystRouter\"),\n\t\t\tMetroCode: pulumi.String(metro),\n\t\t\tTypeCode: pulumi.String(\"C8000V\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol: pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(devicePackageCode),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t},\n\t\t\tHostname: pulumi.String(\"C8KV\"),\n\t\t\tAccountNumber: *pulumi.String(accountNum),\n\t\t\tVersion: pulumi.Any(deviceVersion),\n\t\t\tCoreCount: pulumi.Int(sizeInCores),\n\t\t\tTermLength: pulumi.Int(termLength),\n\t\t\tLicenseToken: pulumi.String(licenseToken),\n\t\t\tAdditionalBandwidth: pulumi.Int(additionalBandwidth),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(sshUserName),\n\t\t\t\tKeyName: pulumi.String(sshKeyName),\n\t\t\t},\n\t\t\tAclTemplateId: pulumi.String(aclTemplateId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"routerId\", c8KRouter.ID())\n\t\tctx.Export(\"provisionStatus\", c8KRouter.Status)\n\t\tctx.Export(\"licenseStatus\", c8KRouter.LicenseStatus)\n\t\tctx.Export(\"sshIpAddress\", c8KRouter.SshIpAddress)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var accountName = config.Require(\"accountName\");\n var licenseToken = config.Require(\"licenseToken\");\n var sshUserName = config.Require(\"sshUserName\");\n var sshKeyName = config.Require(\"sshKeyName\");\n var aclTemplateId = config.Require(\"aclTemplateId\");\n var metro = config.Get(\"metro\") ?? \"SV\";\n var devicePackageCode = config.Get(\"devicePackageCode\") ?? \"network-essentials\";\n var deviceVersion = config.Get(\"deviceVersion\") ?? \"17.06.01a\";\n var sizeInCores = config.GetNumber(\"sizeInCores\") ?? 2;\n var termLength = config.GetNumber(\"termLength\") ?? 6;\n var additionalBandwidth = config.GetNumber(\"additionalBandwidth\") ?? 5;\n var accountNum = Equinix.NetworkEdge.GetAccount.Invoke(new()\n {\n Name = accountName,\n MetroCode = metro,\n }).Apply(invoke =\u003e invoke.Number);\n\n var c8KRouter = new Equinix.NetworkEdge.Device(\"c8kRouter\", new()\n {\n Name = \"catalystRouter\",\n MetroCode = metro,\n TypeCode = \"C8000V\",\n SelfManaged = true,\n Byol = true,\n PackageCode = devicePackageCode,\n Notifications = new[]\n {\n \"example@equinix.com\",\n },\n Hostname = \"C8KV\",\n AccountNumber = accountNum,\n Version = deviceVersion,\n CoreCount = sizeInCores,\n TermLength = termLength,\n LicenseToken = licenseToken,\n AdditionalBandwidth = additionalBandwidth,\n SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n {\n Username = sshUserName,\n KeyName = sshKeyName,\n },\n AclTemplateId = aclTemplateId,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"routerId\"] = c8KRouter.Id,\n [\"provisionStatus\"] = c8KRouter.Status,\n [\"licenseStatus\"] = c8KRouter.LicenseStatus,\n [\"sshIpAddress\"] = c8KRouter.SshIpAddress,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.Device;\nimport com.equinix.pulumi.networkedge.DeviceArgs;\nimport com.equinix.pulumi.networkedge.inputs.DeviceSshKeyArgs;\nimport com.equinix.pulumi.networkedge.inputs.GetAccountArgs;\nimport com.equinix.pulumi.networkedge.NetworkedgeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var accountName = config.get(\"accountName\").get();\n final var licenseToken = config.get(\"licenseToken\").get();\n final var sshUserName = config.get(\"sshUserName\").get();\n final var sshKeyName = config.get(\"sshKeyName\").get();\n final var aclTemplateId = config.get(\"aclTemplateId\").get();\n final var metro = config.get(\"metro\").orElse(\"SV\");\n final var devicePackageCode = config.get(\"devicePackageCode\").orElse(\"network-essentials\");\n final var deviceVersion = config.get(\"deviceVersion\").orElse(\"17.06.01a\");\n final var sizeInCores = Integer.parseInt(config.get(\"sizeInCores\").orElse(\"2\"));\n final var termLength = Integer.parseInt(config.get(\"termLength\").orElse(\"6\"));\n final var additionalBandwidth = Integer.parseInt(config.get(\"additionalBandwidth\").orElse(\"5\"));\n final var accountNum = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n .name(accountName)\n .metroCode(metro)\n .build()).applyValue(account -\u003e account.number());\n\n var c8KRouter = new Device(\"c8KRouter\", DeviceArgs.builder() \n .name(\"catalystRouter\")\n .metroCode(metro)\n .typeCode(\"C8000V\")\n .selfManaged(true)\n .byol(true)\n .packageCode(devicePackageCode)\n .notifications(\"example@equinix.com\")\n .hostname(\"C8KV\")\n .accountNumber(accountNum)\n .version(deviceVersion)\n .coreCount(sizeInCores)\n .termLength(termLength)\n .licenseToken(licenseToken)\n .additionalBandwidth(additionalBandwidth)\n .sshKey(DeviceSshKeyArgs.builder()\n .username(sshUserName)\n .keyName(sshKeyName)\n .build())\n .aclTemplateId(aclTemplateId)\n .build());\n\n ctx.export(\"routerId\", c8KRouter.id());\n ctx.export(\"provisionStatus\", c8KRouter.status());\n ctx.export(\"licenseStatus\", c8KRouter.licenseStatus());\n ctx.export(\"sshIpAddress\", c8KRouter.sshIpAddress());\n }\n}\n```\n```yaml\nconfig:\n accountName:\n type: string\n licenseToken:\n type: string\n sshUserName:\n type: string\n sshKeyName:\n type: string\n aclTemplateId:\n type: string\n metro:\n type: string\n default: SV\n devicePackageCode:\n type: string\n default: network-essentials\n deviceVersion:\n type: string\n default: 17.06.01a\n sizeInCores:\n type: integer\n default: 2\n termLength:\n type: integer\n default: 6\n additionalBandwidth:\n type: integer\n default: 5\nvariables:\n accountNum:\n fn::invoke:\n function: equinix:networkedge:getAccount\n arguments:\n name: ${accountName}\n metroCode: ${metro}\n return: number\nresources:\n c8kRouter:\n type: equinix:networkedge:Device\n properties:\n name: catalystRouter\n metroCode: ${metro}\n typeCode: C8000V\n selfManaged: true\n byol: true\n packageCode: ${devicePackageCode}\n notifications:\n - \"example@equinix.com\"\n hostname: C8KV\n accountNumber: ${accountNum}\n version: ${deviceVersion}\n coreCount: ${sizeInCores}\n termLength: ${termLength}\n licenseToken: ${licenseToken}\n additionalBandwidth: ${additionalBandwidth}\n sshKey:\n username: ${sshUserName}\n keyName: ${sshKeyName}\n aclTemplateId: ${aclTemplateId}\noutputs:\n routerId: ${c8kRouter.id}\n provisionStatus: ${c8kRouter.status}\n licenseStatus: ${c8kRouter.licenseStatus}\n sshIpAddress: ${c8kRouter.sshIpAddress}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/device:Device example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e The `license_token`, `mgmt_acl_template_uuid` and `cloud_init_file_id` fields can not be imported.\n\n{{% /examples %}}",
+ "description": "Resource `equinix.networkedge.Device` allows creation and management of Equinix Network Edge virtual\nnetwork devices.\n\nNetwork Edge virtual network devices can be created in two modes:\n\n* **managed** - (default) Where Equinix manages connectivity and services in the device and\ncustomer gets limited access to the device.\n* **self-configured** - Where customer provisions and manages own services in the device with less\nrestricted access. Some device types are offered only in this mode.\n\nIn addition to management modes, there are two software license modes available:\n\n* **subscription** - Where Equinix provides software license, including end-to-end support, and\nbills for the service respectively.\n* **BYOL** - [bring your own license] Where customer brings his own, already procured device\nsoftware license. There are no charges associated with such license. It is the only licensing mode\nfor `self-configured` devices.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst accountName = config.require(\"accountName\");\nconst licenseToken = config.require(\"licenseToken\");\nconst sshUserName = config.require(\"sshUserName\");\nconst sshKeyName = config.require(\"sshKeyName\");\nconst aclTemplateId = config.require(\"aclTemplateId\");\nconst metro = config.get(\"metro\") || \"SV\";\nconst devicePackageCode = config.get(\"devicePackageCode\") || \"network-essentials\";\nconst deviceVersion = config.get(\"deviceVersion\") || \"17.06.01a\";\nconst sizeInCores = config.getNumber(\"sizeInCores\") || 2;\nconst termLength = config.getNumber(\"termLength\") || 6;\nconst additionalBandwidth = config.getNumber(\"additionalBandwidth\") || 5;\nconst accountNum = equinix.networkedge.getAccount({\n name: accountName,\n metroCode: metro,\n}).then(invoke =\u003e invoke.number);\nconst c8KRouter = new equinix.networkedge.Device(\"c8kRouter\", {\n name: \"catalystRouter\",\n metroCode: metro,\n typeCode: \"C8000V\",\n selfManaged: true,\n byol: true,\n packageCode: devicePackageCode,\n notifications: [\"example@equinix.com\"],\n hostname: \"C8KV\",\n accountNumber: accountNum,\n version: deviceVersion,\n coreCount: sizeInCores,\n termLength: termLength,\n licenseToken: licenseToken,\n additionalBandwidth: additionalBandwidth,\n sshKey: {\n username: sshUserName,\n keyName: sshKeyName,\n },\n aclTemplateId: aclTemplateId,\n});\nexport const routerId = c8KRouter.id;\nexport const provisionStatus = c8KRouter.status;\nexport const licenseStatus = c8KRouter.licenseStatus;\nexport const sshIpAddress = c8KRouter.sshIpAddress;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\naccount_name = config.require(\"accountName\")\nlicense_token = config.require(\"licenseToken\")\nssh_user_name = config.require(\"sshUserName\")\nssh_key_name = config.require(\"sshKeyName\")\nacl_template_id = config.require(\"aclTemplateId\")\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"SV\"\ndevice_package_code = config.get(\"devicePackageCode\")\nif device_package_code is None:\n device_package_code = \"network-essentials\"\ndevice_version = config.get(\"deviceVersion\")\nif device_version is None:\n device_version = \"17.06.01a\"\nsize_in_cores = config.get_int(\"sizeInCores\")\nif size_in_cores is None:\n size_in_cores = 2\nterm_length = config.get_int(\"termLength\")\nif term_length is None:\n term_length = 6\nadditional_bandwidth = config.get_int(\"additionalBandwidth\")\nif additional_bandwidth is None:\n additional_bandwidth = 5\naccount_num = equinix.networkedge.get_account(name=account_name,\n metro_code=metro).number\nc8_k_router = equinix.networkedge.Device(\"c8kRouter\",\n name=\"catalystRouter\",\n metro_code=metro,\n type_code=\"C8000V\",\n self_managed=True,\n byol=True,\n package_code=device_package_code,\n notifications=[\"example@equinix.com\"],\n hostname=\"C8KV\",\n account_number=account_num,\n version=device_version,\n core_count=size_in_cores,\n term_length=term_length,\n license_token=license_token,\n additional_bandwidth=additional_bandwidth,\n ssh_key=equinix.networkedge.DeviceSshKeyArgs(\n username=ssh_user_name,\n key_name=ssh_key_name,\n ),\n acl_template_id=acl_template_id)\npulumi.export(\"routerId\", c8_k_router.id)\npulumi.export(\"provisionStatus\", c8_k_router.status)\npulumi.export(\"licenseStatus\", c8_k_router.license_status)\npulumi.export(\"sshIpAddress\", c8_k_router.ssh_ip_address)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\taccountName := cfg.Require(\"accountName\")\n\t\tlicenseToken := cfg.Require(\"licenseToken\")\n\t\tsshUserName := cfg.Require(\"sshUserName\")\n\t\tsshKeyName := cfg.Require(\"sshKeyName\")\n\t\taclTemplateId := cfg.Require(\"aclTemplateId\")\n\t\tmetro := \"SV\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\tdevicePackageCode := \"network-essentials\"\n\t\tif param := cfg.Get(\"devicePackageCode\"); param != \"\" {\n\t\t\tdevicePackageCode = param\n\t\t}\n\t\tdeviceVersion := \"17.06.01a\"\n\t\tif param := cfg.Get(\"deviceVersion\"); param != \"\" {\n\t\t\tdeviceVersion = param\n\t\t}\n\t\tsizeInCores := 2\n\t\tif param := cfg.GetInt(\"sizeInCores\"); param != 0 {\n\t\t\tsizeInCores = param\n\t\t}\n\t\ttermLength := 6\n\t\tif param := cfg.GetInt(\"termLength\"); param != 0 {\n\t\t\ttermLength = param\n\t\t}\n\t\tadditionalBandwidth := 5\n\t\tif param := cfg.GetInt(\"additionalBandwidth\"); param != 0 {\n\t\t\tadditionalBandwidth = param\n\t\t}\n\t\taccountNum := networkedge.GetAccount(ctx, \u0026networkedge.GetAccountArgs{\n\t\t\tName: pulumi.StringRef(accountName),\n\t\t\tMetroCode: metro,\n\t\t}, nil).Number\n\t\tc8KRouter, err := networkedge.NewDevice(ctx, \"c8kRouter\", \u0026networkedge.DeviceArgs{\n\t\t\tName: pulumi.String(\"catalystRouter\"),\n\t\t\tMetroCode: pulumi.String(metro),\n\t\t\tTypeCode: pulumi.String(\"C8000V\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol: pulumi.Bool(true),\n\t\t\tPackageCode: pulumi.String(devicePackageCode),\n\t\t\tNotifications: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example@equinix.com\"),\n\t\t\t},\n\t\t\tHostname: pulumi.String(\"C8KV\"),\n\t\t\tAccountNumber: *pulumi.String(accountNum),\n\t\t\tVersion: pulumi.Any(deviceVersion),\n\t\t\tCoreCount: pulumi.Int(sizeInCores),\n\t\t\tTermLength: pulumi.Int(termLength),\n\t\t\tLicenseToken: pulumi.String(licenseToken),\n\t\t\tAdditionalBandwidth: pulumi.Int(additionalBandwidth),\n\t\t\tSshKey: \u0026networkedge.DeviceSshKeyArgs{\n\t\t\t\tUsername: pulumi.String(sshUserName),\n\t\t\t\tKeyName: pulumi.String(sshKeyName),\n\t\t\t},\n\t\t\tAclTemplateId: pulumi.String(aclTemplateId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"routerId\", c8KRouter.ID())\n\t\tctx.Export(\"provisionStatus\", c8KRouter.Status)\n\t\tctx.Export(\"licenseStatus\", c8KRouter.LicenseStatus)\n\t\tctx.Export(\"sshIpAddress\", c8KRouter.SshIpAddress)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var accountName = config.Require(\"accountName\");\n var licenseToken = config.Require(\"licenseToken\");\n var sshUserName = config.Require(\"sshUserName\");\n var sshKeyName = config.Require(\"sshKeyName\");\n var aclTemplateId = config.Require(\"aclTemplateId\");\n var metro = config.Get(\"metro\") ?? \"SV\";\n var devicePackageCode = config.Get(\"devicePackageCode\") ?? \"network-essentials\";\n var deviceVersion = config.Get(\"deviceVersion\") ?? \"17.06.01a\";\n var sizeInCores = config.GetNumber(\"sizeInCores\") ?? 2;\n var termLength = config.GetNumber(\"termLength\") ?? 6;\n var additionalBandwidth = config.GetNumber(\"additionalBandwidth\") ?? 5;\n var accountNum = Equinix.NetworkEdge.GetAccount.Invoke(new()\n {\n Name = accountName,\n MetroCode = metro,\n }).Apply(invoke =\u003e invoke.Number);\n\n var c8KRouter = new Equinix.NetworkEdge.Device(\"c8kRouter\", new()\n {\n Name = \"catalystRouter\",\n MetroCode = metro,\n TypeCode = \"C8000V\",\n SelfManaged = true,\n Byol = true,\n PackageCode = devicePackageCode,\n Notifications = new[]\n {\n \"example@equinix.com\",\n },\n Hostname = \"C8KV\",\n AccountNumber = accountNum,\n Version = deviceVersion,\n CoreCount = sizeInCores,\n TermLength = termLength,\n LicenseToken = licenseToken,\n AdditionalBandwidth = additionalBandwidth,\n SshKey = new Equinix.NetworkEdge.Inputs.DeviceSshKeyArgs\n {\n Username = sshUserName,\n KeyName = sshKeyName,\n },\n AclTemplateId = aclTemplateId,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"routerId\"] = c8KRouter.Id,\n [\"provisionStatus\"] = c8KRouter.Status,\n [\"licenseStatus\"] = c8KRouter.LicenseStatus,\n [\"sshIpAddress\"] = c8KRouter.SshIpAddress,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.Device;\nimport com.equinix.pulumi.networkedge.DeviceArgs;\nimport com.equinix.pulumi.networkedge.inputs.DeviceSshKeyArgs;\nimport com.equinix.pulumi.networkedge.inputs.GetAccountArgs;\nimport com.equinix.pulumi.networkedge.NetworkedgeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var accountName = config.get(\"accountName\").get();\n final var licenseToken = config.get(\"licenseToken\").get();\n final var sshUserName = config.get(\"sshUserName\").get();\n final var sshKeyName = config.get(\"sshKeyName\").get();\n final var aclTemplateId = config.get(\"aclTemplateId\").get();\n final var metro = config.get(\"metro\").orElse(\"SV\");\n final var devicePackageCode = config.get(\"devicePackageCode\").orElse(\"network-essentials\");\n final var deviceVersion = config.get(\"deviceVersion\").orElse(\"17.06.01a\");\n final var sizeInCores = Integer.parseInt(config.get(\"sizeInCores\").orElse(\"2\"));\n final var termLength = Integer.parseInt(config.get(\"termLength\").orElse(\"6\"));\n final var additionalBandwidth = Integer.parseInt(config.get(\"additionalBandwidth\").orElse(\"5\"));\n final var accountNum = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n .name(accountName)\n .metroCode(metro)\n .build()).applyValue(account -\u003e account.number());\n\n var c8KRouter = new Device(\"c8KRouter\", DeviceArgs.builder() \n .name(\"catalystRouter\")\n .metroCode(metro)\n .typeCode(\"C8000V\")\n .selfManaged(true)\n .byol(true)\n .packageCode(devicePackageCode)\n .notifications(\"example@equinix.com\")\n .hostname(\"C8KV\")\n .accountNumber(accountNum)\n .version(deviceVersion)\n .coreCount(sizeInCores)\n .termLength(termLength)\n .licenseToken(licenseToken)\n .additionalBandwidth(additionalBandwidth)\n .sshKey(DeviceSshKeyArgs.builder()\n .username(sshUserName)\n .keyName(sshKeyName)\n .build())\n .aclTemplateId(aclTemplateId)\n .build());\n\n ctx.export(\"routerId\", c8KRouter.id());\n ctx.export(\"provisionStatus\", c8KRouter.status());\n ctx.export(\"licenseStatus\", c8KRouter.licenseStatus());\n ctx.export(\"sshIpAddress\", c8KRouter.sshIpAddress());\n }\n}\n```\n```yaml\nconfig:\n accountName:\n type: string\n licenseToken:\n type: string\n sshUserName:\n type: string\n sshKeyName:\n type: string\n aclTemplateId:\n type: string\n metro:\n type: string\n default: SV\n devicePackageCode:\n type: string\n default: network-essentials\n deviceVersion:\n type: string\n default: 17.06.01a\n sizeInCores:\n type: integer\n default: 2\n termLength:\n type: integer\n default: 6\n additionalBandwidth:\n type: integer\n default: 5\nvariables:\n accountNum:\n fn::invoke:\n function: equinix:networkedge:getAccount\n arguments:\n name: ${accountName}\n metroCode: ${metro}\n return: number\nresources:\n c8kRouter:\n type: equinix:networkedge:Device\n properties:\n name: catalystRouter\n metroCode: ${metro}\n typeCode: C8000V\n selfManaged: true\n byol: true\n packageCode: ${devicePackageCode}\n notifications:\n - \"example@equinix.com\"\n hostname: C8KV\n accountNumber: ${accountNum}\n version: ${deviceVersion}\n coreCount: ${sizeInCores}\n termLength: ${termLength}\n licenseToken: ${licenseToken}\n additionalBandwidth: ${additionalBandwidth}\n sshKey:\n username: ${sshUserName}\n keyName: ${sshKeyName}\n aclTemplateId: ${aclTemplateId}\noutputs:\n routerId: ${c8kRouter.id}\n provisionStatus: ${c8kRouter.status}\n licenseStatus: ${c8kRouter.licenseStatus}\n sshIpAddress: ${c8kRouter.sshIpAddress}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/device:Device example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e The `license_token`, `mgmt_acl_template_uuid` and `cloud_init_file_id` fields can not be imported.\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"accountNumber": {
"type": "string",
@@ -14215,6 +15107,14 @@
"type": "integer",
"description": "Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**)\n"
},
+ "diverseDeviceId": {
+ "type": "string",
+ "description": "Unique ID of an existing device.\nUse this field to let Equinix know if you want your new device to be in a different location from any existing virtual\ndevice. This field is only meaningful for single devices.\n"
+ },
+ "diverseDeviceName": {
+ "type": "string",
+ "description": "Name of the device with diverse device UUID. This field is returned in device details if the\ndevice is created by passing diverse_device_id.\n"
+ },
"hostname": {
"type": "string",
"description": "Device hostname prefix.\n"
@@ -14277,6 +15177,10 @@
"type": "string",
"description": "Device software package code.\n"
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the device is scoped to.If you\nleave it out, the device will be created under the default project id of your organization.\n"
+ },
"purchaseOrderNumber": {
"type": "string",
"description": "Purchase order number associated with a device order.\n"
@@ -14362,6 +15266,8 @@
"additionalBandwidth",
"asn",
"coreCount",
+ "diverseDeviceId",
+ "diverseDeviceName",
"hostname",
"ibx",
"interfaces",
@@ -14372,6 +15278,7 @@
"name",
"notifications",
"packageCode",
+ "projectId",
"redundancyType",
"redundantId",
"region",
@@ -14423,6 +15330,10 @@
"type": "integer",
"description": "Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**)\n"
},
+ "diverseDeviceId": {
+ "type": "string",
+ "description": "Unique ID of an existing device.\nUse this field to let Equinix know if you want your new device to be in a different location from any existing virtual\ndevice. This field is only meaningful for single devices.\n"
+ },
"hostname": {
"type": "string",
"description": "Device hostname prefix.\n",
@@ -14478,6 +15389,11 @@
"description": "Device software package code.\n",
"willReplaceOnChanges": true
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the device is scoped to.If you\nleave it out, the device will be created under the default project id of your organization.\n",
+ "willReplaceOnChanges": true
+ },
"purchaseOrderNumber": {
"type": "string",
"description": "Purchase order number associated with a device order.\n",
@@ -14599,6 +15515,14 @@
"type": "integer",
"description": "Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**)\n"
},
+ "diverseDeviceId": {
+ "type": "string",
+ "description": "Unique ID of an existing device.\nUse this field to let Equinix know if you want your new device to be in a different location from any existing virtual\ndevice. This field is only meaningful for single devices.\n"
+ },
+ "diverseDeviceName": {
+ "type": "string",
+ "description": "Name of the device with diverse device UUID. This field is returned in device details if the\ndevice is created by passing diverse_device_id.\n"
+ },
"hostname": {
"type": "string",
"description": "Device hostname prefix.\n",
@@ -14669,6 +15593,11 @@
"description": "Device software package code.\n",
"willReplaceOnChanges": true
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the device is scoped to.If you\nleave it out, the device will be created under the default project id of your organization.\n",
+ "willReplaceOnChanges": true
+ },
"purchaseOrderNumber": {
"type": "string",
"description": "Purchase order number associated with a device order.\n",
@@ -14772,7 +15701,7 @@
}
},
"equinix:networkedge/deviceLink:DeviceLink": {
- "description": "{{% examples %}}\nResource `equinix.networkedge.DeviceLink` allows creation and management of Equinix\nNetwork Edge virtual network device links.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst accountName = config.require(\"accountName\");\nconst accountMetro = config.require(\"accountMetro\");\nconst device1Id = config.require(\"device1Id\");\nconst device2Id = config.require(\"device2Id\");\nconst accountfNum = equinix.networkedge.getAccount({\n name: accountName,\n metroCode: accountMetro,\n}).then(invoke =\u003e invoke.number);\nconst device1Metro = equinix.networkedge.getDevice({\n uuid: device1Id,\n}).then(invoke =\u003e invoke.metroCode);\nconst device2Metro = equinix.networkedge.getDevice({\n uuid: device2Id,\n}).then(invoke =\u003e invoke.metroCode);\nconst deviceLink = new equinix.networkedge.DeviceLink(\"deviceLink\", {\n name: \"test-link\",\n subnet: \"192.168.40.64/27\",\n devices: [\n {\n id: \"device1Id\",\n asn: 22111,\n interfaceId: 6,\n },\n {\n id: \"device2Id\",\n asn: 22333,\n interfaceId: 7,\n },\n ],\n links: [{\n accountNumber: accountfNum,\n srcMetroCode: device1Metro,\n dstMetroCode: device2Metro,\n throughput: \"50\",\n throughputUnit: \"Mbps\",\n }],\n});\nexport const status = deviceLink.status;\nexport const devices = deviceLink.devices;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\naccount_name = config.require(\"accountName\")\naccount_metro = config.require(\"accountMetro\")\ndevice1_id = config.require(\"device1Id\")\ndevice2_id = config.require(\"device2Id\")\naccountf_num = equinix.networkedge.get_account(name=account_name,\n metro_code=account_metro).number\ndevice1_metro = equinix.networkedge.get_device(uuid=device1_id).metro_code\ndevice2_metro = equinix.networkedge.get_device(uuid=device2_id).metro_code\ndevice_link = equinix.networkedge.DeviceLink(\"deviceLink\",\n name=\"test-link\",\n subnet=\"192.168.40.64/27\",\n devices=[\n equinix.networkedge.DeviceLinkDeviceArgs(\n id=\"device1Id\",\n asn=22111,\n interface_id=6,\n ),\n equinix.networkedge.DeviceLinkDeviceArgs(\n id=\"device2Id\",\n asn=22333,\n interface_id=7,\n ),\n ],\n links=[equinix.networkedge.DeviceLinkLinkArgs(\n account_number=accountf_num,\n src_metro_code=device1_metro,\n dst_metro_code=device2_metro,\n throughput=\"50\",\n throughput_unit=\"Mbps\",\n )])\npulumi.export(\"status\", device_link.status)\npulumi.export(\"devices\", device_link.devices)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\taccountName := cfg.Require(\"accountName\")\n\t\taccountMetro := cfg.Require(\"accountMetro\")\n\t\tdevice1Id := cfg.Require(\"device1Id\")\n\t\tdevice2Id := cfg.Require(\"device2Id\")\n\t\taccountfNum := networkedge.GetAccount(ctx, \u0026networkedge.GetAccountArgs{\n\t\t\tName: pulumi.StringRef(accountName),\n\t\t\tMetroCode: accountMetro,\n\t\t}, nil).Number\n\t\tdevice1Metro := networkedge.LookupDevice(ctx, \u0026networkedge.LookupDeviceArgs{\n\t\t\tUuid: pulumi.StringRef(device1Id),\n\t\t}, nil).MetroCode\n\t\tdevice2Metro := networkedge.LookupDevice(ctx, \u0026networkedge.LookupDeviceArgs{\n\t\t\tUuid: pulumi.StringRef(device2Id),\n\t\t}, nil).MetroCode\n\t\tdeviceLink, err := networkedge.NewDeviceLink(ctx, \"deviceLink\", \u0026networkedge.DeviceLinkArgs{\n\t\t\tName: pulumi.String(\"test-link\"),\n\t\t\tSubnet: pulumi.String(\"192.168.40.64/27\"),\n\t\t\tDevices: networkedge.DeviceLinkDeviceArray{\n\t\t\t\t\u0026networkedge.DeviceLinkDeviceArgs{\n\t\t\t\t\tId: pulumi.String(\"device1Id\"),\n\t\t\t\t\tAsn: pulumi.Int(22111),\n\t\t\t\t\tInterfaceId: pulumi.Int(6),\n\t\t\t\t},\n\t\t\t\t\u0026networkedge.DeviceLinkDeviceArgs{\n\t\t\t\t\tId: pulumi.String(\"device2Id\"),\n\t\t\t\t\tAsn: pulumi.Int(22333),\n\t\t\t\t\tInterfaceId: pulumi.Int(7),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLinks: networkedge.DeviceLinkLinkArray{\n\t\t\t\t\u0026networkedge.DeviceLinkLinkArgs{\n\t\t\t\t\tAccountNumber: *pulumi.String(accountfNum),\n\t\t\t\t\tSrcMetroCode: *pulumi.String(device1Metro),\n\t\t\t\t\tDstMetroCode: *pulumi.String(device2Metro),\n\t\t\t\t\tThroughput: pulumi.String(\"50\"),\n\t\t\t\t\tThroughputUnit: pulumi.String(\"Mbps\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"status\", deviceLink.Status)\n\t\tctx.Export(\"devices\", deviceLink.Devices)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var accountName = config.Require(\"accountName\");\n var accountMetro = config.Require(\"accountMetro\");\n var device1Id = config.Require(\"device1Id\");\n var device2Id = config.Require(\"device2Id\");\n var accountfNum = Equinix.NetworkEdge.GetAccount.Invoke(new()\n {\n Name = accountName,\n MetroCode = accountMetro,\n }).Apply(invoke =\u003e invoke.Number);\n\n var device1Metro = Equinix.NetworkEdge.GetDevice.Invoke(new()\n {\n Uuid = device1Id,\n }).Apply(invoke =\u003e invoke.MetroCode);\n\n var device2Metro = Equinix.NetworkEdge.GetDevice.Invoke(new()\n {\n Uuid = device2Id,\n }).Apply(invoke =\u003e invoke.MetroCode);\n\n var deviceLink = new Equinix.NetworkEdge.DeviceLink(\"deviceLink\", new()\n {\n Name = \"test-link\",\n Subnet = \"192.168.40.64/27\",\n Devices = new[]\n {\n new Equinix.NetworkEdge.Inputs.DeviceLinkDeviceArgs\n {\n Id = \"device1Id\",\n Asn = 22111,\n InterfaceId = 6,\n },\n new Equinix.NetworkEdge.Inputs.DeviceLinkDeviceArgs\n {\n Id = \"device2Id\",\n Asn = 22333,\n InterfaceId = 7,\n },\n },\n Links = new[]\n {\n new Equinix.NetworkEdge.Inputs.DeviceLinkLinkArgs\n {\n AccountNumber = accountfNum,\n SrcMetroCode = device1Metro,\n DstMetroCode = device2Metro,\n Throughput = \"50\",\n ThroughputUnit = \"Mbps\",\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"status\"] = deviceLink.Status,\n [\"devices\"] = deviceLink.Devices,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.DeviceLink;\nimport com.equinix.pulumi.networkedge.DeviceLinkArgs;\nimport com.equinix.pulumi.networkedge.inputs.DeviceLinkDeviceArgs;\nimport com.equinix.pulumi.networkedge.inputs.DeviceLinkLinkArgs;\nimport com.equinix.pulumi.networkedge.inputs.GetAccountArgs;\nimport com.equinix.pulumi.networkedge.inputs.GetDeviceArgs;\nimport com.equinix.pulumi.networkedge.NetworkedgeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var accountName = config.get(\"accountName\").get();\n final var accountMetro = config.get(\"accountMetro\").get();\n final var device1Id = config.get(\"device1Id\").get();\n final var device2Id = config.get(\"device2Id\").get();\n final var accountfNum = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n .name(accountName)\n .metroCode(accountMetro)\n .build()).applyValue(account -\u003e account.number());\n\n final var device1Metro = NetworkedgeFunctions.getDevice(GetDeviceArgs.builder()\n .uuid(device1Id)\n .build()).applyValue(device -\u003e device.metroCode());\n\n final var device2Metro = NetworkedgeFunctions.getDevice(GetDeviceArgs.builder()\n .uuid(device2Id)\n .build()).applyValue(device -\u003e device.metroCode());\n\n var deviceLink = new DeviceLink(\"deviceLink\", DeviceLinkArgs.builder() \n .name(\"test-link\")\n .subnet(\"192.168.40.64/27\")\n .devices( \n DeviceLinkDeviceArgs.builder()\n .id(\"device1Id\")\n .asn(22111)\n .interfaceId(6)\n .build(),\n DeviceLinkDeviceArgs.builder()\n .id(\"device2Id\")\n .asn(22333)\n .interfaceId(7)\n .build())\n .links(DeviceLinkLinkArgs.builder()\n .accountNumber(accountfNum)\n .srcMetroCode(device1Metro)\n .dstMetroCode(device2Metro)\n .throughput(\"50\")\n .throughputUnit(\"Mbps\")\n .build())\n .build());\n\n ctx.export(\"status\", deviceLink.status());\n ctx.export(\"devices\", deviceLink.devices());\n }\n}\n```\n```yaml\nconfig:\n accountName:\n type: string\n accountMetro:\n type: string\n device1Id:\n type: string\n device2Id:\n type: string\nvariables:\n accountfNum:\n fn::invoke:\n function: equinix:networkedge:getAccount\n arguments:\n name: ${accountName}\n metroCode: ${accountMetro}\n return: number\n device1Metro:\n fn::invoke:\n function: equinix:networkedge:getDevice\n arguments:\n uuid: ${device1Id}\n return: metroCode\n device2Metro:\n fn::invoke:\n function: equinix:networkedge:getDevice\n arguments:\n uuid: ${device2Id}\n return: metroCode\nresources:\n deviceLink:\n type: equinix:networkedge:DeviceLink\n properties:\n name: test-link\n subnet: 192.168.40.64/27\n devices:\n - id: device1Id\n asn: 22111\n interfaceId: 6\n - id: device2Id\n asn: 22333\n interfaceId: 7\n links:\n - accountNumber: ${accountfNum}\n srcMetroCode: ${device1Metro}\n dstMetroCode: ${device2Metro}\n throughput: 50\n throughputUnit: Mbps\noutputs:\n status: ${deviceLink.status}\n devices: ${deviceLink.devices}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/deviceLink:DeviceLink example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Resource `equinix.networkedge.DeviceLink` allows creation and management of Equinix\nNetwork Edge virtual network device links.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst accountName = config.require(\"accountName\");\nconst accountMetro = config.require(\"accountMetro\");\nconst device1Id = config.require(\"device1Id\");\nconst device2Id = config.require(\"device2Id\");\nconst accountfNum = equinix.networkedge.getAccount({\n name: accountName,\n metroCode: accountMetro,\n}).then(invoke =\u003e invoke.number);\nconst device1Metro = equinix.networkedge.getDevice({\n uuid: device1Id,\n}).then(invoke =\u003e invoke.metroCode);\nconst device2Metro = equinix.networkedge.getDevice({\n uuid: device2Id,\n}).then(invoke =\u003e invoke.metroCode);\nconst deviceLink = new equinix.networkedge.DeviceLink(\"deviceLink\", {\n name: \"test-link\",\n subnet: \"192.168.40.64/27\",\n devices: [\n {\n id: \"device1Id\",\n asn: 22111,\n interfaceId: 6,\n },\n {\n id: \"device2Id\",\n asn: 22333,\n interfaceId: 7,\n },\n ],\n links: [{\n accountNumber: accountfNum,\n srcMetroCode: device1Metro,\n dstMetroCode: device2Metro,\n throughput: \"50\",\n throughputUnit: \"Mbps\",\n }],\n});\nexport const status = deviceLink.status;\nexport const devices = deviceLink.devices;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\naccount_name = config.require(\"accountName\")\naccount_metro = config.require(\"accountMetro\")\ndevice1_id = config.require(\"device1Id\")\ndevice2_id = config.require(\"device2Id\")\naccountf_num = equinix.networkedge.get_account(name=account_name,\n metro_code=account_metro).number\ndevice1_metro = equinix.networkedge.get_device(uuid=device1_id).metro_code\ndevice2_metro = equinix.networkedge.get_device(uuid=device2_id).metro_code\ndevice_link = equinix.networkedge.DeviceLink(\"deviceLink\",\n name=\"test-link\",\n subnet=\"192.168.40.64/27\",\n devices=[\n equinix.networkedge.DeviceLinkDeviceArgs(\n id=\"device1Id\",\n asn=22111,\n interface_id=6,\n ),\n equinix.networkedge.DeviceLinkDeviceArgs(\n id=\"device2Id\",\n asn=22333,\n interface_id=7,\n ),\n ],\n links=[equinix.networkedge.DeviceLinkLinkArgs(\n account_number=accountf_num,\n src_metro_code=device1_metro,\n dst_metro_code=device2_metro,\n throughput=\"50\",\n throughput_unit=\"Mbps\",\n )])\npulumi.export(\"status\", device_link.status)\npulumi.export(\"devices\", device_link.devices)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\taccountName := cfg.Require(\"accountName\")\n\t\taccountMetro := cfg.Require(\"accountMetro\")\n\t\tdevice1Id := cfg.Require(\"device1Id\")\n\t\tdevice2Id := cfg.Require(\"device2Id\")\n\t\taccountfNum := networkedge.GetAccount(ctx, \u0026networkedge.GetAccountArgs{\n\t\t\tName: pulumi.StringRef(accountName),\n\t\t\tMetroCode: accountMetro,\n\t\t}, nil).Number\n\t\tdevice1Metro := networkedge.LookupDevice(ctx, \u0026networkedge.LookupDeviceArgs{\n\t\t\tUuid: pulumi.StringRef(device1Id),\n\t\t}, nil).MetroCode\n\t\tdevice2Metro := networkedge.LookupDevice(ctx, \u0026networkedge.LookupDeviceArgs{\n\t\t\tUuid: pulumi.StringRef(device2Id),\n\t\t}, nil).MetroCode\n\t\tdeviceLink, err := networkedge.NewDeviceLink(ctx, \"deviceLink\", \u0026networkedge.DeviceLinkArgs{\n\t\t\tName: pulumi.String(\"test-link\"),\n\t\t\tSubnet: pulumi.String(\"192.168.40.64/27\"),\n\t\t\tDevices: networkedge.DeviceLinkDeviceArray{\n\t\t\t\t\u0026networkedge.DeviceLinkDeviceArgs{\n\t\t\t\t\tId: pulumi.String(\"device1Id\"),\n\t\t\t\t\tAsn: pulumi.Int(22111),\n\t\t\t\t\tInterfaceId: pulumi.Int(6),\n\t\t\t\t},\n\t\t\t\t\u0026networkedge.DeviceLinkDeviceArgs{\n\t\t\t\t\tId: pulumi.String(\"device2Id\"),\n\t\t\t\t\tAsn: pulumi.Int(22333),\n\t\t\t\t\tInterfaceId: pulumi.Int(7),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLinks: networkedge.DeviceLinkLinkArray{\n\t\t\t\t\u0026networkedge.DeviceLinkLinkArgs{\n\t\t\t\t\tAccountNumber: *pulumi.String(accountfNum),\n\t\t\t\t\tSrcMetroCode: *pulumi.String(device1Metro),\n\t\t\t\t\tDstMetroCode: *pulumi.String(device2Metro),\n\t\t\t\t\tThroughput: pulumi.String(\"50\"),\n\t\t\t\t\tThroughputUnit: pulumi.String(\"Mbps\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"status\", deviceLink.Status)\n\t\tctx.Export(\"devices\", deviceLink.Devices)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var accountName = config.Require(\"accountName\");\n var accountMetro = config.Require(\"accountMetro\");\n var device1Id = config.Require(\"device1Id\");\n var device2Id = config.Require(\"device2Id\");\n var accountfNum = Equinix.NetworkEdge.GetAccount.Invoke(new()\n {\n Name = accountName,\n MetroCode = accountMetro,\n }).Apply(invoke =\u003e invoke.Number);\n\n var device1Metro = Equinix.NetworkEdge.GetDevice.Invoke(new()\n {\n Uuid = device1Id,\n }).Apply(invoke =\u003e invoke.MetroCode);\n\n var device2Metro = Equinix.NetworkEdge.GetDevice.Invoke(new()\n {\n Uuid = device2Id,\n }).Apply(invoke =\u003e invoke.MetroCode);\n\n var deviceLink = new Equinix.NetworkEdge.DeviceLink(\"deviceLink\", new()\n {\n Name = \"test-link\",\n Subnet = \"192.168.40.64/27\",\n Devices = new[]\n {\n new Equinix.NetworkEdge.Inputs.DeviceLinkDeviceArgs\n {\n Id = \"device1Id\",\n Asn = 22111,\n InterfaceId = 6,\n },\n new Equinix.NetworkEdge.Inputs.DeviceLinkDeviceArgs\n {\n Id = \"device2Id\",\n Asn = 22333,\n InterfaceId = 7,\n },\n },\n Links = new[]\n {\n new Equinix.NetworkEdge.Inputs.DeviceLinkLinkArgs\n {\n AccountNumber = accountfNum,\n SrcMetroCode = device1Metro,\n DstMetroCode = device2Metro,\n Throughput = \"50\",\n ThroughputUnit = \"Mbps\",\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"status\"] = deviceLink.Status,\n [\"devices\"] = deviceLink.Devices,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.DeviceLink;\nimport com.equinix.pulumi.networkedge.DeviceLinkArgs;\nimport com.equinix.pulumi.networkedge.inputs.DeviceLinkDeviceArgs;\nimport com.equinix.pulumi.networkedge.inputs.DeviceLinkLinkArgs;\nimport com.equinix.pulumi.networkedge.inputs.GetAccountArgs;\nimport com.equinix.pulumi.networkedge.inputs.GetDeviceArgs;\nimport com.equinix.pulumi.networkedge.NetworkedgeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var accountName = config.get(\"accountName\").get();\n final var accountMetro = config.get(\"accountMetro\").get();\n final var device1Id = config.get(\"device1Id\").get();\n final var device2Id = config.get(\"device2Id\").get();\n final var accountfNum = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n .name(accountName)\n .metroCode(accountMetro)\n .build()).applyValue(account -\u003e account.number());\n\n final var device1Metro = NetworkedgeFunctions.getDevice(GetDeviceArgs.builder()\n .uuid(device1Id)\n .build()).applyValue(device -\u003e device.metroCode());\n\n final var device2Metro = NetworkedgeFunctions.getDevice(GetDeviceArgs.builder()\n .uuid(device2Id)\n .build()).applyValue(device -\u003e device.metroCode());\n\n var deviceLink = new DeviceLink(\"deviceLink\", DeviceLinkArgs.builder() \n .name(\"test-link\")\n .subnet(\"192.168.40.64/27\")\n .devices( \n DeviceLinkDeviceArgs.builder()\n .id(\"device1Id\")\n .asn(22111)\n .interfaceId(6)\n .build(),\n DeviceLinkDeviceArgs.builder()\n .id(\"device2Id\")\n .asn(22333)\n .interfaceId(7)\n .build())\n .links(DeviceLinkLinkArgs.builder()\n .accountNumber(accountfNum)\n .srcMetroCode(device1Metro)\n .dstMetroCode(device2Metro)\n .throughput(\"50\")\n .throughputUnit(\"Mbps\")\n .build())\n .build());\n\n ctx.export(\"status\", deviceLink.status());\n ctx.export(\"devices\", deviceLink.devices());\n }\n}\n```\n```yaml\nconfig:\n accountName:\n type: string\n accountMetro:\n type: string\n device1Id:\n type: string\n device2Id:\n type: string\nvariables:\n accountfNum:\n fn::invoke:\n function: equinix:networkedge:getAccount\n arguments:\n name: ${accountName}\n metroCode: ${accountMetro}\n return: number\n device1Metro:\n fn::invoke:\n function: equinix:networkedge:getDevice\n arguments:\n uuid: ${device1Id}\n return: metroCode\n device2Metro:\n fn::invoke:\n function: equinix:networkedge:getDevice\n arguments:\n uuid: ${device2Id}\n return: metroCode\nresources:\n deviceLink:\n type: equinix:networkedge:DeviceLink\n properties:\n name: test-link\n subnet: 192.168.40.64/27\n devices:\n - id: device1Id\n asn: 22111\n interfaceId: 6\n - id: device2Id\n asn: 22333\n interfaceId: 7\n links:\n - accountNumber: ${accountfNum}\n srcMetroCode: ${device1Metro}\n dstMetroCode: ${device2Metro}\n throughput: 50\n throughputUnit: Mbps\noutputs:\n status: ${deviceLink.status}\n devices: ${deviceLink.devices}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/deviceLink:DeviceLink example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"devices": {
"type": "array",
@@ -14792,6 +15721,10 @@
"type": "string",
"description": "device link name.\n"
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the device link is scoped to.If you\nleave it out, the device link will be created under the default project id of your organization.\n"
+ },
"status": {
"type": "string",
"description": "device link provisioning status on a given device. One of `PROVISIONING`,\n`PROVISIONED`, `DEPROVISIONING`, `DEPROVISIONED`, `FAILED`.\n"
@@ -14808,6 +15741,7 @@
"required": [
"devices",
"name",
+ "projectId",
"status",
"uuid"
],
@@ -14830,6 +15764,11 @@
"type": "string",
"description": "device link name.\n"
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the device link is scoped to.If you\nleave it out, the device link will be created under the default project id of your organization.\n",
+ "willReplaceOnChanges": true
+ },
"subnet": {
"type": "string",
"description": "device link subnet in CIDR format. Not required for link\nbetween self configured devices.\n"
@@ -14859,6 +15798,11 @@
"type": "string",
"description": "device link name.\n"
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the device link is scoped to.If you\nleave it out, the device link will be created under the default project id of your organization.\n",
+ "willReplaceOnChanges": true
+ },
"status": {
"type": "string",
"description": "device link provisioning status on a given device. One of `PROVISIONING`,\n`PROVISIONED`, `DEPROVISIONING`, `DEPROVISIONED`, `FAILED`.\n"
@@ -14876,7 +15820,7 @@
}
},
"equinix:networkedge/networkFile:NetworkFile": {
- "description": "{{% examples %}}\nResource `equinix.networkedge.NetworkFile` allows creation and management of Equinix Network Edge files.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as fs from \"fs\";\n\nconst config = new pulumi.Config();\nconst metro = config.get(\"metro\") || \"SV\";\nconst networkFile = new equinix.networkedge.NetworkFile(\"networkFile\", {\n fileName: \"Aviatrix-ZTP-file\",\n content: fs.readFileSync(\"./../assets/aviatrix-cloud-init.txt\"),\n metroCode: metro,\n deviceTypeCode: \"AVIATRIX_EDGE\",\n processType: \"CLOUD_INIT\",\n selfManaged: true,\n byol: true,\n});\nexport const networkFileId = networkFile.id;\nexport const networkFileStatus = networkFile.status;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"SV\"\nnetwork_file = equinix.networkedge.NetworkFile(\"networkFile\",\n file_name=\"Aviatrix-ZTP-file\",\n content=(lambda path: open(path).read())(\"./../assets/aviatrix-cloud-init.txt\"),\n metro_code=metro,\n device_type_code=\"AVIATRIX_EDGE\",\n process_type=\"CLOUD_INIT\",\n self_managed=True,\n byol=True)\npulumi.export(\"networkFileId\", network_file.id)\npulumi.export(\"networkFileStatus\", network_file.status)\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tmetro := \"SV\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\tnetworkFile, err := networkedge.NewNetworkFile(ctx, \"networkFile\", \u0026networkedge.NetworkFileArgs{\n\t\t\tFileName: pulumi.String(\"Aviatrix-ZTP-file\"),\n\t\t\tContent: readFileOrPanic(\"./../assets/aviatrix-cloud-init.txt\"),\n\t\t\tMetroCode: pulumi.String(metro),\n\t\t\tDeviceTypeCode: pulumi.String(\"AVIATRIX_EDGE\"),\n\t\t\tProcessType: pulumi.String(\"CLOUD_INIT\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"networkFileId\", networkFile.ID())\n\t\tctx.Export(\"networkFileStatus\", networkFile.Status)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var metro = config.Get(\"metro\") ?? \"SV\";\n var networkFile = new Equinix.NetworkEdge.NetworkFile(\"networkFile\", new()\n {\n FileName = \"Aviatrix-ZTP-file\",\n Content = File.ReadAllText(\"./../assets/aviatrix-cloud-init.txt\"),\n MetroCode = metro,\n DeviceTypeCode = \"AVIATRIX_EDGE\",\n ProcessType = \"CLOUD_INIT\",\n SelfManaged = true,\n Byol = true,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"networkFileId\"] = networkFile.Id,\n [\"networkFileStatus\"] = networkFile.Status,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.NetworkFile;\nimport com.equinix.pulumi.networkedge.NetworkFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.IOException;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var metro = config.get(\"metro\").orElse(\"SV\");\n\n String content = null;\n try {\n content = Files.readString(Paths.get(\"./../assets/aviatrix-cloud-init.txt\"));\n } catch (IOException e) {\n e.printStackTrace();\n }\n\n var networkFile = new NetworkFile(\"networkFile\", NetworkFileArgs.builder() \n .fileName(\"Aviatrix-ZTP-file\")\n .content(content)\n .metroCode(metro)\n .deviceTypeCode(\"AVIATRIX_EDGE\")\n .processType(\"CLOUD_INIT\")\n .selfManaged(true)\n .byol(true)\n .build());\n\n ctx.export(\"networkFileId\", networkFile.id());\n ctx.export(\"networkFileStatus\", networkFile.status());\n }\n}\n```\n```yaml\nconfig:\n metro:\n type: string\n default: SV\nresources:\n networkFile:\n type: equinix:networkedge:NetworkFile\n properties:\n fileName: Aviatrix-ZTP-file\n content:\n fn::readFile: ./../assets/aviatrix-cloud-init.txt\n metroCode: ${metro}\n deviceTypeCode: AVIATRIX_EDGE\n processType: CLOUD_INIT\n selfManaged: true\n byol: true\noutputs:\n networkFileId: ${networkFile.id}\n networkFileStatus: ${networkFile.status}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/networkFile:NetworkFile example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e The `content`, `self_managed` and `byol` fields can not be imported.\n\n{{% /examples %}}",
+ "description": "Resource `equinix.networkedge.NetworkFile` allows creation and management of Equinix Network Edge files.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as fs from \"fs\";\n\nconst config = new pulumi.Config();\nconst metro = config.get(\"metro\") || \"SV\";\nconst networkFile = new equinix.networkedge.NetworkFile(\"networkFile\", {\n fileName: \"Aviatrix-ZTP-file\",\n content: fs.readFileSync(\"./../assets/aviatrix-cloud-init.txt\"),\n metroCode: metro,\n deviceTypeCode: \"AVIATRIX_EDGE\",\n processType: \"CLOUD_INIT\",\n selfManaged: true,\n byol: true,\n});\nexport const networkFileId = networkFile.id;\nexport const networkFileStatus = networkFile.status;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nmetro = config.get(\"metro\")\nif metro is None:\n metro = \"SV\"\nnetwork_file = equinix.networkedge.NetworkFile(\"networkFile\",\n file_name=\"Aviatrix-ZTP-file\",\n content=(lambda path: open(path).read())(\"./../assets/aviatrix-cloud-init.txt\"),\n metro_code=metro,\n device_type_code=\"AVIATRIX_EDGE\",\n process_type=\"CLOUD_INIT\",\n self_managed=True,\n byol=True)\npulumi.export(\"networkFileId\", network_file.id)\npulumi.export(\"networkFileStatus\", network_file.status)\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tmetro := \"SV\"\n\t\tif param := cfg.Get(\"metro\"); param != \"\" {\n\t\t\tmetro = param\n\t\t}\n\t\tnetworkFile, err := networkedge.NewNetworkFile(ctx, \"networkFile\", \u0026networkedge.NetworkFileArgs{\n\t\t\tFileName: pulumi.String(\"Aviatrix-ZTP-file\"),\n\t\t\tContent: readFileOrPanic(\"./../assets/aviatrix-cloud-init.txt\"),\n\t\t\tMetroCode: pulumi.String(metro),\n\t\t\tDeviceTypeCode: pulumi.String(\"AVIATRIX_EDGE\"),\n\t\t\tProcessType: pulumi.String(\"CLOUD_INIT\"),\n\t\t\tSelfManaged: pulumi.Bool(true),\n\t\t\tByol: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"networkFileId\", networkFile.ID())\n\t\tctx.Export(\"networkFileStatus\", networkFile.Status)\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var metro = config.Get(\"metro\") ?? \"SV\";\n var networkFile = new Equinix.NetworkEdge.NetworkFile(\"networkFile\", new()\n {\n FileName = \"Aviatrix-ZTP-file\",\n Content = File.ReadAllText(\"./../assets/aviatrix-cloud-init.txt\"),\n MetroCode = metro,\n DeviceTypeCode = \"AVIATRIX_EDGE\",\n ProcessType = \"CLOUD_INIT\",\n SelfManaged = true,\n Byol = true,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"networkFileId\"] = networkFile.Id,\n [\"networkFileStatus\"] = networkFile.Status,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.NetworkFile;\nimport com.equinix.pulumi.networkedge.NetworkFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.IOException;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var metro = config.get(\"metro\").orElse(\"SV\");\n\n String content = null;\n try {\n content = Files.readString(Paths.get(\"./../assets/aviatrix-cloud-init.txt\"));\n } catch (IOException e) {\n e.printStackTrace();\n }\n\n var networkFile = new NetworkFile(\"networkFile\", NetworkFileArgs.builder() \n .fileName(\"Aviatrix-ZTP-file\")\n .content(content)\n .metroCode(metro)\n .deviceTypeCode(\"AVIATRIX_EDGE\")\n .processType(\"CLOUD_INIT\")\n .selfManaged(true)\n .byol(true)\n .build());\n\n ctx.export(\"networkFileId\", networkFile.id());\n ctx.export(\"networkFileStatus\", networkFile.status());\n }\n}\n```\n```yaml\nconfig:\n metro:\n type: string\n default: SV\nresources:\n networkFile:\n type: equinix:networkedge:NetworkFile\n properties:\n fileName: Aviatrix-ZTP-file\n content:\n fn::readFile: ./../assets/aviatrix-cloud-init.txt\n metroCode: ${metro}\n deviceTypeCode: AVIATRIX_EDGE\n processType: CLOUD_INIT\n selfManaged: true\n byol: true\noutputs:\n networkFileId: ${networkFile.id}\n networkFileStatus: ${networkFile.status}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/networkFile:NetworkFile example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e The `content`, `self_managed` and `byol` fields can not be imported.\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"byol": {
"type": "boolean",
@@ -15062,12 +16006,16 @@
}
},
"equinix:networkedge/sshKey:SshKey": {
- "description": "{{% examples %}}\nResource `equinix.networkedge.SshKey` allows creation and management of Equinix Network Edge SSH keys.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as fs from \"fs\";\n\nconst sshKey = new equinix.networkedge.SshKey(\"sshKey\", {\n name: \"johnKent\",\n publicKey: fs.readFileSync(\"/Users/John/.ssh/ne_rsa.pub\"),\n});\nexport const sshKeyId = sshKey.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nssh_key = equinix.networkedge.SshKey(\"sshKey\",\n name=\"johnKent\",\n public_key=(lambda path: open(path).read())(\"/Users/John/.ssh/ne_rsa.pub\"))\npulumi.export(\"sshKeyId\", ssh_key.id)\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsshKey, err := networkedge.NewSshKey(ctx, \"sshKey\", \u0026networkedge.SshKeyArgs{\n\t\t\tName: pulumi.String(\"johnKent\"),\n\t\t\tPublicKey: readFileOrPanic(\"/Users/John/.ssh/ne_rsa.pub\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sshKeyId\", sshKey.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sshKey = new Equinix.NetworkEdge.SshKey(\"sshKey\", new()\n {\n Name = \"johnKent\",\n PublicKey = File.ReadAllText(\"/Users/John/.ssh/ne_rsa.pub\"),\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sshKeyId\"] = sshKey.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.SshKey;\nimport com.equinix.pulumi.networkedge.SshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.IOException;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n String key = null;\n try {\n key = Files.readString(Paths.get(\"/Users/John/.ssh/ne_rsa.pub\"));\n } catch (IOException e) {\n e.printStackTrace();\n }\n\n var sshKey = new SshKey(\"sshKey\", SshKeyArgs.builder() \n .name(\"johnKent\")\n .publicKey(key)\n .build());\n\n ctx.export(\"sshKeyId\", sshKey.id());\n }\n}\n```\n```yaml\nresources:\n sshKey:\n type: equinix:networkedge:SshKey\n properties:\n name: johnKent\n publicKey:\n fn::readFile: /Users/John/.ssh/ne_rsa.pub\noutputs:\n sshKeyId: ${sshKey.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/sshKey:SshKey example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Resource `equinix.networkedge.SshKey` allows creation and management of Equinix Network Edge SSH keys.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as fs from \"fs\";\n\nconst sshKey = new equinix.networkedge.SshKey(\"sshKey\", {\n name: \"johnKent\",\n publicKey: fs.readFileSync(\"/Users/John/.ssh/ne_rsa.pub\"),\n});\nexport const sshKeyId = sshKey.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nssh_key = equinix.networkedge.SshKey(\"sshKey\",\n name=\"johnKent\",\n public_key=(lambda path: open(path).read())(\"/Users/John/.ssh/ne_rsa.pub\"))\npulumi.export(\"sshKeyId\", ssh_key.id)\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsshKey, err := networkedge.NewSshKey(ctx, \"sshKey\", \u0026networkedge.SshKeyArgs{\n\t\t\tName: pulumi.String(\"johnKent\"),\n\t\t\tPublicKey: readFileOrPanic(\"/Users/John/.ssh/ne_rsa.pub\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sshKeyId\", sshKey.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sshKey = new Equinix.NetworkEdge.SshKey(\"sshKey\", new()\n {\n Name = \"johnKent\",\n PublicKey = File.ReadAllText(\"/Users/John/.ssh/ne_rsa.pub\"),\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sshKeyId\"] = sshKey.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.SshKey;\nimport com.equinix.pulumi.networkedge.SshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.IOException;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n String key = null;\n try {\n key = Files.readString(Paths.get(\"/Users/John/.ssh/ne_rsa.pub\"));\n } catch (IOException e) {\n e.printStackTrace();\n }\n\n var sshKey = new SshKey(\"sshKey\", SshKeyArgs.builder() \n .name(\"johnKent\")\n .publicKey(key)\n .build());\n\n ctx.export(\"sshKeyId\", sshKey.id());\n }\n}\n```\n```yaml\nresources:\n sshKey:\n type: equinix:networkedge:SshKey\n properties:\n name: johnKent\n publicKey:\n fn::readFile: /Users/John/.ssh/ne_rsa.pub\noutputs:\n sshKeyId: ${sshKey.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/sshKey:SshKey example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"name": {
"type": "string",
"description": "The name of SSH key used for identification.\n"
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the SSH key is scoped to.If you\nleave it out, the ssh key will be created under the default project id of your organization.\n"
+ },
"publicKey": {
"type": "string",
"description": "The SSH public key. If this is a file, it can be read using the file\ninterpolation function.\n"
@@ -15083,6 +16031,7 @@
},
"required": [
"name",
+ "projectId",
"publicKey",
"uuid"
],
@@ -15092,6 +16041,11 @@
"description": "The name of SSH key used for identification.\n",
"willReplaceOnChanges": true
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the SSH key is scoped to.If you\nleave it out, the ssh key will be created under the default project id of your organization.\n",
+ "willReplaceOnChanges": true
+ },
"publicKey": {
"type": "string",
"description": "The SSH public key. If this is a file, it can be read using the file\ninterpolation function.\n",
@@ -15114,6 +16068,11 @@
"description": "The name of SSH key used for identification.\n",
"willReplaceOnChanges": true
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the SSH key is scoped to.If you\nleave it out, the ssh key will be created under the default project id of your organization.\n",
+ "willReplaceOnChanges": true
+ },
"publicKey": {
"type": "string",
"description": "The SSH public key. If this is a file, it can be read using the file\ninterpolation function.\n",
@@ -15133,7 +16092,7 @@
}
},
"equinix:networkedge/sshUser:SshUser": {
- "description": "{{% examples %}}\nResource `equinix.networkedge.SshUser` allows creation and management of Equinix Network\nEdge SSH users.\n\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst device1Id = config.require(\"device1Id\");\nconst device2Id = config.require(\"device2Id\");\nconst sshUser = new equinix.networkedge.SshUser(\"sshUser\", {\n username: \"johnKent\",\n deviceIds: [\n device1Id,\n device2Id,\n ],\n});\nexport const sshUserId = sshUser.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndevice1_id = config.require(\"device1Id\")\ndevice2_id = config.require(\"device2Id\")\nssh_user = equinix.networkedge.SshUser(\"sshUser\",\n username=\"johnKent\",\n device_ids=[\n device1_id,\n device2_id,\n ])\npulumi.export(\"sshUserId\", ssh_user.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdevice1Id := cfg.Require(\"device1Id\")\n\t\tdevice2Id := cfg.Require(\"device2Id\")\n\t\tsshUser, err := networkedge.NewSshUser(ctx, \"sshUser\", \u0026networkedge.SshUserArgs{\n\t\t\tUsername: pulumi.String(\"johnKent\"),\n\t\t\tDeviceIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(device1Id),\n\t\t\t\tpulumi.String(device2Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sshUserId\", sshUser.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var device1Id = config.Require(\"device1Id\");\n var device2Id = config.Require(\"device2Id\");\n var sshUser = new Equinix.NetworkEdge.SshUser(\"sshUser\", new()\n {\n Username = \"johnKent\",\n DeviceIds = new[]\n {\n device1Id,\n device2Id,\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sshUserId\"] = sshUser.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.SshUser;\nimport com.equinix.pulumi.networkedge.SshUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var device1Id = config.get(\"device1Id\").get();\n final var device2Id = config.get(\"device2Id\").get();\n var sshUser = new SshUser(\"sshUser\", SshUserArgs.builder() \n .username(\"johnKent\")\n .deviceIds( \n device1Id,\n device2Id)\n .build());\n\n ctx.export(\"sshUserId\", sshUser.id());\n }\n}\n```\n```yaml\nconfig:\n device1Id:\n type: string\n device2Id:\n type: string\nresources:\n sshUser:\n type: equinix:networkedge:SshUser\n properties:\n username: johnKent\n deviceIds:\n - ${device1Id}\n - ${device2Id}\noutputs:\n sshUserId: ${sshUser.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID: \u003cbreak\u003e\u003cbreak\u003e```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/sshUser:SshUser example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
+ "description": "Resource `equinix.networkedge.SshUser` allows creation and management of Equinix Network\nEdge SSH users.\n\n{{% examples %}}\n## Example Usage\n\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\n\nconst config = new pulumi.Config();\nconst device1Id = config.require(\"device1Id\");\nconst device2Id = config.require(\"device2Id\");\nconst sshUser = new equinix.networkedge.SshUser(\"sshUser\", {\n username: \"johnKent\",\n deviceIds: [\n device1Id,\n device2Id,\n ],\n});\nexport const sshUserId = sshUser.id;\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\ndevice1_id = config.require(\"device1Id\")\ndevice2_id = config.require(\"device2Id\")\nssh_user = equinix.networkedge.SshUser(\"sshUser\",\n username=\"johnKent\",\n device_ids=[\n device1_id,\n device2_id,\n ])\npulumi.export(\"sshUserId\", ssh_user.id)\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdevice1Id := cfg.Require(\"device1Id\")\n\t\tdevice2Id := cfg.Require(\"device2Id\")\n\t\tsshUser, err := networkedge.NewSshUser(ctx, \"sshUser\", \u0026networkedge.SshUserArgs{\n\t\t\tUsername: pulumi.String(\"johnKent\"),\n\t\t\tDeviceIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(device1Id),\n\t\t\t\tpulumi.String(device2Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sshUserId\", sshUser.ID())\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var device1Id = config.Require(\"device1Id\");\n var device2Id = config.Require(\"device2Id\");\n var sshUser = new Equinix.NetworkEdge.SshUser(\"sshUser\", new()\n {\n Username = \"johnKent\",\n DeviceIds = new[]\n {\n device1Id,\n device2Id,\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sshUserId\"] = sshUser.Id,\n };\n});\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.equinix.pulumi.networkedge.SshUser;\nimport com.equinix.pulumi.networkedge.SshUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var device1Id = config.get(\"device1Id\").get();\n final var device2Id = config.get(\"device2Id\").get();\n var sshUser = new SshUser(\"sshUser\", SshUserArgs.builder() \n .username(\"johnKent\")\n .deviceIds( \n device1Id,\n device2Id)\n .build());\n\n ctx.export(\"sshUserId\", sshUser.id());\n }\n}\n```\n```yaml\nconfig:\n device1Id:\n type: string\n device2Id:\n type: string\nresources:\n sshUser:\n type: equinix:networkedge:SshUser\n properties:\n username: johnKent\n deviceIds:\n - ${device1Id}\n - ${device2Id}\noutputs:\n sshUserId: ${sshUser.id}\n```\n{{% /example %}}\n\n## Import\n\nThis resource can be imported using an existing ID:\u003cbreak\u003e\u003cbreak\u003e ```sh\u003cbreak\u003e $ pulumi import equinix:networkedge/sshUser:SshUser example {existing_id} \u003cbreak\u003e```\u003cbreak\u003e\u003cbreak\u003e\n\n{{% /examples %}}",
"properties": {
"deviceIds": {
"type": "array",
@@ -15217,22 +16176,19 @@
},
"functions": {
"equinix:fabric/getCloudRouter:getCloudRouter": {
+ "description": "Fabric V4 API compatible data resource that allow user to fetch Fabric Cloud Router for a given UUID\n\nAPI documentation can be found here - https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#fabric-cloud-routers\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst cloudRouterDataName = equinix.fabric.getCloudRouter({\n uuid: \"\u003cuuid_of_cloud_router\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ncloud_router_data_name = equinix.fabric.get_cloud_router(uuid=\"\u003cuuid_of_cloud_router\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloudRouterDataName = Equinix.Fabric.GetCloudRouter.Invoke(new()\n {\n Uuid = \"\u003cuuid_of_cloud_router\u003e\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := fabric.LookupCloudRouter(ctx, \u0026fabric.LookupCloudRouterArgs{\n\t\t\tUuid: \"\u003cuuid_of_cloud_router\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetCloudRouterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var cloudRouterDataName = FabricFunctions.getCloudRouter(GetCloudRouterArgs.builder()\n .uuid(\"\u003cuuid_of_cloud_router\u003e\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n cloudRouterDataName:\n fn::invoke:\n Function: equinix:fabric:getCloudRouter\n Arguments:\n uuid: \u003cuuid_of_cloud_router\u003e\n```\n{{% /example %}}\n{{% /examples %}}",
"inputs": {
"description": "A collection of arguments for invoking getCloudRouter.\n",
"properties": {
- "projects": {
- "type": "array",
- "items": {
- "$ref": "#/types/equinix:fabric/getCloudRouterProject:getCloudRouterProject"
- },
- "description": "Project information\n"
- },
"uuid": {
"type": "string",
"description": "Equinix-assigned Fabric Cloud Router identifier\n"
}
},
- "type": "object"
+ "type": "object",
+ "required": [
+ "uuid"
+ ]
},
"outputs": {
"description": "A collection of values returned by getCloudRouter.\n",
@@ -15245,10 +16201,12 @@
"description": "Customer account information that is associated with this Fabric Cloud Router\n"
},
"bgpIpv4RoutesCount": {
- "type": "integer"
+ "type": "integer",
+ "description": "Number of IPv4 BGP routes in use (including non-distinct prefixes)\n"
},
"bgpIpv6RoutesCount": {
- "type": "integer"
+ "type": "integer",
+ "description": "Number of IPv6 BGP routes in use (including non-distinct prefixes)\n"
},
"changeLogs": {
"type": "array",
@@ -15258,12 +16216,21 @@
"description": "Captures Fabric Cloud Router lifecycle change information\n"
},
"connectionsCount": {
- "type": "integer"
+ "type": "integer",
+ "description": "Number of connections associated with this Fabric Cloud Router instance\n"
},
"description": {
"type": "string",
"description": "Customer-provided Fabric Cloud Router description\n"
},
+ "distinctIpv4PrefixesCount": {
+ "type": "integer",
+ "description": "Number of distinct IPv4 routes\n"
+ },
+ "distinctIpv6PrefixesCount": {
+ "type": "integer",
+ "description": "Number of distinct IPv6 routes\n"
+ },
"equinixAsn": {
"type": "integer",
"description": "Equinix ASN\n"
@@ -15306,14 +16273,14 @@
"items": {
"$ref": "#/types/equinix:fabric/getCloudRouterPackage:getCloudRouterPackage"
},
- "description": "Fabric Cloud Router package information\n"
+ "description": "Fabric Cloud Router Package Type\n"
},
"projects": {
"type": "array",
"items": {
"$ref": "#/types/equinix:fabric/getCloudRouterProject:getCloudRouterProject"
},
- "description": "Project information\n"
+ "description": "Customer resource hierarchy project information.Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects\n"
},
"state": {
"type": "string",
@@ -15321,7 +16288,7 @@
},
"type": {
"type": "string",
- "description": "Defines the Fabric Cloud Router type like XF_GATEWAY\n"
+ "description": "Defines the FCR type like; XF_ROUTER\n"
},
"uuid": {
"type": "string",
@@ -15336,6 +16303,8 @@
"changeLogs",
"connectionsCount",
"description",
+ "distinctIpv4PrefixesCount",
+ "distinctIpv6PrefixesCount",
"equinixAsn",
"href",
"locations",
@@ -15346,23 +16315,24 @@
"projects",
"state",
"type",
+ "uuid",
"id"
]
}
},
"equinix:fabric/getConnection:getConnection": {
+ "description": "Fabric V4 API compatible data resource that allow user to fetch connection for a given UUID\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst connectionDataName = equinix.fabric.getConnection({\n uuid: \"\u003cuuid_of_connection\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconnection_data_name = equinix.fabric.get_connection(uuid=\"\u003cuuid_of_connection\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connectionDataName = Equinix.Fabric.GetConnection.Invoke(new()\n {\n Uuid = \"\u003cuuid_of_connection\u003e\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := fabric.LookupConnection(ctx, \u0026fabric.LookupConnectionArgs{\n\t\t\tUuid: \"\u003cuuid_of_connection\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var connectionDataName = FabricFunctions.getConnection(GetConnectionArgs.builder()\n .uuid(\"\u003cuuid_of_connection\u003e\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n connectionDataName:\n fn::invoke:\n Function: equinix:fabric:getConnection\n Arguments:\n uuid: \u003cuuid_of_connection\u003e\n```\n{{% /example %}}\n{{% /examples %}}",
"inputs": {
"description": "A collection of arguments for invoking getConnection.\n",
"properties": {
- "project": {
- "$ref": "#/types/equinix:fabric/getConnectionProject:getConnectionProject",
- "description": "Project information\n"
- },
"uuid": {
"type": "string"
}
},
- "type": "object"
+ "type": "object",
+ "required": [
+ "uuid"
+ ]
},
"outputs": {
"description": "A collection of values returned by getConnection.\n",
@@ -15378,7 +16348,10 @@
"additionalInfo": {
"type": "array",
"items": {
- "$ref": "#/types/equinix:fabric/getConnectionAdditionalInfo:getConnectionAdditionalInfo"
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "pulumi.json#/Any"
+ }
},
"description": "Connection additional information\n"
},
@@ -15423,11 +16396,11 @@
},
"operation": {
"$ref": "#/types/equinix:fabric/getConnectionOperation:getConnectionOperation",
- "description": "Connection specific operational data\n"
+ "description": "Connection type-specific operational data\n"
},
"order": {
"$ref": "#/types/equinix:fabric/getConnectionOrder:getConnectionOrder",
- "description": "Order related to this connection information\n"
+ "description": "Order details\n"
},
"project": {
"$ref": "#/types/equinix:fabric/getConnectionProject:getConnectionProject",
@@ -15435,7 +16408,7 @@
},
"redundancy": {
"$ref": "#/types/equinix:fabric/getConnectionRedundancy:getConnectionRedundancy",
- "description": "Redundancy Information\n"
+ "description": "Connection Redundancy Configuration\n"
},
"state": {
"type": "string",
@@ -15443,7 +16416,7 @@
},
"type": {
"type": "string",
- "description": "Defines the connection type like VG*VC, EVPL*VC, EPL*VC, EC*VC, IP*VC, ACCESS*EPL_VC\n"
+ "description": "Defines the connection type like EVPL*VC, EPL*VC, IPWAN*VC, IP*VC, ACCESS*EPL*VC, EVPLAN*VC, EPLAN*VC, EIA*VC, EC*VC\n"
},
"uuid": {
"type": "string",
@@ -15469,15 +16442,117 @@
"notifications",
"operation",
"order",
+ "project",
"redundancy",
"state",
"type",
+ "uuid",
"zSide",
"id"
]
}
},
+ "equinix:fabric/getNetwork:getNetwork": {
+ "description": "Fabric V4 API compatible data resource that allow user to fetch Fabric Network for a given UUID\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst networkDataName = equinix.fabric.getNetwork({\n uuid: \"\u003cuuid_of_network\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nnetwork_data_name = equinix.fabric.get_network(uuid=\"\u003cuuid_of_network\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var networkDataName = Equinix.Fabric.GetNetwork.Invoke(new()\n {\n Uuid = \"\u003cuuid_of_network\u003e\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := fabric.LookupNetwork(ctx, \u0026fabric.LookupNetworkArgs{\n\t\t\tUuid: \"\u003cuuid_of_network\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var networkDataName = FabricFunctions.getNetwork(GetNetworkArgs.builder()\n .uuid(\"\u003cuuid_of_network\u003e\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n networkDataName:\n fn::invoke:\n Function: equinix:fabric:getNetwork\n Arguments:\n uuid: \u003cuuid_of_network\u003e\n```\n{{% /example %}}\n{{% /examples %}}",
+ "inputs": {
+ "description": "A collection of arguments for invoking getNetwork.\n",
+ "properties": {
+ "uuid": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "uuid"
+ ]
+ },
+ "outputs": {
+ "description": "A collection of values returned by getNetwork.\n",
+ "properties": {
+ "change": {
+ "$ref": "#/types/equinix:fabric/getNetworkChange:getNetworkChange",
+ "description": "Information on asset change operation\n"
+ },
+ "changeLog": {
+ "$ref": "#/types/equinix:fabric/getNetworkChangeLog:getNetworkChangeLog",
+ "description": "A permanent record of asset creation, modification, or deletion\n"
+ },
+ "connectionsCount": {
+ "type": "integer",
+ "description": "Number of connections associated with this network\n"
+ },
+ "href": {
+ "type": "string",
+ "description": "Fabric Network URI information\n"
+ },
+ "id": {
+ "type": "string",
+ "description": "The provider-assigned unique ID for this managed resource.\n"
+ },
+ "locations": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/equinix:fabric/getNetworkLocation:getNetworkLocation"
+ },
+ "description": "Fabric Network location\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Fabric Network name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"
+ },
+ "notifications": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/equinix:fabric/getNetworkNotification:getNetworkNotification"
+ },
+ "description": "Preferences for notifications on Fabric Network configuration or status changes\n"
+ },
+ "operation": {
+ "$ref": "#/types/equinix:fabric/getNetworkOperation:getNetworkOperation",
+ "description": "Network operation information that is associated with this Fabric Network\n"
+ },
+ "project": {
+ "$ref": "#/types/equinix:fabric/getNetworkProject:getNetworkProject",
+ "description": "Fabric Network project\n"
+ },
+ "scope": {
+ "type": "string",
+ "description": "Fabric Network scope\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "Fabric Network overall state\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Supported Network types - EVPLAN, EPLAN, IPWAN\n"
+ },
+ "uuid": {
+ "type": "string",
+ "description": "Equinix-assigned network identifier\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "change",
+ "changeLog",
+ "connectionsCount",
+ "href",
+ "locations",
+ "name",
+ "notifications",
+ "operation",
+ "project",
+ "scope",
+ "state",
+ "type",
+ "uuid",
+ "id"
+ ]
+ }
+ },
"equinix:fabric/getPort:getPort": {
+ "description": "Fabric V4 API compatible data resource that allow user to fetch port by uuid\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst portDataName = equinix.fabric.getPort({\n uuid: \"\u003cuuid_of_port\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nport_data_name = equinix.fabric.get_port(uuid=\"\u003cuuid_of_port\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var portDataName = Equinix.Fabric.GetPort.Invoke(new()\n {\n Uuid = \"\u003cuuid_of_port\u003e\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := fabric.GetPort(ctx, \u0026fabric.GetPortArgs{\n\t\t\tUuid: \"\u003cuuid_of_port\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetPortArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var portDataName = FabricFunctions.getPort(GetPortArgs.builder()\n .uuid(\"\u003cuuid_of_port\u003e\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n portDataName:\n fn::invoke:\n Function: equinix:fabric:getPort\n Arguments:\n uuid: \u003cuuid_of_port\u003e\n```\n{{% /example %}}\n{{% /examples %}}",
"inputs": {
"description": "A collection of arguments for invoking getPort.\n",
"properties": {
@@ -15531,7 +16606,8 @@
"description": "The provider-assigned unique ID for this managed resource.\n"
},
"lagEnabled": {
- "type": "boolean"
+ "type": "boolean",
+ "description": "Port Lag\n"
},
"location": {
"$ref": "#/types/equinix:fabric/getPortLocation:getPortLocation",
@@ -15595,6 +16671,7 @@
}
},
"equinix:fabric/getPorts:getPorts": {
+ "description": "Fabric V4 API compatible data resource that allow user to fetch port by name\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst portsDataName = equinix.fabric.getPorts({\n filter: {\n name: \"\u003cname_of_port||port_prefix\u003e\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nports_data_name = equinix.fabric.get_ports(filter=equinix.fabric.GetPortsFilterArgs(\n name=\"\u003cname_of_port||port_prefix\u003e\",\n))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var portsDataName = Equinix.Fabric.GetPorts.Invoke(new()\n {\n Filter = new Equinix.Fabric.Inputs.GetPortsFilterInputArgs\n {\n Name = \"\u003cname_of_port||port_prefix\u003e\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := fabric.GetPorts(ctx, \u0026fabric.GetPortsArgs{\n\t\t\tFilter: fabric.GetPortsFilter{\n\t\t\t\tName: \"\u003cname_of_port||port_prefix\u003e\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetPortsArgs;\nimport com.pulumi.equinix.fabric.inputs.GetPortsFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var portsDataName = FabricFunctions.getPorts(GetPortsArgs.builder()\n .filter(GetPortsFilterArgs.builder()\n .name(\"\u003cname_of_port||port_prefix\u003e\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n portsDataName:\n fn::invoke:\n Function: equinix:fabric:getPorts\n Arguments:\n filter:\n name: \u003cname_of_port||port_prefix\u003e\n```\n{{% /example %}}\n{{% /examples %}}",
"inputs": {
"description": "A collection of arguments for invoking getPorts.\n",
"properties": {
@@ -15603,7 +16680,10 @@
"description": "name\n"
}
},
- "type": "object"
+ "type": "object",
+ "required": [
+ "filter"
+ ]
},
"outputs": {
"description": "A collection of values returned by getPorts.\n",
@@ -15613,7 +16693,7 @@
"items": {
"$ref": "#/types/equinix:fabric/getPortsDatum:getPortsDatum"
},
- "description": "List of Ports\n"
+ "description": "List of Ports\n"
},
"filter": {
"$ref": "#/types/equinix:fabric/getPortsFilter:getPortsFilter",
@@ -15627,64 +16707,28 @@
"type": "object",
"required": [
"data",
+ "filter",
"id"
]
}
},
"equinix:fabric/getRoutingProtocol:getRoutingProtocol": {
+ "description": "Fabric V4 API compatible data resource that allow user to fetch routing protocol for a given UUID\n\nAPI documentation can be found here - https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#routing-protocols\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst routingProtocolDataName = equinix.fabric.getRoutingProtocol({\n connectionUuid: \"\u003cuuid_of_connection_routing_protocol_is_applied_to\u003e\",\n uuid: \"\u003cuuid_of_routing_protocol\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nrouting_protocol_data_name = equinix.fabric.get_routing_protocol(connection_uuid=\"\u003cuuid_of_connection_routing_protocol_is_applied_to\u003e\",\n uuid=\"\u003cuuid_of_routing_protocol\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var routingProtocolDataName = Equinix.Fabric.GetRoutingProtocol.Invoke(new()\n {\n ConnectionUuid = \"\u003cuuid_of_connection_routing_protocol_is_applied_to\u003e\",\n Uuid = \"\u003cuuid_of_routing_protocol\u003e\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := fabric.LookupRoutingProtocol(ctx, \u0026fabric.LookupRoutingProtocolArgs{\n\t\t\tConnectionUuid: \"\u003cuuid_of_connection_routing_protocol_is_applied_to\u003e\",\n\t\t\tUuid: \"\u003cuuid_of_routing_protocol\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetRoutingProtocolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var routingProtocolDataName = FabricFunctions.getRoutingProtocol(GetRoutingProtocolArgs.builder()\n .connectionUuid(\"\u003cuuid_of_connection_routing_protocol_is_applied_to\u003e\")\n .uuid(\"\u003cuuid_of_routing_protocol\u003e\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n routingProtocolDataName:\n fn::invoke:\n Function: equinix:fabric:getRoutingProtocol\n Arguments:\n connectionUuid: \u003cuuid_of_connection_routing_protocol_is_applied_to\u003e\n uuid: \u003cuuid_of_routing_protocol\u003e\n```\n{{% /example %}}\n{{% /examples %}}",
"inputs": {
"description": "A collection of arguments for invoking getRoutingProtocol.\n",
"properties": {
- "bfd": {
- "$ref": "#/types/equinix:fabric/getRoutingProtocolBfd:getRoutingProtocolBfd",
- "description": "Bidirectional Forwarding Detection\n"
- },
- "bgpAuthKey": {
- "type": "string",
- "description": "BGP authorization key\n"
- },
- "bgpIpv4": {
- "$ref": "#/types/equinix:fabric/getRoutingProtocolBgpIpv4:getRoutingProtocolBgpIpv4",
- "description": "Routing Protocol BGP IPv4\n"
- },
- "bgpIpv6": {
- "$ref": "#/types/equinix:fabric/getRoutingProtocolBgpIpv6:getRoutingProtocolBgpIpv6",
- "description": "Routing Protocol BGP IPv6\n"
- },
"connectionUuid": {
"type": "string",
"description": "Connection URI associated with Routing Protocol\n"
},
- "customerAsn": {
- "type": "integer",
- "description": "Customer-provided ASN\n"
- },
- "description": {
- "type": "string",
- "description": "Customer-provided Fabric Routing Protocol description\n"
- },
- "directIpv4": {
- "$ref": "#/types/equinix:fabric/getRoutingProtocolDirectIpv4:getRoutingProtocolDirectIpv4",
- "description": "Routing Protocol Direct IPv4\n"
- },
- "directIpv6": {
- "$ref": "#/types/equinix:fabric/getRoutingProtocolDirectIpv6:getRoutingProtocolDirectIpv6",
- "description": "Routing Protocol Direct IPv6\n"
- },
- "name": {
- "type": "string",
- "description": "Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores\n"
- },
- "type": {
- "type": "string"
- },
"uuid": {
"type": "string"
}
},
"type": "object",
"required": [
- "connectionUuid"
+ "connectionUuid",
+ "uuid"
]
},
"outputs": {
@@ -15778,27 +16822,33 @@
},
"type": "object",
"required": [
+ "bfd",
+ "bgpAuthKey",
+ "bgpIpv4",
+ "bgpIpv6",
"changes",
"changeLogs",
"connectionUuid",
+ "customerAsn",
+ "description",
+ "directIpv4",
+ "directIpv6",
"equinixAsn",
"href",
+ "name",
"operations",
"state",
+ "type",
"uuid",
"id"
]
}
},
"equinix:fabric/getServiceProfile:getServiceProfile": {
- "description": "Fabric V4 API compatible data resource that allow user to fetch Service Profile by UUID filter criteria\n\n\u003e **Note** Equinix Fabric v4 resources and datasources are currently in Beta. The interfaces related to `equinix_fabric_` resources and datasources may change ahead of general availability\n",
+ "description": "Fabric V4 API compatible data resource that allow user to fetch Service Profile by UUID filter criteria\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst serviceProfileDataName = equinix.fabric.getServiceProfile({\n uuid: \"\u003cuuid_of_service_profile\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nservice_profile_data_name = equinix.fabric.get_service_profile(uuid=\"\u003cuuid_of_service_profile\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var serviceProfileDataName = Equinix.Fabric.GetServiceProfile.Invoke(new()\n {\n Uuid = \"\u003cuuid_of_service_profile\u003e\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := fabric.LookupServiceProfile(ctx, \u0026fabric.LookupServiceProfileArgs{\n\t\t\tUuid: \"\u003cuuid_of_service_profile\u003e\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetServiceProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var serviceProfileDataName = FabricFunctions.getServiceProfile(GetServiceProfileArgs.builder()\n .uuid(\"\u003cuuid_of_service_profile\u003e\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n serviceProfileDataName:\n fn::invoke:\n Function: equinix:fabric:getServiceProfile\n Arguments:\n uuid: \u003cuuid_of_service_profile\u003e\n```\n{{% /example %}}\n{{% /examples %}}",
"inputs": {
"description": "A collection of arguments for invoking getServiceProfile.\n",
"properties": {
- "state": {
- "type": "string",
- "description": "Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED\n"
- },
"uuid": {
"type": "string"
}
@@ -15820,7 +16870,7 @@
},
"account": {
"$ref": "#/types/equinix:fabric/getServiceProfileAccount:getServiceProfileAccount",
- "description": "Account\n"
+ "description": "Service Profile Owner Account Information\n"
},
"allowedEmails": {
"type": "array",
@@ -15908,6 +16958,13 @@
"type": "string",
"description": "Equinix assigned service profile identifier\n"
},
+ "virtualDevices": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/equinix:fabric/getServiceProfileVirtualDevice:getServiceProfileVirtualDevice"
+ },
+ "description": "Virtual Devices\n"
+ },
"visibility": {
"type": "string",
"description": "Service profile visibility - PUBLIC, PRIVATE\n"
@@ -15929,15 +16986,18 @@
"ports",
"project",
"selfProfile",
+ "state",
"tags",
"type",
"uuid",
+ "virtualDevices",
"visibility",
"id"
]
}
},
"equinix:fabric/getServiceProfiles:getServiceProfiles": {
+ "description": "Fabric V4 API compatible data resource that allow user to fetch Service Profile by name filter criteria\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst serviceProfilesDataName = equinix.fabric.getServiceProfiles({\n filter: {\n operator: \"=\",\n property: \"/name\",\n values: [\"\u003clist_of_profiles_to_return\u003e\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nservice_profiles_data_name = equinix.fabric.get_service_profiles(filter=equinix.fabric.GetServiceProfilesFilterArgs(\n operator=\"=\",\n property=\"/name\",\n values=[\"\u003clist_of_profiles_to_return\u003e\"],\n))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var serviceProfilesDataName = Equinix.Fabric.GetServiceProfiles.Invoke(new()\n {\n Filter = new Equinix.Fabric.Inputs.GetServiceProfilesFilterInputArgs\n {\n Operator = \"=\",\n Property = \"/name\",\n Values = new[]\n {\n \"\u003clist_of_profiles_to_return\u003e\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/fabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := fabric.GetServiceProfiles(ctx, \u0026fabric.GetServiceProfilesArgs{\n\t\t\tFilter: fabric.GetServiceProfilesFilter{\n\t\t\t\tOperator: pulumi.StringRef(\"=\"),\n\t\t\t\tProperty: pulumi.StringRef(\"/name\"),\n\t\t\t\tValues: []string{\n\t\t\t\t\t\"\u003clist_of_profiles_to_return\u003e\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.fabric.FabricFunctions;\nimport com.pulumi.equinix.fabric.inputs.GetServiceProfilesArgs;\nimport com.pulumi.equinix.fabric.inputs.GetServiceProfilesFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var serviceProfilesDataName = FabricFunctions.getServiceProfiles(GetServiceProfilesArgs.builder()\n .filter(GetServiceProfilesFilterArgs.builder()\n .operator(\"=\")\n .property(\"/name\")\n .values(\"\u003clist_of_profiles_to_return\u003e\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n serviceProfilesDataName:\n fn::invoke:\n Function: equinix:fabric:getServiceProfiles\n Arguments:\n filter:\n operator: =\n property: /name\n values:\n - \u003clist_of_profiles_to_return\u003e\n```\n{{% /example %}}\n{{% /examples %}}",
"inputs": {
"description": "A collection of arguments for invoking getServiceProfiles.\n",
"properties": {
@@ -15954,7 +17014,7 @@
},
"viewPoint": {
"type": "string",
- "description": "Service Profile Search Buyer/Seller Representation. Possible values are aSide and zSide.\n"
+ "description": "flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide\n"
}
},
"type": "object"
@@ -15967,7 +17027,7 @@
"items": {
"$ref": "#/types/equinix:fabric/getServiceProfilesDatum:getServiceProfilesDatum"
},
- "description": "List of Service Profiles\n"
+ "description": "List of Service Profiles\n"
},
"filter": {
"$ref": "#/types/equinix:fabric/getServiceProfilesFilter:getServiceProfilesFilter",
@@ -15986,7 +17046,7 @@
},
"viewPoint": {
"type": "string",
- "description": "Service Profile Search Buyer/Seller Representation. Possible values are aSide and zSide.\n"
+ "description": "flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide\n"
}
},
"type": "object",
@@ -15997,7 +17057,7 @@
}
},
"equinix:metal/getDevice:getDevice": {
- "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst test = equinix.metal.getDevice({\n projectId: local.project_id,\n hostname: \"mydevice\",\n});\nexport const id = test.then(test =\u003e test.id);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.metal.get_device(project_id=local[\"project_id\"],\n hostname=\"mydevice\")\npulumi.export(\"id\", test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = Equinix.Metal.GetDevice.Invoke(new()\n {\n ProjectId = local.Project_id,\n Hostname = \"mydevice\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"id\"] = test.Apply(getDeviceResult =\u003e getDeviceResult.Id),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := metal.LookupDevice(ctx, \u0026metal.LookupDeviceArgs{\n\t\t\tProjectId: pulumi.StringRef(local.Project_id),\n\t\t\tHostname: pulumi.StringRef(\"mydevice\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", test.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var test = MetalFunctions.getDevice(GetDeviceArgs.builder()\n .projectId(local.project_id())\n .hostname(\"mydevice\")\n .build());\n\n ctx.export(\"id\", test.applyValue(getDeviceResult -\u003e getDeviceResult.id()));\n }\n}\n```\n```yaml\nvariables:\n test:\n fn::invoke:\n Function: equinix:metal:getDevice\n Arguments:\n projectId: ${local.project_id}\n hostname: mydevice\noutputs:\n id: ${test.id}\n```\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst test = equinix.metal.getDevice({\n deviceId: \"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\",\n});\nexport const ipv4 = test.then(test =\u003e test.accessPublicIpv4);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.metal.get_device(device_id=\"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\")\npulumi.export(\"ipv4\", test.access_public_ipv4)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = Equinix.Metal.GetDevice.Invoke(new()\n {\n DeviceId = \"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"ipv4\"] = test.Apply(getDeviceResult =\u003e getDeviceResult.AccessPublicIpv4),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := metal.LookupDevice(ctx, \u0026metal.LookupDeviceArgs{\n\t\t\tDeviceId: pulumi.StringRef(\"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ipv4\", test.AccessPublicIpv4)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var test = MetalFunctions.getDevice(GetDeviceArgs.builder()\n .deviceId(\"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\")\n .build());\n\n ctx.export(\"ipv4\", test.applyValue(getDeviceResult -\u003e getDeviceResult.accessPublicIpv4()));\n }\n}\n```\n```yaml\nvariables:\n test:\n fn::invoke:\n Function: equinix:metal:getDevice\n Arguments:\n deviceId: 4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\noutputs:\n ipv4: ${test.accessPublicIpv4}\n```\n{{% /example %}}\n{{% /examples %}}",
+ "description": "The datasource can be used to fetch a single device.\n\nIf you need to fetch a list of devices which meet filter criteria, you can use the equinix.metal.getDevices datasource.\n\n\u003e **Note:** All arguments including the `root_password` and `user_data` will be stored in\n the raw state as plain-text.\nRead more about sensitive data in state.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst test = equinix.metal.getDevice({\n projectId: local.project_id,\n hostname: \"mydevice\",\n});\nexport const id = test.then(test =\u003e test.id);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.metal.get_device(project_id=local[\"project_id\"],\n hostname=\"mydevice\")\npulumi.export(\"id\", test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = Equinix.Metal.GetDevice.Invoke(new()\n {\n ProjectId = local.Project_id,\n Hostname = \"mydevice\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"id\"] = test.Apply(getDeviceResult =\u003e getDeviceResult.Id),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := metal.LookupDevice(ctx, \u0026metal.LookupDeviceArgs{\n\t\t\tProjectId: pulumi.StringRef(local.Project_id),\n\t\t\tHostname: pulumi.StringRef(\"mydevice\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"id\", test.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var test = MetalFunctions.getDevice(GetDeviceArgs.builder()\n .projectId(local.project_id())\n .hostname(\"mydevice\")\n .build());\n\n ctx.export(\"id\", test.applyValue(getDeviceResult -\u003e getDeviceResult.id()));\n }\n}\n```\n```yaml\nvariables:\n test:\n fn::invoke:\n Function: equinix:metal:getDevice\n Arguments:\n projectId: ${local.project_id}\n hostname: mydevice\noutputs:\n id: ${test.id}\n```\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst test = equinix.metal.getDevice({\n deviceId: \"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\",\n});\nexport const ipv4 = test.then(test =\u003e test.accessPublicIpv4);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ntest = equinix.metal.get_device(device_id=\"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\")\npulumi.export(\"ipv4\", test.access_public_ipv4)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = Equinix.Metal.GetDevice.Invoke(new()\n {\n DeviceId = \"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"ipv4\"] = test.Apply(getDeviceResult =\u003e getDeviceResult.AccessPublicIpv4),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := metal.LookupDevice(ctx, \u0026metal.LookupDeviceArgs{\n\t\t\tDeviceId: pulumi.StringRef(\"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ipv4\", test.AccessPublicIpv4)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var test = MetalFunctions.getDevice(GetDeviceArgs.builder()\n .deviceId(\"4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\")\n .build());\n\n ctx.export(\"ipv4\", test.applyValue(getDeviceResult -\u003e getDeviceResult.accessPublicIpv4()));\n }\n}\n```\n```yaml\nvariables:\n test:\n fn::invoke:\n Function: equinix:metal:getDevice\n Arguments:\n deviceId: 4c641195-25e5-4c3c-b2b7-4cd7a42c7b40\noutputs:\n ipv4: ${test.accessPublicIpv4}\n```\n{{% /example %}}\n{{% /examples %}}",
"inputs": {
"description": "A collection of arguments for invoking getDevice.\n",
"properties": {
@@ -16353,7 +17413,7 @@
}
},
"equinix:metal/getGateway:getGateway": {
- "description": "Use this datasource to retrieve Metal Gateway resources in Equinix Metal.\n\n\u003e VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\n// Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\nconst testVlan = new equinix.metal.Vlan(\"testVlan\", {\n description: \"test VLAN in SV\",\n metro: \"sv\",\n projectId: local.project_id,\n});\nconst testGateway = equinix.metal.getGateway({\n gatewayId: local.gateway_id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\n# Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\ntest_vlan = equinix.metal.Vlan(\"testVlan\",\n description=\"test VLAN in SV\",\n metro=\"sv\",\n project_id=local[\"project_id\"])\ntest_gateway = equinix.metal.get_gateway(gateway_id=local[\"gateway_id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\n var testVlan = new Equinix.Metal.Vlan(\"testVlan\", new()\n {\n Description = \"test VLAN in SV\",\n Metro = \"sv\",\n ProjectId = local.Project_id,\n });\n\n var testGateway = Equinix.Metal.GetGateway.Invoke(new()\n {\n GatewayId = local.Gateway_id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := metal.NewVlan(ctx, \"testVlan\", \u0026metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"test VLAN in SV\"),\n\t\t\tMetro: pulumi.String(\"sv\"),\n\t\t\tProjectId: pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metal.LookupGateway(ctx, \u0026metal.LookupGatewayArgs{\n\t\t\tGatewayId: local.Gateway_id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testVlan = new Vlan(\"testVlan\", VlanArgs.builder() \n .description(\"test VLAN in SV\")\n .metro(\"sv\")\n .projectId(local.project_id())\n .build());\n\n final var testGateway = MetalFunctions.getGateway(GetGatewayArgs.builder()\n .gatewayId(local.gateway_id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\n testVlan:\n type: equinix:metal:Vlan\n properties:\n description: test VLAN in SV\n metro: sv\n projectId: ${local.project_id}\nvariables:\n testGateway:\n fn::invoke:\n Function: equinix:metal:getGateway\n Arguments:\n gatewayId: ${local.gateway_id}\n```\n{{% /example %}}\n{{% /examples %}}",
+ "description": "Use this datasource to retrieve Metal Gateway resources in Equinix Metal.\n\n\u003e VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\n// Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\nconst testVlan = new equinix.metal.Vlan(\"testVlan\", {\n description: \"test VLAN in SV\",\n metro: \"sv\",\n projectId: local.project_id,\n});\nconst testGateway = equinix.metal.getGateway({\n gatewayId: local.gateway_id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\n# Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\ntest_vlan = equinix.metal.Vlan(\"testVlan\",\n description=\"test VLAN in SV\",\n metro=\"sv\",\n project_id=local[\"project_id\"])\ntest_gateway = equinix.metal.get_gateway(gateway_id=local[\"gateway_id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\n var testVlan = new Equinix.Metal.Vlan(\"testVlan\", new()\n {\n Description = \"test VLAN in SV\",\n Metro = \"sv\",\n ProjectId = local.Project_id,\n });\n\n var testGateway = Equinix.Metal.GetGateway.Invoke(new()\n {\n GatewayId = local.Gateway_id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\n\t\t_, err := metal.NewVlan(ctx, \"testVlan\", \u0026metal.VlanArgs{\n\t\t\tDescription: pulumi.String(\"test VLAN in SV\"),\n\t\t\tMetro: pulumi.String(\"sv\"),\n\t\t\tProjectId: pulumi.Any(local.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metal.LookupGateway(ctx, \u0026metal.LookupGatewayArgs{\n\t\t\tGatewayId: local.Gateway_id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.Vlan;\nimport com.pulumi.equinix.metal.VlanArgs;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testVlan = new Vlan(\"testVlan\", VlanArgs.builder() \n .description(\"test VLAN in SV\")\n .metro(\"sv\")\n .projectId(local.project_id())\n .build());\n\n final var testGateway = MetalFunctions.getGateway(GetGatewayArgs.builder()\n .gatewayId(local.gateway_id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create Metal Gateway for a VLAN with a private IPv4 block with 8 IP addresses\n testVlan:\n type: equinix:metal:Vlan\n properties:\n description: test VLAN in SV\n metro: sv\n projectId: ${local.project_id}\nvariables:\n testGateway:\n fn::invoke:\n Function: equinix:metal:getGateway\n Arguments:\n gatewayId: ${local.gateway_id}\n```\n{{% /example %}}\n{{% /examples %}}",
"inputs": {
"description": "A collection of arguments for invoking getGateway.\n",
"properties": {
@@ -16374,8 +17434,7 @@
"type": "string"
},
"id": {
- "type": "string",
- "description": "The provider-assigned unique ID for this managed resource.\n"
+ "type": "string"
},
"ipReservationId": {
"type": "string",
@@ -16405,13 +17464,13 @@
"type": "object",
"required": [
"gatewayId",
+ "id",
"ipReservationId",
"privateIpv4SubnetSize",
"projectId",
"state",
"vlanId",
- "vrfId",
- "id"
+ "vrfId"
]
}
},
@@ -16518,11 +17577,11 @@
"facility": {
"type": "string",
"description": "(**Deprecated**) Slug of a facility to which the connection belongs. Use metro instead; read the facility to metro migration guide\n",
- "deprecationMessage": "Use metro instead of facility. For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices"
+ "deprecationMessage": "Use metro instead of facility. For more information, read the migration guide."
},
"id": {
"type": "string",
- "description": "The provider-assigned unique ID for this managed resource.\n"
+ "description": "Port UUID.\n"
},
"metro": {
"type": "string",
@@ -16604,6 +17663,7 @@
"contactEmail",
"description",
"facility",
+ "id",
"metro",
"mode",
"name",
@@ -16618,8 +17678,7 @@
"tags",
"token",
"type",
- "vlans",
- "id"
+ "vlans"
]
}
},
@@ -16887,6 +17946,7 @@
}
},
"equinix:metal/getPlans:getPlans": {
+ "description": "Provides an Equinix Metal plans datasource. This can be used to find plans that meet a filter criteria.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst example = equinix.metal.getPlans({\n sorts: [{\n attribute: \"pricing_hour\",\n direction: \"asc\",\n }],\n filters: [\n {\n attribute: \"pricing_hour\",\n values: [\"2.5\"],\n matchBy: \"less_than\",\n },\n {\n attribute: \"available_in_metros\",\n values: [\n \"da\",\n \"sv\",\n ],\n },\n ],\n});\nexport const plans = example.then(example =\u003e example.plans);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample = equinix.metal.get_plans(sorts=[equinix.metal.GetPlansSortArgs(\n attribute=\"pricing_hour\",\n direction=\"asc\",\n )],\n filters=[\n equinix.metal.GetPlansFilterArgs(\n attribute=\"pricing_hour\",\n values=[\"2.5\"],\n match_by=\"less_than\",\n ),\n equinix.metal.GetPlansFilterArgs(\n attribute=\"available_in_metros\",\n values=[\n \"da\",\n \"sv\",\n ],\n ),\n ])\npulumi.export(\"plans\", example.plans)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Equinix.Metal.GetPlans.Invoke(new()\n {\n Sorts = new[]\n {\n new Equinix.Metal.Inputs.GetPlansSortInputArgs\n {\n Attribute = \"pricing_hour\",\n Direction = \"asc\",\n },\n },\n Filters = new[]\n {\n new Equinix.Metal.Inputs.GetPlansFilterInputArgs\n {\n Attribute = \"pricing_hour\",\n Values = new[]\n {\n \"2.5\",\n },\n MatchBy = \"less_than\",\n },\n new Equinix.Metal.Inputs.GetPlansFilterInputArgs\n {\n Attribute = \"available_in_metros\",\n Values = new[]\n {\n \"da\",\n \"sv\",\n },\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"plans\"] = example.Apply(getPlansResult =\u003e getPlansResult.Plans),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := metal.GetPlans(ctx, \u0026metal.GetPlansArgs{\n\t\t\tSorts: []metal.GetPlansSort{\n\t\t\t\t{\n\t\t\t\t\tAttribute: \"pricing_hour\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"asc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilters: []metal.GetPlansFilter{\n\t\t\t\t{\n\t\t\t\t\tAttribute: \"pricing_hour\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"2.5\",\n\t\t\t\t\t},\n\t\t\t\t\tMatchBy: pulumi.StringRef(\"less_than\"),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAttribute: \"available_in_metros\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"da\",\n\t\t\t\t\t\t\"sv\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"plans\", example.Plans)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetPlansArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = MetalFunctions.getPlans(GetPlansArgs.builder()\n .sorts(GetPlansSortArgs.builder()\n .attribute(\"pricing_hour\")\n .direction(\"asc\")\n .build())\n .filters( \n GetPlansFilterArgs.builder()\n .attribute(\"pricing_hour\")\n .values(2.5)\n .matchBy(\"less_than\")\n .build(),\n GetPlansFilterArgs.builder()\n .attribute(\"available_in_metros\")\n .values( \n \"da\",\n \"sv\")\n .build())\n .build());\n\n ctx.export(\"plans\", example.applyValue(getPlansResult -\u003e getPlansResult.plans()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: equinix:metal:getPlans\n Arguments:\n sorts:\n - attribute: pricing_hour\n direction: asc\n filters:\n - attribute: pricing_hour\n values:\n - 2.5\n matchBy: less_than\n - attribute: available_in_metros\n values:\n - da\n - sv\noutputs:\n plans: ${example.plans}\n```\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst example = equinix.metal.getPlans({\n filters: [\n {\n attribute: \"class\",\n values: [\"large\"],\n matchBy: \"substring\",\n },\n {\n attribute: \"deployment_types\",\n values: [\"spot_market\"],\n },\n {\n attribute: \"available_in_metros\",\n values: [\n \"da\",\n \"sv\",\n ],\n all: true,\n },\n ],\n});\nexport const plans = example.then(example =\u003e example.plans);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample = equinix.metal.get_plans(filters=[\n equinix.metal.GetPlansFilterArgs(\n attribute=\"class\",\n values=[\"large\"],\n match_by=\"substring\",\n ),\n equinix.metal.GetPlansFilterArgs(\n attribute=\"deployment_types\",\n values=[\"spot_market\"],\n ),\n equinix.metal.GetPlansFilterArgs(\n attribute=\"available_in_metros\",\n values=[\n \"da\",\n \"sv\",\n ],\n all=True,\n ),\n])\npulumi.export(\"plans\", example.plans)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Equinix.Metal.GetPlans.Invoke(new()\n {\n Filters = new[]\n {\n new Equinix.Metal.Inputs.GetPlansFilterInputArgs\n {\n Attribute = \"class\",\n Values = new[]\n {\n \"large\",\n },\n MatchBy = \"substring\",\n },\n new Equinix.Metal.Inputs.GetPlansFilterInputArgs\n {\n Attribute = \"deployment_types\",\n Values = new[]\n {\n \"spot_market\",\n },\n },\n new Equinix.Metal.Inputs.GetPlansFilterInputArgs\n {\n Attribute = \"available_in_metros\",\n Values = new[]\n {\n \"da\",\n \"sv\",\n },\n All = true,\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"plans\"] = example.Apply(getPlansResult =\u003e getPlansResult.Plans),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := metal.GetPlans(ctx, \u0026metal.GetPlansArgs{\n\t\t\tFilters: pulumi.Array{\n\t\t\t\tmetal.GetPlansFilter{\n\t\t\t\t\tAttribute: \"class\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"large\",\n\t\t\t\t\t},\n\t\t\t\t\tMatchBy: pulumi.StringRef(\"substring\"),\n\t\t\t\t},\n\t\t\t\tmetal.GetPlansFilter{\n\t\t\t\t\tAttribute: \"deployment_types\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"spot_market\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tmetal.GetPlansFilter{\n\t\t\t\t\tAttribute: \"available_in_metros\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"da\",\n\t\t\t\t\t\t\"sv\",\n\t\t\t\t\t},\n\t\t\t\t\tAll: pulumi.BoolRef(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"plans\", example.Plans)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetPlansArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = MetalFunctions.getPlans(GetPlansArgs.builder()\n .filters( \n GetPlansFilterArgs.builder()\n .attribute(\"class\")\n .values(\"large\")\n .matchBy(\"substring\")\n .build(),\n GetPlansFilterArgs.builder()\n .attribute(\"deployment_types\")\n .values(\"spot_market\")\n .build(),\n GetPlansFilterArgs.builder()\n .attribute(\"available_in_metros\")\n .values( \n \"da\",\n \"sv\")\n .all(true)\n .build())\n .build());\n\n ctx.export(\"plans\", example.applyValue(getPlansResult -\u003e getPlansResult.plans()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: equinix:metal:getPlans\n Arguments:\n filters:\n - attribute: class\n values:\n - large\n matchBy: substring\n - attribute: deployment_types\n values:\n - spot_market\n - attribute: available_in_metros\n values:\n - da\n - sv\n all: true\noutputs:\n plans: ${example.plans}\n```\n{{% /example %}}\n{{% example %}}\n### Ignoring Changes to Plans/Metro\n\nPreserve deployed device plan, facility and metro when creating a new execution plan.\n\nAs described in the `data-resource-behavior` feature as shown in the example below.\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst examplePlans = equinix.metal.getPlans({\n sorts: [{\n attribute: \"pricing_hour\",\n direction: \"asc\",\n }],\n filters: [\n {\n attribute: \"name\",\n values: [\n \"c3.small.x86\",\n \"c3.medium.x86\",\n \"m3.large.x86\",\n ],\n },\n {\n attribute: \"available_in_metros\",\n values: [\"sv\"],\n },\n ],\n});\n// This equinix_metal_device will use the first returned plan and the first metro in which that plan is available\n// It will ignore future changes on plan and metro\nconst exampleDevice = new equinix.metal.Device(\"exampleDevice\", {\n hostname: \"example\",\n plan: examplePlans.then(examplePlans =\u003e examplePlans.plans?.[0]?.name).apply((x) =\u003e equinix.metal.plan.Plan[x]),\n metro: examplePlans.then(examplePlans =\u003e examplePlans.plans?.[0]?.availableInMetros?.[0]),\n operatingSystem: \"ubuntu_20_04\",\n billingCycle: \"hourly\",\n projectId: _var.project_id,\n});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample_plans = equinix.metal.get_plans(sorts=[equinix.metal.GetPlansSortArgs(\n attribute=\"pricing_hour\",\n direction=\"asc\",\n )],\n filters=[\n equinix.metal.GetPlansFilterArgs(\n attribute=\"name\",\n values=[\n \"c3.small.x86\",\n \"c3.medium.x86\",\n \"m3.large.x86\",\n ],\n ),\n equinix.metal.GetPlansFilterArgs(\n attribute=\"available_in_metros\",\n values=[\"sv\"],\n ),\n ])\n# This equinix_metal_device will use the first returned plan and the first metro in which that plan is available\n# It will ignore future changes on plan and metro\nexample_device = equinix.metal.Device(\"exampleDevice\",\n hostname=\"example\",\n plan=example_plans.plans[0].name.apply(lambda x: equinix.metal/plan.Plan(x)),\n metro=example_plans.plans[0].available_in_metros[0],\n operating_system=\"ubuntu_20_04\",\n billing_cycle=\"hourly\",\n project_id=var[\"project_id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var examplePlans = Equinix.Metal.GetPlans.Invoke(new()\n {\n Sorts = new[]\n {\n new Equinix.Metal.Inputs.GetPlansSortInputArgs\n {\n Attribute = \"pricing_hour\",\n Direction = \"asc\",\n },\n },\n Filters = new[]\n {\n new Equinix.Metal.Inputs.GetPlansFilterInputArgs\n {\n Attribute = \"name\",\n Values = new[]\n {\n \"c3.small.x86\",\n \"c3.medium.x86\",\n \"m3.large.x86\",\n },\n },\n new Equinix.Metal.Inputs.GetPlansFilterInputArgs\n {\n Attribute = \"available_in_metros\",\n Values = new[]\n {\n \"sv\",\n },\n },\n },\n });\n\n // This equinix_metal_device will use the first returned plan and the first metro in which that plan is available\n // It will ignore future changes on plan and metro\n var exampleDevice = new Equinix.Metal.Device(\"exampleDevice\", new()\n {\n Hostname = \"example\",\n Plan = examplePlans.Apply(getPlansResult =\u003e getPlansResult.Plans[0]?.Name).Apply(System.Enum.Parse\u003cEquinix.Metal.Plan.Plan\u003e),\n Metro = examplePlans.Apply(getPlansResult =\u003e getPlansResult.Plans[0]?.AvailableInMetros[0]),\n OperatingSystem = \"ubuntu_20_04\",\n BillingCycle = \"hourly\",\n ProjectId = @var.Project_id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texamplePlans, err := metal.GetPlans(ctx, \u0026metal.GetPlansArgs{\n\t\t\tSorts: []metal.GetPlansSort{\n\t\t\t\t{\n\t\t\t\t\tAttribute: \"pricing_hour\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"asc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilters: []metal.GetPlansFilter{\n\t\t\t\t{\n\t\t\t\t\tAttribute: \"name\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"c3.small.x86\",\n\t\t\t\t\t\t\"c3.medium.x86\",\n\t\t\t\t\t\t\"m3.large.x86\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAttribute: \"available_in_metros\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"sv\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// This equinix_metal_device will use the first returned plan and the first metro in which that plan is available\n\t\t// It will ignore future changes on plan and metro\n\t\t_, err = metal.NewDevice(ctx, \"exampleDevice\", \u0026metal.DeviceArgs{\n\t\t\tHostname: pulumi.String(\"example\"),\n\t\t\tPlan: examplePlans.Plans[0].Name.ApplyT(func(x *string) metal.Plan { return metal.Plan(*x) }).(metal.PlanOutput),\n\t\t\tMetro: *pulumi.String(examplePlans.Plans[0].AvailableInMetros[0]),\n\t\t\tOperatingSystem: pulumi.String(\"ubuntu_20_04\"),\n\t\t\tBillingCycle: pulumi.String(\"hourly\"),\n\t\t\tProjectId: pulumi.Any(_var.Project_id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetPlansArgs;\nimport com.pulumi.equinix.metal.Device;\nimport com.pulumi.equinix.metal.DeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var examplePlans = MetalFunctions.getPlans(GetPlansArgs.builder()\n .sorts(GetPlansSortArgs.builder()\n .attribute(\"pricing_hour\")\n .direction(\"asc\")\n .build())\n .filters( \n GetPlansFilterArgs.builder()\n .attribute(\"name\")\n .values( \n \"c3.small.x86\",\n \"c3.medium.x86\",\n \"m3.large.x86\")\n .build(),\n GetPlansFilterArgs.builder()\n .attribute(\"available_in_metros\")\n .values(\"sv\")\n .build())\n .build());\n\n var exampleDevice = new Device(\"exampleDevice\", DeviceArgs.builder() \n .hostname(\"example\")\n .plan(examplePlans.applyValue(getPlansResult -\u003e getPlansResult.plans()[0].name()))\n .metro(examplePlans.applyValue(getPlansResult -\u003e getPlansResult.plans()[0].availableInMetros()[0]))\n .operatingSystem(\"ubuntu_20_04\")\n .billingCycle(\"hourly\")\n .projectId(var_.project_id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This equinix_metal_device will use the first returned plan and the first metro in which that plan is available\n # It will ignore future changes on plan and metro\n exampleDevice:\n type: equinix:metal:Device\n properties:\n hostname: example\n plan: ${examplePlans.plans[0].name}\n metro: ${examplePlans.plans[0].availableInMetros[0]}\n operatingSystem: ubuntu_20_04\n billingCycle: hourly\n projectId: ${var.project_id}\nvariables:\n examplePlans:\n fn::invoke:\n Function: equinix:metal:getPlans\n Arguments:\n sorts:\n - attribute: pricing_hour\n direction: asc\n filters:\n - attribute: name\n values:\n - c3.small.x86\n - c3.medium.x86\n - m3.large.x86\n - attribute: available_in_metros\n values:\n - sv\n```\n\nIf your use case requires dynamic changes of a device plan or metro you can define the lifecycle with a condition.\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@equinix-labs/pulumi-equinix\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst config = new pulumi.Config();\nconst ignorePlansMetrosChanges = config.getBoolean(\"ignorePlansMetrosChanges\") || false;\nconst examplePlans = equinix.metal.getPlans({});\n// required device arguments\nconst exampleDevice = new equinix.metal.Device(\"exampleDevice\", {});\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nconfig = pulumi.Config()\nignore_plans_metros_changes = config.get_bool(\"ignorePlansMetrosChanges\")\nif ignore_plans_metros_changes is None:\n ignore_plans_metros_changes = False\nexample_plans = equinix.metal.get_plans()\n# required device arguments\nexample_device = equinix.metal.Device(\"exampleDevice\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var ignorePlansMetrosChanges = config.GetBoolean(\"ignorePlansMetrosChanges\") ?? false;\n var examplePlans = Equinix.Metal.GetPlans.Invoke();\n\n // required device arguments\n var exampleDevice = new Equinix.Metal.Device(\"exampleDevice\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tignorePlansMetrosChanges := false\n\t\tif param := cfg.GetBool(\"ignorePlansMetrosChanges\"); param {\n\t\t\tignorePlansMetrosChanges = param\n\t\t}\n\t\t_, err := metal.GetPlans(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// required device arguments\n\t\t_, err = metal.NewDevice(ctx, \"exampleDevice\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetPlansArgs;\nimport com.pulumi.equinix.metal.Device;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var ignorePlansMetrosChanges = config.get(\"ignorePlansMetrosChanges\").orElse(false);\n final var examplePlans = MetalFunctions.getPlans();\n\n var exampleDevice = new Device(\"exampleDevice\");\n\n }\n}\n```\n```yaml\nconfiguration:\n # Following example uses a boolean variable that may eventually be set to you false when you update your equinix_metal_plans filter criteria because you need a device plan with a new feature.\n ignorePlansMetrosChanges:\n type: bool\n default: false\nresources:\n exampleDevice:\n type: equinix:metal:Device\nvariables:\n examplePlans:\n fn::invoke:\n Function: equinix:metal:getPlans\n Arguments: {}\n```\n{{% /example %}}\n{{% /examples %}}",
"inputs": {
"description": "A collection of arguments for invoking getPlans.\n",
"properties": {
@@ -17557,7 +18617,7 @@
}
},
"equinix:metal/getVirtualCircuit:getVirtualCircuit": {
- "description": "Use this data source to retrieve a virtual circuit resource from\n[Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/)\n\n\u003e VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst exampleConnection = equinix.metal.getInterconnection({\n connectionId: \"4347e805-eb46-4699-9eb9-5c116e6a017d\",\n});\nconst exampleVc = exampleConnection.then(exampleConnection =\u003e equinix.metal.getVirtualCircuit({\n virtualCircuitId: exampleConnection.ports?.[1]?.virtualCircuitIds?.[0],\n}));\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\nexample_connection = equinix.metal.get_interconnection(connection_id=\"4347e805-eb46-4699-9eb9-5c116e6a017d\")\nexample_vc = equinix.metal.get_virtual_circuit(virtual_circuit_id=example_connection.ports[1].virtual_circuit_ids[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleConnection = Equinix.Metal.GetInterconnection.Invoke(new()\n {\n ConnectionId = \"4347e805-eb46-4699-9eb9-5c116e6a017d\",\n });\n\n var exampleVc = Equinix.Metal.GetVirtualCircuit.Invoke(new()\n {\n VirtualCircuitId = exampleConnection.Apply(getInterconnectionResult =\u003e getInterconnectionResult.Ports[1]?.VirtualCircuitIds[0]),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/metal\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleConnection, err := metal.LookupInterconnection(ctx, \u0026metal.LookupInterconnectionArgs{\n\t\t\tConnectionId: \"4347e805-eb46-4699-9eb9-5c116e6a017d\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metal.LookupVirtualCircuit(ctx, \u0026metal.LookupVirtualCircuitArgs{\n\t\t\tVirtualCircuitId: exampleConnection.Ports[1].VirtualCircuitIds[0],\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.metal.MetalFunctions;\nimport com.pulumi.equinix.metal.inputs.GetInterconnectionArgs;\nimport com.pulumi.equinix.metal.inputs.GetVirtualCircuitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var exampleConnection = MetalFunctions.getInterconnection(GetInterconnectionArgs.builder()\n .connectionId(\"4347e805-eb46-4699-9eb9-5c116e6a017d\")\n .build());\n\n final var exampleVc = MetalFunctions.getVirtualCircuit(GetVirtualCircuitArgs.builder()\n .virtualCircuitId(exampleConnection.applyValue(getInterconnectionResult -\u003e getInterconnectionResult.ports()[1].virtualCircuitIds()[0]))\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n exampleConnection:\n fn::invoke:\n Function: equinix:metal:getInterconnection\n Arguments:\n connectionId: 4347e805-eb46-4699-9eb9-5c116e6a017d\n exampleVc:\n fn::invoke:\n Function: equinix:metal:getVirtualCircuit\n Arguments:\n virtualCircuitId: ${exampleConnection.ports[1].virtualCircuitIds[0]}\n```\n{{% /example %}}\n{{% /examples %}}",
+ "description": "Use this data source to retrieve a virtual circuit resource from\n[Equinix Fabric - software-defined interconnections](https://metal.equinix.com/developers/docs/networking/fabric/)\n\n\u003e VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.\n",
"inputs": {
"description": "A collection of arguments for invoking getVirtualCircuit.\n",
"properties": {
@@ -17824,7 +18884,7 @@
}
},
"equinix:networkedge/getAccount:getAccount": {
- "description": "Use this data source to get number and identifier of Equinix Network Edge\nbilling account in a given metro location.\n\nBilling account reference is required to create Network Edge virtual device\nin corresponding metro location.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst dc = equinix.networkedge.getAccount({\n metroCode: \"DC\",\n status: \"Active\",\n});\nexport const number = dc.then(dc =\u003e dc.number);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ndc = equinix.networkedge.get_account(metro_code=\"DC\",\n status=\"Active\")\npulumi.export(\"number\", dc.number)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dc = Equinix.NetworkEdge.GetAccount.Invoke(new()\n {\n MetroCode = \"DC\",\n Status = \"Active\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"number\"] = dc.Apply(getAccountResult =\u003e getAccountResult.Number),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdc, err := networkedge.GetAccount(ctx, \u0026networkedge.GetAccountArgs{\n\t\t\tMetroCode: \"DC\",\n\t\t\tStatus: pulumi.StringRef(\"Active\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"number\", dc.Number)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var dc = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n .metroCode(\"DC\")\n .status(\"Active\")\n .build());\n\n ctx.export(\"number\", dc.applyValue(getAccountResult -\u003e getAccountResult.number()));\n }\n}\n```\n```yaml\nvariables:\n dc:\n fn::invoke:\n Function: equinix:networkedge:getAccount\n Arguments:\n metroCode: DC\n status: Active\noutputs:\n number: ${dc.number}\n```\n{{% /example %}}\n{{% /examples %}}",
+ "description": "Use this data source to get number and identifier of Equinix Network Edge\nbilling account in a given metro location.\n\nBilling account reference is required to create Network Edge virtual device\nin corresponding metro location.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as equinix from \"@pulumi/equinix\";\n\nconst dc = equinix.networkedge.getAccount({\n metroCode: \"DC\",\n status: \"Active\",\n projectId: \"a86d7112-d740-4758-9c9c-31e66373746b\",\n});\nexport const number = dc.then(dc =\u003e dc.number);\n```\n```python\nimport pulumi\nimport pulumi_equinix as equinix\n\ndc = equinix.networkedge.get_account(metro_code=\"DC\",\n status=\"Active\",\n project_id=\"a86d7112-d740-4758-9c9c-31e66373746b\")\npulumi.export(\"number\", dc.number)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Equinix = Pulumi.Equinix;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dc = Equinix.NetworkEdge.GetAccount.Invoke(new()\n {\n MetroCode = \"DC\",\n Status = \"Active\",\n ProjectId = \"a86d7112-d740-4758-9c9c-31e66373746b\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"number\"] = dc.Apply(getAccountResult =\u003e getAccountResult.Number),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/equinix/pulumi-equinix/sdk/go/equinix/networkedge\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdc, err := networkedge.GetAccount(ctx, \u0026networkedge.GetAccountArgs{\n\t\t\tMetroCode: \"DC\",\n\t\t\tStatus: pulumi.StringRef(\"Active\"),\n\t\t\tProjectId: pulumi.StringRef(\"a86d7112-d740-4758-9c9c-31e66373746b\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"number\", dc.Number)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.equinix.networkedge.NetworkedgeFunctions;\nimport com.pulumi.equinix.networkedge.inputs.GetAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var dc = NetworkedgeFunctions.getAccount(GetAccountArgs.builder()\n .metroCode(\"DC\")\n .status(\"Active\")\n .projectId(\"a86d7112-d740-4758-9c9c-31e66373746b\")\n .build());\n\n ctx.export(\"number\", dc.applyValue(getAccountResult -\u003e getAccountResult.number()));\n }\n}\n```\n```yaml\nvariables:\n dc:\n fn::invoke:\n Function: equinix:networkedge:getAccount\n Arguments:\n metroCode: DC\n status: Active\n projectId: a86d7112-d740-4758-9c9c-31e66373746b\noutputs:\n number: ${dc.number}\n```\n{{% /example %}}\n{{% /examples %}}",
"inputs": {
"description": "A collection of arguments for invoking getAccount.\n",
"properties": {
@@ -17836,6 +18896,10 @@
"type": "string",
"description": "Account name for filtering.\n"
},
+ "projectId": {
+ "type": "string",
+ "description": "Unique Identifier for the project resource where the account is scoped to.If you\nleave it out, all the billing accounts under all projects in your organization will be returned and it may return more than one account.\n"
+ },
"status": {
"type": "string",
"description": "Account status for filtering. Possible values are: `Active`, `Processing`,\n`Submitted`, `Staged`.\n"
@@ -17863,6 +18927,9 @@
"type": "string",
"description": "Account unique number.\n"
},
+ "projectId": {
+ "type": "string"
+ },
"status": {
"type": "string"
},
@@ -17876,6 +18943,7 @@
"metroCode",
"name",
"number",
+ "projectId",
"status",
"ucmId",
"id"
@@ -17935,6 +19003,14 @@
"coreCount": {
"type": "integer"
},
+ "diverseDeviceId": {
+ "type": "string",
+ "description": "diverse device uuid\n"
+ },
+ "diverseDeviceName": {
+ "type": "string",
+ "description": "Name of the device with diverse device UUID\n"
+ },
"hostname": {
"type": "string"
},
@@ -17991,6 +19067,9 @@
"packageCode": {
"type": "string"
},
+ "projectId": {
+ "type": "string"
+ },
"purchaseOrderNumber": {
"type": "string"
},
@@ -18080,6 +19159,8 @@
"clusterDetails",
"connectivity",
"coreCount",
+ "diverseDeviceId",
+ "diverseDeviceName",
"hostname",
"ibx",
"interfaces",
@@ -18094,6 +19175,7 @@
"notifications",
"orderReference",
"packageCode",
+ "projectId",
"purchaseOrderNumber",
"redundancyType",
"redundantId",
diff --git a/provider/go.mod b/provider/go.mod
index da95e5bb..2e462086 100644
--- a/provider/go.mod
+++ b/provider/go.mod
@@ -4,67 +4,67 @@ go 1.21
replace (
github.com/equinix/terraform-provider-equinix => ../upstream
- github.com/hashicorp/go-cty => github.com/hashicorp/go-cty v1.4.1-0.20200723130312-85980079f637
- github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20230912190043-e6d96b3b8f7e
+ // NOTE: this is currently tracking upstream-v1.4.0 branch in the Pulumi fork. Upgrading
+ // this dependency is sensitive and is worth doing carefully (such as reading release notes)
+ // and not simply rely on passing tests for the upgrade.
+ github.com/hashicorp/terraform-plugin-framework => github.com/pulumi/terraform-plugin-framework v0.0.0-20230922145027-1535d08c1d47
+ github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20240202163305-e2a20ae13ef9
)
require (
- github.com/equinix/terraform-provider-equinix v1.22.0
- github.com/pulumi/pulumi-terraform-bridge/v3 v3.65.0
- github.com/pulumi/pulumi/pkg/v3 v3.94.2
- github.com/pulumi/pulumi/sdk/v3 v3.94.2
+ github.com/equinix/terraform-provider-equinix v1.32.0
+ github.com/pulumi/pulumi-terraform-bridge/pf v0.29.0
+ github.com/pulumi/pulumi-terraform-bridge/v3 v3.76.0
+ github.com/pulumi/pulumi/pkg/v3 v3.107.0
+ github.com/pulumi/pulumi/sdk/v3 v3.107.0
)
require (
- cloud.google.com/go v0.110.4 // indirect
- cloud.google.com/go/compute v1.20.1 // indirect
+ 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.1 // indirect
- cloud.google.com/go/kms v1.12.1 // indirect
- cloud.google.com/go/logging v1.7.0 // indirect
- cloud.google.com/go/longrunning v0.5.1 // indirect
- cloud.google.com/go/storage v1.30.1 // indirect
+ cloud.google.com/go/iam v1.1.5 // indirect
+ cloud.google.com/go/kms v1.15.5 // indirect
+ cloud.google.com/go/logging v1.8.1 // indirect
+ cloud.google.com/go/longrunning v0.5.4 // indirect
+ cloud.google.com/go/storage v1.35.1 // indirect
dario.cat/mergo v1.0.0 // indirect
- github.com/Azure/azure-sdk-for-go v66.0.0+incompatible // indirect
- github.com/Azure/go-autorest v14.2.0+incompatible // indirect
- github.com/Azure/go-autorest/autorest v0.11.28 // indirect
- github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect
- github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 // indirect
- github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 // indirect
- github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
- github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
- github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
- github.com/Azure/go-autorest/logger v0.2.1 // indirect
- github.com/Azure/go-autorest/tracing v0.6.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect
+ github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 // indirect
github.com/BurntSushi/toml v1.2.1 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
- github.com/Masterminds/semver/v3 v3.1.1 // indirect
- github.com/Masterminds/sprig/v3 v3.2.2 // indirect
+ github.com/Masterminds/semver/v3 v3.2.0 // indirect
+ github.com/Masterminds/sprig/v3 v3.2.3 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect
- github.com/acomagu/bufpipe v1.0.4 // indirect
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect
github.com/agext/levenshtein v1.2.3 // indirect
github.com/antihax/optional v1.0.0 // indirect
github.com/apparentlymart/go-cidr v1.1.0 // indirect
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
- github.com/armon/go-metrics v0.4.0 // indirect
+ github.com/armon/go-metrics v0.4.1 // indirect
github.com/armon/go-radix v1.0.0 // indirect
github.com/atotto/clipboard v0.1.4 // indirect
- github.com/aws/aws-sdk-go v1.44.298 // indirect
- github.com/aws/aws-sdk-go-v2 v1.17.3 // indirect
- github.com/aws/aws-sdk-go-v2/config v1.15.15 // indirect
- github.com/aws/aws-sdk-go-v2/credentials v1.12.10 // indirect
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9 // indirect
- github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.27 // indirect
- github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.21 // indirect
- github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9 // indirect
- github.com/aws/aws-sdk-go-v2/service/kms v1.18.1 // indirect
- github.com/aws/aws-sdk-go-v2/service/sso v1.11.13 // indirect
- github.com/aws/aws-sdk-go-v2/service/sts v1.16.10 // indirect
- github.com/aws/smithy-go v1.13.5 // indirect
+ github.com/aws/aws-sdk-go v1.49.0 // indirect
+ github.com/aws/aws-sdk-go-v2 v1.24.0 // indirect
+ github.com/aws/aws-sdk-go-v2/config v1.26.1 // indirect
+ github.com/aws/aws-sdk-go-v2/credentials v1.16.12 // indirect
+ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/ini v1.7.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9 // indirect
+ github.com/aws/aws-sdk-go-v2/service/kms v1.27.5 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sso v1.18.5 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sts v1.26.5 // indirect
+ github.com/aws/smithy-go v1.19.0 // indirect
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/bgentry/speakeasy v0.1.0 // indirect
@@ -74,43 +74,43 @@ require (
github.com/charmbracelet/bubbletea v0.24.2 // indirect
github.com/charmbracelet/lipgloss v0.7.1 // indirect
github.com/cheggaaa/pb v1.0.29 // indirect
- github.com/cloudflare/circl v1.3.3 // indirect
+ github.com/cloudflare/circl v1.3.7 // indirect
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
github.com/cyphar/filepath-securejoin v0.2.4 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/dimchansky/utfbom v1.1.1 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
+ github.com/deckarep/golang-set/v2 v2.5.0 // indirect
github.com/djherbis/times v1.5.0 // indirect
github.com/edsrzf/mmap-go v1.1.0 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
github.com/equinix-labs/fabric-go v0.7.1 // indirect
github.com/equinix/ecx-go/v2 v2.3.1 // indirect
- github.com/equinix/equinix-sdk-go v0.30.0 // indirect
- github.com/equinix/ne-go v1.12.0 // indirect
+ github.com/equinix/equinix-sdk-go v0.34.0 // indirect
+ github.com/equinix/ne-go v1.16.0 // indirect
github.com/equinix/oauth2-go v1.0.0 // indirect
github.com/equinix/rest-go v1.3.0 // indirect
github.com/ettle/strcase v0.1.1 // indirect
- github.com/fatih/color v1.13.0 // indirect
+ github.com/fatih/color v1.16.0 // indirect
github.com/frankban/quicktest v1.14.5 // indirect
github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.5.0 // indirect
- github.com/go-git/go-git/v5 v5.9.0 // indirect
- github.com/go-resty/resty/v2 v2.3.0 // indirect
+ github.com/go-git/go-git/v5 v5.11.0 // indirect
+ github.com/go-resty/resty/v2 v2.7.0 // indirect
github.com/gofrs/uuid v4.2.0+incompatible // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang-jwt/jwt/v4 v4.4.2 // indirect
- github.com/golang/glog v1.1.0 // indirect
+ github.com/golang-jwt/jwt/v5 v5.1.0 // indirect
+ github.com/golang/glog v1.1.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/go-querystring v1.1.0 // indirect
- github.com/google/s2a-go v0.1.4 // indirect
+ github.com/google/s2a-go v0.1.7 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
- github.com/google/uuid v1.4.0 // indirect
+ github.com/google/uuid v1.5.0 // indirect
github.com/google/wire v0.5.0 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
- github.com/googleapis/gax-go/v2 v2.11.0 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
+ github.com/googleapis/gax-go/v2 v2.12.0 // indirect
github.com/gorilla/mux v1.8.0 // indirect
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
@@ -121,7 +121,7 @@ require (
github.com/hashicorp/go-hclog v1.5.0 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
- github.com/hashicorp/go-plugin v1.5.1 // indirect
+ github.com/hashicorp/go-plugin v1.6.0 // indirect
github.com/hashicorp/go-retryablehttp v0.7.5 // indirect
github.com/hashicorp/go-rootcerts v1.0.2 // indirect
github.com/hashicorp/go-safetemp v1.0.0 // indirect
@@ -131,36 +131,41 @@ require (
github.com/hashicorp/go-sockaddr v1.0.2 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
- github.com/hashicorp/golang-lru v0.5.4 // indirect
- github.com/hashicorp/hc-install v0.6.1 // indirect
+ github.com/hashicorp/golang-lru v0.6.0 // indirect
+ github.com/hashicorp/hc-install v0.6.2 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/hashicorp/hcl/v2 v2.19.1 // indirect
github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 // indirect
github.com/hashicorp/logutils v1.0.0 // indirect
- github.com/hashicorp/terraform-exec v0.19.0 // indirect
- github.com/hashicorp/terraform-json v0.17.1 // indirect
- github.com/hashicorp/terraform-plugin-go v0.19.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-framework v1.5.0 // indirect
+ github.com/hashicorp/terraform-plugin-framework-timeouts v0.4.1 // indirect
+ github.com/hashicorp/terraform-plugin-framework-validators v0.12.0 // indirect
+ github.com/hashicorp/terraform-plugin-go v0.21.0 // indirect
github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect
- github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0 // indirect
- github.com/hashicorp/terraform-registry-address v0.2.2 // indirect
+ github.com/hashicorp/terraform-plugin-sdk/v2 v2.32.0 // indirect
+ github.com/hashicorp/terraform-plugin-testing v1.6.0 // indirect
+ github.com/hashicorp/terraform-registry-address v0.2.3 // indirect
github.com/hashicorp/terraform-svchost v0.1.1 // indirect
github.com/hashicorp/vault/api v1.8.2 // indirect
github.com/hashicorp/vault/sdk v0.6.1 // indirect
github.com/hashicorp/yamux v0.1.1 // indirect
- github.com/huandu/xstrings v1.3.2 // indirect
+ github.com/huandu/xstrings v1.3.3 // indirect
github.com/iancoleman/strcase v0.2.0 // indirect
- github.com/imdario/mergo v0.3.15 // indirect
+ github.com/imdario/mergo v0.3.16 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
- github.com/klauspost/compress v1.15.11 // indirect
+ github.com/klauspost/compress v1.17.1 // indirect
+ github.com/kylelemons/godebug v1.1.0 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
- github.com/mattn/go-isatty v0.0.18 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-localereader v0.0.1 // indirect
- github.com/mattn/go-runewidth v0.0.14 // indirect
+ github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/mitchellh/cli v1.1.5 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
@@ -172,26 +177,29 @@ require (
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect
+ github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
github.com/muesli/reflow v0.3.0 // indirect
- github.com/muesli/termenv v0.15.1 // indirect
+ github.com/muesli/termenv v0.15.2 // indirect
github.com/natefinch/atomic v1.0.1 // indirect
github.com/oklog/run v1.1.0 // indirect
github.com/opentracing/basictracer-go v1.1.0 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
- github.com/packethost/packngo v0.30.0 // indirect
+ github.com/packethost/packngo v0.31.0 // indirect
+ github.com/pgavlin/fx v0.1.6 // indirect
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 // indirect
github.com/pierrec/lz4 v2.6.1+incompatible // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect
+ github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pkg/term v1.1.0 // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
+ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/posener/complete v1.2.3 // indirect
- github.com/pulumi/esc v0.6.0 // indirect
- github.com/pulumi/pulumi-java/pkg v0.9.8 // indirect
- github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.4 // indirect
- github.com/pulumi/pulumi-yaml v1.4.2 // indirect
+ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect
+ github.com/pulumi/esc v0.6.2 // indirect
+ github.com/pulumi/pulumi-java/pkg v0.9.9 // indirect
+ github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.8 // indirect
+ github.com/pulumi/pulumi-yaml v1.5.0 // indirect
github.com/pulumi/schema-tools v0.1.2 // indirect
github.com/pulumi/terraform-diff-reader v0.0.2 // indirect
github.com/rivo/uniseg v0.4.4 // indirect
@@ -204,7 +212,7 @@ require (
github.com/segmentio/encoding v0.3.5 // indirect
github.com/sergi/go-diff v1.3.1 // indirect
github.com/shopspring/decimal v1.3.1 // indirect
- github.com/skeema/knownhosts v1.2.0 // indirect
+ github.com/skeema/knownhosts v1.2.1 // indirect
github.com/spf13/afero v1.9.5 // indirect
github.com/spf13/cast v1.5.0 // indirect
github.com/spf13/cobra v1.7.0 // indirect
@@ -216,39 +224,38 @@ require (
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
github.com/ulikunitz/xz v0.5.10 // indirect
github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
- github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect
+ github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
github.com/xanzy/ssh-agent v0.3.3 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
- github.com/zclconf/go-cty v1.14.1 // indirect
+ github.com/zclconf/go-cty v1.14.2 // indirect
go.opencensus.io v0.24.0 // indirect
- go.uber.org/atomic v1.9.0 // indirect
- gocloud.dev v0.27.0 // indirect
+ go.uber.org/atomic v1.11.0 // indirect
+ gocloud.dev v0.36.0 // indirect
gocloud.dev/secrets/hashivault v0.27.0 // indirect
- golang.org/x/crypto v0.15.0 // indirect
- golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
+ golang.org/x/crypto v0.18.0 // indirect
+ golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect
golang.org/x/mod v0.14.0 // indirect
- golang.org/x/net v0.18.0 // indirect
- golang.org/x/oauth2 v0.14.0 // indirect
+ golang.org/x/net v0.19.0 // indirect
+ golang.org/x/oauth2 v0.15.0 // indirect
golang.org/x/sync v0.5.0 // indirect
- golang.org/x/sys v0.14.0 // indirect
- golang.org/x/term v0.14.0 // indirect
+ golang.org/x/sys v0.16.0 // indirect
+ golang.org/x/term v0.16.0 // indirect
golang.org/x/text v0.14.0 // indirect
- golang.org/x/time v0.3.0 // indirect
- golang.org/x/tools v0.15.0 // indirect
- golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
- google.golang.org/api v0.126.0 // indirect
- google.golang.org/appengine v1.6.7 // indirect
- google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 // indirect
- google.golang.org/grpc v1.57.1 // indirect
- google.golang.org/protobuf v1.31.0 // indirect
+ golang.org/x/time v0.4.0 // indirect
+ golang.org/x/tools v0.16.0 // indirect
+ golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
+ google.golang.org/api v0.151.0 // indirect
+ google.golang.org/appengine v1.6.8 // indirect
+ google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect
+ google.golang.org/grpc v1.61.0 // indirect
+ google.golang.org/protobuf v1.32.0 // indirect
gopkg.in/square/go-jose.v2 v2.6.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
lukechampine.com/frand v1.4.2 // indirect
- sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 // indirect
)
diff --git a/provider/go.sum b/provider/go.sum
index 79725168..c34e60e7 100644
--- a/provider/go.sum
+++ b/provider/go.sum
@@ -40,8 +40,8 @@ cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRY
cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM=
cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I=
cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY=
-cloud.google.com/go v0.110.4 h1:1JYyxKMN9hd5dR2MYTPWkGUgcoxVVhg0LKNKEo0qvmk=
-cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI=
+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/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4=
cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw=
cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E=
@@ -178,8 +178,8 @@ cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63
cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs=
cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU=
cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE=
-cloud.google.com/go/compute v1.20.1 h1:6aKEtlUiwEpJzM001l0yFkpXmUVXaN8W+fbkb2AZNbg=
-cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM=
+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.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU=
cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM=
@@ -320,8 +320,8 @@ cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGE
cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY=
cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY=
cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0=
-cloud.google.com/go/iam v1.1.1 h1:lW7fzj15aVIXYHREOqjRBV9PsH0Z6u8Y46a1YGvQP4Y=
-cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU=
+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/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc=
cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A=
cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk=
@@ -341,8 +341,8 @@ cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4
cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w=
cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24=
cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI=
-cloud.google.com/go/kms v1.12.1 h1:xZmZuwy2cwzsocmKDOPu4BL7umg8QXagQx6fKVmf45U=
-cloud.google.com/go/kms v1.12.1/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM=
+cloud.google.com/go/kms v1.15.5 h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM=
+cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI=
cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=
cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE=
@@ -352,13 +352,14 @@ cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaML
cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08=
cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo=
cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw=
-cloud.google.com/go/logging v1.7.0 h1:CJYxlNNNNAMkHp9em/YEXcfJg+rPDg7YfwoRpMU+t5I=
cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M=
+cloud.google.com/go/logging v1.8.1 h1:26skQWPeYhvIasWKm48+Eq7oUqdcdbwsCVwz5Ys0FvU=
+cloud.google.com/go/logging v1.8.1/go.mod h1:TJjR+SimHwuC8MZ9cjByQulAMgni+RkXeI3wwctHJEI=
cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE=
cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc=
cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo=
-cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI=
-cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc=
+cloud.google.com/go/longrunning v0.5.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg=
+cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI=
cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE=
cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM=
cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA=
@@ -550,8 +551,8 @@ cloud.google.com/go/storage v1.24.0/go.mod h1:3xrJEFMXBsQLgxwThyjuD3aYlroL0TMRec
cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=
cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y=
cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4=
-cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM=
-cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E=
+cloud.google.com/go/storage v1.35.1 h1:B59ahL//eDfx2IIKFBeT5Atm9wnNmj3+8xG/W4WB//w=
+cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w=
cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I=
cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4=
@@ -633,15 +634,24 @@ github.com/Azure/azure-amqp-common-go/v3 v3.2.3/go.mod h1:7rPmbSfszeovxGfc5fSAXE
github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go v63.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
-github.com/Azure/azure-sdk-for-go v66.0.0+incompatible h1:bmmC38SlE8/E81nNADlgmVGurPWMHDX2YNXVQMrBpEE=
github.com/Azure/azure-sdk-for-go v66.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0/go.mod h1:+6sju8gk8FRmSajX3Oz4G5Gm7P+mbqE9FVaXXFYTkCM=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs=
github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI=
+github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM=
+github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE=
+github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw=
+github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA=
github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.0.2/go.mod h1:LH9XQnMr2ZYxQdVdCrzLO9mxeDyrDFa6wbSI3x5zCZk=
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1/go.mod h1:eZ4g6GUvXiGulfIbbhh1Xr4XwUYaYaWMqzGD/284wCA=
github.com/Azure/go-amqp v0.17.0/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg=
@@ -650,43 +660,34 @@ github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX
github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
-github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw=
github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA=
github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc=
github.com/Azure/go-autorest/autorest v0.11.25/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U=
github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U=
-github.com/Azure/go-autorest/autorest v0.11.28 h1:ndAExarwr5Y+GaHE6VCaY1kyS/HwwGGyuimVhWsHOEM=
github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA=
github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg=
github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A=
github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=
github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
github.com/Azure/go-autorest/autorest/adal v0.9.20/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
-github.com/Azure/go-autorest/autorest/adal v0.9.21 h1:jjQnVFXPfekaqb8vIsv2G1lxshoW+oGv4MDlhRtnYZk=
github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U=
-github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 h1:P6bYXFoao05z5uhOQzbC3Qd8JqF3jUoocoTeIxkp2cA=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg=
-github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 h1:w77/uPk80ZET2F+AfQExZyEWtn+0Rk/uw17m9fv5Ajc=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0=
-github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=
github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
-github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw=
github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU=
-github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk=
github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE=
-github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac=
github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E=
github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
-github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=
github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
-github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 h1:hVeq+yCyUi+MsoO/CU95yqCIcdzra5ovzk8Q2BBpV2M=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
@@ -701,11 +702,12 @@ github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJ
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
-github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
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.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8=
-github.com/Masterminds/sprig/v3 v3.2.2/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.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA=
github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA=
github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw=
@@ -745,7 +747,6 @@ github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:H
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
-github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY=
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA=
@@ -793,8 +794,9 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=
github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=
-github.com/armon/go-metrics v0.4.0 h1:yCQqn7dwca4ITXb+CbubHmedzaQYHhNhrEXLYUeEe8Q=
github.com/armon/go-metrics v0.4.0/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4=
+github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA=
+github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4=
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=
@@ -818,57 +820,74 @@ github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4
github.com/aws/aws-sdk-go v1.44.45/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
github.com/aws/aws-sdk-go v1.44.68/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
-github.com/aws/aws-sdk-go v1.44.298 h1:5qTxdubgV7PptZJmp/2qDwD2JL187ePL7VOxsSh1i3g=
-github.com/aws/aws-sdk-go v1.44.298/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
+github.com/aws/aws-sdk-go v1.49.0 h1:g9BkW1fo9GqKfwg2+zCD+TW/D36Ux+vtfJ8guF4AYmY=
+github.com/aws/aws-sdk-go v1.49.0/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
github.com/aws/aws-sdk-go-v2 v1.16.8/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw=
-github.com/aws/aws-sdk-go-v2 v1.17.3 h1:shN7NlnVzvDUgPQ+1rLMSxY8OWRNDRYtiqe0p/PgrhY=
-github.com/aws/aws-sdk-go-v2 v1.17.3/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
-github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3 h1:S/ZBwevQkr7gv5YxONYpGQxlMFFYSRfz3RMcjsC9Qhk=
+github.com/aws/aws-sdk-go-v2 v1.24.0 h1:890+mqQ+hTpNuw0gGP6/4akolQkSToDJgHfQE7AwGuk=
+github.com/aws/aws-sdk-go-v2 v1.24.0/go.mod h1:LNh45Br1YAkEKaAqvmE1m8FUx6a5b/V0oAKV7of29b4=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3/go.mod h1:gNsR5CaXKmQSSzrmGxmwmct/r+ZBfbxorAuXYsj/M5Y=
-github.com/aws/aws-sdk-go-v2/config v1.15.15 h1:yBV+J7Au5KZwOIrIYhYkTGJbifZPCkAnCFSvGsF3ui8=
+github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 h1:OCs21ST2LrepDfD3lwlQiOqIGp6JiEUqG84GzTDoyJs=
+github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4/go.mod h1:usURWEKSNNAcAZuzRn/9ZYPT8aZQkR7xcCtunK/LkJo=
github.com/aws/aws-sdk-go-v2/config v1.15.15/go.mod h1:A1Lzyy/o21I5/s2FbyX5AevQfSVXpvvIDCoVFD0BC4E=
-github.com/aws/aws-sdk-go-v2/credentials v1.12.10 h1:7gGcMQePejwiKoDWjB9cWnpfVdnz/e5JwJFuT6OrroI=
+github.com/aws/aws-sdk-go-v2/config v1.26.1 h1:z6DqMxclFGL3Zfo+4Q0rLnAZ6yVkzCRxhRMsiRQnD1o=
+github.com/aws/aws-sdk-go-v2/config v1.26.1/go.mod h1:ZB+CuKHRbb5v5F0oJtGdhFTelmrxd4iWO1lf0rQwSAg=
github.com/aws/aws-sdk-go-v2/credentials v1.12.10/go.mod h1:g5eIM5XRs/OzIIK81QMBl+dAuDyoLN0VYaLP+tBqEOk=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9 h1:hz8tc+OW17YqxyFFPSkvfSikbqWcyyHRyPVSTzC0+aI=
+github.com/aws/aws-sdk-go-v2/credentials v1.16.12 h1:v/WgB8NxprNvr5inKIiVVrXPuuTegM+K8nncFkr1usU=
+github.com/aws/aws-sdk-go-v2/credentials v1.16.12/go.mod h1:X21k0FjEJe+/pauud82HYiQbEr9jRKY3kXEIQ4hXeTQ=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9/go.mod h1:KDCCm4ONIdHtUloDcFvK2+vshZvx4Zmj7UMDfusuz5s=
-github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21 h1:bpiKFJ9aC0xTVpygSRRRL/YHC1JZ+pHQHENATHuoiwo=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10 h1:w98BT5w+ao1/r5sUuiH6JkVzjowOKeOJRHERyy1vh58=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10/go.mod h1:K2WGI7vUvkIv1HoNbfBA1bvIZ+9kL3YVmWxeKuLQsiw=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21/go.mod h1:iIYPrQ2rYfZiB/iADYlhj9HHZ9TTi6PqKQPAqygohbE=
+github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.15.7 h1:FnLf60PtjXp8ZOzQfhJVsqF0OtYKQZWQfqOLshh8YXg=
+github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.15.7/go.mod h1:tDVvl8hyU6E9B8TrnNrZQEVkQlB8hjJwcgpPhgtlnNg=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15/go.mod h1:pWrr2OoHlT7M/Pd2y4HV3gJyPb3qj5qMmnPkKSNPYK4=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.27 h1:I3cakv2Uy1vNmmhRQmFptYDxOvBnwCdNwyw63N0RaRU=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.27/go.mod h1:a1/UpzeyBBerajpnP5nGZa9mGzsBn5cOKxm6NWQsvoI=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9 h1:v+HbZaCGmOwnTTVS86Fleq0vPzOd7tnJGbFhP0stNLs=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9/go.mod h1:Xjqy+Nyj7VDLBtCMkQYOw1QYfAEZCVLrfI0ezve8wd4=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9/go.mod h1:08tUpeSGN33QKSO7fwxXczNfiwCpbj+GxK6XKwqWVv0=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.21 h1:5NbbMrIzmUn/TXFqAle6mgrH5m9cOvMLRGL7pnG8tRE=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.21/go.mod h1:+Gxn8jYn5k9ebfHEqlhrMirFjSW0v0C9fI+KN5vk2kE=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16 h1:f0ySVcmQhwmzn7zQozd8wBM3yuGBfzdpsOaKQ0/Epzw=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9 h1:N94sVhRACtXyVcjXxrwK1SKFIJrA9pOJ5yu2eSHnmls=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9/go.mod h1:hqamLz7g1/4EJP+GH5NBhcUMLjW+gKLQabgyz6/7WAU=
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16/go.mod h1:CYmI+7x03jjJih8kBEEFKRQc40UjUokT0k7GbvrhhTc=
-github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6 h1:3L8pcjvgaSOs0zzZcMKzxDSkYKEpwJ2dNVDdxm68jAY=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.7.2 h1:GrSw8s0Gs/5zZ0SX+gX4zQjRnRsMJDJ2sLur1gRBhEM=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.7.2/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6/go.mod h1:O7Oc4peGZDEKlddivslfYFvAbgzvl/GH3J8j3JIGBXc=
+github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.9 h1:ugD6qzjYtB7zM5PN/ZIeaAIyefPaD82G8+SJopgvUpw=
+github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.9/go.mod h1:YD0aYBWCrPENpHolhKw2XDlTIWae2GKXT1T4o6N6hiM=
github.com/aws/aws-sdk-go-v2/service/iam v1.19.0 h1:9vCynoqC+dgxZKrsjvAniyIopsv3RZFsZ6wkQ+yxtj8=
github.com/aws/aws-sdk-go-v2/service/iam v1.19.0/go.mod h1:OyAuvpFeSVNppcSsp1hFOVQcaTRc1LE24YIR7pMbbAA=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3 h1:4n4KCtv5SUoT5Er5XV41huuzrCqepxlW3SDI9qHQebc=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3/go.mod h1:gkb2qADY+OHaGLKNTYxMaQNacfeyQpZ4csDTQMeFmcw=
-github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10 h1:7LJcuRalaLw+GYQTMGmVUl4opg2HrDZkvn/L3KvIQfw=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 h1:/b31bi3YVNlkzkBrm9LfpaKoaYZUxIAj4sHfOTmLfqw=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4/go.mod h1:2aGXHFmbInwgP9ZfpmdIfOELL79zhdNYNmReK8qDfdQ=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10/go.mod h1:Qks+dxK3O+Z2deAhNo6cJ8ls1bam3tUGUAcgxQP1c70=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9 h1:sHfDuhbOuuWSIAEDd3pma6p0JgUcR2iePxtCE8gfCxQ=
+github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.9 h1:/90OR2XbSYfXucBMJ4U14wrjlfleq/0SB6dZDPncgmo=
+github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.9/go.mod h1:dN/Of9/fNZet7UrQQ6kTDo/VSwKPIq94vjlU16bRARc=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9/go.mod h1:yQowTpvdZkFVuHrLBXmczat4W+WJKg/PafBZnGBLga0=
-github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9 h1:sJdKvydGYDML9LTFcp6qq6Z5fIjN0Rdq2Gvw1hUg8tc=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9 h1:Nf2sHxjMJR8CSImIVCONRi4g0Su3J+TSTbS7G0pUeMU=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9/go.mod h1:idky4TER38YIjr2cADF1/ugFMKvZV7p//pVeV5LZbF0=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9/go.mod h1:Rc5+wn2k8gFSi3V1Ch4mhxOzjMh+bYSXVFfVaqowQOY=
-github.com/aws/aws-sdk-go-v2/service/kms v1.18.1 h1:y07kzPdcjuuyDVYWf1CCsQQ6kcAWMbFy+yIJ71xQBS0=
+github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.9 h1:iEAeF6YC3l4FzlJPP9H3Ko1TXpdjdqWffxXjp8SY6uk=
+github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.9/go.mod h1:kjsXoK23q9Z/tLBrckZLLyvjhZoS+AGrzqzUfEClvMM=
github.com/aws/aws-sdk-go-v2/service/kms v1.18.1/go.mod h1:4PZMUkc9rXHWGVB5J9vKaZy3D7Nai79ORworQ3ASMiM=
-github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2 h1:NvzGue25jKnuAsh6yQ+TZ4ResMcnp49AWgWGm2L4b5o=
+github.com/aws/aws-sdk-go-v2/service/kms v1.27.5 h1:7lKTr8zJ2nVaVgyII+7hUayTi7xWedMuANiNVXiD2S8=
+github.com/aws/aws-sdk-go-v2/service/kms v1.27.5/go.mod h1:D9FVDkZjkZnnFHymJ3fPVz0zOUlNSd0xcIIVmmrAac8=
github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2/go.mod h1:u+566cosFI+d+motIz3USXEh6sN8Nq4GrNXSg2RXVMo=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.47.5 h1:Keso8lIOS+IzI2MkPZyK6G0LYcK3My2LQ+T5bxghEAY=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.47.5/go.mod h1:vADO6Jn+Rq4nDtfwNjhgR84qkZwiC6FqCaXdw/kYwjA=
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.15.14/go.mod h1:xakbH8KMsQQKqzX87uyyzTHshc/0/Df8bsTneTS5pFU=
github.com/aws/aws-sdk-go-v2/service/sns v1.17.10/go.mod h1:uITsRNVMeCB3MkWpXxXw0eDz8pW4TYLzj+eyQtbhSxM=
github.com/aws/aws-sdk-go-v2/service/sqs v1.19.1/go.mod h1:A94o564Gj+Yn+7QO1eLFeI7UVv3riy/YBFOfICVqFvU=
github.com/aws/aws-sdk-go-v2/service/ssm v1.27.6/go.mod h1:fiFzQgj4xNOg4/wqmAiPvzgDMXPD+cUEplX/CYn+0j0=
-github.com/aws/aws-sdk-go-v2/service/sso v1.11.13 h1:DQpf+al+aWozOEmVEdml67qkVZ6vdtGUi71BZZWw40k=
github.com/aws/aws-sdk-go-v2/service/sso v1.11.13/go.mod h1:d7ptRksDDgvXaUvxyHZ9SYh+iMDymm94JbVcgvSYSzU=
-github.com/aws/aws-sdk-go-v2/service/sts v1.16.10 h1:7tquJrhjYz2EsCBvA9VTl+sBAAh1bv7h/sGASdZOGGo=
+github.com/aws/aws-sdk-go-v2/service/sso v1.18.5 h1:ldSFWz9tEHAwHNmjx2Cvy1MjP5/L9kNoR0skc6wyOOM=
+github.com/aws/aws-sdk-go-v2/service/sso v1.18.5/go.mod h1:CaFfXLYL376jgbP7VKC96uFcU8Rlavak0UlAwk1Dlhc=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5 h1:2k9KmFawS63euAkY4/ixVNsYYwrwnd5fIvgEKkfZFNM=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5/go.mod h1:W+nd4wWDVkSUIox9bacmkBP5NMFQeTJ/xqNabpzSR38=
github.com/aws/aws-sdk-go-v2/service/sts v1.16.10/go.mod h1:cftkHYN6tCDNfkSasAmclSfl4l7cySoay8vz7p/ce0E=
+github.com/aws/aws-sdk-go-v2/service/sts v1.26.5 h1:5UYvv8JUvllZsRnfrcMQ+hJ9jNICmcgKPAO1CER25Wg=
+github.com/aws/aws-sdk-go-v2/service/sts v1.26.5/go.mod h1:XX5gh4CB7wAs4KhcF46G6C8a2i7eupU19dcAAE+EydU=
github.com/aws/smithy-go v1.12.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
-github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8=
-github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
+github.com/aws/smithy-go v1.19.0 h1:KWFKQV80DpP3vJrrA9sVAHQ5gc2z8i4EzrLhLlWXcBM=
+github.com/aws/smithy-go v1.19.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE=
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
@@ -944,8 +963,9 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
+github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
+github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
github.com/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=
@@ -1096,8 +1116,11 @@ github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW
github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8=
github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I=
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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
+github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/deckarep/golang-set/v2 v2.5.0 h1:hn6cEZtQ0h3J8kFrHR/NrzyOoTnjgW1+FmNJzQ7y/sA=
+github.com/deckarep/golang-set/v2 v2.5.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
github.com/denisenkom/go-mssqldb v0.12.2/go.mod h1:lnIw1mZukFRZDJYQ0Pb833QS2IaC3l5HkEfra2LJ+sk=
github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA=
github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0=
@@ -1108,7 +1131,6 @@ github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8
github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs=
github.com/digitalocean/godo v1.81.0/go.mod h1:BPCqvwbjbGqxuUnIKB4EvS/AX7IDnNmt5fwvIkWo+ew=
-github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U=
github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU=
github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0=
@@ -1172,10 +1194,10 @@ github.com/equinix-labs/fabric-go v0.7.1 h1:4yk0IKXMcc72rkRVbcYHokAEc1uUB06t6NXK
github.com/equinix-labs/fabric-go v0.7.1/go.mod h1:oqgGS3GOI8hHGPJKsAwDOEX0qRHl52sJGvwA/zMSd90=
github.com/equinix/ecx-go/v2 v2.3.1 h1:gFcAIeyaEUw7S8ebqApmT7E/S7pC7Ac3wgScp89fkPU=
github.com/equinix/ecx-go/v2 v2.3.1/go.mod h1:FvCdZ3jXU8Z4CPKig2DT+4J2HdwgRK17pIcznM7RXyk=
-github.com/equinix/equinix-sdk-go v0.30.0 h1:u/+/p00mfAhDhoLvP1jTKruXndAYWoTwqN65BTbAPCg=
-github.com/equinix/equinix-sdk-go v0.30.0/go.mod h1:qnpdRzVftHFNaJFk1VSIrAOTLrIoeDrxzUr3l8ARyvQ=
-github.com/equinix/ne-go v1.12.0 h1:xZxnVWRIqFkos4ls9nSx92FMGkV8jSPTEaosLGE4Vvw=
-github.com/equinix/ne-go v1.12.0/go.mod h1:eHkkxM4nbTB7DZ9X9zGnwfYnxIJWIsU3aHA+FAoZ1EI=
+github.com/equinix/equinix-sdk-go v0.34.0 h1:CgEl174Jm0ima4rzNFXSl3K7RzTy0NF8eji1/dwYS+Q=
+github.com/equinix/equinix-sdk-go v0.34.0/go.mod h1:qnpdRzVftHFNaJFk1VSIrAOTLrIoeDrxzUr3l8ARyvQ=
+github.com/equinix/ne-go v1.16.0 h1:ZijMZxlu/2323RDfisxyeXukMn1TNv5tP5XiXZ8tWRM=
+github.com/equinix/ne-go v1.16.0/go.mod h1:eHkkxM4nbTB7DZ9X9zGnwfYnxIJWIsU3aHA+FAoZ1EI=
github.com/equinix/oauth2-go v1.0.0 h1:fHtAPGq82PdgtK5vEThs8Vwz6f7D/8SX4tE3NJu+KcU=
github.com/equinix/oauth2-go v1.0.0/go.mod h1:4pulXvUNMktJlewLPnUeJyMW52iCoF1aM+A/Z5xY1ws=
github.com/equinix/rest-go v1.3.0 h1:m38scYTOfV6N+gcrwchgVDutDffYd+QoYCMm9Jn6jyk=
@@ -1189,8 +1211,9 @@ github.com/evanphx/json-patch/v5 v5.5.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2Vvl
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
-github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
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/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
@@ -1237,11 +1260,12 @@ github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI
github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg=
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-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo=
+github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
+github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
github.com/go-git/go-git/v5 v5.8.1/go.mod h1:FHFuoD6yGz5OSKEBK+aWN9Oah0q54Jxl0abmj6GnqAo=
-github.com/go-git/go-git/v5 v5.9.0 h1:cD9SFA7sHVRdJ7AYck1ZaAa/yeuBvGPxwXDL8cxrObY=
-github.com/go-git/go-git/v5 v5.9.0/go.mod h1:RKIqga24sWdMGZF+1Ekv9kylsDz6LzdTSI2s/OsZWE0=
+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=
@@ -1304,8 +1328,9 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8=
-github.com/go-resty/resty/v2 v2.3.0 h1:JOOeAvjSlapTT92p8xiS19Zxev1neGikoHsXJeOq8So=
github.com/go-resty/resty/v2 v2.3.0/go.mod h1:UpN9CgLZNsv4e9XG50UU8xdI0F43UQ4HmxLBDwaroHU=
+github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY=
+github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I=
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
@@ -1368,15 +1393,17 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69
github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
-github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs=
github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
+github.com/golang-jwt/jwt/v5 v5.1.0 h1:UGKbA/IPjtS6zLcdB7i5TyACMgSbOTiR8qzXgw8HWQU=
+github.com/golang-jwt/jwt/v5 v5.1.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
-github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
+github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo=
+github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ=
github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -1446,8 +1473,9 @@ github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
github.com/google/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE=
github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk=
-github.com/google/go-replayers/httpreplay v1.1.1 h1:H91sIMlt1NZzN7R+/ASswyouLJfW0WLW7fhyUFvDEkY=
github.com/google/go-replayers/httpreplay v1.1.1/go.mod h1:gN9GeLIs7l6NUoVaSSnv2RiqK1NiwAmD0MrKeC9IIks=
+github.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk=
+github.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -1478,8 +1506,8 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
github.com/google/pprof v0.0.0-20220608213341-c488b8fa1db3/go.mod h1:gSuNB+gJaOiQKLEZ+q+PK9Mq3SOzhRcw2GsGS/FhYDk=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc=
-github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A=
+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/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
@@ -1488,16 +1516,17 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0/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/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
+github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8=
github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU=
github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg=
github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
-github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k=
github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
+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 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.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
@@ -1509,8 +1538,8 @@ github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqE
github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8=
github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI=
-github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4=
-github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI=
+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/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
@@ -1564,6 +1593,7 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
+github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs=
github.com/hashicorp/go-cty v1.4.1-0.20200723130312-85980079f637 h1:Ud/6/AdmJ1R7ibdS0Wo5MWPj0T1R0fkpaD087bBaW8I=
github.com/hashicorp/go-cty v1.4.1-0.20200723130312-85980079f637/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs=
github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY=
@@ -1592,8 +1622,9 @@ github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9
github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY=
github.com/hashicorp/go-plugin v1.4.3/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ=
github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s=
-github.com/hashicorp/go-plugin v1.5.1 h1:oGm7cWBaYIp3lJpx1RUEfLWophprE2EV/KUeqBYo+6k=
github.com/hashicorp/go-plugin v1.5.1/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4=
+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.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
@@ -1632,11 +1663,12 @@ github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09
github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
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/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
+github.com/hashicorp/golang-lru v0.6.0 h1:uL2shRDx7RTrOrTCUZEGP/wJUFiUI8QT6E7z5o8jga4=
+github.com/hashicorp/golang-lru v0.6.0/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
github.com/hashicorp/hc-install v0.6.0/go.mod h1:10I912u3nntx9Umo1VAeYPUUuehk0aRQJYpMwbX5wQA=
-github.com/hashicorp/hc-install v0.6.1 h1:IGxShH7AVhPaSuSJpKtVi/EFORNjO+OYVJJrAtGG2mY=
-github.com/hashicorp/hc-install v0.6.1/go.mod h1:0fW3jpg+wraYSnFDJ6Rlie3RvLf1bIqVIkzoon4KoVE=
+github.com/hashicorp/hc-install v0.6.2 h1:V1k+Vraqz4olgZ9UzKiAcbman9i9scg9GgSt/U3mw/M=
+github.com/hashicorp/hc-install v0.6.2/go.mod h1:2JBpd+NCFKiHiu/yYCGaPyPHhZLxXTpz8oreHa/a3Ps=
github.com/hashicorp/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=
@@ -1657,20 +1689,32 @@ github.com/hashicorp/nomad/api v0.0.0-20220629141207-c2428e1673ec/go.mod h1:jP79
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4=
github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8/go.mod h1:p+ivJws3dpqbp1iP84+npOyAmTTOLMgCzrXd3GSdn/A=
-github.com/hashicorp/terraform-exec v0.19.0 h1:FpqZ6n50Tk95mItTSS9BjeOVUb4eg81SpgVtZNNtFSM=
github.com/hashicorp/terraform-exec v0.19.0/go.mod h1:tbxUpe3JKruE9Cuf65mycSIT8KiNPZ0FkuTE3H4urQg=
+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.4.0/go.mod h1:eAbqb4w0pSlRmdvl8fOyHAi/+8jnkVYN28gJkSJrLhU=
-github.com/hashicorp/terraform-json v0.17.1 h1:eMfvh/uWggKmY7Pmb3T85u86E2EQg6EQHgyRwf3RkyA=
github.com/hashicorp/terraform-json v0.17.1/go.mod h1:Huy6zt6euxaY9knPAFKjUITn8QxUFIe9VuSzb4zn/0o=
-github.com/hashicorp/terraform-plugin-go v0.19.0 h1:BuZx/6Cp+lkmiG0cOBk6Zps0Cb2tmqQpDM3iAtnhDQU=
+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-framework-timeouts v0.4.1 h1:gm5b1kHgFFhaKFhm4h2TgvMUlNzFAtUqlcOWnWPm+9E=
+github.com/hashicorp/terraform-plugin-framework-timeouts v0.4.1/go.mod h1:MsjL1sQ9L7wGwzJ5RjcI6FzEMdyoBnw+XK8ZnOvQOLY=
+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.19.0/go.mod h1:EhRSkEPNoylLQntYsk5KrDHTZJh9HQoumZXbOGOXmec=
+github.com/hashicorp/terraform-plugin-go v0.21.0 h1:VSjdVQYNDKR0l2pi3vsFK1PdMQrw6vGOshJXMNFeVc0=
+github.com/hashicorp/terraform-plugin-go v0.21.0/go.mod h1:piJp8UmO1uupCvC9/H74l2C6IyKG0rW4FDedIpwW5RQ=
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.13.0 h1:79U401/3nd8CWwDGtTHc8F3miSCAS9XGtVarxSTDgwA=
+github.com/hashicorp/terraform-plugin-mux v0.13.0/go.mod h1:Ndv0FtwDG2ogzH59y64f2NYimFJ6I0smRgFUKfm6dyQ=
github.com/hashicorp/terraform-plugin-sdk v1.7.0 h1:B//oq0ZORG+EkVrIJy0uPGSonvmXqxSzXe8+GhknoW0=
github.com/hashicorp/terraform-plugin-sdk v1.7.0/go.mod h1:OjgQmey5VxnPej/buEhe+YqKm0KNvV3QqU4hkqHqPCY=
github.com/hashicorp/terraform-plugin-test v1.2.0/go.mod h1:QIJHYz8j+xJtdtLrFTlzQVC0ocr3rf/OjIpgZLK56Hs=
-github.com/hashicorp/terraform-registry-address v0.2.2 h1:lPQBg403El8PPicg/qONZJDC6YlgCVbWDtNmmZKtBno=
+github.com/hashicorp/terraform-plugin-testing v1.6.0 h1:Wsnfh+7XSVRfwcr2jZYHsnLOnZl7UeaOBvsx6dl/608=
+github.com/hashicorp/terraform-plugin-testing v1.6.0/go.mod h1:cJGG0/8j9XhHaJZRC+0sXFI4uzqQZ9Az4vh6C4GJpFE=
github.com/hashicorp/terraform-registry-address v0.2.2/go.mod h1:LtwNbCihUoUZ3RYriyS2wF/lGPB6gF9ICLRtuDk7hSo=
+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.0.0-20191011084731-65d371908596/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg=
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=
@@ -1689,14 +1733,17 @@ github.com/hetznercloud/hcloud-go v1.33.1/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQ
github.com/hetznercloud/hcloud-go v1.35.0/go.mod h1:mepQwR6va27S3UQthaEPGS86jtzSY9xWL1e9dyxXpgA=
github.com/hexops/autogold v1.3.0 h1:IEtGNPxBeBu8RMn8eKWh/Ll9dVNgSnJ7bp/qHgMQ14o=
github.com/hexops/autogold v1.3.0/go.mod h1:d4hwi2rid66Sag+BVuHgwakW/EmaFr8vdTSbWDbrDRI=
+github.com/hexops/autogold/v2 v2.2.1 h1:JPUXuZQGkcQMv7eeDXuNMovjfoRYaa0yVcm+F3voaGY=
+github.com/hexops/autogold/v2 v2.2.1/go.mod h1:IJwxtUfj1BGLm0YsR/k+dIxYi6xbeLjqGke2bzcOTMI=
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
-github.com/hexops/valast v1.4.0 h1:sFzyxPDP0riFQUzSBXTCCrAbbIndHPWMndxuEjXdZlc=
-github.com/hexops/valast v1.4.0/go.mod h1:uVjKZ0smVuYlgCSPz9NRi5A04sl7lp6GtFWsROKDgEs=
+github.com/hexops/valast v1.4.4 h1:rETyycw+/L2ZVJHHNxEBgh8KUn+87WugH9MxcEv9PGs=
+github.com/hexops/valast v1.4.4/go.mod h1:Jcy1pNH7LNraVaAZDLyv21hHg2WBv9Nf9FL6fGxU7o4=
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 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw=
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/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0=
github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
@@ -1709,8 +1756,9 @@ github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJ
github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
-github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM=
github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
+github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
+github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
@@ -1817,8 +1865,9 @@ github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdY
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
-github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c=
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
+github.com/klauspost/compress v1.17.1 h1:NE3C767s2ak2bweCZo3+rdP4U/HoyVXLv/X9f2gPS5g=
+github.com/klauspost/compress v1.17.1/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
@@ -1869,7 +1918,6 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho=
-github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A=
github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
@@ -1890,15 +1938,15 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA
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.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
-github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+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-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
-github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
-github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
+github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
@@ -1978,14 +2026,14 @@ github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJ
github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ=
-github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b h1:1XF24mVaiu7u+CFywTdcDo2ie1pzzhwjt6RHqzpMU34=
-github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho=
+github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
+github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
-github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs=
-github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ=
+github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
+github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
@@ -2077,8 +2125,8 @@ github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxS
github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
-github.com/packethost/packngo v0.30.0 h1:JVeTwbXXETsLTDQncUbYwIFpkOp/xevXrffM2HrFECI=
-github.com/packethost/packngo v0.30.0/go.mod h1:BT/XcdwLVmeMtGPbovnxCpnI1s9ylSE1cs/7pq007NE=
+github.com/packethost/packngo v0.31.0 h1:LLH90ardhULWbagBIc3I3nl2uU75io0a7AwY6hyi0S4=
+github.com/packethost/packngo v0.31.0/go.mod h1:Io6VJqzkiqmIEQbpOjeIw9v8q9PfcTEq8TEY/tMQsfw=
github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
@@ -2090,6 +2138,8 @@ github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrap
github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
+github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU=
+github.com/pgavlin/fx v0.1.6/go.mod h1:KWZJ6fqBBSh8GxHYqwYCf3rYE7Gp2p0N8tJp8xv9u9M=
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 h1:LoCV5cscNVWyK5ChN/uCoIFJz8jZD63VQiGJIRgr6uo=
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386/go.mod h1:MRxHTJrf9FhdfNQ8Hdeh9gmHevC9RJE/fu8M3JIGjoE=
github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY=
@@ -2105,6 +2155,8 @@ 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/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA=
github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ=
+github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
+github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -2116,8 +2168,9 @@ github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZ
github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk=
github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw=
-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/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
+github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/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=
@@ -2180,28 +2233,34 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1
github.com/prometheus/prometheus v0.35.0/go.mod h1:7HaLx5kEPKJ0GDgbODG0fZgXbQ8K/XjZNJXQmbmgQlY=
github.com/prometheus/prometheus v0.37.0/go.mod h1:egARUgz+K93zwqsVIAneFlLZefyGOON44WyAp4Xqbbk=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
-github.com/pulumi/esc v0.6.0 h1:m8jWgBektlj26RvrN3/sM0r1lYiwTMmqVPvLxCxahGE=
-github.com/pulumi/esc v0.6.0/go.mod h1:Y6W21yUukvxS2NnS5ae1beMSPhMvj0xNAYcDqDHVj/g=
-github.com/pulumi/pulumi-java/pkg v0.9.8 h1:c8mYsalnRXA2Ibgvv6scefOn6mW1Vb0UT0mcDqjsivQ=
-github.com/pulumi/pulumi-java/pkg v0.9.8/go.mod h1:c6rSw/+q4O0IImgJ9axxoC6QesbPYWBaG5gimbHouUQ=
-github.com/pulumi/pulumi-terraform-bridge/testing v0.0.1 h1:SCg1gjfY9N4yn8U8peIUYATifjoDABkyR7H9lmefsfc=
-github.com/pulumi/pulumi-terraform-bridge/testing v0.0.1/go.mod h1:7OeUPH8rpt5ipyj9EFcnXpuzQ8SHL0dyqdfa8nOacdk=
-github.com/pulumi/pulumi-terraform-bridge/v3 v3.65.0 h1:uZGU4J23ABm6BYDSbzVJjVHzuilVHyKxetUI7k7SZBg=
-github.com/pulumi/pulumi-terraform-bridge/v3 v3.65.0/go.mod h1:xs+jm130x0f6wl99ACQIagAU4m/TP0+cTO+qARnDYAE=
-github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.4 h1:rIzMmtcVpPX8ynaz6/nW5AHNY63DiNfCohqmxWvMpM4=
-github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.4/go.mod h1:Kt8RIZWa/N8rW3+0g6NrqCBmF3o+HuIhFaZpssEkG6w=
-github.com/pulumi/pulumi-yaml v1.4.2 h1:LKptNH2lG6f5IjJmR7bvu7ouBE4sgkTRNd4I8ZHmjHw=
-github.com/pulumi/pulumi-yaml v1.4.2/go.mod h1:1hwsXFnT7hm2ZeftY5fzjkngjs2eT/rv9MsPE48Leb4=
-github.com/pulumi/pulumi/pkg/v3 v3.94.2 h1:b+gQ+EJZMYfSIu/sb/+p36VmfZ2ZJWbEWMsptt2f6Kk=
-github.com/pulumi/pulumi/pkg/v3 v3.94.2/go.mod h1:aCeDMlncyDwX3RG6+vYUjWsy6bOEtoHUY0twCcn5qqE=
-github.com/pulumi/pulumi/sdk/v3 v3.94.2 h1:B8W3CCzA2fX/0730o/7KQXdmqrY5KdgGtiAA6rDMVlk=
-github.com/pulumi/pulumi/sdk/v3 v3.94.2/go.mod h1:zeqyIODqbb6GrEyhFV6aJET/xBSXSnF7Bw/EjbYZUnU=
+github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0=
+github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE=
+github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw=
+github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k=
+github.com/pulumi/providertest v0.0.10 h1:bx77G0JYPO2Alf/SHRP05XpAYMrboKJkMIVkbFclVhI=
+github.com/pulumi/providertest v0.0.10/go.mod h1:HsxjVsytcMIuNj19w1lT2W0QXY0oReXl1+h6eD2JXP8=
+github.com/pulumi/pulumi-java/pkg v0.9.9 h1:F3xJUtMFDVrTGCxb7Rh2Q8s6tj7gMfM5pcoUthz7vFY=
+github.com/pulumi/pulumi-java/pkg v0.9.9/go.mod h1:LVF1zeg3UkToHWxb67V+zEIxQc3EdMnlot5NWSt+FpA=
+github.com/pulumi/pulumi-terraform-bridge/pf v0.29.0 h1:4rdkNurOR9wd0efLxJGWXZZQUIvQsWS9tDlHqWqzimM=
+github.com/pulumi/pulumi-terraform-bridge/pf v0.29.0/go.mod h1:JpjEhF1ua4lIYhprwsWKTx3xcBTCH/7LdXrvshwTze8=
+github.com/pulumi/pulumi-terraform-bridge/v3 v3.76.0 h1:o8XQDN0KH1LE1SNYjk512HdQujxmnOVhMp4mlqIGqVo=
+github.com/pulumi/pulumi-terraform-bridge/v3 v3.76.0/go.mod h1:iSQ4IXK9AD/ne+pFcR+kqtrEuOD43/1f8jugbYWvt4c=
+github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.8 h1:mav2tSitA9BPJPLLahKgepHyYsMzwaTm4cvp0dcTMYw=
+github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.8/go.mod h1:qUYk2c9i/yqMGNj9/bQyXpS39BxNDSXYjVN1njnq0zY=
+github.com/pulumi/pulumi-yaml v1.5.0 h1:HfXu+WSFNpycref9CK935cViYJzXwSgHGWM/RepyrW0=
+github.com/pulumi/pulumi-yaml v1.5.0/go.mod h1:AvKSmEQv2EkPbpvAQroR1eP1LkJGC8z5NDM34rVWOtg=
+github.com/pulumi/pulumi/pkg/v3 v3.107.0 h1:HRyIl1c9ur0PVQW+GuFL1APBEuGa/fQQMp3F+WluxW8=
+github.com/pulumi/pulumi/pkg/v3 v3.107.0/go.mod h1:7edfZu4FlrXdIn4339tJ+SQX5VKGqbFntmpc8cai0Zg=
+github.com/pulumi/pulumi/sdk/v3 v3.107.0 h1:bef+ayh9+4KkAqXih4EjlHfQXRY24NWPwWBIQhBxTjg=
+github.com/pulumi/pulumi/sdk/v3 v3.107.0/go.mod h1:Ml3rpGfyZlI4zQCG7LN2XDSmH4XUNYdyBwJ3yEr/OpI=
github.com/pulumi/schema-tools v0.1.2 h1:Fd9xvUjgck4NA+7/jSk7InqCUT4Kj940+EcnbQKpfZo=
github.com/pulumi/schema-tools v0.1.2/go.mod h1:62lgj52Tzq11eqWTIaKd+EVyYAu5dEcDJxMhTjvMO/k=
github.com/pulumi/terraform-diff-reader v0.0.2 h1:kTE4nEXU3/SYXESvAIem+wyHMI3abqkI3OhJ0G04LLI=
github.com/pulumi/terraform-diff-reader v0.0.2/go.mod h1:sZ9FUzGO+yM41hsQHs/yIcj/Y993qMdBxBU5mpDmAfQ=
-github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20230912190043-e6d96b3b8f7e h1:blSirnXqvm8JXLxwxelsBroUNRhOHakDO7cgJUYTdpQ=
-github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20230912190043-e6d96b3b8f7e/go.mod h1:qH/34G25Ugdj5FcM95cSoXzUgIbgfhVLXCcEcYaMwq8=
+github.com/pulumi/terraform-plugin-framework v0.0.0-20230922145027-1535d08c1d47 h1:sH7ivH4DHxjXkFqdNArt/Qo9JIOUdYc5qpoX8psLz/I=
+github.com/pulumi/terraform-plugin-framework v0.0.0-20230922145027-1535d08c1d47/go.mod h1:XC0hPcQbBvlbxwmjxuV/8sn8SbZRg4XwGMs22f+kqV0=
+github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20240202163305-e2a20ae13ef9 h1:k3SdGlmaJ49yaRV79Ktb5KGdPvuNfeiv4+oHXN+wyhs=
+github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20240202163305-e2a20ae13ef9/go.mod h1:qH/34G25Ugdj5FcM95cSoXzUgIbgfhVLXCcEcYaMwq8=
github.com/rakyll/embedmd v0.0.0-20171029212350-c8060a0752a2/go.mod h1:7jOTMgqac46PZcF54q6l2hkLEG8op93fZu61KmxWDV4=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
@@ -2260,8 +2319,6 @@ github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9Nz
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
-github.com/shurcooL/go-goon v0.0.0-20210110234559-7585751d9a17 h1:lRAUE0dIvigSSFAmaM2dfg7OH8T+a8zJ5smEh09a/GI=
-github.com/shurcooL/go-goon v0.0.0-20210110234559-7585751d9a17/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
@@ -2275,8 +2332,9 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
-github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM=
github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo=
+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-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
@@ -2381,8 +2439,9 @@ github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6Ac
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.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU=
github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc=
+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/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI=
@@ -2422,8 +2481,8 @@ github.com/zclconf/go-cty v1.13.0/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4
github.com/zclconf/go-cty v1.13.1/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0=
github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0=
github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
-github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA=
-github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
+github.com/zclconf/go-cty v1.14.2 h1:kTG7lqmBou0Zkx35r6HJHUQTvaRPr5bIAf3AoHS0izI=
+github.com/zclconf/go-cty v1.14.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI=
github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8=
github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8=
@@ -2510,8 +2569,9 @@ go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
+go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
@@ -2527,8 +2587,9 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
-gocloud.dev v0.27.0 h1:j0WTUsnKTxCsWO7y8T+YCiBZUmLl9w/WIowqAY3yo0g=
gocloud.dev v0.27.0/go.mod h1:YlYKhYsY5/1JdHGWQDkAuqkezVKowu7qbe9aIeUF6p0=
+gocloud.dev v0.36.0 h1:q5zoXux4xkOZP473e1EZbG8Gq9f0vlg1VNH5Du/ybus=
+gocloud.dev v0.36.0/go.mod h1:bLxah6JQVKBaIxzsr5BQLYB4IYdWHkMZdzCXlo6F0gg=
gocloud.dev/secrets/hashivault v0.27.0 h1:AAeGJXr0tiHHJgg5tL8atOGktB4eK9EJAqkZbPKAcOo=
gocloud.dev/secrets/hashivault v0.27.0/go.mod h1:offqsI5oj0B0bVHZdfk/88uIb3NnN93ia8py0yvRlHY=
golang.org/x/arch v0.1.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
@@ -2568,20 +2629,20 @@ golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
+golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
-golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=
-golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
+golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
+golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -2597,8 +2658,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0
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/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
-golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
-golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
+golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM=
+golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
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=
@@ -2715,6 +2776,7 @@ golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
@@ -2743,8 +2805,8 @@ golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
golang.org/x/net v0.13.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
-golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
-golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
+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-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -2779,8 +2841,8 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec
golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I=
golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw=
golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
-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/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ=
+golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM=
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=
@@ -2909,6 +2971,7 @@ golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210603125802-9665404d3644/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-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/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-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -2960,8 +3023,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
-golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
+golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -2978,8 +3041,8 @@ golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
-golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8=
-golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww=
+golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE=
+golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
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=
@@ -3014,8 +3077,9 @@ golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxb
golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.4.0 h1:Z81tqI5ddIoXDPvVQ7/7CC9TnLM7ubaFG2qXYd5BbYY=
+golang.org/x/time v0.4.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -3108,8 +3172,8 @@ golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
-golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8=
-golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk=
+golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM=
+golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -3119,8 +3183,9 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-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=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0=
gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0=
@@ -3193,8 +3258,8 @@ google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/
google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI=
google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0=
google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg=
-google.golang.org/api v0.126.0 h1:q4GJq+cAdMAC7XP7njvQ4tvohGLiSlytuL4BQxbIZ+o=
-google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw=
+google.golang.org/api v0.151.0 h1:FhfXLO/NFdJIzQtCqjpysWwqKk8AzGWBUhMIx67cVDU=
+google.golang.org/api v0.151.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg=
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.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -3202,8 +3267,9 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
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 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
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/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk=
google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
@@ -3356,16 +3422,16 @@ google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOl
google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY=
google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk=
-google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e h1:xIXmWJ303kJCuogpj0bHq+dcjcZHU+XFyc1I0Yl9cRg=
-google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:0ggbjUrZYpy1q+ANUS30SEoGZ53cdfwtbuG7Ptgy108=
+google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg=
+google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY=
google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8=
google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig=
-google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130 h1:XVeBY8d/FaK4848myy41HBqnDwvxeV3zMZhwN1TvAMU=
-google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ=
+google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY=
+google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 h1:2FZP5XuJY9zQyGM5N0rtovnoXjiMUEIUMvw0m9wlpLc=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc=
google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
@@ -3418,8 +3484,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v
google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw=
google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g=
google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
-google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg=
-google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
+google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0=
+google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
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=
@@ -3439,8 +3505,9 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw
google.golang.org/protobuf v1.28.2-0.20230222093303-bc1253ad3743/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
+google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -3487,8 +3554,10 @@ gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/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=
+gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
+gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=
gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
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=
@@ -3594,8 +3663,8 @@ modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw
modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw=
modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8=
-mvdan.cc/gofumpt v0.1.0 h1:hsVv+Y9UsZ/mFZTxJZuHVI6shSQCtzZ11h1JEFPAZLw=
-mvdan.cc/gofumpt v0.1.0/go.mod h1:yXG1r1WqZVKWbVRtBWKWX9+CxGYfA51nSomhM0woR48=
+mvdan.cc/gofumpt v0.5.0 h1:0EQ+Z56k8tXjj/6TQD25BFNKQXpCvT0rnansIc7Ug5E=
+mvdan.cc/gofumpt v0.5.0/go.mod h1:HBeVDtMKRZpXyxFciAirzdKklDlGu8aAy1wEbH5Y9js=
nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=
pgregory.net/rapid v0.6.1 h1:4eyrDxyht86tT4Ztm+kvlyNBLIk071gR+ZQdhphc9dQ=
pgregory.net/rapid v0.6.1/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
@@ -3617,5 +3686,3 @@ sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
-sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 h1:hfyJ5ku9yFtLVOiSxa3IN+dx5eBQT9mPmKFypAmg8XM=
-sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
diff --git a/provider/resources.go b/provider/resources.go
index c14a7b4e..1762e075 100644
--- a/provider/resources.go
+++ b/provider/resources.go
@@ -15,13 +15,15 @@
package equinix
import (
+ "context"
"fmt"
"path/filepath"
"strings"
"unicode"
"github.com/equinix/pulumi-equinix/provider/pkg/version"
- "github.com/equinix/terraform-provider-equinix/equinix"
+ equinixShim "github.com/equinix/terraform-provider-equinix/shim"
+ pfbridge "github.com/pulumi/pulumi-terraform-bridge/pf/tfbridge"
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge"
shim "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfshim"
shimv2 "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfshim/sdk-v2"
@@ -84,7 +86,13 @@ func preConfigureCallback(vars resource.PropertyMap, c shim.ResourceConfig) erro
// Provider returns additional overlaid schema and metadata associated with the provider..
func Provider() tfbridge.ProviderInfo {
// Instantiate the Terraform provider
- p := shimv2.NewProvider(equinix.Provider())
+ ctx := context.Background()
+ upstreamProvider := equinixShim.NewUpstreamProvider(ctx)
+ v2p := shimv2.NewProvider(upstreamProvider.SDKV2Provider,
+ shimv2.WithDiffStrategy(shimv2.PlanState),
+ shimv2.WithPlanResourceChange(func(s string) bool { return true }),
+ )
+ p := pfbridge.MuxShimWithDisjointgPF(ctx, v2p, upstreamProvider.PluginFrameworkProvider)
// Create a Pulumi provider mapping
prov := tfbridge.ProviderInfo{
@@ -124,6 +132,10 @@ func Provider() tfbridge.ProviderInfo {
Config: map[string]*tfbridge.SchemaInfo{},
PreConfigureCallback: preConfigureCallback,
// IgnoreMappings is a list of TF resources and data sources to ignore in mappings errors
+
+ // See pulumi/pulumi-aws#2880
+ SkipValidateProviderConfigForPluginFramework: true,
+
IgnoreMappings: []string{
"equinix_ecx_l2_connection", // to be deprecated in terraform. Use equinix_fabric_connection
"equinix_ecx_l2_connection_accepter", // deprecated in terraform
@@ -476,6 +488,23 @@ func Provider() tfbridge.ProviderInfo {
},
},
},
+ "equinix_fabric_network": {
+ Tok: makeEquinixResource(fabricMod, "Network"),
+ Fields: map[string]*tfbridge.SchemaInfo{
+ "project": {
+ MaxItemsOne: tfbridge.True(),
+ },
+ "operation": {
+ MaxItemsOne: tfbridge.True(),
+ },
+ "change": {
+ MaxItemsOne: tfbridge.True(),
+ },
+ "change_log": {
+ MaxItemsOne: tfbridge.True(),
+ },
+ },
+ },
// Equinix Metal v1
"equinix_metal_bgp_session": {
Tok: makeEquinixResource(metalMod, "BgpSession"),
@@ -1458,6 +1487,23 @@ func Provider() tfbridge.ProviderInfo {
},
},
},
+ "equinix_fabric_network": {
+ Tok: makeEquinixDataSource(fabricMod, "Network"),
+ Fields: map[string]*tfbridge.SchemaInfo{
+ "project": {
+ MaxItemsOne: tfbridge.True(),
+ },
+ "operation": {
+ MaxItemsOne: tfbridge.True(),
+ },
+ "change": {
+ MaxItemsOne: tfbridge.True(),
+ },
+ "change_log": {
+ MaxItemsOne: tfbridge.True(),
+ },
+ },
+ },
// Equinix Metal v1
"equinix_metal_connection": {Tok: makeEquinixDataSource(metalMod, "Interconnection")},
"equinix_metal_device": {Tok: makeEquinixDataSource(metalMod, "Device")},
diff --git a/scripts/upstream.sh b/scripts/upstream.sh
index 2b9e5316..5e97f2fe 100755
--- a/scripts/upstream.sh
+++ b/scripts/upstream.sh
@@ -94,15 +94,21 @@ start_rebase() {
fi
git branch --set-upstream-to=local pulumi-patch
- for patch in ../patches/*.patch; do
- echo "Applying $patch"
- if ! git am --3way "$patch"; then
- echo
- echo "Failed to apply patch. Please run 'make upstream.rebase FROM=$TAG' where '$TAG' allows the patch set to apply cleanly"
- echo
- exit 1
- fi
- done
+ # Check if there are any .patch files
+ patch_folder="../patches"
+ if [ -z "$(ls -A $patch_folder/*.patch 2>/dev/null)" ]; then
+ echo "No patch files found in ../patches directory."
+ else
+ for patch in $patch_folder/*.patch; do
+ echo "Applying $patch"
+ if ! git am --3way "$patch"; then
+ echo
+ echo "Failed to apply patch. Please run 'make upstream.rebase FROM=$TAG' where '$TAG' allows the patch set to apply cleanly"
+ echo
+ exit 1
+ fi
+ done
+ fi
touch ../rebase-in-progress
@@ -180,7 +186,7 @@ end_rebase() {
exit 1
fi
- rm patches/*.patch
+ rm -f patches/*.patch
cd upstream
git format-patch local -o ../patches --zero-commit --no-signature --no-stat
cd ..
diff --git a/sdk/dotnet/Config/Config.cs b/sdk/dotnet/Config/Config.cs
index 13460ff6..bf5a5e3a 100644
--- a/sdk/dotnet/Config/Config.cs
+++ b/sdk/dotnet/Config/Config.cs
@@ -73,6 +73,9 @@ public static string? Endpoint
}
private static readonly __Value _maxRetries = new __Value(() => __config.GetInt32("maxRetries"));
+ ///
+ /// Maximum number of retries.
+ ///
public static int? MaxRetries
{
get => _maxRetries.Get();
@@ -80,6 +83,9 @@ public static int? MaxRetries
}
private static readonly __Value _maxRetryWaitSeconds = new __Value(() => __config.GetInt32("maxRetryWaitSeconds"));
+ ///
+ /// Maximum number of seconds to wait before retrying a request.
+ ///
public static int? MaxRetryWaitSeconds
{
get => _maxRetryWaitSeconds.Get();
diff --git a/sdk/dotnet/Fabric/CloudRouter.cs b/sdk/dotnet/Fabric/CloudRouter.cs
index ae21abe8..1c81f33f 100644
--- a/sdk/dotnet/Fabric/CloudRouter.cs
+++ b/sdk/dotnet/Fabric/CloudRouter.cs
@@ -10,6 +10,12 @@
namespace Pulumi.Equinix.Fabric
{
///
+ /// Fabric V4 API compatible resource allows creation and management of [Equinix Fabric Cloud Router](https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-intro.htm#HowItWorks).
+ ///
+ /// Additional Fabric Cloud Router documentation:
+ /// * Getting Started: <https://docs.equinix.com/en-us/Content/Interconnection/FCR/FCR-intro.htm#HowItWorks>
+ /// * API: <https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#fabric-cloud-routers>
+ ///
/// ## Example Usage
/// ```csharp
/// using System.Collections.Generic;
@@ -65,16 +71,16 @@ public partial class CloudRouter : global::Pulumi.CustomResource
/// Customer account information that is associated with this Fabric Cloud Router
///
[Output("account")]
- public Output Account { get; private set; } = null!;
+ public Output Account { get; private set; } = null!;
///
- /// Access point used and maximum number of IPv4 BGP routes
+ /// Number of IPv4 BGP routes in use (including non-distinct prefixes)
///
[Output("bgpIpv4RoutesCount")]
public Output BgpIpv4RoutesCount { get; private set; } = null!;
///
- /// Access point used and maximum number of IPv6 BGP routes
+ /// Number of IPv6 BGP routes in use (including non-distinct prefixes)
///
[Output("bgpIpv6RoutesCount")]
public Output BgpIpv6RoutesCount { get; private set; } = null!;
@@ -86,7 +92,7 @@ public partial class CloudRouter : global::Pulumi.CustomResource
public Output> ChangeLogs { get; private set; } = null!;
///
- /// Number of connections associated with this Access point
+ /// Number of connections associated with this Fabric Cloud Router instance
///
[Output("connectionsCount")]
public Output ConnectionsCount { get; private set; } = null!;
@@ -97,6 +103,18 @@ public partial class CloudRouter : global::Pulumi.CustomResource
[Output("description")]
public Output Description { get; private set; } = null!;
+ ///
+ /// Number of distinct IPv4 routes
+ ///
+ [Output("distinctIpv4PrefixesCount")]
+ public Output DistinctIpv4PrefixesCount { get; private set; } = null!;
+
+ ///
+ /// Number of distinct IPv6 routes
+ ///
+ [Output("distinctIpv6PrefixesCount")]
+ public Output DistinctIpv6PrefixesCount { get; private set; } = null!;
+
///
/// Equinix ASN
///
@@ -131,19 +149,19 @@ public partial class CloudRouter : global::Pulumi.CustomResource
/// Order information related to this Fabric Cloud Router
///
[Output("order")]
- public Output Order { get; private set; } = null!;
+ public Output Order { get; private set; } = null!;
///
- /// Fabric Cloud Router package
+ /// Fabric Cloud Router Package Type
///
[Output("package")]
public Output Package { get; private set; } = null!;
///
- /// Fabric Cloud Router project
+ /// Customer resource hierarchy project information.Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects
///
[Output("project")]
- public Output Project { get; private set; } = null!;
+ public Output Project { get; private set; } = null!;
///
/// Fabric Cloud Router overall state
@@ -157,6 +175,12 @@ public partial class CloudRouter : global::Pulumi.CustomResource
[Output("type")]
public Output Type { get; private set; } = null!;
+ ///
+ /// Equinix-assigned Fabric Cloud Router identifier
+ ///
+ [Output("uuid")]
+ public Output Uuid { get; private set; } = null!;
+
///
/// Create a CloudRouter resource with the given unique name, arguments, and options.
@@ -207,8 +231,8 @@ public sealed class CloudRouterArgs : global::Pulumi.ResourceArgs
///
/// Customer account information that is associated with this Fabric Cloud Router
///
- [Input("account")]
- public Input? Account { get; set; }
+ [Input("account", required: true)]
+ public Input Account { get; set; } = null!;
///
/// Customer-provided Fabric Cloud Router description
@@ -216,6 +240,12 @@ public sealed class CloudRouterArgs : global::Pulumi.ResourceArgs
[Input("description")]
public Input? Description { get; set; }
+ ///
+ /// Unique Resource URL
+ ///
+ [Input("href")]
+ public Input? Href { get; set; }
+
///
/// Fabric Cloud Router location
///
@@ -243,20 +273,20 @@ public InputList Notifications
///
/// Order information related to this Fabric Cloud Router
///
- [Input("order")]
- public Input? Order { get; set; }
+ [Input("order", required: true)]
+ public Input Order { get; set; } = null!;
///
- /// Fabric Cloud Router package
+ /// Fabric Cloud Router Package Type
///
[Input("package", required: true)]
public Input Package { get; set; } = null!;
///
- /// Fabric Cloud Router project
+ /// Customer resource hierarchy project information.Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects
///
- [Input("project")]
- public Input? Project { get; set; }
+ [Input("project", required: true)]
+ public Input Project { get; set; } = null!;
///
/// Notification Type - ALL,CONNECTION*APPROVAL,SALES*REP_NOTIFICATIONS, NOTIFICATIONS
@@ -264,6 +294,12 @@ public InputList Notifications
[Input("type", required: true)]
public Input Type { get; set; } = null!;
+ ///
+ /// Equinix-assigned Fabric Cloud Router identifier
+ ///
+ [Input("uuid")]
+ public Input? Uuid { get; set; }
+
public CloudRouterArgs()
{
}
@@ -279,13 +315,13 @@ public sealed class CloudRouterState : global::Pulumi.ResourceArgs
public Input? Account { get; set; }
///
- /// Access point used and maximum number of IPv4 BGP routes
+ /// Number of IPv4 BGP routes in use (including non-distinct prefixes)
///
[Input("bgpIpv4RoutesCount")]
public Input? BgpIpv4RoutesCount { get; set; }
///
- /// Access point used and maximum number of IPv6 BGP routes
+ /// Number of IPv6 BGP routes in use (including non-distinct prefixes)
///
[Input("bgpIpv6RoutesCount")]
public Input? BgpIpv6RoutesCount { get; set; }
@@ -303,7 +339,7 @@ public InputList ChangeLogs
}
///
- /// Number of connections associated with this Access point
+ /// Number of connections associated with this Fabric Cloud Router instance
///
[Input("connectionsCount")]
public Input? ConnectionsCount { get; set; }
@@ -314,6 +350,18 @@ public InputList ChangeLogs
[Input("description")]
public Input? Description { get; set; }
+ ///
+ /// Number of distinct IPv4 routes
+ ///
+ [Input("distinctIpv4PrefixesCount")]
+ public Input? DistinctIpv4PrefixesCount { get; set; }
+
+ ///
+ /// Number of distinct IPv6 routes
+ ///
+ [Input("distinctIpv6PrefixesCount")]
+ public Input? DistinctIpv6PrefixesCount { get; set; }
+
///
/// Equinix ASN
///
@@ -357,13 +405,13 @@ public InputList Notifications
public Input? Order { get; set; }
///
- /// Fabric Cloud Router package
+ /// Fabric Cloud Router Package Type
///
[Input("package")]
public Input? Package { get; set; }
///
- /// Fabric Cloud Router project
+ /// Customer resource hierarchy project information.Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects
///
[Input("project")]
public Input? Project { get; set; }
@@ -380,6 +428,12 @@ public InputList Notifications
[Input("type")]
public Input? Type { get; set; }
+ ///
+ /// Equinix-assigned Fabric Cloud Router identifier
+ ///
+ [Input("uuid")]
+ public Input? Uuid { get; set; }
+
public CloudRouterState()
{
}
diff --git a/sdk/dotnet/Fabric/Connection.cs b/sdk/dotnet/Fabric/Connection.cs
index 1464dc3c..8d1146e9 100644
--- a/sdk/dotnet/Fabric/Connection.cs
+++ b/sdk/dotnet/Fabric/Connection.cs
@@ -10,6 +10,8 @@
namespace Pulumi.Equinix.Fabric
{
///
+ /// Fabric V4 API compatible resource allows creation and management of Equinix Fabric connection
+ ///
/// ## Example Usage
/// ```csharp
/// using System.Collections.Generic;
@@ -144,6 +146,12 @@ public partial class Connection : global::Pulumi.CustomResource
[Output("changeLog")]
public Output ChangeLog { get; private set; } = null!;
+ ///
+ /// User-provided service description
+ ///
+ [Output("description")]
+ public Output Description { get; private set; } = null!;
+
///
/// Connection directionality from the requester point of view
///
@@ -181,16 +189,16 @@ public partial class Connection : global::Pulumi.CustomResource
public Output Operation { get; private set; } = null!;
///
- /// Order related to this connection information
+ /// Order details
///
[Output("order")]
- public Output Order { get; private set; } = null!;
+ public Output Order { get; private set; } = null!;
///
/// Project information
///
[Output("project")]
- public Output Project { get; private set; } = null!;
+ public Output Project { get; private set; } = null!;
///
/// Redundancy Information
@@ -199,7 +207,7 @@ public partial class Connection : global::Pulumi.CustomResource
public Output Redundancy { get; private set; } = null!;
///
- /// Routing protocol instance state
+ /// Connection overall state
///
[Output("state")]
public Output State { get; private set; } = null!;
@@ -210,6 +218,12 @@ public partial class Connection : global::Pulumi.CustomResource
[Output("type")]
public Output Type { get; private set; } = null!;
+ ///
+ /// Equinix-assigned virtual gateway identifier
+ ///
+ [Output("uuid")]
+ public Output Uuid { get; private set; } = null!;
+
///
/// Destination or Provider side connection configuration object of the multi-segment connection
///
@@ -287,6 +301,12 @@ public InputList> AdditionalInfo
[Input("bandwidth", required: true)]
public Input Bandwidth { get; set; } = null!;
+ ///
+ /// User-provided service description
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
///
/// Port name
///
@@ -306,10 +326,10 @@ public InputList Notifications
}
///
- /// Order related to this connection information
+ /// Order details
///
- [Input("order")]
- public Input? Order { get; set; }
+ [Input("order", required: true)]
+ public Input Order { get; set; } = null!;
///
/// Project information
@@ -379,6 +399,12 @@ public InputList> AdditionalInfo
[Input("changeLog")]
public Input? ChangeLog { get; set; }
+ ///
+ /// User-provided service description
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
///
/// Connection directionality from the requester point of view
///
@@ -422,7 +448,7 @@ public InputList Notifications
public Input? Operation { get; set; }
///
- /// Order related to this connection information
+ /// Order details
///
[Input("order")]
public Input? Order { get; set; }
@@ -440,7 +466,7 @@ public InputList Notifications
public Input? Redundancy { get; set; }
///
- /// Routing protocol instance state
+ /// Connection overall state
///
[Input("state")]
public Input? State { get; set; }
@@ -451,6 +477,12 @@ public InputList Notifications
[Input("type")]
public InputUnion? Type { get; set; }
+ ///
+ /// Equinix-assigned virtual gateway identifier
+ ///
+ [Input("uuid")]
+ public Input? Uuid { get; set; }
+
///
/// Destination or Provider side connection configuration object of the multi-segment connection
///
diff --git a/sdk/dotnet/Fabric/GetCloudRouter.cs b/sdk/dotnet/Fabric/GetCloudRouter.cs
index 778fcfbb..239b24b8 100644
--- a/sdk/dotnet/Fabric/GetCloudRouter.cs
+++ b/sdk/dotnet/Fabric/GetCloudRouter.cs
@@ -11,33 +11,75 @@ namespace Pulumi.Equinix.Fabric
{
public static class GetCloudRouter
{
- public static Task InvokeAsync(GetCloudRouterArgs? args = null, InvokeOptions? options = null)
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch Fabric Cloud Router for a given UUID
+ ///
+ /// API documentation can be found here - https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#fabric-cloud-routers
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var cloudRouterDataName = Equinix.Fabric.GetCloudRouter.Invoke(new()
+ /// {
+ /// Uuid = "<uuid_of_cloud_router>",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ public static Task InvokeAsync(GetCloudRouterArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync("equinix:fabric/getCloudRouter:getCloudRouter", args ?? new GetCloudRouterArgs(), options.WithDefaults());
- public static Output Invoke(GetCloudRouterInvokeArgs? args = null, InvokeOptions? options = null)
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch Fabric Cloud Router for a given UUID
+ ///
+ /// API documentation can be found here - https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#fabric-cloud-routers
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var cloudRouterDataName = Equinix.Fabric.GetCloudRouter.Invoke(new()
+ /// {
+ /// Uuid = "<uuid_of_cloud_router>",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ public static Output Invoke(GetCloudRouterInvokeArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke("equinix:fabric/getCloudRouter:getCloudRouter", args ?? new GetCloudRouterInvokeArgs(), options.WithDefaults());
}
public sealed class GetCloudRouterArgs : global::Pulumi.InvokeArgs
{
- [Input("projects")]
- private List? _projects;
-
- ///
- /// Project information
- ///
- public List Projects
- {
- get => _projects ?? (_projects = new List());
- set => _projects = value;
- }
-
///
/// Equinix-assigned Fabric Cloud Router identifier
///
- [Input("uuid")]
- public string? Uuid { get; set; }
+ [Input("uuid", required: true)]
+ public string Uuid { get; set; } = null!;
public GetCloudRouterArgs()
{
@@ -47,23 +89,11 @@ public GetCloudRouterArgs()
public sealed class GetCloudRouterInvokeArgs : global::Pulumi.InvokeArgs
{
- [Input("projects")]
- private InputList? _projects;
-
- ///
- /// Project information
- ///
- public InputList Projects
- {
- get => _projects ?? (_projects = new InputList());
- set => _projects = value;
- }
-
///
/// Equinix-assigned Fabric Cloud Router identifier
///
- [Input("uuid")]
- public Input? Uuid { get; set; }
+ [Input("uuid", required: true)]
+ public Input Uuid { get; set; } = null!;
public GetCloudRouterInvokeArgs()
{
@@ -79,18 +109,35 @@ public sealed class GetCloudRouterResult
/// Customer account information that is associated with this Fabric Cloud Router
///
public readonly ImmutableArray Accounts;
+ ///
+ /// Number of IPv4 BGP routes in use (including non-distinct prefixes)
+ ///
public readonly int BgpIpv4RoutesCount;
+ ///
+ /// Number of IPv6 BGP routes in use (including non-distinct prefixes)
+ ///
public readonly int BgpIpv6RoutesCount;
///
/// Captures Fabric Cloud Router lifecycle change information
///
public readonly ImmutableArray ChangeLogs;
+ ///
+ /// Number of connections associated with this Fabric Cloud Router instance
+ ///
public readonly int ConnectionsCount;
///
/// Customer-provided Fabric Cloud Router description
///
public readonly string Description;
///
+ /// Number of distinct IPv4 routes
+ ///
+ public readonly int DistinctIpv4PrefixesCount;
+ ///
+ /// Number of distinct IPv6 routes
+ ///
+ public readonly int DistinctIpv6PrefixesCount;
+ ///
/// Equinix ASN
///
public readonly int EquinixAsn;
@@ -119,11 +166,11 @@ public sealed class GetCloudRouterResult
///
public readonly ImmutableArray Orders;
///
- /// Fabric Cloud Router package information
+ /// Fabric Cloud Router Package Type
///
public readonly ImmutableArray Packages;
///
- /// Project information
+ /// Customer resource hierarchy project information.Applicable to customers onboarded to Equinix Identity and Access Management. For more information see Identity and Access Management: Projects
///
public readonly ImmutableArray Projects;
///
@@ -131,13 +178,13 @@ public sealed class GetCloudRouterResult
///
public readonly string State;
///
- /// Defines the Fabric Cloud Router type like XF_GATEWAY
+ /// Defines the FCR type like; XF_ROUTER
///
public readonly string Type;
///
/// Equinix-assigned Fabric Cloud Router identifier
///
- public readonly string? Uuid;
+ public readonly string Uuid;
[OutputConstructor]
private GetCloudRouterResult(
@@ -153,6 +200,10 @@ private GetCloudRouterResult(
string description,
+ int distinctIpv4PrefixesCount,
+
+ int distinctIpv6PrefixesCount,
+
int equinixAsn,
string href,
@@ -175,7 +226,7 @@ private GetCloudRouterResult(
string type,
- string? uuid)
+ string uuid)
{
Accounts = accounts;
BgpIpv4RoutesCount = bgpIpv4RoutesCount;
@@ -183,6 +234,8 @@ private GetCloudRouterResult(
ChangeLogs = changeLogs;
ConnectionsCount = connectionsCount;
Description = description;
+ DistinctIpv4PrefixesCount = distinctIpv4PrefixesCount;
+ DistinctIpv6PrefixesCount = distinctIpv6PrefixesCount;
EquinixAsn = equinixAsn;
Href = href;
Id = id;
diff --git a/sdk/dotnet/Fabric/GetConnection.cs b/sdk/dotnet/Fabric/GetConnection.cs
index 9bf8e2a4..b9502798 100644
--- a/sdk/dotnet/Fabric/GetConnection.cs
+++ b/sdk/dotnet/Fabric/GetConnection.cs
@@ -11,24 +11,68 @@ namespace Pulumi.Equinix.Fabric
{
public static class GetConnection
{
- public static Task InvokeAsync(GetConnectionArgs? args = null, InvokeOptions? options = null)
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch connection for a given UUID
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var connectionDataName = Equinix.Fabric.GetConnection.Invoke(new()
+ /// {
+ /// Uuid = "<uuid_of_connection>",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ public static Task InvokeAsync(GetConnectionArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync("equinix:fabric/getConnection:getConnection", args ?? new GetConnectionArgs(), options.WithDefaults());
- public static Output Invoke(GetConnectionInvokeArgs? args = null, InvokeOptions? options = null)
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch connection for a given UUID
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var connectionDataName = Equinix.Fabric.GetConnection.Invoke(new()
+ /// {
+ /// Uuid = "<uuid_of_connection>",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ public static Output Invoke(GetConnectionInvokeArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke("equinix:fabric/getConnection:getConnection", args ?? new GetConnectionInvokeArgs(), options.WithDefaults());
}
public sealed class GetConnectionArgs : global::Pulumi.InvokeArgs
{
- ///
- /// Project information
- ///
- [Input("project")]
- public Inputs.GetConnectionProjectArgs? Project { get; set; }
-
- [Input("uuid")]
- public string? Uuid { get; set; }
+ [Input("uuid", required: true)]
+ public string Uuid { get; set; } = null!;
public GetConnectionArgs()
{
@@ -38,14 +82,8 @@ public GetConnectionArgs()
public sealed class GetConnectionInvokeArgs : global::Pulumi.InvokeArgs
{
- ///
- /// Project information
- ///
- [Input("project")]
- public Input? Project { get; set; }
-
- [Input("uuid")]
- public Input? Uuid { get; set; }
+ [Input("uuid", required: true)]
+ public Input Uuid { get; set; } = null!;
public GetConnectionInvokeArgs()
{
@@ -68,7 +106,7 @@ public sealed class GetConnectionResult
///
/// Connection additional information
///
- public readonly ImmutableArray AdditionalInfo;
+ public readonly ImmutableArray> AdditionalInfo;
///
/// Connection bandwidth in Mbps
///
@@ -106,19 +144,19 @@ public sealed class GetConnectionResult
///
public readonly ImmutableArray Notifications;
///
- /// Connection specific operational data
+ /// Connection type-specific operational data
///
public readonly Outputs.GetConnectionOperationResult Operation;
///
- /// Order related to this connection information
+ /// Order details
///
public readonly Outputs.GetConnectionOrderResult Order;
///
/// Project information
///
- public readonly Outputs.GetConnectionProjectResult? Project;
+ public readonly Outputs.GetConnectionProjectResult Project;
///
- /// Redundancy Information
+ /// Connection Redundancy Configuration
///
public readonly Outputs.GetConnectionRedundancyResult Redundancy;
///
@@ -126,13 +164,13 @@ public sealed class GetConnectionResult
///
public readonly string State;
///
- /// Defines the connection type like VG*VC, EVPL*VC, EPL*VC, EC*VC, IP*VC, ACCESS*EPL_VC
+ /// Defines the connection type like EVPL*VC, EPL*VC, IPWAN*VC, IP*VC, ACCESS*EPL*VC, EVPLAN*VC, EPLAN*VC, EIA*VC, EC*VC
///
public readonly string Type;
///
/// Equinix-assigned connection identifier
///
- public readonly string? Uuid;
+ public readonly string Uuid;
///
/// Destination or Provider side connection configuration object of the multi-segment connection
///
@@ -144,7 +182,7 @@ private GetConnectionResult(
Outputs.GetConnectionAccountResult account,
- ImmutableArray additionalInfo,
+ ImmutableArray> additionalInfo,
int bandwidth,
@@ -168,7 +206,7 @@ private GetConnectionResult(
Outputs.GetConnectionOrderResult order,
- Outputs.GetConnectionProjectResult? project,
+ Outputs.GetConnectionProjectResult project,
Outputs.GetConnectionRedundancyResult redundancy,
@@ -176,7 +214,7 @@ private GetConnectionResult(
string type,
- string? uuid,
+ string uuid,
Outputs.GetConnectionZSideResult zSide)
{
diff --git a/sdk/dotnet/Fabric/GetNetwork.cs b/sdk/dotnet/Fabric/GetNetwork.cs
new file mode 100644
index 00000000..8d65984d
--- /dev/null
+++ b/sdk/dotnet/Fabric/GetNetwork.cs
@@ -0,0 +1,201 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Equinix.Fabric
+{
+ public static class GetNetwork
+ {
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch Fabric Network for a given UUID
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var networkDataName = Equinix.Fabric.GetNetwork.Invoke(new()
+ /// {
+ /// Uuid = "<uuid_of_network>",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ public static Task InvokeAsync(GetNetworkArgs args, InvokeOptions? options = null)
+ => global::Pulumi.Deployment.Instance.InvokeAsync("equinix:fabric/getNetwork:getNetwork", args ?? new GetNetworkArgs(), options.WithDefaults());
+
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch Fabric Network for a given UUID
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var networkDataName = Equinix.Fabric.GetNetwork.Invoke(new()
+ /// {
+ /// Uuid = "<uuid_of_network>",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ public static Output Invoke(GetNetworkInvokeArgs args, InvokeOptions? options = null)
+ => global::Pulumi.Deployment.Instance.Invoke("equinix:fabric/getNetwork:getNetwork", args ?? new GetNetworkInvokeArgs(), options.WithDefaults());
+ }
+
+
+ public sealed class GetNetworkArgs : global::Pulumi.InvokeArgs
+ {
+ [Input("uuid", required: true)]
+ public string Uuid { get; set; } = null!;
+
+ public GetNetworkArgs()
+ {
+ }
+ public static new GetNetworkArgs Empty => new GetNetworkArgs();
+ }
+
+ public sealed class GetNetworkInvokeArgs : global::Pulumi.InvokeArgs
+ {
+ [Input("uuid", required: true)]
+ public Input Uuid { get; set; } = null!;
+
+ public GetNetworkInvokeArgs()
+ {
+ }
+ public static new GetNetworkInvokeArgs Empty => new GetNetworkInvokeArgs();
+ }
+
+
+ [OutputType]
+ public sealed class GetNetworkResult
+ {
+ ///
+ /// Information on asset change operation
+ ///
+ public readonly Outputs.GetNetworkChangeResult Change;
+ ///
+ /// A permanent record of asset creation, modification, or deletion
+ ///
+ public readonly Outputs.GetNetworkChangeLogResult ChangeLog;
+ ///
+ /// Number of connections associated with this network
+ ///
+ public readonly int ConnectionsCount;
+ ///
+ /// Fabric Network URI information
+ ///
+ public readonly string Href;
+ ///
+ /// The provider-assigned unique ID for this managed resource.
+ ///
+ public readonly string Id;
+ ///
+ /// Fabric Network location
+ ///
+ public readonly ImmutableArray Locations;
+ ///
+ /// Fabric Network name. An alpha-numeric 24 characters string which can include only hyphens and underscores
+ ///
+ public readonly string Name;
+ ///
+ /// Preferences for notifications on Fabric Network configuration or status changes
+ ///
+ public readonly ImmutableArray Notifications;
+ ///
+ /// Network operation information that is associated with this Fabric Network
+ ///
+ public readonly Outputs.GetNetworkOperationResult Operation;
+ ///
+ /// Fabric Network project
+ ///
+ public readonly Outputs.GetNetworkProjectResult Project;
+ ///
+ /// Fabric Network scope
+ ///
+ public readonly string Scope;
+ ///
+ /// Fabric Network overall state
+ ///
+ public readonly string State;
+ ///
+ /// Supported Network types - EVPLAN, EPLAN, IPWAN
+ ///
+ public readonly string Type;
+ ///
+ /// Equinix-assigned network identifier
+ ///
+ public readonly string Uuid;
+
+ [OutputConstructor]
+ private GetNetworkResult(
+ Outputs.GetNetworkChangeResult change,
+
+ Outputs.GetNetworkChangeLogResult changeLog,
+
+ int connectionsCount,
+
+ string href,
+
+ string id,
+
+ ImmutableArray locations,
+
+ string name,
+
+ ImmutableArray notifications,
+
+ Outputs.GetNetworkOperationResult operation,
+
+ Outputs.GetNetworkProjectResult project,
+
+ string scope,
+
+ string state,
+
+ string type,
+
+ string uuid)
+ {
+ Change = change;
+ ChangeLog = changeLog;
+ ConnectionsCount = connectionsCount;
+ Href = href;
+ Id = id;
+ Locations = locations;
+ Name = name;
+ Notifications = notifications;
+ Operation = operation;
+ Project = project;
+ Scope = scope;
+ State = state;
+ Type = type;
+ Uuid = uuid;
+ }
+ }
+}
diff --git a/sdk/dotnet/Fabric/GetPort.cs b/sdk/dotnet/Fabric/GetPort.cs
index 07d2aa8b..ab1a4e8e 100644
--- a/sdk/dotnet/Fabric/GetPort.cs
+++ b/sdk/dotnet/Fabric/GetPort.cs
@@ -11,9 +11,59 @@ namespace Pulumi.Equinix.Fabric
{
public static class GetPort
{
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch port by uuid
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var portDataName = Equinix.Fabric.GetPort.Invoke(new()
+ /// {
+ /// Uuid = "<uuid_of_port>",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
public static Task InvokeAsync(GetPortArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync("equinix:fabric/getPort:getPort", args ?? new GetPortArgs(), options.WithDefaults());
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch port by uuid
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var portDataName = Equinix.Fabric.GetPort.Invoke(new()
+ /// {
+ /// Uuid = "<uuid_of_port>",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
public static Output Invoke(GetPortInvokeArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke("equinix:fabric/getPort:getPort", args ?? new GetPortInvokeArgs(), options.WithDefaults());
}
@@ -87,6 +137,9 @@ public sealed class GetPortResult
/// The provider-assigned unique ID for this managed resource.
///
public readonly string Id;
+ ///
+ /// Port Lag
+ ///
public readonly bool LagEnabled;
///
/// Port location information
diff --git a/sdk/dotnet/Fabric/GetPorts.cs b/sdk/dotnet/Fabric/GetPorts.cs
index 46b7f9ff..1c870064 100644
--- a/sdk/dotnet/Fabric/GetPorts.cs
+++ b/sdk/dotnet/Fabric/GetPorts.cs
@@ -11,10 +11,66 @@ namespace Pulumi.Equinix.Fabric
{
public static class GetPorts
{
- public static Task InvokeAsync(GetPortsArgs? args = null, InvokeOptions? options = null)
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch port by name
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var portsDataName = Equinix.Fabric.GetPorts.Invoke(new()
+ /// {
+ /// Filter = new Equinix.Fabric.Inputs.GetPortsFilterInputArgs
+ /// {
+ /// Name = "<name_of_port||port_prefix>",
+ /// },
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ public static Task InvokeAsync(GetPortsArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync("equinix:fabric/getPorts:getPorts", args ?? new GetPortsArgs(), options.WithDefaults());
- public static Output Invoke(GetPortsInvokeArgs? args = null, InvokeOptions? options = null)
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch port by name
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var portsDataName = Equinix.Fabric.GetPorts.Invoke(new()
+ /// {
+ /// Filter = new Equinix.Fabric.Inputs.GetPortsFilterInputArgs
+ /// {
+ /// Name = "<name_of_port||port_prefix>",
+ /// },
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ public static Output Invoke(GetPortsInvokeArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke("equinix:fabric/getPorts:getPorts", args ?? new GetPortsInvokeArgs(), options.WithDefaults());
}
@@ -24,8 +80,8 @@ public sealed class GetPortsArgs : global::Pulumi.InvokeArgs
///
/// name
///
- [Input("filter")]
- public Inputs.GetPortsFilterArgs? Filter { get; set; }
+ [Input("filter", required: true)]
+ public Inputs.GetPortsFilterArgs Filter { get; set; } = null!;
public GetPortsArgs()
{
@@ -38,8 +94,8 @@ public sealed class GetPortsInvokeArgs : global::Pulumi.InvokeArgs
///
/// name
///
- [Input("filter")]
- public Input? Filter { get; set; }
+ [Input("filter", required: true)]
+ public Input Filter { get; set; } = null!;
public GetPortsInvokeArgs()
{
@@ -52,13 +108,13 @@ public GetPortsInvokeArgs()
public sealed class GetPortsResult
{
///
- /// List of Ports
+ /// List of Ports
///
public readonly ImmutableArray Data;
///
/// name
///
- public readonly Outputs.GetPortsFilterResult? Filter;
+ public readonly Outputs.GetPortsFilterResult Filter;
///
/// The provider-assigned unique ID for this managed resource.
///
@@ -68,7 +124,7 @@ public sealed class GetPortsResult
private GetPortsResult(
ImmutableArray data,
- Outputs.GetPortsFilterResult? filter,
+ Outputs.GetPortsFilterResult filter,
string id)
{
diff --git a/sdk/dotnet/Fabric/GetRoutingProtocol.cs b/sdk/dotnet/Fabric/GetRoutingProtocol.cs
index 2786eb32..c093a9db 100644
--- a/sdk/dotnet/Fabric/GetRoutingProtocol.cs
+++ b/sdk/dotnet/Fabric/GetRoutingProtocol.cs
@@ -11,9 +11,65 @@ namespace Pulumi.Equinix.Fabric
{
public static class GetRoutingProtocol
{
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch routing protocol for a given UUID
+ ///
+ /// API documentation can be found here - https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#routing-protocols
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var routingProtocolDataName = Equinix.Fabric.GetRoutingProtocol.Invoke(new()
+ /// {
+ /// ConnectionUuid = "<uuid_of_connection_routing_protocol_is_applied_to>",
+ /// Uuid = "<uuid_of_routing_protocol>",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
public static Task InvokeAsync(GetRoutingProtocolArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync("equinix:fabric/getRoutingProtocol:getRoutingProtocol", args ?? new GetRoutingProtocolArgs(), options.WithDefaults());
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch routing protocol for a given UUID
+ ///
+ /// API documentation can be found here - https://developer.equinix.com/dev-docs/fabric/api-reference/fabric-v4-apis#routing-protocols
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var routingProtocolDataName = Equinix.Fabric.GetRoutingProtocol.Invoke(new()
+ /// {
+ /// ConnectionUuid = "<uuid_of_connection_routing_protocol_is_applied_to>",
+ /// Uuid = "<uuid_of_routing_protocol>",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
public static Output Invoke(GetRoutingProtocolInvokeArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke("equinix:fabric/getRoutingProtocol:getRoutingProtocol", args ?? new GetRoutingProtocolInvokeArgs(), options.WithDefaults());
}
@@ -21,71 +77,14 @@ public static Output Invoke(GetRoutingProtocolInvokeAr
public sealed class GetRoutingProtocolArgs : global::Pulumi.InvokeArgs
{
- ///
- /// Bidirectional Forwarding Detection
- ///
- [Input("bfd")]
- public Inputs.GetRoutingProtocolBfdArgs? Bfd { get; set; }
-
- ///
- /// BGP authorization key
- ///
- [Input("bgpAuthKey")]
- public string? BgpAuthKey { get; set; }
-
- ///
- /// Routing Protocol BGP IPv4
- ///
- [Input("bgpIpv4")]
- public Inputs.GetRoutingProtocolBgpIpv4Args? BgpIpv4 { get; set; }
-
- ///
- /// Routing Protocol BGP IPv6
- ///
- [Input("bgpIpv6")]
- public Inputs.GetRoutingProtocolBgpIpv6Args? BgpIpv6 { get; set; }
-
///
/// Connection URI associated with Routing Protocol
///
[Input("connectionUuid", required: true)]
public string ConnectionUuid { get; set; } = null!;
- ///
- /// Customer-provided ASN
- ///
- [Input("customerAsn")]
- public int? CustomerAsn { get; set; }
-
- ///
- /// Customer-provided Fabric Routing Protocol description
- ///
- [Input("description")]
- public string? Description { get; set; }
-
- ///
- /// Routing Protocol Direct IPv4
- ///
- [Input("directIpv4")]
- public Inputs.GetRoutingProtocolDirectIpv4Args? DirectIpv4 { get; set; }
-
- ///
- /// Routing Protocol Direct IPv6
- ///
- [Input("directIpv6")]
- public Inputs.GetRoutingProtocolDirectIpv6Args? DirectIpv6 { get; set; }
-
- ///
- /// Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores
- ///
- [Input("name")]
- public string? Name { get; set; }
-
- [Input("type")]
- public string? Type { get; set; }
-
- [Input("uuid")]
- public string? Uuid { get; set; }
+ [Input("uuid", required: true)]
+ public string Uuid { get; set; } = null!;
public GetRoutingProtocolArgs()
{
@@ -95,71 +94,14 @@ public GetRoutingProtocolArgs()
public sealed class GetRoutingProtocolInvokeArgs : global::Pulumi.InvokeArgs
{
- ///
- /// Bidirectional Forwarding Detection
- ///
- [Input("bfd")]
- public Input? Bfd { get; set; }
-
- ///
- /// BGP authorization key
- ///
- [Input("bgpAuthKey")]
- public Input? BgpAuthKey { get; set; }
-
- ///
- /// Routing Protocol BGP IPv4
- ///
- [Input("bgpIpv4")]
- public Input? BgpIpv4 { get; set; }
-
- ///
- /// Routing Protocol BGP IPv6
- ///
- [Input("bgpIpv6")]
- public Input? BgpIpv6 { get; set; }
-
///
/// Connection URI associated with Routing Protocol
///
[Input("connectionUuid", required: true)]
public Input ConnectionUuid { get; set; } = null!;
- ///
- /// Customer-provided ASN
- ///
- [Input("customerAsn")]
- public Input? CustomerAsn { get; set; }
-
- ///
- /// Customer-provided Fabric Routing Protocol description
- ///
- [Input("description")]
- public Input? Description { get; set; }
-
- ///
- /// Routing Protocol Direct IPv4
- ///
- [Input("directIpv4")]
- public Input? DirectIpv4 { get; set; }
-
- ///
- /// Routing Protocol Direct IPv6
- ///
- [Input("directIpv6")]
- public Input? DirectIpv6 { get; set; }
-
- ///
- /// Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores
- ///
- [Input("name")]
- public Input? Name { get; set; }
-
- [Input("type")]
- public Input? Type { get; set; }
-
- [Input("uuid")]
- public Input? Uuid { get; set; }
+ [Input("uuid", required: true)]
+ public Input Uuid { get; set; } = null!;
public GetRoutingProtocolInvokeArgs()
{
@@ -174,19 +116,19 @@ public sealed class GetRoutingProtocolResult
///
/// Bidirectional Forwarding Detection
///
- public readonly Outputs.GetRoutingProtocolBfdResult? Bfd;
+ public readonly Outputs.GetRoutingProtocolBfdResult Bfd;
///
/// BGP authorization key
///
- public readonly string? BgpAuthKey;
+ public readonly string BgpAuthKey;
///
/// Routing Protocol BGP IPv4
///
- public readonly Outputs.GetRoutingProtocolBgpIpv4Result? BgpIpv4;
+ public readonly Outputs.GetRoutingProtocolBgpIpv4Result BgpIpv4;
///
/// Routing Protocol BGP IPv6
///
- public readonly Outputs.GetRoutingProtocolBgpIpv6Result? BgpIpv6;
+ public readonly Outputs.GetRoutingProtocolBgpIpv6Result BgpIpv6;
///
/// Captures Routing Protocol lifecycle change information
///
@@ -202,19 +144,19 @@ public sealed class GetRoutingProtocolResult
///
/// Customer-provided ASN
///
- public readonly int? CustomerAsn;
+ public readonly int CustomerAsn;
///
/// Customer-provided Fabric Routing Protocol description
///
- public readonly string? Description;
+ public readonly string Description;
///
/// Routing Protocol Direct IPv4
///
- public readonly Outputs.GetRoutingProtocolDirectIpv4Result? DirectIpv4;
+ public readonly Outputs.GetRoutingProtocolDirectIpv4Result DirectIpv4;
///
/// Routing Protocol Direct IPv6
///
- public readonly Outputs.GetRoutingProtocolDirectIpv6Result? DirectIpv6;
+ public readonly Outputs.GetRoutingProtocolDirectIpv6Result DirectIpv6;
///
/// Equinix ASN
///
@@ -230,7 +172,7 @@ public sealed class GetRoutingProtocolResult
///
/// Routing Protocol name. An alpha-numeric 24 characters string which can include only hyphens and underscores
///
- public readonly string? Name;
+ public readonly string Name;
///
/// Routing Protocol type-specific operational data
///
@@ -242,7 +184,7 @@ public sealed class GetRoutingProtocolResult
///
/// Defines the routing protocol type like BGP or DIRECT
///
- public readonly string? Type;
+ public readonly string Type;
///
/// Equinix-assigned routing protocol identifier
///
@@ -250,13 +192,13 @@ public sealed class GetRoutingProtocolResult
[OutputConstructor]
private GetRoutingProtocolResult(
- Outputs.GetRoutingProtocolBfdResult? bfd,
+ Outputs.GetRoutingProtocolBfdResult bfd,
- string? bgpAuthKey,
+ string bgpAuthKey,
- Outputs.GetRoutingProtocolBgpIpv4Result? bgpIpv4,
+ Outputs.GetRoutingProtocolBgpIpv4Result bgpIpv4,
- Outputs.GetRoutingProtocolBgpIpv6Result? bgpIpv6,
+ Outputs.GetRoutingProtocolBgpIpv6Result bgpIpv6,
ImmutableArray changeLogs,
@@ -264,13 +206,13 @@ private GetRoutingProtocolResult(
string connectionUuid,
- int? customerAsn,
+ int customerAsn,
- string? description,
+ string description,
- Outputs.GetRoutingProtocolDirectIpv4Result? directIpv4,
+ Outputs.GetRoutingProtocolDirectIpv4Result directIpv4,
- Outputs.GetRoutingProtocolDirectIpv6Result? directIpv6,
+ Outputs.GetRoutingProtocolDirectIpv6Result directIpv6,
int equinixAsn,
@@ -278,13 +220,13 @@ private GetRoutingProtocolResult(
string id,
- string? name,
+ string name,
ImmutableArray operations,
string state,
- string? type,
+ string type,
string uuid)
{
diff --git a/sdk/dotnet/Fabric/GetServiceProfile.cs b/sdk/dotnet/Fabric/GetServiceProfile.cs
index 393d7d5b..46ee0c0d 100644
--- a/sdk/dotnet/Fabric/GetServiceProfile.cs
+++ b/sdk/dotnet/Fabric/GetServiceProfile.cs
@@ -14,7 +14,27 @@ public static class GetServiceProfile
///
/// Fabric V4 API compatible data resource that allow user to fetch Service Profile by UUID filter criteria
///
- /// > **Note** Equinix Fabric v4 resources and datasources are currently in Beta. The interfaces related to `equinix_fabric_` resources and datasources may change ahead of general availability
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var serviceProfileDataName = Equinix.Fabric.GetServiceProfile.Invoke(new()
+ /// {
+ /// Uuid = "<uuid_of_service_profile>",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
///
public static Task InvokeAsync(GetServiceProfileArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync("equinix:fabric/getServiceProfile:getServiceProfile", args ?? new GetServiceProfileArgs(), options.WithDefaults());
@@ -22,7 +42,27 @@ public static Task InvokeAsync(GetServiceProfileArgs ar
///
/// Fabric V4 API compatible data resource that allow user to fetch Service Profile by UUID filter criteria
///
- /// > **Note** Equinix Fabric v4 resources and datasources are currently in Beta. The interfaces related to `equinix_fabric_` resources and datasources may change ahead of general availability
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var serviceProfileDataName = Equinix.Fabric.GetServiceProfile.Invoke(new()
+ /// {
+ /// Uuid = "<uuid_of_service_profile>",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
///
public static Output Invoke(GetServiceProfileInvokeArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke("equinix:fabric/getServiceProfile:getServiceProfile", args ?? new GetServiceProfileInvokeArgs(), options.WithDefaults());
@@ -31,12 +71,6 @@ public static Output Invoke(GetServiceProfileInvokeArgs
public sealed class GetServiceProfileArgs : global::Pulumi.InvokeArgs
{
- ///
- /// Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED
- ///
- [Input("state")]
- public string? State { get; set; }
-
[Input("uuid", required: true)]
public string Uuid { get; set; } = null!;
@@ -48,12 +82,6 @@ public GetServiceProfileArgs()
public sealed class GetServiceProfileInvokeArgs : global::Pulumi.InvokeArgs
{
- ///
- /// Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED
- ///
- [Input("state")]
- public Input? State { get; set; }
-
[Input("uuid", required: true)]
public Input Uuid { get; set; } = null!;
@@ -72,7 +100,7 @@ public sealed class GetServiceProfileResult
///
public readonly ImmutableArray AccessPointTypeConfigs;
///
- /// Account
+ /// Service Profile Owner Account Information
///
public readonly Outputs.GetServiceProfileAccountResult Account;
///
@@ -130,7 +158,7 @@ public sealed class GetServiceProfileResult
///
/// Service profile state - ACTIVE, PENDING_APPROVAL, DELETED, REJECTED
///
- public readonly string? State;
+ public readonly string State;
///
/// Tags attached to the connection
///
@@ -144,6 +172,10 @@ public sealed class GetServiceProfileResult
///
public readonly string Uuid;
///
+ /// Virtual Devices
+ ///
+ public readonly ImmutableArray VirtualDevices;
+ ///
/// Service profile visibility - PUBLIC, PRIVATE
///
public readonly string Visibility;
@@ -180,7 +212,7 @@ private GetServiceProfileResult(
bool selfProfile,
- string? state,
+ string state,
ImmutableArray tags,
@@ -188,6 +220,8 @@ private GetServiceProfileResult(
string uuid,
+ ImmutableArray virtualDevices,
+
string visibility)
{
AccessPointTypeConfigs = accessPointTypeConfigs;
@@ -209,6 +243,7 @@ private GetServiceProfileResult(
Tags = tags;
Type = type;
Uuid = uuid;
+ VirtualDevices = virtualDevices;
Visibility = visibility;
}
}
diff --git a/sdk/dotnet/Fabric/GetServiceProfiles.cs b/sdk/dotnet/Fabric/GetServiceProfiles.cs
index da756656..8d9d8185 100644
--- a/sdk/dotnet/Fabric/GetServiceProfiles.cs
+++ b/sdk/dotnet/Fabric/GetServiceProfiles.cs
@@ -11,9 +11,75 @@ namespace Pulumi.Equinix.Fabric
{
public static class GetServiceProfiles
{
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch Service Profile by name filter criteria
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var serviceProfilesDataName = Equinix.Fabric.GetServiceProfiles.Invoke(new()
+ /// {
+ /// Filter = new Equinix.Fabric.Inputs.GetServiceProfilesFilterInputArgs
+ /// {
+ /// Operator = "=",
+ /// Property = "/name",
+ /// Values = new[]
+ /// {
+ /// "<list_of_profiles_to_return>",
+ /// },
+ /// },
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
public static Task InvokeAsync(GetServiceProfilesArgs? args = null, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync("equinix:fabric/getServiceProfiles:getServiceProfiles", args ?? new GetServiceProfilesArgs(), options.WithDefaults());
+ ///
+ /// Fabric V4 API compatible data resource that allow user to fetch Service Profile by name filter criteria
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Equinix = Pulumi.Equinix;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var serviceProfilesDataName = Equinix.Fabric.GetServiceProfiles.Invoke(new()
+ /// {
+ /// Filter = new Equinix.Fabric.Inputs.GetServiceProfilesFilterInputArgs
+ /// {
+ /// Operator = "=",
+ /// Property = "/name",
+ /// Values = new[]
+ /// {
+ /// "<list_of_profiles_to_return>",
+ /// },
+ /// },
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
public static Output Invoke(GetServiceProfilesInvokeArgs? args = null, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke("equinix:fabric/getServiceProfiles:getServiceProfiles", args ?? new GetServiceProfilesInvokeArgs(), options.WithDefaults());
}
@@ -40,7 +106,7 @@ public List Sort
}
///
- /// Service Profile Search Buyer/Seller Representation. Possible values are aSide and zSide.
+ /// flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide
///
[Input("viewPoint")]
public string? ViewPoint { get; set; }
@@ -72,7 +138,7 @@ public InputList Sort
}
///
- /// Service Profile Search Buyer/Seller Representation. Possible values are aSide and zSide.
+ /// flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide
///
[Input("viewPoint")]
public Input? ViewPoint { get; set; }
@@ -88,7 +154,7 @@ public GetServiceProfilesInvokeArgs()
public sealed class GetServiceProfilesResult
{
///
- /// List of Service Profiles
+ /// List of Service Profiles
///
public readonly ImmutableArray Data;
///
@@ -104,7 +170,7 @@ public sealed class GetServiceProfilesResult
///
public readonly ImmutableArray Sort;
///
- /// Service Profile Search Buyer/Seller Representation. Possible values are aSide and zSide.
+ /// flips view between buyer and seller representation. Available values : aSide, zSide. Default value : aSide
///
public readonly string? ViewPoint;
diff --git a/sdk/dotnet/Fabric/Inputs/CloudRouterChangeLogArgs.cs b/sdk/dotnet/Fabric/Inputs/CloudRouterChangeLogArgs.cs
index 2894da4c..79fd7d61 100644
--- a/sdk/dotnet/Fabric/Inputs/CloudRouterChangeLogArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/CloudRouterChangeLogArgs.cs
@@ -12,39 +12,75 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class CloudRouterChangeLogArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Created by User Key
+ ///
[Input("createdBy")]
public Input? CreatedBy { get; set; }
+ ///
+ /// Created by User Email Address
+ ///
[Input("createdByEmail")]
public Input? CreatedByEmail { get; set; }
+ ///
+ /// Created by User Full Name
+ ///
[Input("createdByFullName")]
public Input? CreatedByFullName { get; set; }
+ ///
+ /// Created by Date and Time
+ ///
[Input("createdDateTime")]
public Input? CreatedDateTime { get; set; }
+ ///
+ /// Deleted by User Key
+ ///
[Input("deletedBy")]
public Input? DeletedBy { get; set; }
+ ///
+ /// Deleted by User Email Address
+ ///
[Input("deletedByEmail")]
public Input? DeletedByEmail { get; set; }
+ ///
+ /// Deleted by User Full Name
+ ///
[Input("deletedByFullName")]
public Input? DeletedByFullName { get; set; }
+ ///
+ /// Deleted by Date and Time
+ ///
[Input("deletedDateTime")]
public Input? DeletedDateTime { get; set; }
+ ///
+ /// Updated by User Key
+ ///
[Input("updatedBy")]
public Input? UpdatedBy { get; set; }
+ ///
+ /// Updated by User Email Address
+ ///
[Input("updatedByEmail")]
public Input? UpdatedByEmail { get; set; }
+ ///
+ /// Updated by User Full Name
+ ///
[Input("updatedByFullName")]
public Input? UpdatedByFullName { get; set; }
+ ///
+ /// Updated by Date and Time
+ ///
[Input("updatedDateTime")]
public Input? UpdatedDateTime { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/CloudRouterChangeLogGetArgs.cs b/sdk/dotnet/Fabric/Inputs/CloudRouterChangeLogGetArgs.cs
index f6dd452a..9da5a5dc 100644
--- a/sdk/dotnet/Fabric/Inputs/CloudRouterChangeLogGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/CloudRouterChangeLogGetArgs.cs
@@ -12,39 +12,75 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class CloudRouterChangeLogGetArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Created by User Key
+ ///
[Input("createdBy")]
public Input? CreatedBy { get; set; }
+ ///
+ /// Created by User Email Address
+ ///
[Input("createdByEmail")]
public Input? CreatedByEmail { get; set; }
+ ///
+ /// Created by User Full Name
+ ///
[Input("createdByFullName")]
public Input? CreatedByFullName { get; set; }
+ ///
+ /// Created by Date and Time
+ ///
[Input("createdDateTime")]
public Input? CreatedDateTime { get; set; }
+ ///
+ /// Deleted by User Key
+ ///
[Input("deletedBy")]
public Input? DeletedBy { get; set; }
+ ///
+ /// Deleted by User Email Address
+ ///
[Input("deletedByEmail")]
public Input? DeletedByEmail { get; set; }
+ ///
+ /// Deleted by User Full Name
+ ///
[Input("deletedByFullName")]
public Input? DeletedByFullName { get; set; }
+ ///
+ /// Deleted by Date and Time
+ ///
[Input("deletedDateTime")]
public Input? DeletedDateTime { get; set; }
+ ///
+ /// Updated by User Key
+ ///
[Input("updatedBy")]
public Input? UpdatedBy { get; set; }
+ ///
+ /// Updated by User Email Address
+ ///
[Input("updatedByEmail")]
public Input? UpdatedByEmail { get; set; }
+ ///
+ /// Updated by User Full Name
+ ///
[Input("updatedByFullName")]
public Input? UpdatedByFullName { get; set; }
+ ///
+ /// Updated by Date and Time
+ ///
[Input("updatedDateTime")]
public Input? UpdatedDateTime { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointAccountArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointAccountArgs.cs
index e7e1ad4a..0f1788f6 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointAccountArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointAccountArgs.cs
@@ -12,27 +12,54 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class ConnectionASideAccessPointAccountArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Legal name of the accountholder.
+ ///
[Input("accountName")]
public Input? AccountName { get; set; }
+ ///
+ /// Equinix-assigned account number.
+ ///
[Input("accountNumber")]
public Input? AccountNumber { get; set; }
+ ///
+ /// Equinix-assigned ID of the subscriber's parent organization.
+ ///
[Input("globalCustId")]
public Input? GlobalCustId { get; set; }
+ ///
+ /// Equinix-assigned ID of the subscriber's parent organization.
+ ///
[Input("globalOrgId")]
public Input? GlobalOrgId { get; set; }
+ ///
+ /// Equinix-assigned name of the subscriber's parent organization.
+ ///
[Input("globalOrganizationName")]
public Input? GlobalOrganizationName { get; set; }
+ ///
+ /// Equinix-assigned ID of the subscriber's organization.
+ ///
[Input("orgId")]
public Input? OrgId { get; set; }
+ ///
+ /// Equinix-assigned name of the subscriber's organization.
+ ///
[Input("organizationName")]
public Input? OrganizationName { get; set; }
+ ///
+ /// Enterprise datastore id
+ ///
+ [Input("ucmId")]
+ public Input? UcmId { get; set; }
+
public ConnectionASideAccessPointAccountArgs()
{
}
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointAccountGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointAccountGetArgs.cs
index 81be3e9c..c19e57c7 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointAccountGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointAccountGetArgs.cs
@@ -12,27 +12,54 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class ConnectionASideAccessPointAccountGetArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Legal name of the accountholder.
+ ///
[Input("accountName")]
public Input? AccountName { get; set; }
+ ///
+ /// Equinix-assigned account number.
+ ///
[Input("accountNumber")]
public Input? AccountNumber { get; set; }
+ ///
+ /// Equinix-assigned ID of the subscriber's parent organization.
+ ///
[Input("globalCustId")]
public Input? GlobalCustId { get; set; }
+ ///
+ /// Equinix-assigned ID of the subscriber's parent organization.
+ ///
[Input("globalOrgId")]
public Input? GlobalOrgId { get; set; }
+ ///
+ /// Equinix-assigned name of the subscriber's parent organization.
+ ///
[Input("globalOrganizationName")]
public Input? GlobalOrganizationName { get; set; }
+ ///
+ /// Equinix-assigned ID of the subscriber's organization.
+ ///
[Input("orgId")]
public Input? OrgId { get; set; }
+ ///
+ /// Equinix-assigned name of the subscriber's organization.
+ ///
[Input("organizationName")]
public Input? OrganizationName { get; set; }
+ ///
+ /// Enterprise datastore id
+ ///
+ [Input("ucmId")]
+ public Input? UcmId { get; set; }
+
public ConnectionASideAccessPointAccountGetArgs()
{
}
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointArgs.cs
index bbc12219..7883a242 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointArgs.cs
@@ -24,6 +24,9 @@ public sealed class ConnectionASideAccessPointArgs : global::Pulumi.ResourceArgs
[Input("authenticationKey")]
public Input? AuthenticationKey { get; set; }
+ ///
+ /// **Deprecated** `gateway` Use `router` attribute instead
+ ///
[Input("gateway")]
public Input? Gateway { get; set; }
@@ -46,7 +49,7 @@ public sealed class ConnectionASideAccessPointArgs : global::Pulumi.ResourceArgs
public Input? Location { get; set; }
///
- /// Simplified Network
+ /// network access point information
///
[Input("network")]
public Input? Network { get; set; }
@@ -76,23 +79,11 @@ public sealed class ConnectionASideAccessPointArgs : global::Pulumi.ResourceArgs
public Input? ProviderConnectionId { get; set; }
///
- /// Cloud Router access point information that replaces `gateway` (refers to below for nested schema)
+ /// Cloud Router access point information that replaces `gateway`
///
[Input("router")]
public Input? Router { get; set; }
- [Input("routingProtocols")]
- private InputList? _routingProtocols;
-
- ///
- /// Access point routing protocols configuration
- ///
- public InputList RoutingProtocols
- {
- get => _routingProtocols ?? (_routingProtocols = new InputList());
- set => _routingProtocols = value;
- }
-
///
/// Access point seller region
///
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGatewayArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGatewayArgs.cs
index 5e95c195..73b041bd 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGatewayArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGatewayArgs.cs
@@ -19,7 +19,7 @@ public sealed class ConnectionASideAccessPointGatewayArgs : global::Pulumi.Resou
public Input? Href { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGatewayGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGatewayGetArgs.cs
index 637a3b86..16214aa1 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGatewayGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGatewayGetArgs.cs
@@ -19,7 +19,7 @@ public sealed class ConnectionASideAccessPointGatewayGetArgs : global::Pulumi.Re
public Input? Href { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGetArgs.cs
index a7a0cae6..b71e676d 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGetArgs.cs
@@ -24,6 +24,9 @@ public sealed class ConnectionASideAccessPointGetArgs : global::Pulumi.ResourceA
[Input("authenticationKey")]
public Input? AuthenticationKey { get; set; }
+ ///
+ /// **Deprecated** `gateway` Use `router` attribute instead
+ ///
[Input("gateway")]
public Input? Gateway { get; set; }
@@ -46,7 +49,7 @@ public sealed class ConnectionASideAccessPointGetArgs : global::Pulumi.ResourceA
public Input? Location { get; set; }
///
- /// Simplified Network
+ /// network access point information
///
[Input("network")]
public Input? Network { get; set; }
@@ -76,23 +79,11 @@ public sealed class ConnectionASideAccessPointGetArgs : global::Pulumi.ResourceA
public Input? ProviderConnectionId { get; set; }
///
- /// Cloud Router access point information that replaces `gateway` (refers to below for nested schema)
+ /// Cloud Router access point information that replaces `gateway`
///
[Input("router")]
public Input? Router { get; set; }
- [Input("routingProtocols")]
- private InputList? _routingProtocols;
-
- ///
- /// Access point routing protocols configuration
- ///
- public InputList RoutingProtocols
- {
- get => _routingProtocols ?? (_routingProtocols = new InputList());
- set => _routingProtocols = value;
- }
-
///
/// Access point seller region
///
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceArgs.cs
index 16b1c462..3de90b6b 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceArgs.cs
@@ -25,7 +25,7 @@ public sealed class ConnectionASideAccessPointInterfaceArgs : global::Pulumi.Res
public Input? Type { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceGetArgs.cs
index 069be6f0..371f4e5e 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceGetArgs.cs
@@ -25,7 +25,7 @@ public sealed class ConnectionASideAccessPointInterfaceGetArgs : global::Pulumi.
public Input? Type { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointNetworkArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointNetworkArgs.cs
index 540459d1..4872727c 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointNetworkArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointNetworkArgs.cs
@@ -19,7 +19,7 @@ public sealed class ConnectionASideAccessPointNetworkArgs : global::Pulumi.Resou
public Input? Href { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointNetworkGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointNetworkGetArgs.cs
index 323357d8..b4bb5b51 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointNetworkGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointNetworkGetArgs.cs
@@ -19,7 +19,7 @@ public sealed class ConnectionASideAccessPointNetworkGetArgs : global::Pulumi.Re
public Input? Href { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortArgs.cs
index d6b8c8f5..6abde93b 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortArgs.cs
@@ -37,7 +37,7 @@ public InputList Redundanci
}
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortGetArgs.cs
index aba5e4e5..e61e03e8 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortGetArgs.cs
@@ -37,7 +37,7 @@ public InputList Redunda
}
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortRedundancyArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortRedundancyArgs.cs
index 86a38e77..f336b71b 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortRedundancyArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortRedundancyArgs.cs
@@ -13,7 +13,19 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class ConnectionASideAccessPointPortRedundancyArgs : global::Pulumi.ResourceArgs
{
///
- /// Priority type- PRIMARY, SECONDARY
+ /// Access point redundancy
+ ///
+ [Input("enabled")]
+ public Input? Enabled { get; set; }
+
+ ///
+ /// Redundancy group identifier (Use the redundancy.0.group UUID of primary connection; e.g. one(equinix*fabric*connection.primary*port*connection.redundancy).group or equinix*fabric*connection.primary*port*connection.redundancy.0.group)
+ ///
+ [Input("group")]
+ public Input? Group { get; set; }
+
+ ///
+ /// Connection priority in redundancy group - PRIMARY, SECONDARY
///
[Input("priority")]
public Input? Priority { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortRedundancyGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortRedundancyGetArgs.cs
index 725522fa..156787cc 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortRedundancyGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointPortRedundancyGetArgs.cs
@@ -13,7 +13,19 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class ConnectionASideAccessPointPortRedundancyGetArgs : global::Pulumi.ResourceArgs
{
///
- /// Priority type- PRIMARY, SECONDARY
+ /// Access point redundancy
+ ///
+ [Input("enabled")]
+ public Input? Enabled { get; set; }
+
+ ///
+ /// Redundancy group identifier (Use the redundancy.0.group UUID of primary connection; e.g. one(equinix*fabric*connection.primary*port*connection.redundancy).group or equinix*fabric*connection.primary*port*connection.redundancy.0.group)
+ ///
+ [Input("group")]
+ public Input? Group { get; set; }
+
+ ///
+ /// Connection priority in redundancy group - PRIMARY, SECONDARY
///
[Input("priority")]
public Input? Priority { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileAccessPointTypeConfigArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileAccessPointTypeConfigArgs.cs
index 364bab4c..2cc06ece 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileAccessPointTypeConfigArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileAccessPointTypeConfigArgs.cs
@@ -19,7 +19,7 @@ public sealed class ConnectionASideAccessPointProfileAccessPointTypeConfigArgs :
public Input? Type { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileAccessPointTypeConfigGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileAccessPointTypeConfigGetArgs.cs
index 5e93908e..08e21147 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileAccessPointTypeConfigGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileAccessPointTypeConfigGetArgs.cs
@@ -19,7 +19,7 @@ public sealed class ConnectionASideAccessPointProfileAccessPointTypeConfigGetArg
public Input? Type { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileArgs.cs
index aa533474..34dedbbe 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileArgs.cs
@@ -49,7 +49,7 @@ public InputList Type { get; set; } = null!;
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid", required: true)]
public Input Uuid { get; set; } = null!;
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileGetArgs.cs
index cff788ea..fb275c06 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointProfileGetArgs.cs
@@ -49,7 +49,7 @@ public InputList Type { get; set; } = null!;
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid", required: true)]
public Input Uuid { get; set; } = null!;
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointRouterArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointRouterArgs.cs
index 8a0a0606..3b98c5f1 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointRouterArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointRouterArgs.cs
@@ -19,7 +19,7 @@ public sealed class ConnectionASideAccessPointRouterArgs : global::Pulumi.Resour
public Input? Href { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointRouterGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointRouterGetArgs.cs
index 198d46da..65185f91 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointRouterGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointRouterGetArgs.cs
@@ -19,7 +19,7 @@ public sealed class ConnectionASideAccessPointRouterGetArgs : global::Pulumi.Res
public Input? Href { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceArgs.cs
index cec8fe0e..480be811 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceArgs.cs
@@ -31,7 +31,7 @@ public sealed class ConnectionASideAccessPointVirtualDeviceArgs : global::Pulumi
public Input? Type { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceGetArgs.cs
index 61c0c2b2..c5a8a688 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceGetArgs.cs
@@ -31,7 +31,7 @@ public sealed class ConnectionASideAccessPointVirtualDeviceGetArgs : global::Pul
public Input? Type { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideServiceTokenArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideServiceTokenArgs.cs
index fcbfbca0..b8ce6abf 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideServiceTokenArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideServiceTokenArgs.cs
@@ -31,7 +31,7 @@ public sealed class ConnectionASideServiceTokenArgs : global::Pulumi.ResourceArg
public InputUnion? Type { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideServiceTokenGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideServiceTokenGetArgs.cs
index b4daa50b..f521758f 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionASideServiceTokenGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideServiceTokenGetArgs.cs
@@ -31,7 +31,7 @@ public sealed class ConnectionASideServiceTokenGetArgs : global::Pulumi.Resource
public InputUnion? Type { get; set; }
///
- /// Equinix-assigned interface identifier
+ /// Equinix-assigned virtual gateway identifier
///
[Input("uuid")]
public Input? Uuid { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionAccountArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionAccountArgs.cs
index c1bdd393..3b5a1278 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionAccountArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionAccountArgs.cs
@@ -12,27 +12,54 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class ConnectionAccountArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Legal name of the accountholder.
+ ///
[Input("accountName")]
public Input? AccountName { get; set; }
+ ///
+ /// Equinix-assigned account number.
+ ///
[Input("accountNumber")]
public Input? AccountNumber { get; set; }
+ ///
+ /// Equinix-assigned ID of the subscriber's parent organization.
+ ///
[Input("globalCustId")]
public Input? GlobalCustId { get; set; }
+ ///
+ /// Equinix-assigned ID of the subscriber's parent organization.
+ ///
[Input("globalOrgId")]
public Input? GlobalOrgId { get; set; }
+ ///
+ /// Equinix-assigned name of the subscriber's parent organization.
+ ///
[Input("globalOrganizationName")]
public Input? GlobalOrganizationName { get; set; }
+ ///
+ /// Equinix-assigned ID of the subscriber's organization.
+ ///
[Input("orgId")]
public Input? OrgId { get; set; }
+ ///
+ /// Equinix-assigned name of the subscriber's organization.
+ ///
[Input("organizationName")]
public Input? OrganizationName { get; set; }
+ ///
+ /// Enterprise datastore id
+ ///
+ [Input("ucmId")]
+ public Input? UcmId { get; set; }
+
public ConnectionAccountArgs()
{
}
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionAccountGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionAccountGetArgs.cs
index 3b4fd551..f62a1790 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionAccountGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionAccountGetArgs.cs
@@ -12,27 +12,54 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class ConnectionAccountGetArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Legal name of the accountholder.
+ ///
[Input("accountName")]
public Input? AccountName { get; set; }
+ ///
+ /// Equinix-assigned account number.
+ ///
[Input("accountNumber")]
public Input? AccountNumber { get; set; }
+ ///
+ /// Equinix-assigned ID of the subscriber's parent organization.
+ ///
[Input("globalCustId")]
public Input? GlobalCustId { get; set; }
+ ///
+ /// Equinix-assigned ID of the subscriber's parent organization.
+ ///
[Input("globalOrgId")]
public Input? GlobalOrgId { get; set; }
+ ///
+ /// Equinix-assigned name of the subscriber's parent organization.
+ ///
[Input("globalOrganizationName")]
public Input? GlobalOrganizationName { get; set; }
+ ///
+ /// Equinix-assigned ID of the subscriber's organization.
+ ///
[Input("orgId")]
public Input? OrgId { get; set; }
+ ///
+ /// Equinix-assigned name of the subscriber's organization.
+ ///
[Input("organizationName")]
public Input? OrganizationName { get; set; }
+ ///
+ /// Enterprise datastore id
+ ///
+ [Input("ucmId")]
+ public Input? UcmId { get; set; }
+
public ConnectionAccountGetArgs()
{
}
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionChangeLogArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionChangeLogArgs.cs
index 300cad6f..137b3b84 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionChangeLogArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionChangeLogArgs.cs
@@ -12,39 +12,75 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class ConnectionChangeLogArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Created by User Key
+ ///
[Input("createdBy")]
public Input? CreatedBy { get; set; }
+ ///
+ /// Created by User Email Address
+ ///
[Input("createdByEmail")]
public Input? CreatedByEmail { get; set; }
+ ///
+ /// Created by User Full Name
+ ///
[Input("createdByFullName")]
public Input? CreatedByFullName { get; set; }
+ ///
+ /// Created by Date and Time
+ ///
[Input("createdDateTime")]
public Input? CreatedDateTime { get; set; }
+ ///
+ /// Deleted by User Key
+ ///
[Input("deletedBy")]
public Input? DeletedBy { get; set; }
+ ///
+ /// Deleted by User Email Address
+ ///
[Input("deletedByEmail")]
public Input? DeletedByEmail { get; set; }
+ ///
+ /// Deleted by User Full Name
+ ///
[Input("deletedByFullName")]
public Input? DeletedByFullName { get; set; }
+ ///
+ /// Deleted by Date and Time
+ ///
[Input("deletedDateTime")]
public Input? DeletedDateTime { get; set; }
+ ///
+ /// Updated by User Key
+ ///
[Input("updatedBy")]
public Input? UpdatedBy { get; set; }
+ ///
+ /// Updated by User Email Address
+ ///
[Input("updatedByEmail")]
public Input? UpdatedByEmail { get; set; }
+ ///
+ /// Updated by User Full Name
+ ///
[Input("updatedByFullName")]
public Input? UpdatedByFullName { get; set; }
+ ///
+ /// Updated by Date and Time
+ ///
[Input("updatedDateTime")]
public Input? UpdatedDateTime { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionChangeLogGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionChangeLogGetArgs.cs
index 013e7e31..aaebec7e 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionChangeLogGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionChangeLogGetArgs.cs
@@ -12,39 +12,75 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class ConnectionChangeLogGetArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Created by User Key
+ ///
[Input("createdBy")]
public Input? CreatedBy { get; set; }
+ ///
+ /// Created by User Email Address
+ ///
[Input("createdByEmail")]
public Input? CreatedByEmail { get; set; }
+ ///
+ /// Created by User Full Name
+ ///
[Input("createdByFullName")]
public Input? CreatedByFullName { get; set; }
+ ///
+ /// Created by Date and Time
+ ///
[Input("createdDateTime")]
public Input? CreatedDateTime { get; set; }
+ ///
+ /// Deleted by User Key
+ ///
[Input("deletedBy")]
public Input? DeletedBy { get; set; }
+ ///
+ /// Deleted by User Email Address
+ ///
[Input("deletedByEmail")]
public Input? DeletedByEmail { get; set; }
+ ///
+ /// Deleted by User Full Name
+ ///
[Input("deletedByFullName")]
public Input? DeletedByFullName { get; set; }
+ ///
+ /// Deleted by Date and Time
+ ///
[Input("deletedDateTime")]
public Input? DeletedDateTime { get; set; }
+ ///
+ /// Updated by User Key
+ ///
[Input("updatedBy")]
public Input? UpdatedBy { get; set; }
+ ///
+ /// Updated by User Email Address
+ ///
[Input("updatedByEmail")]
public Input? UpdatedByEmail { get; set; }
+ ///
+ /// Updated by User Full Name
+ ///
[Input("updatedByFullName")]
public Input? UpdatedByFullName { get; set; }
+ ///
+ /// Updated by Date and Time
+ ///
[Input("updatedDateTime")]
public Input? UpdatedDateTime { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionOperationArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionOperationArgs.cs
index 66fdc078..ab89ee5f 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionOperationArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionOperationArgs.cs
@@ -12,17 +12,27 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class ConnectionOperationArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Connection status
+ ///
[Input("equinixStatus")]
public Input? EquinixStatus { get; set; }
[Input("errors")]
private InputList? _errors;
+
+ ///
+ /// Errors occurred
+ ///
public InputList Errors
{
get => _errors ?? (_errors = new InputList());
set => _errors = value;
}
+ ///
+ /// Connection provider readiness status
+ ///
[Input("providerStatus")]
public Input? ProviderStatus { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorAdditionalInfoArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorAdditionalInfoArgs.cs
index bea64535..c28c3659 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorAdditionalInfoArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorAdditionalInfoArgs.cs
@@ -12,9 +12,15 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class ConnectionOperationErrorAdditionalInfoArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Property at which the error potentially occurred
+ ///
[Input("property")]
public Input? Property { get; set; }
+ ///
+ /// Reason for the error
+ ///
[Input("reason")]
public Input? Reason { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorAdditionalInfoGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorAdditionalInfoGetArgs.cs
index 7a89f05a..f171423f 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorAdditionalInfoGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorAdditionalInfoGetArgs.cs
@@ -12,9 +12,15 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class ConnectionOperationErrorAdditionalInfoGetArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Property at which the error potentially occurred
+ ///
[Input("property")]
public Input? Property { get; set; }
+ ///
+ /// Reason for the error
+ ///
[Input("reason")]
public Input? Reason { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorArgs.cs
index 6f35ad36..3a628865 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorArgs.cs
@@ -24,18 +24,33 @@ public InputList AdditionalIn
set => _additionalInfo = value;
}
+ ///
+ /// CorrelationId
+ ///
[Input("correlationId")]
public Input? CorrelationId { get; set; }
+ ///
+ /// Details
+ ///
[Input("details")]
public Input? Details { get; set; }
+ ///
+ /// Error code
+ ///
[Input("errorCode")]
public Input? ErrorCode { get; set; }
+ ///
+ /// Error Message
+ ///
[Input("errorMessage")]
public Input? ErrorMessage { get; set; }
+ ///
+ /// Help
+ ///
[Input("help")]
public Input? Help { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorGetArgs.cs
index 5b019e9e..97b1da6e 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionOperationErrorGetArgs.cs
@@ -24,18 +24,33 @@ public InputList Additiona
set => _additionalInfo = value;
}
+ ///
+ /// CorrelationId
+ ///
[Input("correlationId")]
public Input? CorrelationId { get; set; }
+ ///
+ /// Details
+ ///
[Input("details")]
public Input? Details { get; set; }
+ ///
+ /// Error code
+ ///
[Input("errorCode")]
public Input? ErrorCode { get; set; }
+ ///
+ /// Error Message
+ ///
[Input("errorMessage")]
public Input? ErrorMessage { get; set; }
+ ///
+ /// Help
+ ///
[Input("help")]
public Input? Help { get; set; }
diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionOperationGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionOperationGetArgs.cs
index 222928fa..c856e0e1 100644
--- a/sdk/dotnet/Fabric/Inputs/ConnectionOperationGetArgs.cs
+++ b/sdk/dotnet/Fabric/Inputs/ConnectionOperationGetArgs.cs
@@ -12,17 +12,27 @@ namespace Pulumi.Equinix.Fabric.Inputs
public sealed class ConnectionOperationGetArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Connection status
+ ///
[Input("equinixStatus")]
public Input? EquinixStatus { get; set; }
[Input("errors")]
private InputList