diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 000000000..4d052c079 --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,23 @@ +name: Pull Request +on: pull_request +jobs: + tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: 'stable' + - run: go version + + - name: Run tidy + run: make tidy + + - name: Run fmt + run: go fmt ./... + + - name: Run linter + run: make lint + + - name: Fail if changes + run: git diff-index --exit-code HEAD diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 092dbe7bc..7e547a0bc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,18 +25,6 @@ jobs: go-version: 'stable' - run: go version - - name: Run tidy - run: make tidy - - - name: Run fmt - run: go fmt ./... - - - name: Fail if changes - run: git diff-index --exit-code HEAD - - - name: Run linter - run: make lint - - name: Update system packages run: sudo apt-get update -y diff --git a/go.mod b/go.mod index b4903b447..e25f9ece5 100644 --- a/go.mod +++ b/go.mod @@ -4,8 +4,8 @@ require ( github.com/go-resty/resty/v2 v2.11.0 github.com/google/go-cmp v0.6.0 github.com/jarcoal/httpmock v1.3.1 - golang.org/x/net v0.21.0 - golang.org/x/oauth2 v0.17.0 + golang.org/x/net v0.22.0 + golang.org/x/oauth2 v0.18.0 golang.org/x/text v0.14.0 gopkg.in/ini.v1 v1.66.6 ) diff --git a/go.sum b/go.sum index 58cb0eb9e..d8fcb0f2c 100644 --- a/go.sum +++ b/go.sum @@ -27,10 +27,10 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= -golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/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= diff --git a/go.work.sum b/go.work.sum index 072cf38f0..12fd30dbe 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,7 +1,9 @@ cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= cloud.google.com/go/bigquery v1.8.0 h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA= +cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute/metadata v0.2.0 h1:nBbNSZyDpkNlo3DepaaLKVuO7ClyifSAmNloSCZrHnQ= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= @@ -79,6 +81,7 @@ github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+ github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian/v3 v3.1.0 h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5 h1:zIaiqGYDQwa4HVx5wGRTXbx38Pqxjemn4BP98wpzpXo= @@ -171,6 +174,7 @@ golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72 golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y= golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI= @@ -193,10 +197,8 @@ golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= diff --git a/instance_config_interfaces.go b/instance_config_interfaces.go index 7f4ca1327..cacce476e 100644 --- a/instance_config_interfaces.go +++ b/instance_config_interfaces.go @@ -36,9 +36,9 @@ type InstanceConfigInterfaceCreateOptions struct { } type InstanceConfigInterfaceUpdateOptions struct { - Primary bool `json:"primary,omitempty"` - IPv4 *VPCIPv4 `json:"ipv4,omitempty"` - IPRanges []string `json:"ip_ranges,omitempty"` + Primary bool `json:"primary,omitempty"` + IPv4 *VPCIPv4 `json:"ipv4,omitempty"` + IPRanges *[]string `json:"ip_ranges,omitempty"` } type InstanceConfigInterfacesReorderOptions struct { @@ -91,8 +91,13 @@ func (i InstanceConfigInterface) GetUpdateOptions() InstanceConfigInterfaceUpdat } } - if len(i.IPRanges) > 0 { - opts.IPRanges = i.IPRanges + if i.IPRanges != nil { + // Copy the slice to prevent accidental + // mutations + copiedIPRanges := make([]string, len(i.IPRanges)) + copy(copiedIPRanges, i.IPRanges) + + opts.IPRanges = &copiedIPRanges } return opts diff --git a/k8s/go.mod b/k8s/go.mod index a8ac2c9d1..1207cb9ae 100644 --- a/k8s/go.mod +++ b/k8s/go.mod @@ -29,10 +29,10 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/net v0.21.0 // indirect - golang.org/x/oauth2 v0.17.0 // indirect - golang.org/x/sys v0.17.0 // indirect - golang.org/x/term v0.17.0 // indirect + golang.org/x/net v0.22.0 // indirect + golang.org/x/oauth2 v0.18.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/k8s/go.sum b/k8s/go.sum index 608d57fe0..3a455eae3 100644 --- a/k8s/go.sum +++ b/k8s/go.sum @@ -94,10 +94,10 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= -golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -113,15 +113,15 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= diff --git a/test/go.mod b/test/go.mod index 9b7b52ca1..537622a1b 100644 --- a/test/go.mod +++ b/test/go.mod @@ -6,8 +6,8 @@ require ( github.com/jarcoal/httpmock v1.3.1 github.com/linode/linodego v1.25.0 github.com/linode/linodego/k8s v0.0.0-00010101000000-000000000000 - golang.org/x/net v0.21.0 - golang.org/x/oauth2 v0.17.0 + golang.org/x/net v0.22.0 + golang.org/x/oauth2 v0.18.0 k8s.io/client-go v0.28.1 ) @@ -32,8 +32,8 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/sys v0.17.0 // indirect - golang.org/x/term v0.17.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/test/go.sum b/test/go.sum index 7d530e00d..2ec2fde2f 100644 --- a/test/go.sum +++ b/test/go.sum @@ -99,10 +99,10 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= -golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -118,15 +118,15 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= diff --git a/test/integration/fixtures/TestInstance_ConfigInterface_Update.yaml b/test/integration/fixtures/TestInstance_ConfigInterface_Update.yaml index 1f7046986..acb19fd9d 100644 --- a/test/integration/fixtures/TestInstance_ConfigInterface_Update.yaml +++ b/test/integration/fixtures/TestInstance_ConfigInterface_Update.yaml @@ -228,7 +228,7 @@ interactions: Content-Type: - application/json Expires: - - Wed, 14 Feb 2024 18:09:14 GMT + - Mon, 04 Mar 2024 20:22:16 GMT Pragma: - no-cache Strict-Transport-Security: @@ -254,7 +254,7 @@ interactions: code: 200 duration: "" - request: - body: '{"region":"us-iad","type":"g6-nanode-1","label":"go-test-ins-wo-disk-73be3u8uqn82","booted":false}' + body: '{"region":"us-iad","type":"g6-nanode-1","label":"go-test-ins-wo-disk-o27gv95tu35t","booted":false}' form: {} headers: Accept: @@ -266,15 +266,15 @@ interactions: url: https://api.linode.com/v4beta/linode/instances method: POST response: - body: '{"id": 54933555, "label": "go-test-ins-wo-disk-73be3u8uqn82", "group": + body: '{"id": 55633797, "label": "go-test-ins-wo-disk-o27gv95tu35t", "group": "", "status": "provisioning", "created": "2018-01-02T03:04:05", "updated": "2018-01-02T03:04:05", - "type": "g6-nanode-1", "ipv4": ["139.144.202.63"], "ipv6": "1234::5678/128", + "type": "g6-nanode-1", "ipv4": ["172.233.196.252"], "ipv6": "1234::5678/128", "image": null, "region": "us-iad", "specs": {"disk": 25600, "memory": 1024, "vcpus": 1, "gpus": 0, "transfer": 1000}, "alerts": {"cpu": 90, "network_in": 10, "network_out": 10, "transfer_quota": 80, "io": 10000}, "backups": {"enabled": false, "available": false, "schedule": {"day": null, "window": null}, "last_successful": null}, "hypervisor": "kvm", "watchdog_enabled": true, "tags": [], "host_uuid": - "069a01c443a4c034edaff10aeecdf8fb95ec66ba", "has_user_data": false}' + "bf7a891314cca054680070d406f60283ad2477aa", "has_user_data": false}' headers: Access-Control-Allow-Credentials: - "true" @@ -291,13 +291,13 @@ interactions: Connection: - keep-alive Content-Length: - - "737" + - "738" Content-Security-Policy: - default-src 'none' Content-Type: - application/json Expires: - - Wed, 14 Feb 2024 18:09:15 GMT + - Mon, 04 Mar 2024 20:22:16 GMT Pragma: - no-cache Strict-Transport-Security: @@ -321,7 +321,7 @@ interactions: code: 200 duration: "" - request: - body: '{"label":"go-test-conf-9iut07dbo832","devices":{},"interfaces":null}' + body: '{"label":"go-test-conf-tes2d3k1745m","devices":{},"interfaces":null}' form: {} headers: Accept: @@ -330,10 +330,10 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/linode/instances/54933555/configs + url: https://api.linode.com/v4beta/linode/instances/55633797/configs method: POST response: - body: '{"id": 58037972, "label": "go-test-conf-9iut07dbo832", "helpers": {"updatedb_disabled": + body: '{"id": 58758984, "label": "go-test-conf-tes2d3k1745m", "helpers": {"updatedb_disabled": true, "distro": true, "modules_dep": true, "network": true, "devtmpfs_automount": true}, "kernel": "linode/latest-64bit", "comments": "", "memory_limit": 0, "created": "2018-01-02T03:04:05", "updated": "2018-01-02T03:04:05", "root_device": "/dev/sda", @@ -362,7 +362,7 @@ interactions: Content-Type: - application/json Expires: - - Wed, 14 Feb 2024 18:09:15 GMT + - Mon, 04 Mar 2024 20:22:16 GMT Pragma: - no-cache Strict-Transport-Security: @@ -386,7 +386,7 @@ interactions: code: 200 duration: "" - request: - body: '{"label":"go-test-vpc-1707934155274221000","region":"us-iad","subnets":[{"label":"linodego-vpc-test-1707934155274261000","ipv4":"192.168.0.0/25"}]}' + body: '{"label":"go-test-vpc-1709583736746076000","region":"us-iad","subnets":[{"label":"linodego-vpc-test-1709583736746145000","ipv4":"192.168.0.0/25"}]}' form: {} headers: Accept: @@ -398,8 +398,8 @@ interactions: url: https://api.linode.com/v4beta/vpcs method: POST response: - body: '{"id": 22685, "label": "go-test-vpc-1707934155274221000", "description": - "", "region": "us-iad", "subnets": [{"id": 23564, "label": "linodego-vpc-test-1707934155274261000", + body: '{"id": 26498, "label": "go-test-vpc-1709583736746076000", "description": + "", "region": "us-iad", "subnets": [{"id": 26749, "label": "linodego-vpc-test-1709583736746145000", "ipv4": "192.168.0.0/25", "ipv6": null, "linodes": [], "created": "2018-01-02T03:04:05", "updated": "2018-01-02T03:04:05"}], "created": "2018-01-02T03:04:05", "updated": "2018-01-02T03:04:05"}' @@ -425,7 +425,7 @@ interactions: Content-Type: - application/json Expires: - - Wed, 14 Feb 2024 18:09:15 GMT + - Mon, 04 Mar 2024 20:22:17 GMT Pragma: - no-cache Strict-Transport-Security: @@ -449,7 +449,7 @@ interactions: code: 200 duration: "" - request: - body: '{"purpose":"vpc","subnet_id":23564}' + body: '{"purpose":"vpc","subnet_id":26749,"ip_ranges":["192.168.0.5/32"]}' form: {} headers: Accept: @@ -458,12 +458,12 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/linode/instances/54933555/configs/58037972/interfaces + url: https://api.linode.com/v4beta/linode/instances/55633797/configs/58758984/interfaces method: POST response: - body: '{"id": 1041200, "purpose": "vpc", "primary": false, "active": false, "ipam_address": - null, "label": null, "vpc_id": 22685, "subnet_id": 23564, "ipv4": {"vpc": "192.168.0.2", - "nat_1_1": null}, "ipv6": null, "ip_ranges": []}' + body: '{"id": 1149865, "purpose": "vpc", "primary": false, "active": false, "ipam_address": + null, "label": null, "vpc_id": 26498, "subnet_id": 26749, "ipv4": {"vpc": "192.168.0.2", + "nat_1_1": null}, "ipv6": null, "ip_ranges": ["192.168.0.5/32"]}' headers: Access-Control-Allow-Credentials: - "true" @@ -480,13 +480,13 @@ interactions: Connection: - keep-alive Content-Length: - - "222" + - "238" Content-Security-Policy: - default-src 'none' Content-Type: - application/json Expires: - - Wed, 14 Feb 2024 18:09:15 GMT + - Mon, 04 Mar 2024 20:22:17 GMT Pragma: - no-cache Strict-Transport-Security: @@ -510,7 +510,7 @@ interactions: code: 200 duration: "" - request: - body: '{"primary":true,"ipv4":{"vpc":"192.168.0.2"}}' + body: '{"primary":true,"ipv4":{"vpc":"192.168.0.2"},"ip_ranges":["192.168.0.5/32"]}' form: {} headers: Accept: @@ -519,12 +519,12 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/linode/instances/54933555/configs/58037972/interfaces/1041200 + url: https://api.linode.com/v4beta/linode/instances/55633797/configs/58758984/interfaces/1149865 method: PUT response: - body: '{"id": 1041200, "purpose": "vpc", "primary": true, "active": false, "ipam_address": - null, "label": null, "vpc_id": 22685, "subnet_id": 23564, "ipv4": {"vpc": "192.168.0.2", - "nat_1_1": null}, "ipv6": null, "ip_ranges": []}' + body: '{"id": 1149865, "purpose": "vpc", "primary": true, "active": false, "ipam_address": + null, "label": null, "vpc_id": 26498, "subnet_id": 26749, "ipv4": {"vpc": "192.168.0.2", + "nat_1_1": null}, "ipv6": null, "ip_ranges": ["192.168.0.5/32"]}' headers: Access-Control-Allow-Credentials: - "true" @@ -541,13 +541,13 @@ interactions: Connection: - keep-alive Content-Length: - - "221" + - "237" Content-Security-Policy: - default-src 'none' Content-Type: - application/json Expires: - - Wed, 14 Feb 2024 18:09:15 GMT + - Mon, 04 Mar 2024 20:22:17 GMT Pragma: - no-cache Strict-Transport-Security: @@ -571,7 +571,7 @@ interactions: code: 200 duration: "" - request: - body: '{"primary":true,"ipv4":{"vpc":"192.168.0.10","nat_1_1":"any"}}' + body: '{"primary":true,"ipv4":{"vpc":"192.168.0.10","nat_1_1":"any"},"ip_ranges":[]}' form: {} headers: Accept: @@ -580,12 +580,12 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/linode/instances/54933555/configs/58037972/interfaces/1041200 + url: https://api.linode.com/v4beta/linode/instances/55633797/configs/58758984/interfaces/1149865 method: PUT response: - body: '{"id": 1041200, "purpose": "vpc", "primary": true, "active": false, "ipam_address": - null, "label": null, "vpc_id": 22685, "subnet_id": 23564, "ipv4": {"vpc": "192.168.0.10", - "nat_1_1": "139.144.202.63"}, "ipv6": null, "ip_ranges": []}' + body: '{"id": 1149865, "purpose": "vpc", "primary": true, "active": false, "ipam_address": + null, "label": null, "vpc_id": 26498, "subnet_id": 26749, "ipv4": {"vpc": "192.168.0.10", + "nat_1_1": "172.233.196.252"}, "ipv6": null, "ip_ranges": []}' headers: Access-Control-Allow-Credentials: - "true" @@ -602,13 +602,13 @@ interactions: Connection: - keep-alive Content-Length: - - "234" + - "235" Content-Security-Policy: - default-src 'none' Content-Type: - application/json Expires: - - Wed, 14 Feb 2024 18:09:16 GMT + - Mon, 04 Mar 2024 20:22:17 GMT Pragma: - no-cache Strict-Transport-Security: @@ -641,7 +641,7 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/linode/instances/54933555 + url: https://api.linode.com/v4beta/linode/instances/55633797 method: DELETE response: body: '{}' @@ -667,7 +667,7 @@ interactions: Content-Type: - application/json Expires: - - Wed, 14 Feb 2024 18:09:16 GMT + - Mon, 04 Mar 2024 20:22:18 GMT Pragma: - no-cache Strict-Transport-Security: @@ -700,7 +700,7 @@ interactions: - application/json User-Agent: - linodego/dev https://github.com/linode/linodego - url: https://api.linode.com/v4beta/vpcs/22685 + url: https://api.linode.com/v4beta/vpcs/26498 method: DELETE response: body: '{}' @@ -726,7 +726,7 @@ interactions: Content-Type: - application/json Expires: - - Wed, 14 Feb 2024 18:09:17 GMT + - Mon, 04 Mar 2024 20:22:18 GMT Pragma: - no-cache Strict-Transport-Security: diff --git a/test/integration/instance_config_test.go b/test/integration/instance_config_test.go index 1e7a79a5a..13c131ed5 100644 --- a/test/integration/instance_config_test.go +++ b/test/integration/instance_config_test.go @@ -349,6 +349,7 @@ func TestInstance_ConfigInterface_Update(t *testing.T) { InstanceConfigInterfaceCreateOptions{ Purpose: InterfacePurposeVPC, SubnetID: &vpcSubnet.ID, + IPRanges: []string{"192.168.0.5/32"}, }, ) if err != nil { @@ -371,11 +372,18 @@ func TestInstance_ConfigInterface_Update(t *testing.T) { if !(updatedIntfc.Primary == updateOpts.Primary) { t.Errorf("updating interface %v didn't succeed", intfc.ID) } + + if updatedIntfc.IPRanges[0] != "192.168.0.5/32" { + t.Errorf("unexpected value for IPRanges: %s", updatedIntfc.IPRanges[0]) + } + NAT1To1Any := "any" updateOpts.IPv4 = &VPCIPv4{ VPC: "192.168.0.10", NAT1To1: &NAT1To1Any, } + newIPRanges := make([]string, 0) + updateOpts.IPRanges = &newIPRanges updatedIntfc, err = client.UpdateInstanceConfigInterface( context.Background(), @@ -392,6 +400,10 @@ func TestInstance_ConfigInterface_Update(t *testing.T) { updateOpts.IPv4.VPC == updatedIntfc.IPv4.VPC) { t.Errorf("updating interface %v didn't succeed", intfc.ID) } + + if len(updatedIntfc.IPRanges) > 0 { + t.Errorf("expected IPRanges to be empty, got %d entries", len(updatedIntfc.IPRanges)) + } } func TestInstance_Configs_List(t *testing.T) { diff --git a/tod_scripts b/tod_scripts index eec4b9955..0bb98b047 160000 --- a/tod_scripts +++ b/tod_scripts @@ -1 +1 @@ -Subproject commit eec4b99557cef6f40e8b5b7de00357dc49fb041c +Subproject commit 0bb98b0477a92583efe27507d49ac8babac10476