diff --git a/examples/go.mod b/examples/go.mod index 3f278107..93ecd6f1 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -26,7 +26,7 @@ require ( github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/Microsoft/go-winio v0.6.1 // 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/acomagu/bufpipe v1.0.4 // indirect github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect github.com/agext/levenshtein v1.2.3 // indirect @@ -56,6 +56,7 @@ require ( github.com/cheggaaa/pb v1.0.29 // indirect github.com/cloudflare/circl v1.3.3 // 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/djherbis/times v1.5.0 // indirect @@ -64,8 +65,8 @@ require ( github.com/fatih/color v1.13.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.4.1 // indirect - github.com/go-git/go-git/v5 v5.8.1 // 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/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 @@ -73,10 +74,10 @@ require ( 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.5.9 // 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.3.0 // indirect + github.com/google/uuid v1.4.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 @@ -88,7 +89,7 @@ require ( 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-retryablehttp v0.7.4 // 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 github.com/hashicorp/go-secure-stdlib/parseutil v0.1.6 // indirect @@ -98,7 +99,7 @@ require ( github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hashicorp/hcl/v2 v2.18.0 // indirect + github.com/hashicorp/hcl/v2 v2.19.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 @@ -157,16 +158,16 @@ 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.0 // indirect + github.com/zclconf/go-cty v1.14.1 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/atomic v1.9.0 // indirect gocloud.dev v0.27.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-20231006140011-7918f672742d // indirect + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.18.0 // indirect - golang.org/x/oauth2 v0.13.0 // indirect + golang.org/x/oauth2 v0.14.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 diff --git a/examples/go.sum b/examples/go.sum index e1788c80..15ff1ae0 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -92,6 +92,7 @@ contrib.go.opencensus.io/exporter/aws v0.0.0-20200617204711-c478e41e60e9/go.mod contrib.go.opencensus.io/exporter/stackdriver v0.13.13/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= contrib.go.opencensus.io/integrations/ocsql v0.1.7/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= github.com/Azure/azure-amqp-common-go/v3 v3.2.3/go.mod h1:7rPmbSfszeovxGfc5fSAXE4ehlXQZHpMja2OtxC2Tas= @@ -171,6 +172,7 @@ github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOp github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= @@ -187,7 +189,8 @@ github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:m github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= 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-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= @@ -197,6 +200,7 @@ github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWX 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= @@ -216,6 +220,7 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -312,11 +317,13 @@ github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= +github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= @@ -501,6 +508,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= @@ -552,7 +561,8 @@ github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaB github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ= github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= @@ -594,6 +604,7 @@ github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.13.0/go.mod h1:qLE0fzW0VuyUAJgPU19zByoIr0HtCHN/r/VLSOOIySU= github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA= +github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= @@ -611,9 +622,13 @@ github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= 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/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/v5 v5.8.1 h1:Zo79E4p7TRk0xoRgMq0RShiTHGKcKI4+DI6BfJc/Q+A= +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-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= @@ -799,8 +814,9 @@ 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= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= @@ -845,8 +861,9 @@ github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ 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 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/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= @@ -918,6 +935,7 @@ github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39 github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.2.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= +github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= @@ -932,10 +950,12 @@ github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9 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-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= -github.com/hashicorp/go-retryablehttp v0.7.4 h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA= +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-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= @@ -970,7 +990,8 @@ github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+l github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= 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.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHLl8= +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/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= @@ -1056,6 +1077,7 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -1106,6 +1128,7 @@ github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= @@ -1150,6 +1173,7 @@ github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= @@ -1159,6 +1183,7 @@ github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcME github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= 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-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= @@ -1290,6 +1315,8 @@ github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoT github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1352,6 +1379,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/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= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1440,6 +1468,7 @@ github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= @@ -1487,6 +1516,7 @@ 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/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM= +github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= 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= @@ -1605,7 +1635,8 @@ 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.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= +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/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= @@ -1740,7 +1771,10 @@ golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0 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/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= @@ -1751,8 +1785,8 @@ 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-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +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= @@ -1782,7 +1816,9 @@ golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1864,7 +1900,10 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug 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/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= @@ -1890,7 +1929,8 @@ 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.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= +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= @@ -1905,7 +1945,9 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2048,11 +2090,14 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220731174439-a90be440212d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.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= @@ -2060,7 +2105,10 @@ golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuX 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/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= @@ -2072,7 +2120,10 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.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.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2086,6 +2137,7 @@ golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxb 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/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= @@ -2169,7 +2221,9 @@ golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= 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/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= diff --git a/go.work.sum b/go.work.sum index 0b39c76c..7bba1cda 100644 --- a/go.work.sum +++ b/go.work.sum @@ -259,6 +259,8 @@ github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cq github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +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/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= @@ -369,6 +371,8 @@ github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI= github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c h1:Xo2rK1pzOm0jO6abTPIQwbAmqBIOj132otexc1mmzFc= github.com/d2g/dhcp4client v1.0.0 h1:suYBsYZIkSlUMEz4TAYCczKf62IA2UWC+O8+KtdOhCo= github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5 h1:+CpLbZIeUn94m02LdEKPcgErLJ347NUwxPKs5u8ieiY= @@ -398,10 +402,15 @@ github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+m github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= 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/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f h1:7T++XKzy4xg7PKy+bM+Sa9/oe1OC88yz2hXQUISoXfA= github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= +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/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= github.com/evanphx/json-patch/v5 v5.5.0 h1:bAmFiUJ+o0o2B4OiTFeE3MqCOtyo+jjPP9iZ0VRxYUc= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= @@ -424,6 +433,10 @@ github.com/go-fonts/dejavu v0.1.0 h1:JSajPXURYqpr+Cu8U9bt8K+XcACIHWqWrvWCKyeFmVQ github.com/go-fonts/latin-modern v0.2.0 h1:5/Tv1Ek/QCr20C6ZOz15vw3g7GELYL98KWr8Hgo+3vk= github.com/go-fonts/liberation v0.2.0 h1:jAkAWJP4S+OsrPLZM4/eC9iW7CtHy+HBXrEwZXWo5VM= github.com/go-fonts/stix v0.1.0 h1:UlZlgrvvmT/58o573ot7NFw0vZasZ5I6bcIft/oMdgg= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-git/v5 v5.9.0 h1:cD9SFA7sHVRdJ7AYck1ZaAa/yeuBvGPxwXDL8cxrObY= +github.com/go-git/go-git/v5 v5.9.0/go.mod h1:RKIqga24sWdMGZF+1Ekv9kylsDz6LzdTSI2s/OsZWE0= 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= @@ -483,12 +496,16 @@ 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/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.5.1 h1:/+mFTs4AlwsJ/mJe8NDtKb7BxLtbZFpcn8vDsneEkwQ= 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/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= github.com/google/subcommands v1.0.1 h1:/eqq+otEXm5vhfBrbREPCSVQbvofip6kIz+mX5TUH7k= +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/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= @@ -516,12 +533,18 @@ github.com/hashicorp/go-kms-wrapping/entropy v0.1.0 h1:xuTi5ZwjimfpvpL09jDE71smC 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= github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= +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-secure-stdlib/base62 v0.1.1 h1:6KMBnfEv0/kLAz0O76sliN5mXbCDcLfs2kP7ssP7+DQ= github.com/hashicorp/go-secure-stdlib/password v0.1.1 h1:6JzmBqXprakgFEHwBgdchsjaA9x3GyjdI568bXKxa60= github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.2 h1:phcbL8urUzF/kxA/Oj6awENaRwfWsjP59GW7u2qlDyY= github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.2/go.mod h1:l8slYwnJA26yBz+ErHpp2IRCLr0vuOMGBORIz4rRiAs= github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= +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.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= +github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= 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= @@ -656,6 +679,7 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/gomega v1.15.0 h1:WjP/FQ/sk43MRmnEcT+MlDw2TFvkrXlprrPST/IudjU= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= @@ -782,6 +806,8 @@ github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQ github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 h1:+lm10QQTNSBd8DVTNGHx7o/IKu9HYDvLMffDhbyLccI= github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 h1:hlE8//ciYMztlGpl/VA+Zm1AcTPHYkHJPbHqE6WJUXE= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f h1:ERexzlUfuTvpE74urLSbIQW0Z/6hF9t8U4NsJLaioAY= +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/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zenazn/goji v0.9.0 h1:RSQQAbXGArQ0dIDEq+PI6WqN6if+5KHu6x2Cx/GXLTQ= @@ -821,18 +847,20 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEa go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= golang.org/x/arch v0.1.0 h1:oMxhUYsO9VsR1dcoVUjJjIGhx1LXol3989T/yZ59Xsw= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8= +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-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.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.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +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/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= diff --git a/patches/0001-fix-Adding-Virtual-device-and-Interface-to-AccessPoi.patch b/patches/0001-fix-Adding-Virtual-device-and-Interface-to-AccessPoi.patch new file mode 100644 index 00000000..7e17bd5f --- /dev/null +++ b/patches/0001-fix-Adding-Virtual-device-and-Interface-to-AccessPoi.patch @@ -0,0 +1,73 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: srushti-patl +Date: Mon, 30 Oct 2023 09:23:17 -0700 +Subject: [PATCH 01/30] 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/0002-fix-Updating-Fabric-Connection-Schema-for-aside.acce.patch b/patches/0002-fix-Updating-Fabric-Connection-Schema-for-aside.acce.patch new file mode 100644 index 00000000..4af8503c --- /dev/null +++ b/patches/0002-fix-Updating-Fabric-Connection-Schema-for-aside.acce.patch @@ -0,0 +1,72 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: srushti-patl +Date: Tue, 31 Oct 2023 11:55:23 -0700 +Subject: [PATCH 02/30] 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/0003-fix-removing-additional_info-parameters-from-ibm2-ma.patch b/patches/0003-fix-removing-additional_info-parameters-from-ibm2-ma.patch new file mode 100644 index 00000000..ebdbedc7 --- /dev/null +++ b/patches/0003-fix-removing-additional_info-parameters-from-ibm2-ma.patch @@ -0,0 +1,49 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: srushti-patl +Date: Wed, 1 Nov 2023 11:56:58 -0700 +Subject: [PATCH 03/30] 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/0004-fix-adding-missing-parameters-to-aside.access_point-.patch b/patches/0004-fix-adding-missing-parameters-to-aside.access_point-.patch new file mode 100644 index 00000000..8f2ed7b0 --- /dev/null +++ b/patches/0004-fix-adding-missing-parameters-to-aside.access_point-.patch @@ -0,0 +1,111 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: srushti-patl +Date: Wed, 1 Nov 2023 16:19:57 -0700 +Subject: [PATCH 04/30] 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/0005-style-Updating-modules-documentation.patch b/patches/0005-style-Updating-modules-documentation.patch new file mode 100644 index 00000000..0df66c21 --- /dev/null +++ b/patches/0005-style-Updating-modules-documentation.patch @@ -0,0 +1,48 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: srushti-patl +Date: Thu, 2 Nov 2023 12:04:20 -0700 +Subject: [PATCH 05/30] 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/0006-chore-Configure-Renovate-432.patch b/patches/0006-chore-Configure-Renovate-432.patch new file mode 100644 index 00000000..9dcf8b75 --- /dev/null +++ b/patches/0006-chore-Configure-Renovate-432.patch @@ -0,0 +1,202 @@ +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 06/30] 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/0007-fix-deps-update-module-github.com-equinix-labs-metal.patch b/patches/0007-fix-deps-update-module-github.com-equinix-labs-metal.patch new file mode 100644 index 00000000..f00cc905 --- /dev/null +++ b/patches/0007-fix-deps-update-module-github.com-equinix-labs-metal.patch @@ -0,0 +1,102 @@ +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 07/30] 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/0008-fix-deps-update-module-github.com-google-uuid-to-v1..patch b/patches/0008-fix-deps-update-module-github.com-google-uuid-to-v1..patch new file mode 100644 index 00000000..8bea994a --- /dev/null +++ b/patches/0008-fix-deps-update-module-github.com-google-uuid-to-v1..patch @@ -0,0 +1,33 @@ +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 08/30] fix(deps): update module github.com/google/uuid to + v1.4.0 + + +diff --git a/go.mod b/go.mod +index 8ac2dfb..db13067 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 da82303..0e8e130 100644 +--- a/go.sum ++++ b/go.sum +@@ -369,6 +369,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/0009-Add-deprecation-messages-to-ecx_-terraform-resources.patch b/patches/0009-Add-deprecation-messages-to-ecx_-terraform-resources.patch new file mode 100644 index 00000000..52d80e5c --- /dev/null +++ b/patches/0009-Add-deprecation-messages-to-ecx_-terraform-resources.patch @@ -0,0 +1,97 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tim Hogarty +Date: Fri, 3 Nov 2023 11:58:26 -0700 +Subject: [PATCH 09/30] 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 59b9958..b1294bf 100644 +--- a/equinix/data_source_ecx_l2_sellerprofile.go ++++ b/equinix/data_source_ecx_l2_sellerprofile.go +@@ -75,9 +75,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 5a48a10..8b06fb6 100644 +--- a/equinix/data_source_ecx_l2_sellerprofiles.go ++++ b/equinix/data_source_ecx_l2_sellerprofiles.go +@@ -33,8 +33,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 eefbb9c..79837e4 100644 +--- a/equinix/data_source_ecx_port.go ++++ b/equinix/data_source_ecx_port.go +@@ -38,8 +38,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 5dd66df..53db8d2 100644 +--- a/equinix/resource_ecx_l2_connection.go ++++ b/equinix/resource_ecx_l2_connection.go +@@ -127,10 +127,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 ae8465b..d741988 100644 +--- a/equinix/resource_ecx_l2_serviceprofile.go ++++ b/equinix/resource_ecx_l2_serviceprofile.go +@@ -103,10 +103,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/0010-Add-docs-for-deprecated-resources.patch b/patches/0010-Add-docs-for-deprecated-resources.patch new file mode 100644 index 00000000..07350640 --- /dev/null +++ b/patches/0010-Add-docs-for-deprecated-resources.patch @@ -0,0 +1,81 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tim Hogarty +Date: Fri, 3 Nov 2023 12:55:28 -0700 +Subject: [PATCH 10/30] 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 09a2af9..107e0f9 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/0011-fix-remove-executable-flag-from-Golang-sources.patch b/patches/0011-fix-remove-executable-flag-from-Golang-sources.patch new file mode 100644 index 00000000..36d2e526 --- /dev/null +++ b/patches/0011-fix-remove-executable-flag-from-Golang-sources.patch @@ -0,0 +1,60 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tomas Karasek +Date: Mon, 6 Nov 2023 15:17:43 +0100 +Subject: [PATCH 11/30] 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/0012-feat-Adding-Port2IBM1.0-example-and-test-script.patch b/patches/0012-feat-Adding-Port2IBM1.0-example-and-test-script.patch new file mode 100644 index 00000000..7c28dba1 --- /dev/null +++ b/patches/0012-feat-Adding-Port2IBM1.0-example-and-test-script.patch @@ -0,0 +1,252 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: srushti-patl +Date: Mon, 6 Nov 2023 12:42:54 -0800 +Subject: [PATCH 12/30] 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/0013-gh-action-to-open-issue-in-Pulumi.patch b/patches/0013-gh-action-to-open-issue-in-Pulumi.patch new file mode 100644 index 00000000..a21638e5 --- /dev/null +++ b/patches/0013-gh-action-to-open-issue-in-Pulumi.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: ocobleseqx +Date: Tue, 7 Nov 2023 00:12:53 +0100 +Subject: [PATCH 13/30] 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/0014-fixup-gh-action-to-open-issue-in-Pulumi.patch b/patches/0014-fixup-gh-action-to-open-issue-in-Pulumi.patch new file mode 100644 index 00000000..9ae7acbb --- /dev/null +++ b/patches/0014-fixup-gh-action-to-open-issue-in-Pulumi.patch @@ -0,0 +1,18 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: ocobleseqx +Date: Tue, 7 Nov 2023 00:14:17 +0100 +Subject: [PATCH 14/30] 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/0015-added-missing-read-only-fields.patch b/patches/0015-added-missing-read-only-fields.patch new file mode 100644 index 00000000..e244a262 --- /dev/null +++ b/patches/0015-added-missing-read-only-fields.patch @@ -0,0 +1,172 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: ocobleseqx +Date: Mon, 13 Nov 2023 23:41:13 +0100 +Subject: [PATCH 15/30] 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/0016-fix-wait-provisioned-status.patch b/patches/0016-fix-wait-provisioned-status.patch new file mode 100644 index 00000000..f3663cb1 --- /dev/null +++ b/patches/0016-fix-wait-provisioned-status.patch @@ -0,0 +1,23 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: ocobleseqx +Date: Mon, 13 Nov 2023 23:50:19 +0100 +Subject: [PATCH 16/30] 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/0017-fix-deps-update-module-github.com-hashicorp-go-retry.patch b/patches/0017-fix-deps-update-module-github.com-hashicorp-go-retry.patch new file mode 100644 index 00000000..e9485249 --- /dev/null +++ b/patches/0017-fix-deps-update-module-github.com-hashicorp-go-retry.patch @@ -0,0 +1,94 @@ +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 17/30] 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/0018-fix-deps-update-module-github.com-hashicorp-terrafor.patch b/patches/0018-fix-deps-update-module-github.com-hashicorp-terrafor.patch new file mode 100644 index 00000000..f28c66c6 --- /dev/null +++ b/patches/0018-fix-deps-update-module-github.com-hashicorp-terrafor.patch @@ -0,0 +1,176 @@ +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 18/30] fix(deps): update module + github.com/hashicorp/terraform-plugin-sdk/v2 to v2.30.0 + + +diff --git a/go.mod b/go.mod +index fd5cd26..1c6ed0c 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 aad654b..567a761 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= +@@ -342,6 +344,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= +@@ -424,9 +428,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= +@@ -441,6 +449,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= +@@ -584,6 +594,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= +@@ -610,6 +622,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= +@@ -651,6 +665,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= +@@ -823,6 +839,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= +@@ -845,6 +863,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= +@@ -1113,6 +1133,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/0019-chore-deps-update-goreleaser-goreleaser-action-actio.patch b/patches/0019-chore-deps-update-goreleaser-goreleaser-action-actio.patch new file mode 100644 index 00000000..95a09188 --- /dev/null +++ b/patches/0019-chore-deps-update-goreleaser-goreleaser-action-actio.patch @@ -0,0 +1,81 @@ +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 19/30] 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/0020-chore-deps-update-crazy-max-ghaction-import-gpg-acti.patch b/patches/0020-chore-deps-update-crazy-max-ghaction-import-gpg-acti.patch new file mode 100644 index 00000000..2f45b9b7 --- /dev/null +++ b/patches/0020-chore-deps-update-crazy-max-ghaction-import-gpg-acti.patch @@ -0,0 +1,81 @@ +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 20/30] 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/0021-chore-deps-update-actions-checkout-action-to-v4-444.patch b/patches/0021-chore-deps-update-actions-checkout-action-to-v4-444.patch new file mode 100644 index 00000000..24d85006 --- /dev/null +++ b/patches/0021-chore-deps-update-actions-checkout-action-to-v4-444.patch @@ -0,0 +1,95 @@ +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 21/30] 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/0022-fix-deps-update-module-github.com-equinix-labs-metal.patch b/patches/0022-fix-deps-update-module-github.com-equinix-labs-metal.patch new file mode 100644 index 00000000..f806c59d --- /dev/null +++ b/patches/0022-fix-deps-update-module-github.com-equinix-labs-metal.patch @@ -0,0 +1,33 @@ +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/30] 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-add-missing-fields-and-descriptions-in-CloudRouter-s.patch b/patches/0023-add-missing-fields-and-descriptions-in-CloudRouter-s.patch new file mode 100644 index 00000000..95f08d49 --- /dev/null +++ b/patches/0023-add-missing-fields-and-descriptions-in-CloudRouter-s.patch @@ -0,0 +1,58 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: ocobleseqx +Date: Wed, 15 Nov 2023 09:53:12 +0100 +Subject: [PATCH 23/30] 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/0024-refactor-Move-Config-related-code-to-internal-config.patch b/patches/0024-refactor-Move-Config-related-code-to-internal-config.patch new file mode 100644 index 00000000..b8141ea8 --- /dev/null +++ b/patches/0024-refactor-Move-Config-related-code-to-internal-config.patch @@ -0,0 +1,3755 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tomas Karasek +Date: Tue, 14 Nov 2023 14:05:12 +0100 +Subject: [PATCH 24/30] 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 8d8bca7..8b6de21 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" +@@ -1228,21 +1226,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 ed67ab8..2c308f9 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) +@@ -115,8 +117,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") { +@@ -153,7 +155,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 +@@ -185,7 +187,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 +@@ -208,8 +210,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) +@@ -239,7 +241,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 a433982..cd61ad8 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/0025-fix-deps-update-module-github.com-equinix-labs-fabri.patch b/patches/0025-fix-deps-update-module-github.com-equinix-labs-fabri.patch new file mode 100644 index 00000000..cfebf15a --- /dev/null +++ b/patches/0025-fix-deps-update-module-github.com-equinix-labs-fabri.patch @@ -0,0 +1,33 @@ +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 25/30] fix(deps): update module + github.com/equinix-labs/fabric-go to v0.7.1 + + +diff --git a/go.mod b/go.mod +index ce7551d..10f42e7 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 6e6f30a..e1b902f 100644 +--- a/go.sum ++++ b/go.sum +@@ -260,6 +260,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/0026-fix-deps-update-module-golang.org-x-oauth2-to-v0.14..patch b/patches/0026-fix-deps-update-module-golang.org-x-oauth2-to-v0.14..patch new file mode 100644 index 00000000..91cd83f4 --- /dev/null +++ b/patches/0026-fix-deps-update-module-golang.org-x-oauth2-to-v0.14..patch @@ -0,0 +1,50 @@ +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 26/30] 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/0027-fix-deps-update-module-github.com-hashicorp-terrafor.patch b/patches/0027-fix-deps-update-module-github.com-hashicorp-terrafor.patch new file mode 100644 index 00000000..8164144c --- /dev/null +++ b/patches/0027-fix-deps-update-module-github.com-hashicorp-terrafor.patch @@ -0,0 +1,47 @@ +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 27/30] 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/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 new file mode 100644 index 00000000..73a87248 --- /dev/null +++ b/patches/0028-fix-deps-update-golang.org-x-exp-digest-to-9a3e603.patch @@ -0,0 +1,50 @@ +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/30] fix(deps): update golang.org/x/exp digest to 9a3e603 + + +diff --git a/go.mod b/go.mod +index fedb6b7..f19f4ea 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 6be22e9..03be281 100644 +--- a/go.sum ++++ b/go.sum +@@ -641,6 +641,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= +@@ -672,6 +674,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 new file mode 100644 index 00000000..5406e1d5 --- /dev/null +++ b/patches/0029-make-correrlationid-function-private.patch @@ -0,0 +1,41 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tomas Karasek +Date: Thu, 16 Nov 2023 15:12:42 +0100 +Subject: [PATCH 29/30] 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/0001-user-agent.patch b/patches/0030-user-agent.patch similarity index 75% rename from patches/0001-user-agent.patch rename to patches/0030-user-agent.patch index d3d131f9..2b7564d6 100644 --- a/patches/0001-user-agent.patch +++ b/patches/0030-user-agent.patch @@ -1,17 +1,17 @@ -From 66f7739b91be84f7034d8232078d8313ec9be094 Mon Sep 17 00:00:00 2001 +From bdcb620fef072f3c8713ff0d392fe23667d9ec3f Mon Sep 17 00:00:00 2001 From: ocobleseqx -Date: Tue, 31 Oct 2023 17:13:45 +0100 +Date: Thu, 16 Nov 2023 18:47:17 +0100 Subject: [PATCH] user agent Signed-off-by: ocobleseqx --- - equinix/config.go | 12 ++++++------ + internal/config/config.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) -diff --git a/equinix/config.go b/equinix/config.go -index 085100e..ebe0192 100644 ---- a/equinix/config.go -+++ b/equinix/config.go +diff --git a/internal/config/config.go b/internal/config/config.go +index f16ddc7..6795459 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" @@ -20,7 +20,7 @@ index 085100e..ebe0192 100644 "github.com/packethost/packngo" xoauth2 "golang.org/x/oauth2" ) -@@ -266,9 +265,8 @@ func MetalRetryPolicy(ctx context.Context, resp *http.Response, err error) (bool +@@ -277,9 +276,8 @@ func MetalRetryPolicy(ctx context.Context, resp *http.Response, err error) (bool return false, nil } @@ -32,11 +32,11 @@ index 085100e..ebe0192 100644 if add := os.Getenv(uaEnvVar); add != "" { add = strings.TrimSpace(add) -@@ -323,7 +321,9 @@ func generateModuleUserAgentString(d *schema.ResourceData, baseUserAgent string) +@@ -334,7 +332,9 @@ 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) + // FORK: this gives us the ability to add a Pulumi Specific user agent + // TODO (ocobles) override pulumi sdk version with ldflags @@ -44,6 +44,3 @@ index 085100e..ebe0192 100644 + userAgent := fmt.Sprintf("%s pulumi-equinix/%s %s", pulumiUserAgent, version.ProviderVersion, suffix) return strings.TrimSpace(userAgent) } --- -2.39.1 - diff --git a/provider/cmd/pulumi-resource-equinix/schema.json b/provider/cmd/pulumi-resource-equinix/schema.json index 431810a7..40241024 100644 --- a/provider/cmd/pulumi-resource-equinix/schema.json +++ b/provider/cmd/pulumi-resource-equinix/schema.json @@ -344,7 +344,8 @@ "description": "Access point location\n" }, "network": { - "$ref": "#/types/equinix:fabric/ConnectionASideAccessPointNetwork:ConnectionASideAccessPointNetwork" + "$ref": "#/types/equinix:fabric/ConnectionASideAccessPointNetwork:ConnectionASideAccessPointNetwork", + "description": "Simplified Network\n" }, "peeringType": { "type": "string", @@ -476,7 +477,7 @@ "equinix:fabric/ConnectionASideAccessPointInterface:ConnectionASideAccessPointInterface": { "properties": { "id": { - "type": "string", + "type": "integer", "description": "id\n" }, "type": { @@ -767,6 +768,10 @@ "type": "string", "description": "Unique Resource Identifier\n" }, + "name": { + "type": "string", + "description": "Port name\n" + }, "type": { "type": "string", "description": "Interface type\n" @@ -1168,7 +1173,8 @@ "description": "Access point location\n" }, "network": { - "$ref": "#/types/equinix:fabric/ConnectionZSideAccessPointNetwork:ConnectionZSideAccessPointNetwork" + "$ref": "#/types/equinix:fabric/ConnectionZSideAccessPointNetwork:ConnectionZSideAccessPointNetwork", + "description": "Simplified Network\n" }, "peeringType": { "type": "string", @@ -1300,7 +1306,7 @@ "equinix:fabric/ConnectionZSideAccessPointInterface:ConnectionZSideAccessPointInterface": { "properties": { "id": { - "type": "string", + "type": "integer", "description": "id\n" }, "type": { @@ -1591,6 +1597,10 @@ "type": "string", "description": "Unique Resource Identifier\n" }, + "name": { + "type": "string", + "description": "Port name\n" + }, "type": { "type": "string", "description": "Interface type\n" @@ -9664,6 +9674,14 @@ "$ref": "#/types/equinix:fabric/CloudRouterAccount:CloudRouterAccount", "description": "Customer account information that is associated with this Fabric Cloud Router\n" }, + "bgpIpv4RoutesCount": { + "type": "integer", + "description": "Access point used and maximum number of IPv4 BGP routes\n" + }, + "bgpIpv6RoutesCount": { + "type": "integer", + "description": "Access point used and maximum number of IPv6 BGP routes\n" + }, "changeLogs": { "type": "array", "items": { @@ -9671,6 +9689,10 @@ }, "description": "Captures Fabric Cloud Router lifecycle change information\n" }, + "connectionsCount": { + "type": "integer", + "description": "Number of connections associated with this Access point\n" + }, "description": { "type": "string", "description": "Customer-provided Fabric Cloud Router description\n" @@ -9720,7 +9742,10 @@ } }, "required": [ + "bgpIpv4RoutesCount", + "bgpIpv6RoutesCount", "changeLogs", + "connectionsCount", "equinixAsn", "href", "location", @@ -9784,6 +9809,14 @@ "$ref": "#/types/equinix:fabric/CloudRouterAccount:CloudRouterAccount", "description": "Customer account information that is associated with this Fabric Cloud Router\n" }, + "bgpIpv4RoutesCount": { + "type": "integer", + "description": "Access point used and maximum number of IPv4 BGP routes\n" + }, + "bgpIpv6RoutesCount": { + "type": "integer", + "description": "Access point used and maximum number of IPv6 BGP routes\n" + }, "changeLogs": { "type": "array", "items": { @@ -9791,6 +9824,10 @@ }, "description": "Captures Fabric Cloud Router lifecycle change information\n" }, + "connectionsCount": { + "type": "integer", + "description": "Number of connections associated with this Access point\n" + }, "description": { "type": "string", "description": "Customer-provided Fabric Cloud Router description\n" diff --git a/provider/go.mod b/provider/go.mod index be7cffde..095eceec 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -9,7 +9,7 @@ replace ( ) require ( - github.com/equinix/terraform-provider-equinix v1.19.0 + github.com/equinix/terraform-provider-equinix v1.20.0 github.com/pulumi/pulumi-terraform-bridge/v3 v3.63.2 github.com/pulumi/pulumi/pkg/v3 v3.91.1 github.com/pulumi/pulumi/sdk/v3 v3.91.1 @@ -42,7 +42,7 @@ require ( github.com/Masterminds/semver/v3 v3.1.1 // indirect github.com/Masterminds/sprig/v3 v3.2.2 // indirect github.com/Microsoft/go-winio v0.6.1 // 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/acomagu/bufpipe v1.0.4 // indirect github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect github.com/agext/levenshtein v1.2.3 // indirect @@ -76,13 +76,14 @@ require ( github.com/cheggaaa/pb v1.0.29 // indirect github.com/cloudflare/circl v1.3.3 // 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/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.0 // indirect - github.com/equinix-labs/metal-go v0.25.1 // indirect + github.com/equinix-labs/fabric-go v0.7.1 // indirect + github.com/equinix-labs/metal-go v0.27.0 // indirect github.com/equinix/ecx-go/v2 v2.3.1 // indirect github.com/equinix/ne-go v1.11.0 // indirect github.com/equinix/oauth2-go v1.0.0 // indirect @@ -92,8 +93,8 @@ require ( 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.4.1 // indirect - github.com/go-git/go-git/v5 v5.8.1 // 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/gofrs/uuid v4.2.0+incompatible // indirect github.com/gogo/protobuf v1.3.2 // indirect @@ -102,11 +103,11 @@ require ( 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.5.9 // 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/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/uuid v1.4.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 @@ -121,7 +122,7 @@ require ( 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-retryablehttp v0.7.4 // 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 github.com/hashicorp/go-secure-stdlib/mlock v0.1.2 // indirect @@ -131,16 +132,16 @@ require ( 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.0 // indirect + github.com/hashicorp/hc-install v0.6.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hashicorp/hcl/v2 v2.18.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-plugin-log v0.9.0 // indirect - github.com/hashicorp/terraform-plugin-sdk/v2 v2.29.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-svchost v0.1.1 // indirect github.com/hashicorp/vault/api v1.8.2 // indirect @@ -221,16 +222,16 @@ 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.0 // indirect + github.com/zclconf/go-cty v1.14.1 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/atomic v1.9.0 // indirect gocloud.dev v0.27.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-20231006140011-7918f672742d // indirect + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.18.0 // indirect - golang.org/x/oauth2 v0.13.0 // indirect + golang.org/x/oauth2 v0.14.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 diff --git a/provider/go.sum b/provider/go.sum index 2d5929f4..28792b0e 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -734,8 +734,9 @@ github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:m github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= 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/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= @@ -1088,6 +1089,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= @@ -1140,8 +1143,9 @@ github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaB github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ= github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= @@ -1164,10 +1168,10 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -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/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/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/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= @@ -1230,12 +1234,14 @@ github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmn github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= 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/v5 v5.8.1 h1:Zo79E4p7TRk0xoRgMq0RShiTHGKcKI4+DI6BfJc/Q+A= 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-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= @@ -1431,8 +1437,9 @@ 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= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= @@ -1480,8 +1487,9 @@ github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ 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 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/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= @@ -1589,8 +1597,8 @@ github.com/hashicorp/go-plugin v1.5.1/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly8 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= -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-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= @@ -1626,14 +1634,16 @@ 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/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/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 v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= -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/hil v0.0.0-20190212132231-97b3a9cdfa93 h1:T1Q6ag9tCwun16AW+XK3tAql24P4uTGUMIn1/92WsQQ= github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= @@ -2025,6 +2035,8 @@ github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoT github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -2409,8 +2421,9 @@ github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q github.com/zclconf/go-cty v1.13.0/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= 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 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 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= @@ -2568,6 +2581,7 @@ 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/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= @@ -2583,8 +2597,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-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +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-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= @@ -2631,6 +2645,7 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2729,6 +2744,7 @@ 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/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= @@ -2763,8 +2779,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.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= @@ -2783,6 +2799,7 @@ golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2944,6 +2961,7 @@ 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/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= @@ -2961,6 +2979,7 @@ 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/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= @@ -2980,6 +2999,7 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= 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-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -3089,6 +3109,7 @@ 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/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= diff --git a/sdk/dotnet/Fabric/CloudRouter.cs b/sdk/dotnet/Fabric/CloudRouter.cs index 93af7cab..ae21abe8 100644 --- a/sdk/dotnet/Fabric/CloudRouter.cs +++ b/sdk/dotnet/Fabric/CloudRouter.cs @@ -67,12 +67,30 @@ public partial class CloudRouter : global::Pulumi.CustomResource [Output("account")] public Output Account { get; private set; } = null!; + /// + /// Access point used and maximum number of IPv4 BGP routes + /// + [Output("bgpIpv4RoutesCount")] + public Output BgpIpv4RoutesCount { get; private set; } = null!; + + /// + /// Access point used and maximum number of IPv6 BGP routes + /// + [Output("bgpIpv6RoutesCount")] + public Output BgpIpv6RoutesCount { get; private set; } = null!; + /// /// Captures Fabric Cloud Router lifecycle change information /// [Output("changeLogs")] public Output> ChangeLogs { get; private set; } = null!; + /// + /// Number of connections associated with this Access point + /// + [Output("connectionsCount")] + public Output ConnectionsCount { get; private set; } = null!; + /// /// Customer-provided Fabric Cloud Router description /// @@ -260,6 +278,18 @@ public sealed class CloudRouterState : global::Pulumi.ResourceArgs [Input("account")] public Input? Account { get; set; } + /// + /// Access point used and maximum number of IPv4 BGP routes + /// + [Input("bgpIpv4RoutesCount")] + public Input? BgpIpv4RoutesCount { get; set; } + + /// + /// Access point used and maximum number of IPv6 BGP routes + /// + [Input("bgpIpv6RoutesCount")] + public Input? BgpIpv6RoutesCount { get; set; } + [Input("changeLogs")] private InputList? _changeLogs; @@ -272,6 +302,12 @@ public InputList ChangeLogs set => _changeLogs = value; } + /// + /// Number of connections associated with this Access point + /// + [Input("connectionsCount")] + public Input? ConnectionsCount { get; set; } + /// /// Customer-provided Fabric Cloud Router description /// diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointArgs.cs index 5d230d45..bbc12219 100644 --- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointArgs.cs @@ -45,6 +45,9 @@ public sealed class ConnectionASideAccessPointArgs : global::Pulumi.ResourceArgs [Input("location")] public Input? Location { get; set; } + /// + /// Simplified Network + /// [Input("network")] public Input? Network { get; set; } diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGetArgs.cs index 52bef06c..a7a0cae6 100644 --- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGetArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointGetArgs.cs @@ -45,6 +45,9 @@ public sealed class ConnectionASideAccessPointGetArgs : global::Pulumi.ResourceA [Input("location")] public Input? Location { get; set; } + /// + /// Simplified Network + /// [Input("network")] public Input? Network { get; set; } diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceArgs.cs index 00446533..16b1c462 100644 --- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceArgs.cs @@ -16,7 +16,7 @@ public sealed class ConnectionASideAccessPointInterfaceArgs : global::Pulumi.Res /// id /// [Input("id")] - public Input? Id { get; set; } + public Input? Id { get; set; } /// /// Interface type diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceGetArgs.cs index 7e04b1be..069be6f0 100644 --- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceGetArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointInterfaceGetArgs.cs @@ -16,7 +16,7 @@ public sealed class ConnectionASideAccessPointInterfaceGetArgs : global::Pulumi. /// id /// [Input("id")] - public Input? Id { get; set; } + public Input? Id { get; set; } /// /// Interface type diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceArgs.cs index 4f0d250a..cec8fe0e 100644 --- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceArgs.cs @@ -18,6 +18,12 @@ public sealed class ConnectionASideAccessPointVirtualDeviceArgs : global::Pulumi [Input("href")] public Input? Href { get; set; } + /// + /// Port name + /// + [Input("name")] + public Input? Name { get; set; } + /// /// Interface type /// diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceGetArgs.cs index f3a7ecd0..61c0c2b2 100644 --- a/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceGetArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/ConnectionASideAccessPointVirtualDeviceGetArgs.cs @@ -18,6 +18,12 @@ public sealed class ConnectionASideAccessPointVirtualDeviceGetArgs : global::Pul [Input("href")] public Input? Href { get; set; } + /// + /// Port name + /// + [Input("name")] + public Input? Name { get; set; } + /// /// Interface type /// diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointArgs.cs index e78c8dce..797ea7ec 100644 --- a/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointArgs.cs @@ -45,6 +45,9 @@ public sealed class ConnectionZSideAccessPointArgs : global::Pulumi.ResourceArgs [Input("location")] public Input? Location { get; set; } + /// + /// Simplified Network + /// [Input("network")] public Input? Network { get; set; } diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointGetArgs.cs index 4321f40d..4424149c 100644 --- a/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointGetArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointGetArgs.cs @@ -45,6 +45,9 @@ public sealed class ConnectionZSideAccessPointGetArgs : global::Pulumi.ResourceA [Input("location")] public Input? Location { get; set; } + /// + /// Simplified Network + /// [Input("network")] public Input? Network { get; set; } diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointInterfaceArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointInterfaceArgs.cs index 77a13db4..62669c22 100644 --- a/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointInterfaceArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointInterfaceArgs.cs @@ -16,7 +16,7 @@ public sealed class ConnectionZSideAccessPointInterfaceArgs : global::Pulumi.Res /// id /// [Input("id")] - public Input? Id { get; set; } + public Input? Id { get; set; } /// /// Interface type diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointInterfaceGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointInterfaceGetArgs.cs index 32afdabf..4cfb51af 100644 --- a/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointInterfaceGetArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointInterfaceGetArgs.cs @@ -16,7 +16,7 @@ public sealed class ConnectionZSideAccessPointInterfaceGetArgs : global::Pulumi. /// id /// [Input("id")] - public Input? Id { get; set; } + public Input? Id { get; set; } /// /// Interface type diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointVirtualDeviceArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointVirtualDeviceArgs.cs index 98f8db57..0a678212 100644 --- a/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointVirtualDeviceArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointVirtualDeviceArgs.cs @@ -18,6 +18,12 @@ public sealed class ConnectionZSideAccessPointVirtualDeviceArgs : global::Pulumi [Input("href")] public Input? Href { get; set; } + /// + /// Port name + /// + [Input("name")] + public Input? Name { get; set; } + /// /// Interface type /// diff --git a/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointVirtualDeviceGetArgs.cs b/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointVirtualDeviceGetArgs.cs index a0c40e8f..b5154556 100644 --- a/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointVirtualDeviceGetArgs.cs +++ b/sdk/dotnet/Fabric/Inputs/ConnectionZSideAccessPointVirtualDeviceGetArgs.cs @@ -18,6 +18,12 @@ public sealed class ConnectionZSideAccessPointVirtualDeviceGetArgs : global::Pul [Input("href")] public Input? Href { get; set; } + /// + /// Port name + /// + [Input("name")] + public Input? Name { get; set; } + /// /// Interface type /// diff --git a/sdk/dotnet/Fabric/Outputs/ConnectionASideAccessPoint.cs b/sdk/dotnet/Fabric/Outputs/ConnectionASideAccessPoint.cs index 8ddc27f2..6e244fb7 100644 --- a/sdk/dotnet/Fabric/Outputs/ConnectionASideAccessPoint.cs +++ b/sdk/dotnet/Fabric/Outputs/ConnectionASideAccessPoint.cs @@ -34,6 +34,9 @@ public sealed class ConnectionASideAccessPoint /// Access point location /// public readonly Outputs.ConnectionASideAccessPointLocation? Location; + /// + /// Simplified Network + /// public readonly Outputs.ConnectionASideAccessPointNetwork? Network; /// /// Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL diff --git a/sdk/dotnet/Fabric/Outputs/ConnectionASideAccessPointInterface.cs b/sdk/dotnet/Fabric/Outputs/ConnectionASideAccessPointInterface.cs index fcd0f2ce..a962df77 100644 --- a/sdk/dotnet/Fabric/Outputs/ConnectionASideAccessPointInterface.cs +++ b/sdk/dotnet/Fabric/Outputs/ConnectionASideAccessPointInterface.cs @@ -16,7 +16,7 @@ public sealed class ConnectionASideAccessPointInterface /// /// id /// - public readonly string? Id; + public readonly int? Id; /// /// Interface type /// @@ -28,7 +28,7 @@ public sealed class ConnectionASideAccessPointInterface [OutputConstructor] private ConnectionASideAccessPointInterface( - string? id, + int? id, string? type, diff --git a/sdk/dotnet/Fabric/Outputs/ConnectionASideAccessPointVirtualDevice.cs b/sdk/dotnet/Fabric/Outputs/ConnectionASideAccessPointVirtualDevice.cs index 881a063e..f8729501 100644 --- a/sdk/dotnet/Fabric/Outputs/ConnectionASideAccessPointVirtualDevice.cs +++ b/sdk/dotnet/Fabric/Outputs/ConnectionASideAccessPointVirtualDevice.cs @@ -18,6 +18,10 @@ public sealed class ConnectionASideAccessPointVirtualDevice /// public readonly string? Href; /// + /// Port name + /// + public readonly string? Name; + /// /// Interface type /// public readonly string? Type; @@ -30,11 +34,14 @@ public sealed class ConnectionASideAccessPointVirtualDevice private ConnectionASideAccessPointVirtualDevice( string? href, + string? name, + string? type, string? uuid) { Href = href; + Name = name; Type = type; Uuid = uuid; } diff --git a/sdk/dotnet/Fabric/Outputs/ConnectionZSideAccessPoint.cs b/sdk/dotnet/Fabric/Outputs/ConnectionZSideAccessPoint.cs index daa87ddb..17c36767 100644 --- a/sdk/dotnet/Fabric/Outputs/ConnectionZSideAccessPoint.cs +++ b/sdk/dotnet/Fabric/Outputs/ConnectionZSideAccessPoint.cs @@ -34,6 +34,9 @@ public sealed class ConnectionZSideAccessPoint /// Access point location /// public readonly Outputs.ConnectionZSideAccessPointLocation? Location; + /// + /// Simplified Network + /// public readonly Outputs.ConnectionZSideAccessPointNetwork? Network; /// /// Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL diff --git a/sdk/dotnet/Fabric/Outputs/ConnectionZSideAccessPointInterface.cs b/sdk/dotnet/Fabric/Outputs/ConnectionZSideAccessPointInterface.cs index 323056bb..97cbd41b 100644 --- a/sdk/dotnet/Fabric/Outputs/ConnectionZSideAccessPointInterface.cs +++ b/sdk/dotnet/Fabric/Outputs/ConnectionZSideAccessPointInterface.cs @@ -16,7 +16,7 @@ public sealed class ConnectionZSideAccessPointInterface /// /// id /// - public readonly string? Id; + public readonly int? Id; /// /// Interface type /// @@ -28,7 +28,7 @@ public sealed class ConnectionZSideAccessPointInterface [OutputConstructor] private ConnectionZSideAccessPointInterface( - string? id, + int? id, string? type, diff --git a/sdk/dotnet/Fabric/Outputs/ConnectionZSideAccessPointVirtualDevice.cs b/sdk/dotnet/Fabric/Outputs/ConnectionZSideAccessPointVirtualDevice.cs index 647e9820..53e335b6 100644 --- a/sdk/dotnet/Fabric/Outputs/ConnectionZSideAccessPointVirtualDevice.cs +++ b/sdk/dotnet/Fabric/Outputs/ConnectionZSideAccessPointVirtualDevice.cs @@ -18,6 +18,10 @@ public sealed class ConnectionZSideAccessPointVirtualDevice /// public readonly string? Href; /// + /// Port name + /// + public readonly string? Name; + /// /// Interface type /// public readonly string? Type; @@ -30,11 +34,14 @@ public sealed class ConnectionZSideAccessPointVirtualDevice private ConnectionZSideAccessPointVirtualDevice( string? href, + string? name, + string? type, string? uuid) { Href = href; + Name = name; Type = type; Uuid = uuid; } diff --git a/sdk/go.mod b/sdk/go.mod index 69d8f919..68e350c3 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -10,7 +10,7 @@ require ( require ( dario.cat/mergo v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // 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/acomagu/bufpipe v1.0.4 // indirect github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect github.com/agext/levenshtein v1.2.3 // indirect @@ -23,20 +23,22 @@ require ( github.com/cheggaaa/pb v1.0.29 // indirect github.com/cloudflare/circl v1.3.3 // indirect github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect + github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/djherbis/times v1.5.0 // indirect github.com/emirpasic/gods v1.18.1 // 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.4.1 // indirect - github.com/go-git/go-git/v5 v5.8.1 // 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/gogo/protobuf v1.3.2 // indirect github.com/golang/glog v1.1.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.6.0 // indirect github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/hcl/v2 v2.18.0 // indirect + github.com/hashicorp/hcl/v2 v2.19.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect @@ -72,10 +74,10 @@ require ( github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect github.com/uber/jaeger-lib v2.4.1+incompatible // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - github.com/zclconf/go-cty v1.14.0 // indirect + github.com/zclconf/go-cty v1.14.1 // indirect go.uber.org/atomic v1.9.0 // indirect golang.org/x/crypto v0.15.0 // indirect - golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.18.0 // indirect golang.org/x/sync v0.5.0 // indirect diff --git a/sdk/go.sum b/sdk/go.sum index 7ba58f3d..d79b9f83 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -5,8 +5,8 @@ github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXY github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/ProtonMail/go-crypto v0.0.0-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/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= @@ -40,13 +40,15 @@ github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU= github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0= -github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= -github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= @@ -58,12 +60,12 @@ github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= -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/v5 v5.8.1 h1:Zo79E4p7TRk0xoRgMq0RShiTHGKcKI4+DI6BfJc/Q+A= -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/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -75,8 +77,9 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -84,8 +87,8 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/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/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= @@ -96,7 +99,6 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -133,7 +135,8 @@ 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/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0= github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -201,8 +204,8 @@ github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -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= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -214,8 +217,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.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-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +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/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= diff --git a/sdk/go/equinix/fabric/cloudRouter.go b/sdk/go/equinix/fabric/cloudRouter.go index 7889d36b..15e70964 100644 --- a/sdk/go/equinix/fabric/cloudRouter.go +++ b/sdk/go/equinix/fabric/cloudRouter.go @@ -69,8 +69,14 @@ type CloudRouter struct { // Customer account information that is associated with this Fabric Cloud Router Account CloudRouterAccountPtrOutput `pulumi:"account"` + // Access point used and maximum number of IPv4 BGP routes + BgpIpv4RoutesCount pulumi.IntOutput `pulumi:"bgpIpv4RoutesCount"` + // Access point used and maximum number of IPv6 BGP routes + BgpIpv6RoutesCount pulumi.IntOutput `pulumi:"bgpIpv6RoutesCount"` // Captures Fabric Cloud Router lifecycle change information ChangeLogs CloudRouterChangeLogArrayOutput `pulumi:"changeLogs"` + // Number of connections associated with this Access point + ConnectionsCount pulumi.IntOutput `pulumi:"connectionsCount"` // Customer-provided Fabric Cloud Router description Description pulumi.StringPtrOutput `pulumi:"description"` // Equinix ASN @@ -139,8 +145,14 @@ func GetCloudRouter(ctx *pulumi.Context, type cloudRouterState struct { // Customer account information that is associated with this Fabric Cloud Router Account *CloudRouterAccount `pulumi:"account"` + // Access point used and maximum number of IPv4 BGP routes + BgpIpv4RoutesCount *int `pulumi:"bgpIpv4RoutesCount"` + // Access point used and maximum number of IPv6 BGP routes + BgpIpv6RoutesCount *int `pulumi:"bgpIpv6RoutesCount"` // Captures Fabric Cloud Router lifecycle change information ChangeLogs []CloudRouterChangeLog `pulumi:"changeLogs"` + // Number of connections associated with this Access point + ConnectionsCount *int `pulumi:"connectionsCount"` // Customer-provided Fabric Cloud Router description Description *string `pulumi:"description"` // Equinix ASN @@ -168,8 +180,14 @@ type cloudRouterState struct { type CloudRouterState struct { // Customer account information that is associated with this Fabric Cloud Router Account CloudRouterAccountPtrInput + // Access point used and maximum number of IPv4 BGP routes + BgpIpv4RoutesCount pulumi.IntPtrInput + // Access point used and maximum number of IPv6 BGP routes + BgpIpv6RoutesCount pulumi.IntPtrInput // Captures Fabric Cloud Router lifecycle change information ChangeLogs CloudRouterChangeLogArrayInput + // Number of connections associated with this Access point + ConnectionsCount pulumi.IntPtrInput // Customer-provided Fabric Cloud Router description Description pulumi.StringPtrInput // Equinix ASN @@ -357,11 +375,26 @@ func (o CloudRouterOutput) Account() CloudRouterAccountPtrOutput { return o.ApplyT(func(v *CloudRouter) CloudRouterAccountPtrOutput { return v.Account }).(CloudRouterAccountPtrOutput) } +// Access point used and maximum number of IPv4 BGP routes +func (o CloudRouterOutput) BgpIpv4RoutesCount() pulumi.IntOutput { + return o.ApplyT(func(v *CloudRouter) pulumi.IntOutput { return v.BgpIpv4RoutesCount }).(pulumi.IntOutput) +} + +// Access point used and maximum number of IPv6 BGP routes +func (o CloudRouterOutput) BgpIpv6RoutesCount() pulumi.IntOutput { + return o.ApplyT(func(v *CloudRouter) pulumi.IntOutput { return v.BgpIpv6RoutesCount }).(pulumi.IntOutput) +} + // Captures Fabric Cloud Router lifecycle change information func (o CloudRouterOutput) ChangeLogs() CloudRouterChangeLogArrayOutput { return o.ApplyT(func(v *CloudRouter) CloudRouterChangeLogArrayOutput { return v.ChangeLogs }).(CloudRouterChangeLogArrayOutput) } +// Number of connections associated with this Access point +func (o CloudRouterOutput) ConnectionsCount() pulumi.IntOutput { + return o.ApplyT(func(v *CloudRouter) pulumi.IntOutput { return v.ConnectionsCount }).(pulumi.IntOutput) +} + // Customer-provided Fabric Cloud Router description func (o CloudRouterOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v *CloudRouter) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) diff --git a/sdk/go/equinix/fabric/pulumiTypes.go b/sdk/go/equinix/fabric/pulumiTypes.go index b7b7a8e6..f148b3c9 100644 --- a/sdk/go/equinix/fabric/pulumiTypes.go +++ b/sdk/go/equinix/fabric/pulumiTypes.go @@ -1487,7 +1487,8 @@ type ConnectionASideAccessPoint struct { LinkProtocol *ConnectionASideAccessPointLinkProtocol `pulumi:"linkProtocol"` // Access point location Location *ConnectionASideAccessPointLocation `pulumi:"location"` - Network *ConnectionASideAccessPointNetwork `pulumi:"network"` + // Simplified Network + Network *ConnectionASideAccessPointNetwork `pulumi:"network"` // Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL PeeringType *string `pulumi:"peeringType"` // Port access point information @@ -1532,7 +1533,8 @@ type ConnectionASideAccessPointArgs struct { LinkProtocol ConnectionASideAccessPointLinkProtocolPtrInput `pulumi:"linkProtocol"` // Access point location Location ConnectionASideAccessPointLocationPtrInput `pulumi:"location"` - Network ConnectionASideAccessPointNetworkPtrInput `pulumi:"network"` + // Simplified Network + Network ConnectionASideAccessPointNetworkPtrInput `pulumi:"network"` // Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL PeeringType pulumi.StringPtrInput `pulumi:"peeringType"` // Port access point information @@ -1678,6 +1680,7 @@ func (o ConnectionASideAccessPointOutput) Location() ConnectionASideAccessPointL return o.ApplyT(func(v ConnectionASideAccessPoint) *ConnectionASideAccessPointLocation { return v.Location }).(ConnectionASideAccessPointLocationPtrOutput) } +// Simplified Network func (o ConnectionASideAccessPointOutput) Network() ConnectionASideAccessPointNetworkPtrOutput { return o.ApplyT(func(v ConnectionASideAccessPoint) *ConnectionASideAccessPointNetwork { return v.Network }).(ConnectionASideAccessPointNetworkPtrOutput) } @@ -1819,6 +1822,7 @@ func (o ConnectionASideAccessPointPtrOutput) Location() ConnectionASideAccessPoi }).(ConnectionASideAccessPointLocationPtrOutput) } +// Simplified Network func (o ConnectionASideAccessPointPtrOutput) Network() ConnectionASideAccessPointNetworkPtrOutput { return o.ApplyT(func(v *ConnectionASideAccessPoint) *ConnectionASideAccessPointNetwork { if v == nil { @@ -2347,7 +2351,7 @@ func (o ConnectionASideAccessPointGatewayPtrOutput) Uuid() pulumi.StringPtrOutpu type ConnectionASideAccessPointInterface struct { // id - Id *string `pulumi:"id"` + Id *int `pulumi:"id"` // Interface type Type *string `pulumi:"type"` // Equinix-assigned interface identifier @@ -2367,7 +2371,7 @@ type ConnectionASideAccessPointInterfaceInput interface { type ConnectionASideAccessPointInterfaceArgs struct { // id - Id pulumi.StringPtrInput `pulumi:"id"` + Id pulumi.IntPtrInput `pulumi:"id"` // Interface type Type pulumi.StringPtrInput `pulumi:"type"` // Equinix-assigned interface identifier @@ -2470,8 +2474,8 @@ func (o ConnectionASideAccessPointInterfaceOutput) ToOutput(ctx context.Context) } // id -func (o ConnectionASideAccessPointInterfaceOutput) Id() pulumi.StringPtrOutput { - return o.ApplyT(func(v ConnectionASideAccessPointInterface) *string { return v.Id }).(pulumi.StringPtrOutput) +func (o ConnectionASideAccessPointInterfaceOutput) Id() pulumi.IntPtrOutput { + return o.ApplyT(func(v ConnectionASideAccessPointInterface) *int { return v.Id }).(pulumi.IntPtrOutput) } // Interface type @@ -2515,13 +2519,13 @@ func (o ConnectionASideAccessPointInterfacePtrOutput) Elem() ConnectionASideAcce } // id -func (o ConnectionASideAccessPointInterfacePtrOutput) Id() pulumi.StringPtrOutput { - return o.ApplyT(func(v *ConnectionASideAccessPointInterface) *string { +func (o ConnectionASideAccessPointInterfacePtrOutput) Id() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ConnectionASideAccessPointInterface) *int { if v == nil { return nil } return v.Id - }).(pulumi.StringPtrOutput) + }).(pulumi.IntPtrOutput) } // Interface type @@ -4211,6 +4215,8 @@ func (o ConnectionASideAccessPointRoutingProtocolArrayOutput) Index(i pulumi.Int type ConnectionASideAccessPointVirtualDevice struct { // Unique Resource Identifier Href *string `pulumi:"href"` + // Port name + Name *string `pulumi:"name"` // Interface type Type *string `pulumi:"type"` // Equinix-assigned interface identifier @@ -4231,6 +4237,8 @@ type ConnectionASideAccessPointVirtualDeviceInput interface { type ConnectionASideAccessPointVirtualDeviceArgs struct { // Unique Resource Identifier Href pulumi.StringPtrInput `pulumi:"href"` + // Port name + Name pulumi.StringPtrInput `pulumi:"name"` // Interface type Type pulumi.StringPtrInput `pulumi:"type"` // Equinix-assigned interface identifier @@ -4337,6 +4345,11 @@ func (o ConnectionASideAccessPointVirtualDeviceOutput) Href() pulumi.StringPtrOu return o.ApplyT(func(v ConnectionASideAccessPointVirtualDevice) *string { return v.Href }).(pulumi.StringPtrOutput) } +// Port name +func (o ConnectionASideAccessPointVirtualDeviceOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionASideAccessPointVirtualDevice) *string { return v.Name }).(pulumi.StringPtrOutput) +} + // Interface type func (o ConnectionASideAccessPointVirtualDeviceOutput) Type() pulumi.StringPtrOutput { return o.ApplyT(func(v ConnectionASideAccessPointVirtualDevice) *string { return v.Type }).(pulumi.StringPtrOutput) @@ -4387,6 +4400,16 @@ func (o ConnectionASideAccessPointVirtualDevicePtrOutput) Href() pulumi.StringPt }).(pulumi.StringPtrOutput) } +// Port name +func (o ConnectionASideAccessPointVirtualDevicePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionASideAccessPointVirtualDevice) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + // Interface type func (o ConnectionASideAccessPointVirtualDevicePtrOutput) Type() pulumi.StringPtrOutput { return o.ApplyT(func(v *ConnectionASideAccessPointVirtualDevice) *string { @@ -6715,7 +6738,8 @@ type ConnectionZSideAccessPoint struct { LinkProtocol *ConnectionZSideAccessPointLinkProtocol `pulumi:"linkProtocol"` // Access point location Location *ConnectionZSideAccessPointLocation `pulumi:"location"` - Network *ConnectionZSideAccessPointNetwork `pulumi:"network"` + // Simplified Network + Network *ConnectionZSideAccessPointNetwork `pulumi:"network"` // Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL PeeringType *string `pulumi:"peeringType"` // Port access point information @@ -6760,7 +6784,8 @@ type ConnectionZSideAccessPointArgs struct { LinkProtocol ConnectionZSideAccessPointLinkProtocolPtrInput `pulumi:"linkProtocol"` // Access point location Location ConnectionZSideAccessPointLocationPtrInput `pulumi:"location"` - Network ConnectionZSideAccessPointNetworkPtrInput `pulumi:"network"` + // Simplified Network + Network ConnectionZSideAccessPointNetworkPtrInput `pulumi:"network"` // Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL PeeringType pulumi.StringPtrInput `pulumi:"peeringType"` // Port access point information @@ -6906,6 +6931,7 @@ func (o ConnectionZSideAccessPointOutput) Location() ConnectionZSideAccessPointL return o.ApplyT(func(v ConnectionZSideAccessPoint) *ConnectionZSideAccessPointLocation { return v.Location }).(ConnectionZSideAccessPointLocationPtrOutput) } +// Simplified Network func (o ConnectionZSideAccessPointOutput) Network() ConnectionZSideAccessPointNetworkPtrOutput { return o.ApplyT(func(v ConnectionZSideAccessPoint) *ConnectionZSideAccessPointNetwork { return v.Network }).(ConnectionZSideAccessPointNetworkPtrOutput) } @@ -7047,6 +7073,7 @@ func (o ConnectionZSideAccessPointPtrOutput) Location() ConnectionZSideAccessPoi }).(ConnectionZSideAccessPointLocationPtrOutput) } +// Simplified Network func (o ConnectionZSideAccessPointPtrOutput) Network() ConnectionZSideAccessPointNetworkPtrOutput { return o.ApplyT(func(v *ConnectionZSideAccessPoint) *ConnectionZSideAccessPointNetwork { if v == nil { @@ -7575,7 +7602,7 @@ func (o ConnectionZSideAccessPointGatewayPtrOutput) Uuid() pulumi.StringPtrOutpu type ConnectionZSideAccessPointInterface struct { // id - Id *string `pulumi:"id"` + Id *int `pulumi:"id"` // Interface type Type *string `pulumi:"type"` // Equinix-assigned interface identifier @@ -7595,7 +7622,7 @@ type ConnectionZSideAccessPointInterfaceInput interface { type ConnectionZSideAccessPointInterfaceArgs struct { // id - Id pulumi.StringPtrInput `pulumi:"id"` + Id pulumi.IntPtrInput `pulumi:"id"` // Interface type Type pulumi.StringPtrInput `pulumi:"type"` // Equinix-assigned interface identifier @@ -7698,8 +7725,8 @@ func (o ConnectionZSideAccessPointInterfaceOutput) ToOutput(ctx context.Context) } // id -func (o ConnectionZSideAccessPointInterfaceOutput) Id() pulumi.StringPtrOutput { - return o.ApplyT(func(v ConnectionZSideAccessPointInterface) *string { return v.Id }).(pulumi.StringPtrOutput) +func (o ConnectionZSideAccessPointInterfaceOutput) Id() pulumi.IntPtrOutput { + return o.ApplyT(func(v ConnectionZSideAccessPointInterface) *int { return v.Id }).(pulumi.IntPtrOutput) } // Interface type @@ -7743,13 +7770,13 @@ func (o ConnectionZSideAccessPointInterfacePtrOutput) Elem() ConnectionZSideAcce } // id -func (o ConnectionZSideAccessPointInterfacePtrOutput) Id() pulumi.StringPtrOutput { - return o.ApplyT(func(v *ConnectionZSideAccessPointInterface) *string { +func (o ConnectionZSideAccessPointInterfacePtrOutput) Id() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ConnectionZSideAccessPointInterface) *int { if v == nil { return nil } return v.Id - }).(pulumi.StringPtrOutput) + }).(pulumi.IntPtrOutput) } // Interface type @@ -9439,6 +9466,8 @@ func (o ConnectionZSideAccessPointRoutingProtocolArrayOutput) Index(i pulumi.Int type ConnectionZSideAccessPointVirtualDevice struct { // Unique Resource Identifier Href *string `pulumi:"href"` + // Port name + Name *string `pulumi:"name"` // Interface type Type *string `pulumi:"type"` // Equinix-assigned interface identifier @@ -9459,6 +9488,8 @@ type ConnectionZSideAccessPointVirtualDeviceInput interface { type ConnectionZSideAccessPointVirtualDeviceArgs struct { // Unique Resource Identifier Href pulumi.StringPtrInput `pulumi:"href"` + // Port name + Name pulumi.StringPtrInput `pulumi:"name"` // Interface type Type pulumi.StringPtrInput `pulumi:"type"` // Equinix-assigned interface identifier @@ -9565,6 +9596,11 @@ func (o ConnectionZSideAccessPointVirtualDeviceOutput) Href() pulumi.StringPtrOu return o.ApplyT(func(v ConnectionZSideAccessPointVirtualDevice) *string { return v.Href }).(pulumi.StringPtrOutput) } +// Port name +func (o ConnectionZSideAccessPointVirtualDeviceOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionZSideAccessPointVirtualDevice) *string { return v.Name }).(pulumi.StringPtrOutput) +} + // Interface type func (o ConnectionZSideAccessPointVirtualDeviceOutput) Type() pulumi.StringPtrOutput { return o.ApplyT(func(v ConnectionZSideAccessPointVirtualDevice) *string { return v.Type }).(pulumi.StringPtrOutput) @@ -9615,6 +9651,16 @@ func (o ConnectionZSideAccessPointVirtualDevicePtrOutput) Href() pulumi.StringPt }).(pulumi.StringPtrOutput) } +// Port name +func (o ConnectionZSideAccessPointVirtualDevicePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionZSideAccessPointVirtualDevice) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + // Interface type func (o ConnectionZSideAccessPointVirtualDevicePtrOutput) Type() pulumi.StringPtrOutput { return o.ApplyT(func(v *ConnectionZSideAccessPointVirtualDevice) *string { diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/CloudRouter.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/CloudRouter.java index fceb323e..77843334 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/CloudRouter.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/CloudRouter.java @@ -93,6 +93,34 @@ public class CloudRouter extends com.pulumi.resources.CustomResource { public Output> account() { return Codegen.optional(this.account); } + /** + * Access point used and maximum number of IPv4 BGP routes + * + */ + @Export(name="bgpIpv4RoutesCount", refs={Integer.class}, tree="[0]") + private Output bgpIpv4RoutesCount; + + /** + * @return Access point used and maximum number of IPv4 BGP routes + * + */ + public Output bgpIpv4RoutesCount() { + return this.bgpIpv4RoutesCount; + } + /** + * Access point used and maximum number of IPv6 BGP routes + * + */ + @Export(name="bgpIpv6RoutesCount", refs={Integer.class}, tree="[0]") + private Output bgpIpv6RoutesCount; + + /** + * @return Access point used and maximum number of IPv6 BGP routes + * + */ + public Output bgpIpv6RoutesCount() { + return this.bgpIpv6RoutesCount; + } /** * Captures Fabric Cloud Router lifecycle change information * @@ -107,6 +135,20 @@ public Output> account() { public Output> changeLogs() { return this.changeLogs; } + /** + * Number of connections associated with this Access point + * + */ + @Export(name="connectionsCount", refs={Integer.class}, tree="[0]") + private Output connectionsCount; + + /** + * @return Number of connections associated with this Access point + * + */ + public Output connectionsCount() { + return this.connectionsCount; + } /** * Customer-provided Fabric Cloud Router description * diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/CloudRouterState.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/CloudRouterState.java index 7fa6a93a..eac740b2 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/CloudRouterState.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/CloudRouterState.java @@ -39,6 +39,36 @@ public Optional> account() { return Optional.ofNullable(this.account); } + /** + * Access point used and maximum number of IPv4 BGP routes + * + */ + @Import(name="bgpIpv4RoutesCount") + private @Nullable Output bgpIpv4RoutesCount; + + /** + * @return Access point used and maximum number of IPv4 BGP routes + * + */ + public Optional> bgpIpv4RoutesCount() { + return Optional.ofNullable(this.bgpIpv4RoutesCount); + } + + /** + * Access point used and maximum number of IPv6 BGP routes + * + */ + @Import(name="bgpIpv6RoutesCount") + private @Nullable Output bgpIpv6RoutesCount; + + /** + * @return Access point used and maximum number of IPv6 BGP routes + * + */ + public Optional> bgpIpv6RoutesCount() { + return Optional.ofNullable(this.bgpIpv6RoutesCount); + } + /** * Captures Fabric Cloud Router lifecycle change information * @@ -54,6 +84,21 @@ public Optional>> changeLogs() { return Optional.ofNullable(this.changeLogs); } + /** + * Number of connections associated with this Access point + * + */ + @Import(name="connectionsCount") + private @Nullable Output connectionsCount; + + /** + * @return Number of connections associated with this Access point + * + */ + public Optional> connectionsCount() { + return Optional.ofNullable(this.connectionsCount); + } + /** * Customer-provided Fabric Cloud Router description * @@ -223,7 +268,10 @@ private CloudRouterState() {} private CloudRouterState(CloudRouterState $) { this.account = $.account; + this.bgpIpv4RoutesCount = $.bgpIpv4RoutesCount; + this.bgpIpv6RoutesCount = $.bgpIpv6RoutesCount; this.changeLogs = $.changeLogs; + this.connectionsCount = $.connectionsCount; this.description = $.description; this.equinixAsn = $.equinixAsn; this.href = $.href; @@ -276,6 +324,48 @@ public Builder account(CloudRouterAccountArgs account) { return account(Output.of(account)); } + /** + * @param bgpIpv4RoutesCount Access point used and maximum number of IPv4 BGP routes + * + * @return builder + * + */ + public Builder bgpIpv4RoutesCount(@Nullable Output bgpIpv4RoutesCount) { + $.bgpIpv4RoutesCount = bgpIpv4RoutesCount; + return this; + } + + /** + * @param bgpIpv4RoutesCount Access point used and maximum number of IPv4 BGP routes + * + * @return builder + * + */ + public Builder bgpIpv4RoutesCount(Integer bgpIpv4RoutesCount) { + return bgpIpv4RoutesCount(Output.of(bgpIpv4RoutesCount)); + } + + /** + * @param bgpIpv6RoutesCount Access point used and maximum number of IPv6 BGP routes + * + * @return builder + * + */ + public Builder bgpIpv6RoutesCount(@Nullable Output bgpIpv6RoutesCount) { + $.bgpIpv6RoutesCount = bgpIpv6RoutesCount; + return this; + } + + /** + * @param bgpIpv6RoutesCount Access point used and maximum number of IPv6 BGP routes + * + * @return builder + * + */ + public Builder bgpIpv6RoutesCount(Integer bgpIpv6RoutesCount) { + return bgpIpv6RoutesCount(Output.of(bgpIpv6RoutesCount)); + } + /** * @param changeLogs Captures Fabric Cloud Router lifecycle change information * @@ -307,6 +397,27 @@ public Builder changeLogs(CloudRouterChangeLogArgs... changeLogs) { return changeLogs(List.of(changeLogs)); } + /** + * @param connectionsCount Number of connections associated with this Access point + * + * @return builder + * + */ + public Builder connectionsCount(@Nullable Output connectionsCount) { + $.connectionsCount = connectionsCount; + return this; + } + + /** + * @param connectionsCount Number of connections associated with this Access point + * + * @return builder + * + */ + public Builder connectionsCount(Integer connectionsCount) { + return connectionsCount(Output.of(connectionsCount)); + } + /** * @param description Customer-provided Fabric Cloud Router description * diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionASideAccessPointArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionASideAccessPointArgs.java index 8fd4b91b..df5fdeae 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionASideAccessPointArgs.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionASideAccessPointArgs.java @@ -124,9 +124,17 @@ public Optional> location() { return Optional.ofNullable(this.location); } + /** + * Simplified Network + * + */ @Import(name="network") private @Nullable Output network; + /** + * @return Simplified Network + * + */ public Optional> network() { return Optional.ofNullable(this.network); } @@ -435,11 +443,23 @@ public Builder location(ConnectionASideAccessPointLocationArgs location) { return location(Output.of(location)); } + /** + * @param network Simplified Network + * + * @return builder + * + */ public Builder network(@Nullable Output network) { $.network = network; return this; } + /** + * @param network Simplified Network + * + * @return builder + * + */ public Builder network(ConnectionASideAccessPointNetworkArgs network) { return network(Output.of(network)); } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionASideAccessPointInterfaceArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionASideAccessPointInterfaceArgs.java index ee461188..5112760a 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionASideAccessPointInterfaceArgs.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionASideAccessPointInterfaceArgs.java @@ -5,6 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import java.lang.Integer; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -20,13 +21,13 @@ public final class ConnectionASideAccessPointInterfaceArgs extends com.pulumi.re * */ @Import(name="id") - private @Nullable Output id; + private @Nullable Output id; /** * @return id * */ - public Optional> id() { + public Optional> id() { return Optional.ofNullable(this.id); } @@ -92,7 +93,7 @@ public Builder(ConnectionASideAccessPointInterfaceArgs defaults) { * @return builder * */ - public Builder id(@Nullable Output id) { + public Builder id(@Nullable Output id) { $.id = id; return this; } @@ -103,7 +104,7 @@ public Builder id(@Nullable Output id) { * @return builder * */ - public Builder id(String id) { + public Builder id(Integer id) { return id(Output.of(id)); } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionASideAccessPointVirtualDeviceArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionASideAccessPointVirtualDeviceArgs.java index 9efdc8ce..b42e8fb5 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionASideAccessPointVirtualDeviceArgs.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionASideAccessPointVirtualDeviceArgs.java @@ -30,6 +30,21 @@ public Optional> href() { return Optional.ofNullable(this.href); } + /** + * Port name + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Port name + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + /** * Interface type * @@ -64,6 +79,7 @@ private ConnectionASideAccessPointVirtualDeviceArgs() {} private ConnectionASideAccessPointVirtualDeviceArgs(ConnectionASideAccessPointVirtualDeviceArgs $) { this.href = $.href; + this.name = $.name; this.type = $.type; this.uuid = $.uuid; } @@ -107,6 +123,27 @@ public Builder href(String href) { return href(Output.of(href)); } + /** + * @param name Port name + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Port name + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + /** * @param type Interface type * diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionZSideAccessPointArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionZSideAccessPointArgs.java index 85f691f3..796b9629 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionZSideAccessPointArgs.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionZSideAccessPointArgs.java @@ -124,9 +124,17 @@ public Optional> location() { return Optional.ofNullable(this.location); } + /** + * Simplified Network + * + */ @Import(name="network") private @Nullable Output network; + /** + * @return Simplified Network + * + */ public Optional> network() { return Optional.ofNullable(this.network); } @@ -435,11 +443,23 @@ public Builder location(ConnectionZSideAccessPointLocationArgs location) { return location(Output.of(location)); } + /** + * @param network Simplified Network + * + * @return builder + * + */ public Builder network(@Nullable Output network) { $.network = network; return this; } + /** + * @param network Simplified Network + * + * @return builder + * + */ public Builder network(ConnectionZSideAccessPointNetworkArgs network) { return network(Output.of(network)); } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionZSideAccessPointInterfaceArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionZSideAccessPointInterfaceArgs.java index 1433f20c..ecc25cd2 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionZSideAccessPointInterfaceArgs.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionZSideAccessPointInterfaceArgs.java @@ -5,6 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import java.lang.Integer; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -20,13 +21,13 @@ public final class ConnectionZSideAccessPointInterfaceArgs extends com.pulumi.re * */ @Import(name="id") - private @Nullable Output id; + private @Nullable Output id; /** * @return id * */ - public Optional> id() { + public Optional> id() { return Optional.ofNullable(this.id); } @@ -92,7 +93,7 @@ public Builder(ConnectionZSideAccessPointInterfaceArgs defaults) { * @return builder * */ - public Builder id(@Nullable Output id) { + public Builder id(@Nullable Output id) { $.id = id; return this; } @@ -103,7 +104,7 @@ public Builder id(@Nullable Output id) { * @return builder * */ - public Builder id(String id) { + public Builder id(Integer id) { return id(Output.of(id)); } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionZSideAccessPointVirtualDeviceArgs.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionZSideAccessPointVirtualDeviceArgs.java index b4fdd3a2..4c5081db 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionZSideAccessPointVirtualDeviceArgs.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/inputs/ConnectionZSideAccessPointVirtualDeviceArgs.java @@ -30,6 +30,21 @@ public Optional> href() { return Optional.ofNullable(this.href); } + /** + * Port name + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Port name + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + /** * Interface type * @@ -64,6 +79,7 @@ private ConnectionZSideAccessPointVirtualDeviceArgs() {} private ConnectionZSideAccessPointVirtualDeviceArgs(ConnectionZSideAccessPointVirtualDeviceArgs $) { this.href = $.href; + this.name = $.name; this.type = $.type; this.uuid = $.uuid; } @@ -107,6 +123,27 @@ public Builder href(String href) { return href(Output.of(href)); } + /** + * @param name Port name + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Port name + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + /** * @param type Interface type * diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionASideAccessPoint.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionASideAccessPoint.java index ce14dff4..18cff87d 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionASideAccessPoint.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionASideAccessPoint.java @@ -55,6 +55,10 @@ public final class ConnectionASideAccessPoint { * */ private @Nullable ConnectionASideAccessPointLocation location; + /** + * @return Simplified Network + * + */ private @Nullable ConnectionASideAccessPointNetwork network; /** * @return Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL @@ -147,6 +151,10 @@ public Optional linkProtocol() { public Optional location() { return Optional.ofNullable(this.location); } + /** + * @return Simplified Network + * + */ public Optional network() { return Optional.ofNullable(this.network); } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionASideAccessPointInterface.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionASideAccessPointInterface.java index e6960b15..09c3924c 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionASideAccessPointInterface.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionASideAccessPointInterface.java @@ -4,6 +4,7 @@ package com.equinix.pulumi.fabric.outputs; import com.pulumi.core.annotations.CustomType; +import java.lang.Integer; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -15,7 +16,7 @@ public final class ConnectionASideAccessPointInterface { * @return id * */ - private @Nullable String id; + private @Nullable Integer id; /** * @return Interface type * @@ -32,7 +33,7 @@ private ConnectionASideAccessPointInterface() {} * @return id * */ - public Optional id() { + public Optional id() { return Optional.ofNullable(this.id); } /** @@ -59,7 +60,7 @@ public static Builder builder(ConnectionASideAccessPointInterface defaults) { } @CustomType.Builder public static final class Builder { - private @Nullable String id; + private @Nullable Integer id; private @Nullable String type; private @Nullable String uuid; public Builder() {} @@ -71,7 +72,7 @@ public Builder(ConnectionASideAccessPointInterface defaults) { } @CustomType.Setter - public Builder id(@Nullable String id) { + public Builder id(@Nullable Integer id) { this.id = id; return this; } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionASideAccessPointVirtualDevice.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionASideAccessPointVirtualDevice.java index 29bfbc59..1ce72b69 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionASideAccessPointVirtualDevice.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionASideAccessPointVirtualDevice.java @@ -16,6 +16,11 @@ public final class ConnectionASideAccessPointVirtualDevice { * */ private @Nullable String href; + /** + * @return Port name + * + */ + private @Nullable String name; /** * @return Interface type * @@ -35,6 +40,13 @@ private ConnectionASideAccessPointVirtualDevice() {} public Optional href() { return Optional.ofNullable(this.href); } + /** + * @return Port name + * + */ + public Optional name() { + return Optional.ofNullable(this.name); + } /** * @return Interface type * @@ -60,12 +72,14 @@ public static Builder builder(ConnectionASideAccessPointVirtualDevice defaults) @CustomType.Builder public static final class Builder { private @Nullable String href; + private @Nullable String name; private @Nullable String type; private @Nullable String uuid; public Builder() {} public Builder(ConnectionASideAccessPointVirtualDevice defaults) { Objects.requireNonNull(defaults); this.href = defaults.href; + this.name = defaults.name; this.type = defaults.type; this.uuid = defaults.uuid; } @@ -76,6 +90,11 @@ public Builder href(@Nullable String href) { return this; } @CustomType.Setter + public Builder name(@Nullable String name) { + this.name = name; + return this; + } + @CustomType.Setter public Builder type(@Nullable String type) { this.type = type; return this; @@ -88,6 +107,7 @@ public Builder uuid(@Nullable String uuid) { public ConnectionASideAccessPointVirtualDevice build() { final var _resultValue = new ConnectionASideAccessPointVirtualDevice(); _resultValue.href = href; + _resultValue.name = name; _resultValue.type = type; _resultValue.uuid = uuid; return _resultValue; diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionZSideAccessPoint.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionZSideAccessPoint.java index d8bab88f..8e49cc62 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionZSideAccessPoint.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionZSideAccessPoint.java @@ -55,6 +55,10 @@ public final class ConnectionZSideAccessPoint { * */ private @Nullable ConnectionZSideAccessPointLocation location; + /** + * @return Simplified Network + * + */ private @Nullable ConnectionZSideAccessPointNetwork network; /** * @return Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL @@ -147,6 +151,10 @@ public Optional linkProtocol() { public Optional location() { return Optional.ofNullable(this.location); } + /** + * @return Simplified Network + * + */ public Optional network() { return Optional.ofNullable(this.network); } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionZSideAccessPointInterface.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionZSideAccessPointInterface.java index 76f96cce..12195e9c 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionZSideAccessPointInterface.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionZSideAccessPointInterface.java @@ -4,6 +4,7 @@ package com.equinix.pulumi.fabric.outputs; import com.pulumi.core.annotations.CustomType; +import java.lang.Integer; import java.lang.String; import java.util.Objects; import java.util.Optional; @@ -15,7 +16,7 @@ public final class ConnectionZSideAccessPointInterface { * @return id * */ - private @Nullable String id; + private @Nullable Integer id; /** * @return Interface type * @@ -32,7 +33,7 @@ private ConnectionZSideAccessPointInterface() {} * @return id * */ - public Optional id() { + public Optional id() { return Optional.ofNullable(this.id); } /** @@ -59,7 +60,7 @@ public static Builder builder(ConnectionZSideAccessPointInterface defaults) { } @CustomType.Builder public static final class Builder { - private @Nullable String id; + private @Nullable Integer id; private @Nullable String type; private @Nullable String uuid; public Builder() {} @@ -71,7 +72,7 @@ public Builder(ConnectionZSideAccessPointInterface defaults) { } @CustomType.Setter - public Builder id(@Nullable String id) { + public Builder id(@Nullable Integer id) { this.id = id; return this; } diff --git a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionZSideAccessPointVirtualDevice.java b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionZSideAccessPointVirtualDevice.java index e8225b37..378ff643 100644 --- a/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionZSideAccessPointVirtualDevice.java +++ b/sdk/java/src/main/java/com/equinix/pulumi/fabric/outputs/ConnectionZSideAccessPointVirtualDevice.java @@ -16,6 +16,11 @@ public final class ConnectionZSideAccessPointVirtualDevice { * */ private @Nullable String href; + /** + * @return Port name + * + */ + private @Nullable String name; /** * @return Interface type * @@ -35,6 +40,13 @@ private ConnectionZSideAccessPointVirtualDevice() {} public Optional href() { return Optional.ofNullable(this.href); } + /** + * @return Port name + * + */ + public Optional name() { + return Optional.ofNullable(this.name); + } /** * @return Interface type * @@ -60,12 +72,14 @@ public static Builder builder(ConnectionZSideAccessPointVirtualDevice defaults) @CustomType.Builder public static final class Builder { private @Nullable String href; + private @Nullable String name; private @Nullable String type; private @Nullable String uuid; public Builder() {} public Builder(ConnectionZSideAccessPointVirtualDevice defaults) { Objects.requireNonNull(defaults); this.href = defaults.href; + this.name = defaults.name; this.type = defaults.type; this.uuid = defaults.uuid; } @@ -76,6 +90,11 @@ public Builder href(@Nullable String href) { return this; } @CustomType.Setter + public Builder name(@Nullable String name) { + this.name = name; + return this; + } + @CustomType.Setter public Builder type(@Nullable String type) { this.type = type; return this; @@ -88,6 +107,7 @@ public Builder uuid(@Nullable String uuid) { public ConnectionZSideAccessPointVirtualDevice build() { final var _resultValue = new ConnectionZSideAccessPointVirtualDevice(); _resultValue.href = href; + _resultValue.name = name; _resultValue.type = type; _resultValue.uuid = uuid; return _resultValue; diff --git a/sdk/nodejs/fabric/cloudRouter.ts b/sdk/nodejs/fabric/cloudRouter.ts index a35fb8b4..e6088b31 100644 --- a/sdk/nodejs/fabric/cloudRouter.ts +++ b/sdk/nodejs/fabric/cloudRouter.ts @@ -69,10 +69,22 @@ export class CloudRouter extends pulumi.CustomResource { * Customer account information that is associated with this Fabric Cloud Router */ public readonly account!: pulumi.Output; + /** + * Access point used and maximum number of IPv4 BGP routes + */ + public /*out*/ readonly bgpIpv4RoutesCount!: pulumi.Output; + /** + * Access point used and maximum number of IPv6 BGP routes + */ + public /*out*/ readonly bgpIpv6RoutesCount!: pulumi.Output; /** * Captures Fabric Cloud Router lifecycle change information */ public /*out*/ readonly changeLogs!: pulumi.Output; + /** + * Number of connections associated with this Access point + */ + public /*out*/ readonly connectionsCount!: pulumi.Output; /** * Customer-provided Fabric Cloud Router description */ @@ -132,7 +144,10 @@ export class CloudRouter extends pulumi.CustomResource { if (opts.id) { const state = argsOrState as CloudRouterState | undefined; resourceInputs["account"] = state ? state.account : undefined; + resourceInputs["bgpIpv4RoutesCount"] = state ? state.bgpIpv4RoutesCount : undefined; + resourceInputs["bgpIpv6RoutesCount"] = state ? state.bgpIpv6RoutesCount : undefined; resourceInputs["changeLogs"] = state ? state.changeLogs : undefined; + resourceInputs["connectionsCount"] = state ? state.connectionsCount : undefined; resourceInputs["description"] = state ? state.description : undefined; resourceInputs["equinixAsn"] = state ? state.equinixAsn : undefined; resourceInputs["href"] = state ? state.href : undefined; @@ -167,7 +182,10 @@ export class CloudRouter extends pulumi.CustomResource { resourceInputs["package"] = args ? args.package : undefined; resourceInputs["project"] = args ? args.project : undefined; resourceInputs["type"] = args ? args.type : undefined; + resourceInputs["bgpIpv4RoutesCount"] = undefined /*out*/; + resourceInputs["bgpIpv6RoutesCount"] = undefined /*out*/; resourceInputs["changeLogs"] = undefined /*out*/; + resourceInputs["connectionsCount"] = undefined /*out*/; resourceInputs["equinixAsn"] = undefined /*out*/; resourceInputs["href"] = undefined /*out*/; resourceInputs["state"] = undefined /*out*/; @@ -185,10 +203,22 @@ export interface CloudRouterState { * Customer account information that is associated with this Fabric Cloud Router */ account?: pulumi.Input; + /** + * Access point used and maximum number of IPv4 BGP routes + */ + bgpIpv4RoutesCount?: pulumi.Input; + /** + * Access point used and maximum number of IPv6 BGP routes + */ + bgpIpv6RoutesCount?: pulumi.Input; /** * Captures Fabric Cloud Router lifecycle change information */ changeLogs?: pulumi.Input[]>; + /** + * Number of connections associated with this Access point + */ + connectionsCount?: pulumi.Input; /** * Customer-provided Fabric Cloud Router description */ diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index 0f6d3253..47b8de61 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -140,6 +140,9 @@ export namespace fabric { * Access point location */ location?: pulumi.Input; + /** + * Simplified Network + */ network?: pulumi.Input; /** * Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL @@ -204,7 +207,7 @@ export namespace fabric { /** * id */ - id?: pulumi.Input; + id?: pulumi.Input; /** * Interface type */ @@ -359,6 +362,10 @@ export namespace fabric { * Unique Resource Identifier */ href?: pulumi.Input; + /** + * Port name + */ + name?: pulumi.Input; /** * Interface type */ @@ -543,6 +550,9 @@ export namespace fabric { * Access point location */ location?: pulumi.Input; + /** + * Simplified Network + */ network?: pulumi.Input; /** * Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL @@ -607,7 +617,7 @@ export namespace fabric { /** * id */ - id?: pulumi.Input; + id?: pulumi.Input; /** * Interface type */ @@ -762,6 +772,10 @@ export namespace fabric { * Unique Resource Identifier */ href?: pulumi.Input; + /** + * Port name + */ + name?: pulumi.Input; /** * Interface type */ diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index 965fb721..f47516a5 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -140,6 +140,9 @@ export namespace fabric { * Access point location */ location: outputs.fabric.ConnectionASideAccessPointLocation; + /** + * Simplified Network + */ network?: outputs.fabric.ConnectionASideAccessPointNetwork; /** * Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL @@ -204,7 +207,7 @@ export namespace fabric { /** * id */ - id: string; + id: number; /** * Interface type */ @@ -359,6 +362,10 @@ export namespace fabric { * Unique Resource Identifier */ href: string; + /** + * Port name + */ + name?: string; /** * Interface type */ @@ -543,6 +550,9 @@ export namespace fabric { * Access point location */ location: outputs.fabric.ConnectionZSideAccessPointLocation; + /** + * Simplified Network + */ network?: outputs.fabric.ConnectionZSideAccessPointNetwork; /** * Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL @@ -607,7 +617,7 @@ export namespace fabric { /** * id */ - id: string; + id: number; /** * Interface type */ @@ -762,6 +772,10 @@ export namespace fabric { * Unique Resource Identifier */ href: string; + /** + * Port name + */ + name?: string; /** * Interface type */ diff --git a/sdk/python/pulumi_equinix/fabric/_inputs.py b/sdk/python/pulumi_equinix/fabric/_inputs.py index 92127dbb..354e90a4 100644 --- a/sdk/python/pulumi_equinix/fabric/_inputs.py +++ b/sdk/python/pulumi_equinix/fabric/_inputs.py @@ -608,6 +608,7 @@ def __init__(__self__, *, :param pulumi.Input['ConnectionASideAccessPointInterfaceArgs'] interface: Virtual device interface :param pulumi.Input['ConnectionASideAccessPointLinkProtocolArgs'] link_protocol: Connection link protocol :param pulumi.Input['ConnectionASideAccessPointLocationArgs'] location: Access point location + :param pulumi.Input['ConnectionASideAccessPointNetworkArgs'] network: Simplified Network :param pulumi.Input[Union[str, 'AccessPointPeeringType']] peering_type: Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL :param pulumi.Input['ConnectionASideAccessPointPortArgs'] port: Port access point information :param pulumi.Input['ConnectionASideAccessPointProfileArgs'] profile: Service Profile @@ -729,6 +730,9 @@ def location(self, value: Optional[pulumi.Input['ConnectionASideAccessPointLocat @property @pulumi.getter def network(self) -> Optional[pulumi.Input['ConnectionASideAccessPointNetworkArgs']]: + """ + Simplified Network + """ return pulumi.get(self, "network") @network.setter @@ -975,11 +979,11 @@ def uuid(self, value: Optional[pulumi.Input[str]]): @pulumi.input_type class ConnectionASideAccessPointInterfaceArgs: def __init__(__self__, *, - id: Optional[pulumi.Input[str]] = None, + id: Optional[pulumi.Input[int]] = None, type: Optional[pulumi.Input[str]] = None, uuid: Optional[pulumi.Input[str]] = None): """ - :param pulumi.Input[str] id: id + :param pulumi.Input[int] id: id :param pulumi.Input[str] type: Interface type :param pulumi.Input[str] uuid: Equinix-assigned interface identifier """ @@ -992,14 +996,14 @@ def __init__(__self__, *, @property @pulumi.getter - def id(self) -> Optional[pulumi.Input[str]]: + def id(self) -> Optional[pulumi.Input[int]]: """ id """ return pulumi.get(self, "id") @id.setter - def id(self, value: Optional[pulumi.Input[str]]): + def id(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "id", value) @property @@ -1540,15 +1544,19 @@ def uuid(self, value: Optional[pulumi.Input[str]]): class ConnectionASideAccessPointVirtualDeviceArgs: def __init__(__self__, *, href: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, type: Optional[pulumi.Input[str]] = None, uuid: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input[str] href: Unique Resource Identifier + :param pulumi.Input[str] name: Port name :param pulumi.Input[str] type: Interface type :param pulumi.Input[str] uuid: Equinix-assigned interface identifier """ if href is not None: pulumi.set(__self__, "href", href) + if name is not None: + pulumi.set(__self__, "name", name) if type is not None: pulumi.set(__self__, "type", type) if uuid is not None: @@ -1566,6 +1574,18 @@ def href(self) -> Optional[pulumi.Input[str]]: def href(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "href", value) + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + Port name + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + @property @pulumi.getter def type(self) -> Optional[pulumi.Input[str]]: @@ -2374,6 +2394,7 @@ def __init__(__self__, *, :param pulumi.Input['ConnectionZSideAccessPointInterfaceArgs'] interface: Virtual device interface :param pulumi.Input['ConnectionZSideAccessPointLinkProtocolArgs'] link_protocol: Connection link protocol :param pulumi.Input['ConnectionZSideAccessPointLocationArgs'] location: Access point location + :param pulumi.Input['ConnectionZSideAccessPointNetworkArgs'] network: Simplified Network :param pulumi.Input[Union[str, 'AccessPointPeeringType']] peering_type: Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL :param pulumi.Input['ConnectionZSideAccessPointPortArgs'] port: Port access point information :param pulumi.Input['ConnectionZSideAccessPointProfileArgs'] profile: Service Profile @@ -2495,6 +2516,9 @@ def location(self, value: Optional[pulumi.Input['ConnectionZSideAccessPointLocat @property @pulumi.getter def network(self) -> Optional[pulumi.Input['ConnectionZSideAccessPointNetworkArgs']]: + """ + Simplified Network + """ return pulumi.get(self, "network") @network.setter @@ -2741,11 +2765,11 @@ def uuid(self, value: Optional[pulumi.Input[str]]): @pulumi.input_type class ConnectionZSideAccessPointInterfaceArgs: def __init__(__self__, *, - id: Optional[pulumi.Input[str]] = None, + id: Optional[pulumi.Input[int]] = None, type: Optional[pulumi.Input[str]] = None, uuid: Optional[pulumi.Input[str]] = None): """ - :param pulumi.Input[str] id: id + :param pulumi.Input[int] id: id :param pulumi.Input[str] type: Interface type :param pulumi.Input[str] uuid: Equinix-assigned interface identifier """ @@ -2758,14 +2782,14 @@ def __init__(__self__, *, @property @pulumi.getter - def id(self) -> Optional[pulumi.Input[str]]: + def id(self) -> Optional[pulumi.Input[int]]: """ id """ return pulumi.get(self, "id") @id.setter - def id(self, value: Optional[pulumi.Input[str]]): + def id(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "id", value) @property @@ -3306,15 +3330,19 @@ def uuid(self, value: Optional[pulumi.Input[str]]): class ConnectionZSideAccessPointVirtualDeviceArgs: def __init__(__self__, *, href: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, type: Optional[pulumi.Input[str]] = None, uuid: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input[str] href: Unique Resource Identifier + :param pulumi.Input[str] name: Port name :param pulumi.Input[str] type: Interface type :param pulumi.Input[str] uuid: Equinix-assigned interface identifier """ if href is not None: pulumi.set(__self__, "href", href) + if name is not None: + pulumi.set(__self__, "name", name) if type is not None: pulumi.set(__self__, "type", type) if uuid is not None: @@ -3332,6 +3360,18 @@ def href(self) -> Optional[pulumi.Input[str]]: def href(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "href", value) + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + Port name + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + @property @pulumi.getter def type(self) -> Optional[pulumi.Input[str]]: diff --git a/sdk/python/pulumi_equinix/fabric/cloud_router.py b/sdk/python/pulumi_equinix/fabric/cloud_router.py index b83793de..5ac86688 100644 --- a/sdk/python/pulumi_equinix/fabric/cloud_router.py +++ b/sdk/python/pulumi_equinix/fabric/cloud_router.py @@ -165,7 +165,10 @@ def project(self, value: Optional[pulumi.Input['CloudRouterProjectArgs']]): class _CloudRouterState: def __init__(__self__, *, account: Optional[pulumi.Input['CloudRouterAccountArgs']] = None, + bgp_ipv4_routes_count: Optional[pulumi.Input[int]] = None, + bgp_ipv6_routes_count: Optional[pulumi.Input[int]] = None, change_logs: Optional[pulumi.Input[Sequence[pulumi.Input['CloudRouterChangeLogArgs']]]] = None, + connections_count: Optional[pulumi.Input[int]] = None, description: Optional[pulumi.Input[str]] = None, equinix_asn: Optional[pulumi.Input[int]] = None, href: Optional[pulumi.Input[str]] = None, @@ -180,7 +183,10 @@ def __init__(__self__, *, """ Input properties used for looking up and filtering CloudRouter resources. :param pulumi.Input['CloudRouterAccountArgs'] account: Customer account information that is associated with this Fabric Cloud Router + :param pulumi.Input[int] bgp_ipv4_routes_count: Access point used and maximum number of IPv4 BGP routes + :param pulumi.Input[int] bgp_ipv6_routes_count: Access point used and maximum number of IPv6 BGP routes :param pulumi.Input[Sequence[pulumi.Input['CloudRouterChangeLogArgs']]] change_logs: Captures Fabric Cloud Router lifecycle change information + :param pulumi.Input[int] connections_count: Number of connections associated with this Access point :param pulumi.Input[str] description: Customer-provided Fabric Cloud Router description :param pulumi.Input[int] equinix_asn: Equinix ASN :param pulumi.Input[str] href: Unique Resource URL @@ -195,8 +201,14 @@ def __init__(__self__, *, """ if account is not None: pulumi.set(__self__, "account", account) + if bgp_ipv4_routes_count is not None: + pulumi.set(__self__, "bgp_ipv4_routes_count", bgp_ipv4_routes_count) + if bgp_ipv6_routes_count is not None: + pulumi.set(__self__, "bgp_ipv6_routes_count", bgp_ipv6_routes_count) if change_logs is not None: pulumi.set(__self__, "change_logs", change_logs) + if connections_count is not None: + pulumi.set(__self__, "connections_count", connections_count) if description is not None: pulumi.set(__self__, "description", description) if equinix_asn is not None: @@ -232,6 +244,30 @@ def account(self) -> Optional[pulumi.Input['CloudRouterAccountArgs']]: def account(self, value: Optional[pulumi.Input['CloudRouterAccountArgs']]): pulumi.set(self, "account", value) + @property + @pulumi.getter(name="bgpIpv4RoutesCount") + def bgp_ipv4_routes_count(self) -> Optional[pulumi.Input[int]]: + """ + Access point used and maximum number of IPv4 BGP routes + """ + return pulumi.get(self, "bgp_ipv4_routes_count") + + @bgp_ipv4_routes_count.setter + def bgp_ipv4_routes_count(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "bgp_ipv4_routes_count", value) + + @property + @pulumi.getter(name="bgpIpv6RoutesCount") + def bgp_ipv6_routes_count(self) -> Optional[pulumi.Input[int]]: + """ + Access point used and maximum number of IPv6 BGP routes + """ + return pulumi.get(self, "bgp_ipv6_routes_count") + + @bgp_ipv6_routes_count.setter + def bgp_ipv6_routes_count(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "bgp_ipv6_routes_count", value) + @property @pulumi.getter(name="changeLogs") def change_logs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['CloudRouterChangeLogArgs']]]]: @@ -244,6 +280,18 @@ def change_logs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['CloudRoute def change_logs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['CloudRouterChangeLogArgs']]]]): pulumi.set(self, "change_logs", value) + @property + @pulumi.getter(name="connectionsCount") + def connections_count(self) -> Optional[pulumi.Input[int]]: + """ + Number of connections associated with this Access point + """ + return pulumi.get(self, "connections_count") + + @connections_count.setter + def connections_count(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "connections_count", value) + @property @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: @@ -520,7 +568,10 @@ def _internal_init(__self__, if type is None and not opts.urn: raise TypeError("Missing required property 'type'") __props__.__dict__["type"] = type + __props__.__dict__["bgp_ipv4_routes_count"] = None + __props__.__dict__["bgp_ipv6_routes_count"] = None __props__.__dict__["change_logs"] = None + __props__.__dict__["connections_count"] = None __props__.__dict__["equinix_asn"] = None __props__.__dict__["href"] = None __props__.__dict__["state"] = None @@ -535,7 +586,10 @@ def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, account: Optional[pulumi.Input[pulumi.InputType['CloudRouterAccountArgs']]] = None, + bgp_ipv4_routes_count: Optional[pulumi.Input[int]] = None, + bgp_ipv6_routes_count: Optional[pulumi.Input[int]] = None, change_logs: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['CloudRouterChangeLogArgs']]]]] = None, + connections_count: Optional[pulumi.Input[int]] = None, description: Optional[pulumi.Input[str]] = None, equinix_asn: Optional[pulumi.Input[int]] = None, href: Optional[pulumi.Input[str]] = None, @@ -555,7 +609,10 @@ def get(resource_name: str, :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[pulumi.InputType['CloudRouterAccountArgs']] account: Customer account information that is associated with this Fabric Cloud Router + :param pulumi.Input[int] bgp_ipv4_routes_count: Access point used and maximum number of IPv4 BGP routes + :param pulumi.Input[int] bgp_ipv6_routes_count: Access point used and maximum number of IPv6 BGP routes :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['CloudRouterChangeLogArgs']]]] change_logs: Captures Fabric Cloud Router lifecycle change information + :param pulumi.Input[int] connections_count: Number of connections associated with this Access point :param pulumi.Input[str] description: Customer-provided Fabric Cloud Router description :param pulumi.Input[int] equinix_asn: Equinix ASN :param pulumi.Input[str] href: Unique Resource URL @@ -573,7 +630,10 @@ def get(resource_name: str, __props__ = _CloudRouterState.__new__(_CloudRouterState) __props__.__dict__["account"] = account + __props__.__dict__["bgp_ipv4_routes_count"] = bgp_ipv4_routes_count + __props__.__dict__["bgp_ipv6_routes_count"] = bgp_ipv6_routes_count __props__.__dict__["change_logs"] = change_logs + __props__.__dict__["connections_count"] = connections_count __props__.__dict__["description"] = description __props__.__dict__["equinix_asn"] = equinix_asn __props__.__dict__["href"] = href @@ -595,6 +655,22 @@ def account(self) -> pulumi.Output[Optional['outputs.CloudRouterAccount']]: """ return pulumi.get(self, "account") + @property + @pulumi.getter(name="bgpIpv4RoutesCount") + def bgp_ipv4_routes_count(self) -> pulumi.Output[int]: + """ + Access point used and maximum number of IPv4 BGP routes + """ + return pulumi.get(self, "bgp_ipv4_routes_count") + + @property + @pulumi.getter(name="bgpIpv6RoutesCount") + def bgp_ipv6_routes_count(self) -> pulumi.Output[int]: + """ + Access point used and maximum number of IPv6 BGP routes + """ + return pulumi.get(self, "bgp_ipv6_routes_count") + @property @pulumi.getter(name="changeLogs") def change_logs(self) -> pulumi.Output[Sequence['outputs.CloudRouterChangeLog']]: @@ -603,6 +679,14 @@ def change_logs(self) -> pulumi.Output[Sequence['outputs.CloudRouterChangeLog']] """ return pulumi.get(self, "change_logs") + @property + @pulumi.getter(name="connectionsCount") + def connections_count(self) -> pulumi.Output[int]: + """ + Number of connections associated with this Access point + """ + return pulumi.get(self, "connections_count") + @property @pulumi.getter def description(self) -> pulumi.Output[Optional[str]]: diff --git a/sdk/python/pulumi_equinix/fabric/outputs.py b/sdk/python/pulumi_equinix/fabric/outputs.py index 5fd80883..48649219 100644 --- a/sdk/python/pulumi_equinix/fabric/outputs.py +++ b/sdk/python/pulumi_equinix/fabric/outputs.py @@ -771,6 +771,7 @@ def __init__(__self__, *, :param 'ConnectionASideAccessPointInterfaceArgs' interface: Virtual device interface :param 'ConnectionASideAccessPointLinkProtocolArgs' link_protocol: Connection link protocol :param 'ConnectionASideAccessPointLocationArgs' location: Access point location + :param 'ConnectionASideAccessPointNetworkArgs' network: Simplified Network :param Union[str, 'AccessPointPeeringType'] peering_type: Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL :param 'ConnectionASideAccessPointPortArgs' port: Port access point information :param 'ConnectionASideAccessPointProfileArgs' profile: Service Profile @@ -865,6 +866,9 @@ def location(self) -> Optional['outputs.ConnectionASideAccessPointLocation']: @property @pulumi.getter def network(self) -> Optional['outputs.ConnectionASideAccessPointNetwork']: + """ + Simplified Network + """ return pulumi.get(self, "network") @property @@ -1064,11 +1068,11 @@ def uuid(self) -> Optional[str]: @pulumi.output_type class ConnectionASideAccessPointInterface(dict): def __init__(__self__, *, - id: Optional[str] = None, + id: Optional[int] = None, type: Optional[str] = None, uuid: Optional[str] = None): """ - :param str id: id + :param int id: id :param str type: Interface type :param str uuid: Equinix-assigned interface identifier """ @@ -1081,7 +1085,7 @@ def __init__(__self__, *, @property @pulumi.getter - def id(self) -> Optional[str]: + def id(self) -> Optional[int]: """ id """ @@ -1562,15 +1566,19 @@ def uuid(self) -> Optional[str]: class ConnectionASideAccessPointVirtualDevice(dict): def __init__(__self__, *, href: Optional[str] = None, + name: Optional[str] = None, type: Optional[str] = None, uuid: Optional[str] = None): """ :param str href: Unique Resource Identifier + :param str name: Port name :param str type: Interface type :param str uuid: Equinix-assigned interface identifier """ if href is not None: pulumi.set(__self__, "href", href) + if name is not None: + pulumi.set(__self__, "name", name) if type is not None: pulumi.set(__self__, "type", type) if uuid is not None: @@ -1584,6 +1592,14 @@ def href(self) -> Optional[str]: """ return pulumi.get(self, "href") + @property + @pulumi.getter + def name(self) -> Optional[str]: + """ + Port name + """ + return pulumi.get(self, "name") + @property @pulumi.getter def type(self) -> Optional[str]: @@ -2401,6 +2417,7 @@ def __init__(__self__, *, :param 'ConnectionZSideAccessPointInterfaceArgs' interface: Virtual device interface :param 'ConnectionZSideAccessPointLinkProtocolArgs' link_protocol: Connection link protocol :param 'ConnectionZSideAccessPointLocationArgs' location: Access point location + :param 'ConnectionZSideAccessPointNetworkArgs' network: Simplified Network :param Union[str, 'AccessPointPeeringType'] peering_type: Peering Type- PRIVATE,MICROSOFT,PUBLIC, MANUAL :param 'ConnectionZSideAccessPointPortArgs' port: Port access point information :param 'ConnectionZSideAccessPointProfileArgs' profile: Service Profile @@ -2495,6 +2512,9 @@ def location(self) -> Optional['outputs.ConnectionZSideAccessPointLocation']: @property @pulumi.getter def network(self) -> Optional['outputs.ConnectionZSideAccessPointNetwork']: + """ + Simplified Network + """ return pulumi.get(self, "network") @property @@ -2694,11 +2714,11 @@ def uuid(self) -> Optional[str]: @pulumi.output_type class ConnectionZSideAccessPointInterface(dict): def __init__(__self__, *, - id: Optional[str] = None, + id: Optional[int] = None, type: Optional[str] = None, uuid: Optional[str] = None): """ - :param str id: id + :param int id: id :param str type: Interface type :param str uuid: Equinix-assigned interface identifier """ @@ -2711,7 +2731,7 @@ def __init__(__self__, *, @property @pulumi.getter - def id(self) -> Optional[str]: + def id(self) -> Optional[int]: """ id """ @@ -3192,15 +3212,19 @@ def uuid(self) -> Optional[str]: class ConnectionZSideAccessPointVirtualDevice(dict): def __init__(__self__, *, href: Optional[str] = None, + name: Optional[str] = None, type: Optional[str] = None, uuid: Optional[str] = None): """ :param str href: Unique Resource Identifier + :param str name: Port name :param str type: Interface type :param str uuid: Equinix-assigned interface identifier """ if href is not None: pulumi.set(__self__, "href", href) + if name is not None: + pulumi.set(__self__, "name", name) if type is not None: pulumi.set(__self__, "type", type) if uuid is not None: @@ -3214,6 +3238,14 @@ def href(self) -> Optional[str]: """ return pulumi.get(self, "href") + @property + @pulumi.getter + def name(self) -> Optional[str]: + """ + Port name + """ + return pulumi.get(self, "name") + @property @pulumi.getter def type(self) -> Optional[str]: