From 2158774505a1c3c5e1a3ff9215446e8b4d450b09 Mon Sep 17 00:00:00 2001 From: Vladimir Ermakov Date: Tue, 13 Feb 2024 11:59:09 +0100 Subject: [PATCH 01/19] clouds: fix default /etc/openstack/clouds.yaml selection That fix following error returned by Parse(): ``` Failed to parse clouds.yaml: yaml: input error: read /etc/openstack: is a directory ``` Signed-off-by: Vladimir Ermakov --- openstack/config/clouds/clouds.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openstack/config/clouds/clouds.go b/openstack/config/clouds/clouds.go index 06e02ed9ce..c8f25561d2 100644 --- a/openstack/config/clouds/clouds.go +++ b/openstack/config/clouds/clouds.go @@ -86,7 +86,7 @@ func Parse(opts ...func(*cloudOpts)) (gophercloud.AuthOptions, gophercloud.Endpo if err != nil { return gophercloud.AuthOptions{}, gophercloud.EndpointOpts{}, nil, fmt.Errorf("failed to get the user config directory: %w", err) } - options.locations = []string{path.Join(cwd, "clouds.yaml"), path.Join(userConfig, "openstack", "clouds.yaml"), path.Join("/etc", "openstack")} + options.locations = []string{path.Join(cwd, "clouds.yaml"), path.Join(userConfig, "openstack", "clouds.yaml"), path.Join("/etc", "openstack", "clouds.yaml")} } for _, cloudsPath := range options.locations { From 5d840991edffcc7a7f2a41e8bc36d2fd77c00a4d Mon Sep 17 00:00:00 2001 From: Vladimir Ermakov Date: Tue, 13 Feb 2024 12:11:32 +0100 Subject: [PATCH 02/19] clouds: export ParseOption to allow conditionally compose With* opts Fix #2913 Signed-off-by: Vladimir Ermakov --- openstack/config/clouds/clouds.go | 2 +- openstack/config/clouds/options.go | 49 ++++++++++++++++-------------- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/openstack/config/clouds/clouds.go b/openstack/config/clouds/clouds.go index c8f25561d2..c0ab5f6098 100644 --- a/openstack/config/clouds/clouds.go +++ b/openstack/config/clouds/clouds.go @@ -53,7 +53,7 @@ import ( // // Search locations, as well as individual `clouds.yaml` properties, can be // overwritten with functional options. -func Parse(opts ...func(*cloudOpts)) (gophercloud.AuthOptions, gophercloud.EndpointOpts, *tls.Config, error) { +func Parse(opts ...ParseOption) (gophercloud.AuthOptions, gophercloud.EndpointOpts, *tls.Config, error) { options := cloudOpts{ cloudName: os.Getenv("OS_CLOUD"), region: os.Getenv("OS_REGION_NAME"), diff --git a/openstack/config/clouds/options.go b/openstack/config/clouds/options.go index 97198c9371..863aaba459 100644 --- a/openstack/config/clouds/options.go +++ b/openstack/config/clouds/options.go @@ -34,8 +34,11 @@ type cloudOpts struct { insecure *bool } +// ParseOption one of parse configuration returned by With* modifier +type ParseOption = func(*cloudOpts) + // WithCloudName allows to override the environment variable `OS_CLOUD`. -func WithCloudName(osCloud string) func(*cloudOpts) { +func WithCloudName(osCloud string) ParseOption { return func(co *cloudOpts) { co.cloudName = osCloud } @@ -44,7 +47,7 @@ func WithCloudName(osCloud string) func(*cloudOpts) { // WithLocations is a functional option that sets the search locations for the // clouds.yaml file (and its optional companion secure.yaml). Each location is // a file path pointing to a possible `clouds.yaml`. -func WithLocations(locations ...string) func(*cloudOpts) { +func WithLocations(locations ...string) ParseOption { return func(co *cloudOpts) { co.locations = locations } @@ -54,7 +57,7 @@ func WithLocations(locations ...string) func(*cloudOpts) { // as an io.Reader interface. When this option is passed, FromCloudsYaml will // not attempt to fetch any file from the file system. To add a secure.yaml, // use in conjunction with WithSecureYAML. -func WithCloudsYAML(clouds io.Reader) func(*cloudOpts) { +func WithCloudsYAML(clouds io.Reader) ParseOption { return func(co *cloudOpts) { co.cloudsyamlReader = clouds } @@ -63,43 +66,43 @@ func WithCloudsYAML(clouds io.Reader) func(*cloudOpts) { // WithSecureYAML is a functional option that lets you pass a secure.yaml file // as an io.Reader interface, to complement the clouds.yaml that is either // fetched from the filesystem, or passed with WithCloudsYAML. -func WithSecureYAML(secure io.Reader) func(*cloudOpts) { +func WithSecureYAML(secure io.Reader) ParseOption { return func(co *cloudOpts) { co.secureyamlReader = secure } } -func WithApplicationCredentialID(applicationCredentialID string) func(*cloudOpts) { +func WithApplicationCredentialID(applicationCredentialID string) ParseOption { return func(co *cloudOpts) { co.applicationCredentialID = applicationCredentialID } } -func WithApplicationCredentialName(applicationCredentialName string) func(*cloudOpts) { +func WithApplicationCredentialName(applicationCredentialName string) ParseOption { return func(co *cloudOpts) { co.applicationCredentialName = applicationCredentialName } } -func WithApplicationCredentialSecret(applicationCredentialSecret string) func(*cloudOpts) { +func WithApplicationCredentialSecret(applicationCredentialSecret string) ParseOption { return func(co *cloudOpts) { co.applicationCredentialSecret = applicationCredentialSecret } } -func WithIdentityEndpoint(authURL string) func(*cloudOpts) { +func WithIdentityEndpoint(authURL string) ParseOption { return func(co *cloudOpts) { co.authURL = authURL } } -func WithDomainID(domainID string) func(*cloudOpts) { +func WithDomainID(domainID string) ParseOption { return func(co *cloudOpts) { co.domainID = domainID } } -func WithDomainName(domainName string) func(*cloudOpts) { +func WithDomainName(domainName string) ParseOption { return func(co *cloudOpts) { co.domainName = domainName } @@ -107,25 +110,25 @@ func WithDomainName(domainName string) func(*cloudOpts) { // WithRegion allows to override the endpoint type set in clouds.yaml or in the // environment variable `OS_INTERFACE`. -func WithEndpointType(endpointType string) func(*cloudOpts) { +func WithEndpointType(endpointType string) ParseOption { return func(co *cloudOpts) { co.endpointType = endpointType } } -func WithPassword(password string) func(*cloudOpts) { +func WithPassword(password string) ParseOption { return func(co *cloudOpts) { co.password = password } } -func WithProjectID(projectID string) func(*cloudOpts) { +func WithProjectID(projectID string) ParseOption { return func(co *cloudOpts) { co.projectID = projectID } } -func WithProjectName(projectName string) func(*cloudOpts) { +func WithProjectName(projectName string) ParseOption { return func(co *cloudOpts) { co.projectName = projectName } @@ -133,55 +136,55 @@ func WithProjectName(projectName string) func(*cloudOpts) { // WithRegion allows to override the region set in clouds.yaml or in the // environment variable `OS_REGION_NAME` -func WithRegion(region string) func(*cloudOpts) { +func WithRegion(region string) ParseOption { return func(co *cloudOpts) { co.region = region } } -func WithScope(scope *gophercloud.AuthScope) func(*cloudOpts) { +func WithScope(scope *gophercloud.AuthScope) ParseOption { return func(co *cloudOpts) { co.scope = scope } } -func WithToken(token string) func(*cloudOpts) { +func WithToken(token string) ParseOption { return func(co *cloudOpts) { co.token = token } } -func WithUserID(userID string) func(*cloudOpts) { +func WithUserID(userID string) ParseOption { return func(co *cloudOpts) { co.userID = userID } } -func WithUsername(username string) func(*cloudOpts) { +func WithUsername(username string) ParseOption { return func(co *cloudOpts) { co.username = username } } -func WithCACertPath(caCertPath string) func(*cloudOpts) { +func WithCACertPath(caCertPath string) ParseOption { return func(co *cloudOpts) { co.caCertPath = caCertPath } } -func WithClientCertPath(clientCertPath string) func(*cloudOpts) { +func WithClientCertPath(clientCertPath string) ParseOption { return func(co *cloudOpts) { co.clientCertPath = clientCertPath } } -func WithClientKeyPath(clientKeyPath string) func(*cloudOpts) { +func WithClientKeyPath(clientKeyPath string) ParseOption { return func(co *cloudOpts) { co.clientKeyPath = clientKeyPath } } -func WithInsecure(insecure bool) func(*cloudOpts) { +func WithInsecure(insecure bool) ParseOption { return func(co *cloudOpts) { co.insecure = &insecure } From c1089ff6bfc7dd809d51d079f5b410332fcc01fe Mon Sep 17 00:00:00 2001 From: Pierre Prinetti Date: Mon, 12 Feb 2024 12:54:38 +0100 Subject: [PATCH 03/19] build(deps): bump EmilienM/devstack-action from 0.11 to 0.14 Also start using the commit hash of the release, rather than the tag. --- .github/workflows/functional-baremetal.yaml | 2 +- .github/workflows/functional-basic.yaml | 2 +- .github/workflows/functional-blockstorage.yaml | 2 +- .github/workflows/functional-clustering.yaml | 2 +- .github/workflows/functional-compute.yaml | 2 +- .github/workflows/functional-containerinfra.yaml | 2 +- .github/workflows/functional-dns.yaml | 2 +- .github/workflows/functional-fwaas_v2.yaml | 2 +- .github/workflows/functional-identity.yaml | 2 +- .github/workflows/functional-imageservice.yaml | 2 +- .github/workflows/functional-keymanager.yaml | 2 +- .github/workflows/functional-loadbalancer.yaml | 2 +- .github/workflows/functional-messaging.yaml | 2 +- .github/workflows/functional-networking.yaml | 2 +- .github/workflows/functional-objectstorage.yaml | 2 +- .github/workflows/functional-orchestration.yaml | 2 +- .github/workflows/functional-placement.yaml | 2 +- .github/workflows/functional-sharedfilesystems.yaml | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/functional-baremetal.yaml b/.github/workflows/functional-baremetal.yaml index 9b47f5101c..8753d091f2 100644 --- a/.github/workflows/functional-baremetal.yaml +++ b/.github/workflows/functional-baremetal.yaml @@ -49,7 +49,7 @@ jobs: shell: bash if: matrix.ubuntu_version == '20.04' - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-basic.yaml b/.github/workflows/functional-basic.yaml index d5cd352a8f..11048088fb 100644 --- a/.github/workflows/functional-basic.yaml +++ b/.github/workflows/functional-basic.yaml @@ -44,7 +44,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} enabled_services: 's-account,s-container,s-object,s-proxy' diff --git a/.github/workflows/functional-blockstorage.yaml b/.github/workflows/functional-blockstorage.yaml index eb93e88b7b..1ee43e742c 100644 --- a/.github/workflows/functional-blockstorage.yaml +++ b/.github/workflows/functional-blockstorage.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-clustering.yaml b/.github/workflows/functional-clustering.yaml index ef830cbc4b..3ed60f16cb 100644 --- a/.github/workflows/functional-clustering.yaml +++ b/.github/workflows/functional-clustering.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-compute.yaml b/.github/workflows/functional-compute.yaml index c6781ab165..de667ed055 100644 --- a/.github/workflows/functional-compute.yaml +++ b/.github/workflows/functional-compute.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-containerinfra.yaml b/.github/workflows/functional-containerinfra.yaml index 16f9a7b1d5..17be7db52a 100644 --- a/.github/workflows/functional-containerinfra.yaml +++ b/.github/workflows/functional-containerinfra.yaml @@ -65,7 +65,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-dns.yaml b/.github/workflows/functional-dns.yaml index 67859fb870..4e789e088c 100644 --- a/.github/workflows/functional-dns.yaml +++ b/.github/workflows/functional-dns.yaml @@ -42,7 +42,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-fwaas_v2.yaml b/.github/workflows/functional-fwaas_v2.yaml index 27b07b2cbc..f2b18fc97d 100644 --- a/.github/workflows/functional-fwaas_v2.yaml +++ b/.github/workflows/functional-fwaas_v2.yaml @@ -29,7 +29,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-identity.yaml b/.github/workflows/functional-identity.yaml index 6acece36db..d0966abecb 100644 --- a/.github/workflows/functional-identity.yaml +++ b/.github/workflows/functional-identity.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} - name: Checkout go diff --git a/.github/workflows/functional-imageservice.yaml b/.github/workflows/functional-imageservice.yaml index 4b7dd255ae..252e4b571c 100644 --- a/.github/workflows/functional-imageservice.yaml +++ b/.github/workflows/functional-imageservice.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} - name: Checkout go diff --git a/.github/workflows/functional-keymanager.yaml b/.github/workflows/functional-keymanager.yaml index a52ce79865..abcb66392a 100644 --- a/.github/workflows/functional-keymanager.yaml +++ b/.github/workflows/functional-keymanager.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-loadbalancer.yaml b/.github/workflows/functional-loadbalancer.yaml index 0e515d49a9..5a16b1fb4a 100644 --- a/.github/workflows/functional-loadbalancer.yaml +++ b/.github/workflows/functional-loadbalancer.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-messaging.yaml b/.github/workflows/functional-messaging.yaml index 574971a5e7..84d155440b 100644 --- a/.github/workflows/functional-messaging.yaml +++ b/.github/workflows/functional-messaging.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-networking.yaml b/.github/workflows/functional-networking.yaml index fca72f43e7..db8fda07f3 100644 --- a/.github/workflows/functional-networking.yaml +++ b/.github/workflows/functional-networking.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-objectstorage.yaml b/.github/workflows/functional-objectstorage.yaml index 91c6b616d4..d4f3c8320b 100644 --- a/.github/workflows/functional-objectstorage.yaml +++ b/.github/workflows/functional-objectstorage.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-orchestration.yaml b/.github/workflows/functional-orchestration.yaml index 03be9d9b63..3424aa1374 100644 --- a/.github/workflows/functional-orchestration.yaml +++ b/.github/workflows/functional-orchestration.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | diff --git a/.github/workflows/functional-placement.yaml b/.github/workflows/functional-placement.yaml index fe83089044..3cc2d74597 100644 --- a/.github/workflows/functional-placement.yaml +++ b/.github/workflows/functional-placement.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} - name: Checkout go diff --git a/.github/workflows/functional-sharedfilesystems.yaml b/.github/workflows/functional-sharedfilesystems.yaml index afebf7b3a8..c7a107864b 100644 --- a/.github/workflows/functional-sharedfilesystems.yaml +++ b/.github/workflows/functional-sharedfilesystems.yaml @@ -41,7 +41,7 @@ jobs: - name: Checkout Gophercloud uses: actions/checkout@v4 - name: Deploy devstack - uses: EmilienM/devstack-action@v0.11 + uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: branch: ${{ matrix.openstack_version }} conf_overrides: | From 2ca6c69396c0101ce2f6010ac4e9b5f0e9998393 Mon Sep 17 00:00:00 2001 From: Pierre Prinetti Date: Fri, 9 Feb 2024 11:17:58 +0100 Subject: [PATCH 04/19] CHANGELOG: Plus one to the breaking changes Co-Authored-By: Lennart Jern --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20321357a2..a0e59fddb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ BREAKING CHANGES: * [GH-2821](https://github.com/gophercloud/gophercloud/pull/2821) In `objects.Copy`: the `destination` field (e.g. `objects.CopyOpts#Destination`) must be in the form `/container/object`: the function will reject a destination path if it doesn't start with a slash (`/`). * [GH-2560](https://github.com/gophercloud/gophercloud/pull/2560) loadbalancer: Use CreateMemberOpts instead of BatchUpdateMemberOpts in PoolCreateOpts * [GH-2886](https://github.com/gophercloud/gophercloud/pull/2886) ports: Fix value_specs implementation +* [GH-2665](https://github.com/gophercloud/gophercloud/pull/2665) Cinder: Remove multiatttach request parameter New features and improvements: @@ -21,7 +22,6 @@ New features and improvements: * [GH-2560](https://github.com/gophercloud/gophercloud/pull/2560) loadbalancer: Use CreateMemberOpts instead of BatchUpdateMemberOpts in PoolCreateOpts * [GH-2561](https://github.com/gophercloud/gophercloud/pull/2561) compute: add ext_specs to flavor * [GH-2613](https://github.com/gophercloud/gophercloud/pull/2613) Migrate baremetal inventory to a common location -* [GH-2665](https://github.com/gophercloud/gophercloud/pull/2665) Cinder: Remove multiatttach request parameter * [GH-2724](https://github.com/gophercloud/gophercloud/pull/2724) baremetal: introduce Node Inventory API * [GH-2725](https://github.com/gophercloud/gophercloud/pull/2725) baremetal: finish moving common inventory bits * [GH-2736](https://github.com/gophercloud/gophercloud/pull/2736) Composable templates From 1ed3b276b9a5182dc7ff914dd09d394f86ea6946 Mon Sep 17 00:00:00 2001 From: Youngjun Date: Fri, 16 Feb 2024 00:20:19 +0900 Subject: [PATCH 05/19] replace deprecated library - replace math/rand -> crypto/rand Signed-off-by: Youngjun --- openstack/identity/v3/extensions/ec2tokens/requests.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openstack/identity/v3/extensions/ec2tokens/requests.go b/openstack/identity/v3/extensions/ec2tokens/requests.go index 86bcde1bd1..befb4c4fab 100644 --- a/openstack/identity/v3/extensions/ec2tokens/requests.go +++ b/openstack/identity/v3/extensions/ec2tokens/requests.go @@ -3,11 +3,11 @@ package ec2tokens import ( "context" "crypto/hmac" + "crypto/rand" "crypto/sha1" "crypto/sha256" "encoding/hex" "fmt" - "math/rand" "net/url" "sort" "strings" From 6e71221484521c5479e2c5e1e63c06c187f2e602 Mon Sep 17 00:00:00 2001 From: Youngjun Date: Fri, 16 Feb 2024 00:06:00 +0900 Subject: [PATCH 06/19] simplify conditional expressions - opts.Detail, a bool type, itself represents a true or false value, so there is no need to compare it again with the comparison operator (==). Signed-off-by: Youngjun --- openstack/baremetal/v1/conductors/requests.go | 2 +- openstack/baremetal/v1/nodes/requests.go | 2 +- openstack/compute/v2/extensions/usage/requests.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openstack/baremetal/v1/conductors/requests.go b/openstack/baremetal/v1/conductors/requests.go index 997585a8c2..96b1441e76 100644 --- a/openstack/baremetal/v1/conductors/requests.go +++ b/openstack/baremetal/v1/conductors/requests.go @@ -39,7 +39,7 @@ type ListOpts struct { // ToConductorListQuery formats a ListOpts into a query string. func (opts ListOpts) ToConductorListQuery() (string, error) { - if opts.Detail == true && len(opts.Fields) > 0 { + if opts.Detail && len(opts.Fields) > 0 { return "", fmt.Errorf("cannot have both fields and detail options for conductors") } diff --git a/openstack/baremetal/v1/nodes/requests.go b/openstack/baremetal/v1/nodes/requests.go index 158eb25668..443e36e872 100644 --- a/openstack/baremetal/v1/nodes/requests.go +++ b/openstack/baremetal/v1/nodes/requests.go @@ -662,7 +662,7 @@ type ListBIOSSettingsOpts struct { // ToListBIOSSettingsOptsQuery formats a ListBIOSSettingsOpts into a query string func (opts ListBIOSSettingsOpts) ToListBIOSSettingsOptsQuery() (string, error) { - if opts.Detail == true && len(opts.Fields) > 0 { + if opts.Detail && len(opts.Fields) > 0 { return "", fmt.Errorf("cannot have both fields and detail options for BIOS settings") } diff --git a/openstack/compute/v2/extensions/usage/requests.go b/openstack/compute/v2/extensions/usage/requests.go index ad6c533e16..3ed23b6d56 100644 --- a/openstack/compute/v2/extensions/usage/requests.go +++ b/openstack/compute/v2/extensions/usage/requests.go @@ -110,7 +110,7 @@ func (opts AllTenantsOpts) ToUsageAllTenantsQuery() (string, error) { params.Add("end", opts.End.Format(gophercloud.RFC3339MilliNoZ)) } - if opts.Detailed == true { + if opts.Detailed { params.Add("detailed", "1") } From 00b34d2f12b9b568f8deda55ef77005800fb646d Mon Sep 17 00:00:00 2001 From: Youngjun Date: Fri, 16 Feb 2024 11:17:17 +0900 Subject: [PATCH 07/19] chage coding style Signed-off-by: Youngjun --- openstack/config/clouds/clouds.go | 6 ++---- params.go | 5 +---- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/openstack/config/clouds/clouds.go b/openstack/config/clouds/clouds.go index c0ab5f6098..f0a897975b 100644 --- a/openstack/config/clouds/clouds.go +++ b/openstack/config/clouds/clouds.go @@ -251,10 +251,8 @@ func mergeInterfaces(overridingInterface, inferiorInterface interface{}) interfa if !ok { return overriding } - for i := range list { - overriding = append(overriding, list[i]) - } - return overriding + + return append(overriding, list...) case nil: // mergeClouds(nil, map[string]interface{...}) -> map[string]interface{...} v, ok := inferiorInterface.(map[string]interface{}) diff --git a/params.go b/params.go index 17b200cd23..9e7bb5bde2 100644 --- a/params.go +++ b/params.go @@ -282,10 +282,7 @@ func isZero(v reflect.Value) bool { return z case reflect.Struct: if v.Type() == reflect.TypeOf(t) { - if v.Interface().(time.Time).IsZero() { - return true - } - return false + return v.Interface().(time.Time).IsZero() } z := true for i := 0; i < v.NumField(); i++ { From cb717c967290cba34aa64afe88269749f56a0510 Mon Sep 17 00:00:00 2001 From: Youngjun Date: Fri, 16 Feb 2024 20:16:02 +0900 Subject: [PATCH 08/19] apply go fmt for lint Signed-off-by: Youngjun --- openstack/config/clouds/clouds.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openstack/config/clouds/clouds.go b/openstack/config/clouds/clouds.go index f0a897975b..84e533a960 100644 --- a/openstack/config/clouds/clouds.go +++ b/openstack/config/clouds/clouds.go @@ -251,7 +251,7 @@ func mergeInterfaces(overridingInterface, inferiorInterface interface{}) interfa if !ok { return overriding } - + return append(overriding, list...) case nil: // mergeClouds(nil, map[string]interface{...}) -> map[string]interface{...} From 7595af3a6d06cdeeeca8fd514b0527a6c4706536 Mon Sep 17 00:00:00 2001 From: Pierre Prinetti Date: Tue, 20 Feb 2024 13:49:02 +0100 Subject: [PATCH 09/19] Fix AllowReauth reauthentication Due to an error in implementing the addition of `context.Context`, the reauth function catched the context passed when generating the ProviderClient, which could be long canceled when the reauthentication takes place. This is a breaking change: this patch changes the signature of the reauthentication function in the ProviderClient to accept a context. --- internal/acceptance/openstack/client_test.go | 3 ++- openstack/client.go | 4 ++-- provider_client.go | 8 +++++--- testing/provider_client_test.go | 8 ++++---- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/internal/acceptance/openstack/client_test.go b/internal/acceptance/openstack/client_test.go index d28ce7041b..74961f380a 100644 --- a/internal/acceptance/openstack/client_test.go +++ b/internal/acceptance/openstack/client_test.go @@ -4,6 +4,7 @@ package openstack import ( + "context" "os" "testing" "time" @@ -140,7 +141,7 @@ func TestReauth(t *testing.T) { time.Sleep(1 * time.Second) t.Logf("Attempting to reauthenticate") - err = provider.ReauthFunc() + err = provider.ReauthFunc(context.TODO()) if err != nil { t.Fatalf("Unable to reauthenticate: %v", err) } diff --git a/openstack/client.go b/openstack/client.go index 2aceb4e929..ad5026089d 100644 --- a/openstack/client.go +++ b/openstack/client.go @@ -170,7 +170,7 @@ func v2auth(ctx context.Context, client *gophercloud.ProviderClient, endpoint st tac.SetTokenAndAuthResult(nil) tao := options tao.AllowReauth = false - client.ReauthFunc = func() error { + client.ReauthFunc = func(ctx context.Context) error { err := v2auth(ctx, &tac, endpoint, tao, eo) if err != nil { return err @@ -293,7 +293,7 @@ func v3auth(ctx context.Context, client *gophercloud.ProviderClient, endpoint st default: tao = opts } - client.ReauthFunc = func() error { + client.ReauthFunc = func(ctx context.Context) error { err := v3auth(ctx, &tac, endpoint, tao, eo) if err != nil { return err diff --git a/provider_client.go b/provider_client.go index 7640431991..2d8803860f 100644 --- a/provider_client.go +++ b/provider_client.go @@ -83,7 +83,7 @@ type ProviderClient struct { // ReauthFunc is the function used to re-authenticate the user if the request // fails with a 401 HTTP response code. This a needed because there may be multiple // authentication functions for different Identity service versions. - ReauthFunc func() error + ReauthFunc func(context.Context) error // Throwaway determines whether if this client is a throw-away client. It's a copy of user's provider client // with the token and reauth func zeroed. Such client can be used to perform reauthorization. @@ -273,12 +273,14 @@ func (client *ProviderClient) SetThrowaway(v bool) { // reauthenticated in the meantime. If no previous token is known, an empty // string should be passed instead to force unconditional reauthentication. func (client *ProviderClient) Reauthenticate(previousToken string) error { + ctx := context.TODO() + if client.ReauthFunc == nil { return nil } if client.reauthmut == nil { - return client.ReauthFunc() + return client.ReauthFunc(ctx) } future := newReauthFuture() @@ -299,7 +301,7 @@ func (client *ProviderClient) Reauthenticate(previousToken string) error { // Perform the actual reauthentication. var err error if previousToken == "" || client.TokenID == previousToken { - err = client.ReauthFunc() + err = client.ReauthFunc(ctx) } else { err = nil } diff --git a/testing/provider_client_test.go b/testing/provider_client_test.go index fd15af6058..b502dc36b6 100644 --- a/testing/provider_client_test.go +++ b/testing/provider_client_test.go @@ -66,7 +66,7 @@ func TestConcurrentReauth(t *testing.T) { p := new(gophercloud.ProviderClient) p.UseTokenLock() p.SetToken(prereauthTok) - p.ReauthFunc = func() error { + p.ReauthFunc = func(_ context.Context) error { p.SetThrowaway(true) time.Sleep(1 * time.Second) p.AuthenticatedHeaders() @@ -154,7 +154,7 @@ func TestReauthEndLoop(t *testing.T) { p := new(gophercloud.ProviderClient) p.UseTokenLock() p.SetToken(client.TokenID) - p.ReauthFunc = func() error { + p.ReauthFunc = func(_ context.Context) error { info.mut.Lock() defer info.mut.Unlock() @@ -237,7 +237,7 @@ func TestRequestThatCameDuringReauthWaitsUntilItIsCompleted(t *testing.T) { p := new(gophercloud.ProviderClient) p.UseTokenLock() p.SetToken(prereauthTok) - p.ReauthFunc = func() error { + p.ReauthFunc = func(_ context.Context) error { info.mut.RLock() if info.numreauths == 0 { info.mut.RUnlock() @@ -331,7 +331,7 @@ func TestRequestReauthsAtMostOnce(t *testing.T) { p := new(gophercloud.ProviderClient) p.UseTokenLock() p.SetToken(client.TokenID) - p.ReauthFunc = func() error { + p.ReauthFunc = func(_ context.Context) error { reauthCounterMutex.Lock() reauthCounter++ reauthCounterMutex.Unlock() From efe2b6f078c806a61243c154fe4374315eb5456d Mon Sep 17 00:00:00 2001 From: Pierre Prinetti Date: Wed, 21 Feb 2024 12:09:03 +0100 Subject: [PATCH 10/19] provider client: Reauthenticate with context Change `(ProviderClient).Reauthenticate` to accept a `context.Context` as its first argument, and use it to perform the reauth call. --- provider_client.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/provider_client.go b/provider_client.go index 2d8803860f..1309ecbcdb 100644 --- a/provider_client.go +++ b/provider_client.go @@ -272,9 +272,7 @@ func (client *ProviderClient) SetThrowaway(v bool) { // this case, the reauthentication can be skipped if another thread has already // reauthenticated in the meantime. If no previous token is known, an empty // string should be passed instead to force unconditional reauthentication. -func (client *ProviderClient) Reauthenticate(previousToken string) error { - ctx := context.TODO() - +func (client *ProviderClient) Reauthenticate(ctx context.Context, previousToken string) error { if client.ReauthFunc == nil { return nil } @@ -490,7 +488,7 @@ func (client *ProviderClient) doRequest(ctx context.Context, method, url string, } case http.StatusUnauthorized: if client.ReauthFunc != nil && !state.hasReauthenticated { - err = client.Reauthenticate(prereqtok) + err = client.Reauthenticate(ctx, prereqtok) if err != nil { e := &ErrUnableToReauthenticate{} e.ErrOriginal = respErr From 070d5fb9fa1d489f962cacc340eb520ad9560985 Mon Sep 17 00:00:00 2001 From: Pierre Prinetti Date: Wed, 21 Feb 2024 16:33:13 +0100 Subject: [PATCH 11/19] Make Gophercloud context-aware With this change, all functions and methods that trigger an HTTP call now accept an instance of `context.Context` as their first argument. This breaking change enables cancellation and tracing to be used across all packages of the library. Co-Authored-By: Stefan Majewsky Co-Authored-By: Pierre Prinetti --- internal/acceptance/clients/clients.go | 49 +++---- .../baremetal/httpbasic/allocations_test.go | 3 +- .../baremetal/httpbasic/nodes_test.go | 9 +- .../baremetal/httpbasic/ports_test.go | 5 +- .../baremetal/noauth/allocations_test.go | 3 +- .../openstack/baremetal/noauth/nodes_test.go | 7 +- .../openstack/baremetal/noauth/ports_test.go | 5 +- .../baremetal/v1/allocations_test.go | 3 +- .../openstack/baremetal/v1/baremetal.go | 15 ++- .../openstack/baremetal/v1/conductors_test.go | 5 +- .../openstack/baremetal/v1/nodes_test.go | 19 +-- .../openstack/baremetal/v1/ports_test.go | 5 +- .../blockstorage/apiversions_test.go | 5 +- .../blockstorage/extensions/backups_test.go | 5 +- .../blockstorage/extensions/extensions.go | 57 +++++---- .../blockstorage/extensions/limits_test.go | 3 +- .../extensions/schedulerhints_test.go | 13 +- .../extensions/schedulerstats_test.go | 3 +- .../blockstorage/extensions/services_test.go | 3 +- .../extensions/volumeactions_test.go | 15 ++- .../extensions/volumetenants_test.go | 5 +- .../blockstorage/noauth/blockstorage.go | 19 +-- .../blockstorage/noauth/snapshots_test.go | 5 +- .../blockstorage/noauth/volumes_test.go | 5 +- .../openstack/blockstorage/v1/blockstorage.go | 19 +-- .../blockstorage/v1/snapshots_test.go | 5 +- .../openstack/blockstorage/v1/volumes_test.go | 7 +- .../blockstorage/v1/volumetypes_test.go | 3 +- .../openstack/blockstorage/v2/blockstorage.go | 21 +-- .../blockstorage/v2/snapshots_test.go | 5 +- .../openstack/blockstorage/v2/volumes_test.go | 19 +-- .../openstack/blockstorage/v3/blockstorage.go | 41 +++--- .../openstack/blockstorage/v3/qos_test.go | 21 +-- .../blockstorage/v3/quotaset_test.go | 29 +++-- .../blockstorage/v3/snapshots_test.go | 25 ++-- .../blockstorage/v3/volumeattachments.go | 17 +-- .../blockstorage/v3/volumeattachments_test.go | 3 +- .../openstack/blockstorage/v3/volumes_test.go | 17 +-- .../blockstorage/v3/volumetypes_test.go | 33 ++--- internal/acceptance/openstack/client_test.go | 16 +-- .../openstack/clustering/v1/actions_test.go | 3 +- .../openstack/clustering/v1/clustering.go | 29 +++-- .../openstack/clustering/v1/clusters_test.go | 69 +++++----- .../openstack/clustering/v1/events_test.go | 3 +- .../openstack/clustering/v1/nodes_test.go | 19 +-- .../openstack/clustering/v1/policies_test.go | 9 +- .../clustering/v1/policytypes_test.go | 9 +- .../openstack/clustering/v1/profiles_test.go | 7 +- .../clustering/v1/profiletypes_test.go | 5 +- .../openstack/clustering/v1/receivers_test.go | 7 +- .../clustering/v1/webhooktrigger_test.go | 5 +- .../openstack/compute/v2/aggregates_test.go | 15 ++- .../compute/v2/attachinterfaces_test.go | 3 +- .../compute/v2/availabilityzones_test.go | 5 +- .../compute/v2/bootfromvolume_test.go | 9 +- .../openstack/compute/v2/compute.go | 113 ++++++++-------- .../openstack/compute/v2/defsecrules_test.go | 5 +- .../openstack/compute/v2/diagnostics_test.go | 3 +- .../openstack/compute/v2/extension_test.go | 5 +- .../openstack/compute/v2/flavors_test.go | 29 +++-- .../openstack/compute/v2/floatingip_test.go | 11 +- .../openstack/compute/v2/hypervisors_test.go | 13 +- .../openstack/compute/v2/images_test.go | 5 +- .../compute/v2/instance_actions_test.go | 13 +- .../openstack/compute/v2/keypairs_test.go | 13 +- .../openstack/compute/v2/limits_test.go | 5 +- .../openstack/compute/v2/migrate_test.go | 5 +- .../openstack/compute/v2/network_test.go | 5 +- .../openstack/compute/v2/quotaset_test.go | 17 +-- .../openstack/compute/v2/secgroup_test.go | 15 ++- .../openstack/compute/v2/servergroup_test.go | 13 +- .../openstack/compute/v2/servers_test.go | 93 +++++++------- .../openstack/compute/v2/services_test.go | 15 ++- .../compute/v2/tenantnetworks_test.go | 5 +- .../openstack/compute/v2/usage_test.go | 5 +- .../openstack/container/v1/capsules.go | 3 +- .../openstack/container/v1/capsules_test.go | 5 +- .../containerinfra/v1/certificates_test.go | 7 +- .../containerinfra/v1/clusters_test.go | 9 +- .../v1/clustertemplates_test.go | 7 +- .../containerinfra/v1/containerinfra.go | 15 ++- .../containerinfra/v1/nodegroups_test.go | 21 +-- .../openstack/db/v1/databases_test.go | 3 +- internal/acceptance/openstack/db/v1/db.go | 17 +-- .../openstack/db/v1/flavors_test.go | 5 +- .../openstack/db/v1/instances_test.go | 3 +- .../acceptance/openstack/db/v1/users_test.go | 3 +- internal/acceptance/openstack/dns/v2/dns.go | 35 ++--- .../openstack/dns/v2/recordsets_test.go | 3 +- .../openstack/dns/v2/transfers_test.go | 5 +- .../acceptance/openstack/dns/v2/zones_test.go | 3 +- .../openstack/identity/v2/extension_test.go | 5 +- .../openstack/identity/v2/identity.go | 19 +-- .../openstack/identity/v2/role_test.go | 5 +- .../openstack/identity/v2/tenant_test.go | 7 +- .../openstack/identity/v2/token_test.go | 7 +- .../openstack/identity/v2/user_test.go | 3 +- .../v3/applicationcredentials_test.go | 39 +++--- .../openstack/identity/v3/catalog_test.go | 3 +- .../openstack/identity/v3/credentials_test.go | 27 ++-- .../openstack/identity/v3/domains_test.go | 9 +- .../identity/v3/ec2credentials_test.go | 11 +- .../openstack/identity/v3/endpoint_test.go | 7 +- .../openstack/identity/v3/federation_test.go | 13 +- .../openstack/identity/v3/groups_test.go | 11 +- .../openstack/identity/v3/identity.go | 39 +++--- .../openstack/identity/v3/limits_test.go | 23 ++-- .../openstack/identity/v3/oauth1_test.go | 33 ++--- .../openstack/identity/v3/osinherit_test.go | 25 ++-- .../openstack/identity/v3/policies_test.go | 17 +-- .../identity/v3/projectendpoint_test.go | 9 +- .../openstack/identity/v3/projects_test.go | 33 ++--- .../openstack/identity/v3/reauth_test.go | 5 +- .../openstack/identity/v3/regions_test.go | 9 +- .../identity/v3/registeredlimits_test.go | 15 ++- .../openstack/identity/v3/roles_test.go | 49 +++---- .../openstack/identity/v3/service_test.go | 5 +- .../openstack/identity/v3/token_test.go | 11 +- .../openstack/identity/v3/trusts_test.go | 17 +-- .../openstack/identity/v3/users_test.go | 33 ++--- .../openstack/imageservice/v2/images_test.go | 15 ++- .../openstack/imageservice/v2/imageservice.go | 17 +-- .../openstack/imageservice/v2/tasks_test.go | 5 +- .../openstack/keymanager/v1/acls_test.go | 25 ++-- .../keymanager/v1/containers_test.go | 21 +-- .../openstack/keymanager/v1/keymanager.go | 63 ++++----- .../openstack/keymanager/v1/orders_test.go | 9 +- .../openstack/keymanager/v1/secrets_test.go | 35 ++--- .../loadbalancer/v2/amphorae_test.go | 3 +- .../loadbalancer/v2/flavorprofiles_test.go | 5 +- .../openstack/loadbalancer/v2/flavors_test.go | 5 +- .../loadbalancer/v2/l7policies_test.go | 3 +- .../loadbalancer/v2/listeners_test.go | 3 +- .../openstack/loadbalancer/v2/loadbalancer.go | 47 +++---- .../loadbalancer/v2/loadbalancers_test.go | 83 ++++++------ .../loadbalancer/v2/monitors_test.go | 3 +- .../openstack/loadbalancer/v2/pools_test.go | 3 +- .../loadbalancer/v2/providers_test.go | 3 +- .../openstack/loadbalancer/v2/quotas_test.go | 9 +- .../openstack/messaging/v2/claims_test.go | 3 +- .../openstack/messaging/v2/message_test.go | 21 +-- .../openstack/messaging/v2/messaging.go | 19 +-- .../openstack/messaging/v2/queue_test.go | 11 +- .../networking/v2/apiversion_test.go | 5 +- .../openstack/networking/v2/extension_test.go | 5 +- .../v2/extensions/agents/agents_test.go | 41 +++--- .../v2/extensions/attributestags_test.go | 21 +-- .../v2/extensions/bgp/peers/bgppeers_test.go | 11 +- .../v2/extensions/bgp/peers/peers.go | 3 +- .../bgp/speakers/bgpspeakers_test.go | 25 ++-- .../v2/extensions/bgp/speakers/speakers.go | 3 +- .../networking/v2/extensions/dns/dns.go | 7 +- .../networking/v2/extensions/dns/dns_test.go | 25 ++-- .../networking/v2/extensions/extensions.go | 13 +- .../v2/extensions/fwaas/firewall_test.go | 15 ++- .../networking/v2/extensions/fwaas/fwaas.go | 17 +-- .../v2/extensions/fwaas/policy_test.go | 7 +- .../v2/extensions/fwaas/rule_test.go | 7 +- .../v2/extensions/fwaas_v2/fwaas_v2.go | 17 +-- .../v2/extensions/fwaas_v2/groups_test.go | 3 +- .../v2/extensions/fwaas_v2/policy_test.go | 7 +- .../v2/extensions/fwaas_v2/rule_test.go | 7 +- .../extensions/layer3/addressscopes_test.go | 7 +- .../v2/extensions/layer3/extraroutes_test.go | 13 +- .../v2/extensions/layer3/floatingips_test.go | 23 ++-- .../extensions/layer3/l3_scheduling_test.go | 13 +- .../networking/v2/extensions/layer3/layer3.go | 35 ++--- .../extensions/layer3/portforwardings_test.go | 11 +- .../v2/extensions/layer3/routers_test.go | 23 ++-- .../networking/v2/extensions/lbaas/lbaas.go | 17 +-- .../v2/extensions/lbaas/members_test.go | 7 +- .../v2/extensions/lbaas/monitors_test.go | 7 +- .../v2/extensions/lbaas/pools_test.go | 11 +- .../v2/extensions/lbaas/vips_test.go | 7 +- .../v2/extensions/lbaas_v2/l7policies_test.go | 3 +- .../v2/extensions/lbaas_v2/lbaas_v2.go | 31 ++--- .../v2/extensions/lbaas_v2/listeners_test.go | 3 +- .../extensions/lbaas_v2/loadbalancers_test.go | 47 +++---- .../v2/extensions/lbaas_v2/monitors_test.go | 3 +- .../v2/extensions/lbaas_v2/pools_test.go | 3 +- .../networking/v2/extensions/mtu/mtu.go | 3 +- .../networking/v2/extensions/mtu/mtu_test.go | 15 ++- .../networkipavailabilities_test.go | 3 +- .../extensions/portsbinding/portsbinding.go | 3 +- .../portsbinding/portsbinding_test.go | 5 +- .../networking/v2/extensions/provider_test.go | 3 +- .../v2/extensions/qos/policies/policies.go | 5 +- .../extensions/qos/policies/policies_test.go | 9 +- .../v2/extensions/qos/rules/rules.go | 7 +- .../v2/extensions/qos/rules/rules_test.go | 31 ++--- .../qos/ruletypes/ruletypes_test.go | 7 +- .../v2/extensions/quotas/quotas_test.go | 9 +- .../extensions/rbacpolicies/rbacpolicies.go | 5 +- .../rbacpolicies/rbacpolicies_test.go | 7 +- .../networking/v2/extensions/security_test.go | 5 +- .../v2/extensions/subnetpools/subnetpools.go | 5 +- .../subnetpools/subnetpools_test.go | 7 +- .../extensions/trunk_details/trunks_test.go | 7 +- .../networking/v2/extensions/trunks/trunks.go | 5 +- .../v2/extensions/trunks/trunks_test.go | 35 ++--- .../vlantransparent/vlantransparent.go | 7 +- .../vlantransparent/vlantransparent_test.go | 3 +- .../v2/extensions/vpnaas/group_test.go | 7 +- .../v2/extensions/vpnaas/ikepolicy_test.go | 7 +- .../v2/extensions/vpnaas/ipsecpolicy_test.go | 7 +- .../v2/extensions/vpnaas/service_test.go | 5 +- .../extensions/vpnaas/siteconnection_test.go | 9 +- .../networking/v2/extensions/vpnaas/vpnaas.go | 25 ++-- .../openstack/networking/v2/networking.go | 49 +++---- .../openstack/networking/v2/networks_test.go | 23 ++-- .../openstack/networking/v2/ports_test.go | 37 +++--- .../openstack/networking/v2/subnets_test.go | 29 +++-- .../objectstorage/v1/accounts_test.go | 7 +- .../objectstorage/v1/containers_test.go | 33 ++--- .../objectstorage/v1/objects_test.go | 57 +++++---- .../objectstorage/v1/versioning_test.go | 27 ++-- .../orchestration/v1/buildinfo_test.go | 3 +- .../orchestration/v1/orchestration.go | 13 +- .../orchestration/v1/stackevents_test.go | 5 +- .../orchestration/v1/stackresources_test.go | 11 +- .../openstack/orchestration/v1/stacks_test.go | 5 +- .../orchestration/v1/stacktemplates_test.go | 7 +- .../openstack/placement/v1/placement.go | 7 +- .../placement/v1/resourceproviders_test.go | 15 ++- .../v2/availabilityzones_test.go | 3 +- .../sharedfilesystems/v2/messages/messages.go | 3 +- .../v2/messages/messages_test.go | 9 +- .../sharedfilesystems/v2/replicas.go | 11 +- .../sharedfilesystems/v2/replicas_test.go | 25 ++-- .../v2/schedulerstats_test.go | 3 +- .../sharedfilesystems/v2/securityservices.go | 5 +- .../v2/securityservices_test.go | 11 +- .../sharedfilesystems/v2/services_test.go | 3 +- .../sharedfilesystems/v2/shareaccessrules.go | 5 +- .../sharedfilesystems/v2/sharenetworks.go | 5 +- .../v2/sharenetworks_test.go | 19 +-- .../openstack/sharedfilesystems/v2/shares.go | 21 +-- .../sharedfilesystems/v2/shares_test.go | 33 ++--- .../sharedfilesystems/v2/sharetransfers.go | 7 +- .../v2/sharetransfers_test.go | 5 +- .../sharedfilesystems/v2/sharetypes.go | 5 +- .../sharedfilesystems/v2/sharetypes_test.go | 21 +-- .../sharedfilesystems/v2/snapshots.go | 9 +- .../sharedfilesystems/v2/snapshots_test.go | 13 +- .../openstack/workflow/v2/crontrigger.go | 9 +- .../openstack/workflow/v2/execution.go | 9 +- .../openstack/workflow/v2/workflow.go | 9 +- openstack/baremetal/apiversions/requests.go | 10 +- .../apiversions/testing/requests_test.go | 5 +- .../baremetal/v1/allocations/requests.go | 14 +- .../v1/allocations/testing/requests_test.go | 9 +- openstack/baremetal/v1/conductors/requests.go | 5 +- .../v1/conductors/testing/requests_test.go | 7 +- openstack/baremetal/v1/drivers/requests.go | 14 +- .../v1/drivers/testing/requests_test.go | 9 +- openstack/baremetal/v1/nodes/requests.go | 93 +++++++------- .../v1/nodes/testing/requests_test.go | 75 +++++------ openstack/baremetal/v1/ports/requests.go | 17 +-- .../v1/ports/testing/requests_test.go | 13 +- .../v1/introspection/requests.go | 22 ++-- .../v1/introspection/testing/requests_test.go | 13 +- .../apiversions/testing/requests_test.go | 9 +- .../testing/requests_test.go | 3 +- .../extensions/backups/requests.go | 38 +++--- .../backups/testing/requests_test.go | 21 +-- .../extensions/limits/requests.go | 6 +- .../limits/testing/requests_test.go | 3 +- .../extensions/quotasets/requests.go | 21 +-- .../quotasets/testing/requests_test.go | 13 +- .../schedulerstats/testing/requests_test.go | 3 +- .../services/testing/requests_test.go | 3 +- .../extensions/volumeactions/requests.go | 62 ++++----- .../volumeactions/testing/requests_test.go | 31 ++--- .../extensions/volumetransfers/requests.go | 18 +-- .../volumetransfers/testing/requests_test.go | 13 +- .../blockstorage/v1/apiversions/requests.go | 6 +- .../v1/apiversions/testing/requests_test.go | 5 +- .../blockstorage/v1/snapshots/requests.go | 18 +-- .../v1/snapshots/testing/requests_test.go | 11 +- openstack/blockstorage/v1/snapshots/util.go | 6 +- openstack/blockstorage/v1/volumes/requests.go | 18 +-- .../v1/volumes/testing/requests_test.go | 13 +- openstack/blockstorage/v1/volumes/util.go | 6 +- .../blockstorage/v1/volumetypes/requests.go | 14 +- .../v1/volumetypes/testing/requests_test.go | 9 +- .../blockstorage/v2/snapshots/requests.go | 18 +-- .../v2/snapshots/testing/requests_test.go | 11 +- openstack/blockstorage/v2/snapshots/util.go | 6 +- openstack/blockstorage/v2/volumes/requests.go | 18 +-- .../v2/volumes/testing/requests_test.go | 19 +-- openstack/blockstorage/v2/volumes/util.go | 6 +- .../blockstorage/v3/attachments/requests.go | 22 ++-- .../v3/attachments/testing/requests_test.go | 15 ++- openstack/blockstorage/v3/attachments/util.go | 6 +- openstack/blockstorage/v3/qos/requests.go | 34 ++--- .../v3/qos/testing/requests_test.go | 21 +-- .../blockstorage/v3/snapshots/requests.go | 34 ++--- .../v3/snapshots/testing/requests_test.go | 19 +-- openstack/blockstorage/v3/snapshots/util.go | 6 +- openstack/blockstorage/v3/volumes/requests.go | 18 +-- .../v3/volumes/testing/requests_test.go | 21 +-- openstack/blockstorage/v3/volumes/util.go | 6 +- .../blockstorage/v3/volumetypes/requests.go | 66 +++++----- .../v3/volumetypes/testing/requests_test.go | 37 +++--- openstack/client.go | 52 +++----- openstack/clustering/v1/actions/requests.go | 6 +- .../v1/actions/testing/requests_test.go | 5 +- openstack/clustering/v1/clusters/requests.go | 77 +++++------ .../v1/clusters/testing/requests_test.go | 51 ++++---- openstack/clustering/v1/events/requests.go | 6 +- .../v1/events/testing/requests_test.go | 5 +- openstack/clustering/v1/nodes/requests.go | 30 +++-- .../v1/nodes/testing/requests_test.go | 17 +-- openstack/clustering/v1/policies/requests.go | 22 ++-- .../v1/policies/testing/requests_test.go | 17 +-- .../clustering/v1/policytypes/requests.go | 6 +- .../v1/policytypes/testing/requests_test.go | 5 +- openstack/clustering/v1/profiles/requests.go | 22 ++-- .../v1/profiles/testing/requests_test.go | 13 +- .../clustering/v1/profiletypes/requests.go | 6 +- .../v1/profiletypes/testing/requests_test.go | 9 +- openstack/clustering/v1/receivers/requests.go | 22 ++-- .../v1/receivers/testing/requests_test.go | 13 +- openstack/clustering/v1/webhooks/requests.go | 5 +- .../v1/webhooks/testing/requests_test.go | 9 +- openstack/common/extensions/requests.go | 6 +- .../extensions/testing/requests_test.go | 5 +- openstack/compute/apiversions/requests.go | 6 +- .../apiversions/testing/requests_test.go | 7 +- .../v2/extensions/aggregates/requests.go | 29 +++-- .../aggregates/testing/requests_test.go | 17 +-- .../extensions/attachinterfaces/requests.go | 14 +- .../attachinterfaces/testing/requests_test.go | 11 +- .../testing/requests_test.go | 5 +- .../v2/extensions/bootfromvolume/requests.go | 6 +- .../v2/extensions/defsecrules/requests.go | 13 +- .../defsecrules/testing/requests_test.go | 11 +- openstack/compute/v2/extensions/delegate.go | 6 +- .../v2/extensions/diagnostics/requests.go | 6 +- .../diagnostics/testing/requests_test.go | 3 +- .../v2/extensions/evacuate/requests.go | 6 +- .../evacuate/testing/requests_test.go | 9 +- .../testing/requests_test.go | 3 +- .../v2/extensions/floatingips/requests.go | 22 ++-- .../floatingips/testing/requests_test.go | 17 +-- .../v2/extensions/hypervisors/requests.go | 14 +- .../hypervisors/testing/requests_test.go | 19 +-- .../extensions/injectnetworkinfo/requests.go | 6 +- .../testing/requests_test.go | 3 +- .../v2/extensions/instanceactions/request.go | 5 +- .../instanceactions/testing/request_test.go | 5 +- .../v2/extensions/keypairs/requests.go | 14 +- .../keypairs/testing/requests_test.go | 17 +-- .../compute/v2/extensions/limits/requests.go | 6 +- .../limits/testing/requests_test.go | 3 +- .../v2/extensions/lockunlock/requests.go | 10 +- .../lockunlock/testing/request_test.go | 5 +- .../compute/v2/extensions/migrate/requests.go | 10 +- .../migrate/testing/requests_test.go | 5 +- .../v2/extensions/networks/requests.go | 6 +- .../networks/testing/requests_test.go | 5 +- .../v2/extensions/pauseunpause/requests.go | 10 +- .../pauseunpause/testing/requests_test.go | 5 +- .../v2/extensions/quotasets/requests.go | 18 +-- .../quotasets/testing/requests_test.go | 13 +- .../v2/extensions/remoteconsoles/requests.go | 6 +- .../remoteconsoles/testing/requests_test.go | 3 +- .../v2/extensions/rescueunrescue/requests.go | 10 +- .../rescueunrescue/testing/requests_test.go | 5 +- .../v2/extensions/resetnetwork/requests.go | 6 +- .../resetnetwork/testing/requests_test.go | 3 +- .../v2/extensions/resetstate/requests.go | 6 +- .../resetstate/testing/requests_test.go | 3 +- .../v2/extensions/secgroups/requests.go | 34 ++--- .../secgroups/testing/requests_test.go | 27 ++-- .../v2/extensions/servergroups/requests.go | 14 +- .../servergroups/testing/requests_test.go | 13 +- .../serverusage/testing/requests_test.go | 3 +- .../v2/extensions/services/requests.go | 10 +- .../services/testing/requests_test.go | 9 +- .../v2/extensions/shelveunshelve/requests.go | 14 +- .../shelveunshelve/testing/requests_test.go | 9 +- .../v2/extensions/startstop/requests.go | 10 +- .../startstop/testing/requests_test.go | 5 +- .../v2/extensions/suspendresume/requests.go | 10 +- .../suspendresume/testing/requests_test.go | 5 +- .../compute/v2/extensions/tags/requests.go | 30 +++-- .../extensions/tags/testing/requests_test.go | 17 +-- .../v2/extensions/tenantnetworks/requests.go | 6 +- .../tenantnetworks/testing/requests_test.go | 5 +- .../v2/extensions/testing/delegate_test.go | 5 +- .../extensions/usage/testing/requests_test.go | 5 +- .../v2/extensions/volumeattach/requests.go | 14 +- .../volumeattach/testing/requests_test.go | 9 +- openstack/compute/v2/flavors/requests.go | 46 +++---- .../v2/flavors/testing/requests_test.go | 27 ++-- openstack/compute/v2/images/requests.go | 10 +- .../v2/images/testing/requests_test.go | 7 +- openstack/compute/v2/servers/requests.go | 81 ++++++------ .../v2/servers/testing/requests_test.go | 71 +++++----- .../v2/servers/testing/results_test.go | 3 +- openstack/compute/v2/servers/util.go | 10 +- openstack/config/provider_client.go | 2 +- openstack/container/v1/capsules/requests.go | 14 +- .../v1/capsules/testing/requests_test.go | 13 +- .../containerinfra/apiversions/requests.go | 6 +- .../apiversions/testing/requests_test.go | 5 +- .../v1/certificates/requests.go | 14 +- .../v1/certificates/testing/requests_test.go | 7 +- .../containerinfra/v1/clusters/requests.go | 26 ++-- .../v1/clusters/testing/requests_test.go | 17 +-- .../v1/clustertemplates/requests.go | 18 +-- .../clustertemplates/testing/requests_test.go | 17 +-- .../containerinfra/v1/nodegroups/requests.go | 18 +-- .../v1/nodegroups/testing/requests_test.go | 37 +++--- .../containerinfra/v1/quotas/requests.go | 6 +- .../v1/quotas/testing/requests_test.go | 3 +- openstack/db/v1/configurations/requests.go | 30 +++-- .../configurations/testing/requests_test.go | 23 ++-- openstack/db/v1/databases/requests.go | 10 +- .../db/v1/databases/testing/requests_test.go | 7 +- openstack/db/v1/datastores/requests.go | 10 +- .../db/v1/datastores/testing/requests_test.go | 9 +- openstack/db/v1/flavors/requests.go | 6 +- .../db/v1/flavors/testing/requests_test.go | 5 +- openstack/db/v1/instances/requests.go | 42 +++--- .../db/v1/instances/testing/requests_test.go | 25 ++-- openstack/db/v1/users/requests.go | 10 +- .../db/v1/users/testing/requests_test.go | 7 +- openstack/dns/v2/recordsets/requests.go | 18 +-- .../v2/recordsets/testing/requests_test.go | 15 ++- openstack/dns/v2/transfer/accept/requests.go | 9 +- .../transfer/accept/testing/accepts_test.go | 12 +- openstack/dns/v2/transfer/request/requests.go | 17 +-- .../transfer/request/testing/requests_test.go | 16 ++- openstack/dns/v2/zones/requests.go | 18 +-- .../dns/v2/zones/testing/requests_test.go | 13 +- .../v2/extensions/admin/roles/requests.go | 10 +- .../admin/roles/testing/requests_test.go | 7 +- openstack/identity/v2/extensions/delegate.go | 6 +- .../v2/extensions/testing/delegate_test.go | 5 +- openstack/identity/v2/tenants/requests.go | 18 +-- .../v2/tenants/testing/requests_test.go | 11 +- openstack/identity/v2/tokens/requests.go | 22 +--- .../v2/tokens/testing/requests_test.go | 7 +- openstack/identity/v2/users/requests.go | 18 +-- .../v2/users/testing/requests_test.go | 13 +- .../v3/applicationcredentials/requests.go | 21 +-- .../testing/requests_test.go | 21 +-- .../v3/catalog/testing/catalog_test.go | 3 +- openstack/identity/v3/credentials/requests.go | 18 +-- .../v3/credentials/testing/requests_test.go | 13 +- openstack/identity/v3/domains/requests.go | 18 +-- .../v3/domains/testing/requests_test.go | 15 ++- openstack/identity/v3/endpoints/requests.go | 14 +- .../v3/endpoints/testing/requests_test.go | 9 +- .../v3/extensions/ec2credentials/requests.go | 14 +- .../ec2credentials/testing/requests_test.go | 11 +- .../v3/extensions/ec2tokens/requests.go | 25 +--- .../ec2tokens/testing/requests_test.go | 3 +- .../v3/extensions/federation/requests.go | 18 +-- .../federation/testing/requests_test.go | 13 +- .../identity/v3/extensions/oauth1/requests.go | 121 +++++------------- .../oauth1/testing/requests_test.go | 35 ++--- .../extensions/projectendpoints/requests.go | 10 +- .../projectendpoints/testing/requests_test.go | 7 +- .../identity/v3/extensions/trusts/requests.go | 21 +-- .../trusts/testing/requests_test.go | 25 ++-- openstack/identity/v3/groups/requests.go | 17 +-- .../v3/groups/testing/requests_test.go | 13 +- openstack/identity/v3/limits/requests.go | 22 ++-- .../v3/limits/testing/requests_test.go | 15 ++- openstack/identity/v3/osinherit/requests.go | 18 ++- .../v3/osinherit/testing/requests_test.go | 37 +++--- openstack/identity/v3/policies/requests.go | 17 +-- .../v3/policies/testing/requests_test.go | 15 ++- openstack/identity/v3/projects/requests.go | 17 +-- .../v3/projects/testing/requests_test.go | 13 +- openstack/identity/v3/regions/requests.go | 18 +-- .../v3/regions/testing/requests_test.go | 13 +- .../identity/v3/registeredlimits/requests.go | 18 +-- .../registeredlimits/testing/requests_test.go | 13 +- openstack/identity/v3/roles/requests.go | 25 ++-- .../v3/roles/testing/requests_test.go | 43 ++++--- openstack/identity/v3/services/requests.go | 18 +-- .../v3/services/testing/requests_test.go | 13 +- openstack/identity/v3/tokens/requests.go | 44 ++----- .../v3/tokens/testing/requests_test.go | 21 +-- openstack/identity/v3/users/requests.go | 33 ++--- .../v3/users/testing/requests_test.go | 29 +++-- .../imageservice/v2/imagedata/requests.go | 13 +- .../v2/imagedata/testing/requests_test.go | 5 +- .../imageservice/v2/imageimport/requests.go | 14 +- .../v2/imageimport/testing/requests_test.go | 5 +- openstack/imageservice/v2/images/requests.go | 17 +-- .../v2/images/testing/requests_test.go | 19 +-- openstack/imageservice/v2/members/requests.go | 18 +-- .../v2/members/testing/requests_test.go | 13 +- openstack/imageservice/v2/tasks/requests.go | 10 +- .../v2/tasks/testing/requests_test.go | 7 +- openstack/keymanager/v1/acls/requests.go | 34 ++--- .../v1/acls/testing/requests_test.go | 17 +-- .../keymanager/v1/containers/requests.go | 30 +++-- .../v1/containers/testing/requests_test.go | 19 +-- openstack/keymanager/v1/orders/requests.go | 13 +- .../v1/orders/testing/requests_test.go | 11 +- openstack/keymanager/v1/secrets/requests.go | 45 +++---- .../v1/secrets/testing/requests_test.go | 27 ++-- .../loadbalancer/v2/amphorae/requests.go | 10 +- .../v2/amphorae/testing/requests_test.go | 9 +- .../v2/apiversions/testing/requests_test.go | 3 +- .../v2/flavorprofiles/requests.go | 18 +-- .../flavorprofiles/testing/requests_test.go | 15 ++- openstack/loadbalancer/v2/flavors/requests.go | 18 +-- .../v2/flavors/testing/requests_test.go | 15 ++- .../loadbalancer/v2/l7policies/requests.go | 34 ++--- .../v2/l7policies/testing/requests_test.go | 45 +++---- .../loadbalancer/v2/listeners/requests.go | 22 ++-- .../v2/listeners/testing/requests_test.go | 25 ++-- .../loadbalancer/v2/loadbalancers/requests.go | 30 +++-- .../v2/loadbalancers/testing/requests_test.go | 23 ++-- .../loadbalancer/v2/monitors/requests.go | 17 +-- .../v2/monitors/testing/requests_test.go | 21 +-- openstack/loadbalancer/v2/pools/requests.go | 38 +++--- .../v2/pools/testing/requests_test.go | 51 ++++---- .../v2/providers/testing/requests_test.go | 5 +- openstack/loadbalancer/v2/quotas/requests.go | 10 +- .../v2/quotas/testing/requests_test.go | 9 +- openstack/messaging/v2/claims/requests.go | 18 +-- .../v2/claims/testing/requests_test.go | 11 +- openstack/messaging/v2/messages/requests.go | 26 ++-- .../v2/messages/testing/requests_test.go | 15 ++- openstack/messaging/v2/queues/requests.go | 30 +++-- .../v2/queues/testing/requests_test.go | 17 +-- .../v2/apiversions/testing/requests_test.go | 9 +- .../v2/extensions/agents/requests.go | 46 +++---- .../agents/testing/requests_test.go | 31 +++-- .../v2/extensions/attributestags/requests.go | 26 ++-- .../attributestags/testing/requests_test.go | 15 ++- .../v2/extensions/bgp/peers/requests.go | 18 +-- .../bgp/peers/testing/requests_test.go | 12 +- .../v2/extensions/bgp/speakers/requests.go | 34 ++--- .../bgp/speakers/testing/requests_test.go | 23 ++-- .../networking/v2/extensions/delegate.go | 6 +- .../extensions/dns/testing/requests_test.go | 21 +-- .../external/testing/results_test.go | 9 +- .../v2/extensions/fwaas/firewalls/requests.go | 18 +-- .../fwaas/firewalls/testing/requests_test.go | 15 ++- .../v2/extensions/fwaas/policies/requests.go | 26 ++-- .../fwaas/policies/testing/requests_test.go | 11 +- .../routerinsertion/testing/requests_test.go | 9 +- .../v2/extensions/fwaas/rules/requests.go | 18 +-- .../fwaas/rules/testing/requests_test.go | 13 +- .../v2/extensions/fwaas_v2/groups/requests.go | 26 ++-- .../fwaas_v2/groups/testing/requests_test.go | 15 ++- .../extensions/fwaas_v2/policies/requests.go | 26 ++-- .../policies/testing/requests_test.go | 17 +-- .../v2/extensions/fwaas_v2/rules/requests.go | 18 +-- .../fwaas_v2/rules/testing/requests_test.go | 13 +- .../layer3/addressscopes/requests.go | 18 +-- .../addressscopes/testing/requests_test.go | 11 +- .../extensions/layer3/extraroutes/requests.go | 10 +- .../extraroutes/testing/requests_test.go | 5 +- .../extensions/layer3/floatingips/requests.go | 18 +-- .../floatingips/testing/requests_test.go | 23 ++-- .../layer3/portforwarding/requests.go | 18 +-- .../portforwarding/testing/requests_test.go | 11 +- .../v2/extensions/layer3/routers/requests.go | 26 ++-- .../layer3/routers/testing/requests_test.go | 25 ++-- .../v2/extensions/lbaas/members/requests.go | 18 +-- .../lbaas/members/testing/requests_test.go | 11 +- .../v2/extensions/lbaas/monitors/requests.go | 17 +-- .../lbaas/monitors/testing/requests_test.go | 19 +-- .../v2/extensions/lbaas/pools/requests.go | 26 ++-- .../lbaas/pools/testing/requests_test.go | 15 ++- .../v2/extensions/lbaas/vips/requests.go | 18 +-- .../lbaas/vips/testing/requests_test.go | 21 +-- .../lbaas_v2/l7policies/requests.go | 34 ++--- .../l7policies/testing/requests_test.go | 45 +++---- .../extensions/lbaas_v2/listeners/requests.go | 18 +-- .../listeners/testing/requests_test.go | 23 ++-- .../lbaas_v2/loadbalancers/requests.go | 29 +++-- .../loadbalancers/testing/requests_test.go | 29 +++-- .../extensions/lbaas_v2/monitors/requests.go | 17 +-- .../monitors/testing/requests_test.go | 21 +-- .../v2/extensions/lbaas_v2/pools/requests.go | 34 ++--- .../lbaas_v2/pools/testing/requests_test.go | 41 +++--- .../v2/extensions/mtu/testing/results_test.go | 9 +- .../networkipavailabilities/requests.go | 6 +- .../testing/requests_test.go | 5 +- .../portsbinding/testing/requests_test.go | 11 +- .../provider/testing/results_test.go | 11 +- .../v2/extensions/qos/policies/requests.go | 18 +-- .../qos/policies/testing/requests_test.go | 27 ++-- .../v2/extensions/qos/rules/requests.go | 50 ++++---- .../qos/rules/testing/requests_test.go | 31 ++--- .../v2/extensions/qos/ruletypes/requests.go | 6 +- .../qos/ruletypes/testing/requests_test.go | 5 +- .../v2/extensions/quotas/requests.go | 18 ++- .../quotas/testing/requests_test.go | 7 +- .../v2/extensions/rbacpolicies/requests.go | 18 +-- .../rbacpolicies/testing/requests_test.go | 13 +- .../v2/extensions/security/groups/requests.go | 18 +-- .../security/groups/testing/requests_test.go | 11 +- .../v2/extensions/security/rules/requests.go | 14 +- .../security/rules/testing/requests_test.go | 17 +-- .../v2/extensions/subnetpools/requests.go | 18 +-- .../subnetpools/testing/requests_test.go | 11 +- .../v2/extensions/testing/delegate_test.go | 5 +- .../trunk_details/testing/requests_test.go | 3 +- .../v2/extensions/trunks/requests.go | 30 +++-- .../trunks/testing/requests_test.go | 21 +-- .../vlantransparent/testing/requests_test.go | 9 +- .../vpnaas/endpointgroups/requests.go | 18 +-- .../endpointgroups/testing/requests_test.go | 11 +- .../extensions/vpnaas/ikepolicies/requests.go | 18 +-- .../ikepolicies/testing/requests_test.go | 11 +- .../vpnaas/ipsecpolicies/requests.go | 18 +-- .../ipsecpolicies/testing/requests_test.go | 11 +- .../v2/extensions/vpnaas/services/requests.go | 18 +-- .../vpnaas/services/testing/requests_test.go | 11 +- .../vpnaas/siteconnections/requests.go | 18 +-- .../siteconnections/testing/requests_test.go | 11 +- openstack/networking/v2/networks/requests.go | 17 +-- .../v2/networks/testing/requests_test.go | 25 ++-- openstack/networking/v2/ports/requests.go | 17 +-- .../v2/ports/testing/requests_test.go | 55 ++++---- openstack/networking/v2/subnets/requests.go | 17 +-- .../v2/subnets/testing/requests_test.go | 41 +++--- .../objectstorage/v1/accounts/requests.go | 14 +- .../v1/accounts/testing/requests_test.go | 7 +- .../objectstorage/v1/containers/requests.go | 21 +-- .../v1/containers/testing/requests_test.go | 33 ++--- .../objectstorage/v1/objects/requests.go | 35 ++--- .../v1/objects/testing/requests_test.go | 65 +++++----- openstack/objectstorage/v1/swauth/requests.go | 14 +- .../v1/swauth/testing/requests_test.go | 3 +- .../v1/apiversions/testing/requests_test.go | 5 +- .../orchestration/v1/buildinfo/requests.go | 10 +- .../v1/buildinfo/testing/requests_test.go | 3 +- .../v1/resourcetypes/requests.go | 14 +- .../v1/resourcetypes/testing/requests_test.go | 11 +- .../orchestration/v1/stackevents/requests.go | 10 +- .../v1/stackevents/testing/requests_test.go | 9 +- .../v1/stackresources/requests.go | 26 ++-- .../stackresources/testing/requests_test.go | 17 +-- openstack/orchestration/v1/stacks/requests.go | 37 +++--- .../v1/stacks/testing/requests_test.go | 25 ++-- .../v1/stacktemplates/requests.go | 14 +- .../stacktemplates/testing/requests_test.go | 5 +- .../v1/resourceproviders/requests.go | 34 ++--- .../testing/requests_test.go | 19 +-- .../sharedfilesystems/apiversions/requests.go | 6 +- .../apiversions/testing/requests_test.go | 9 +- .../testing/requests_test.go | 3 +- .../v2/errors/testing/request_test.go | 3 +- .../sharedfilesystems/v2/messages/requests.go | 10 +- .../v2/messages/testing/requests_test.go | 9 +- .../sharedfilesystems/v2/replicas/requests.go | 42 +++--- .../v2/replicas/testing/request_test.go | 25 ++-- .../schedulerstats/testing/requests_test.go | 5 +- .../v2/securityservices/requests.go | 18 +-- .../securityservices/testing/requests_test.go | 15 ++- .../v2/services/testing/requests_test.go | 3 +- .../v2/shareaccessrules/requests.go | 10 +- .../shareaccessrules/testing/requests_test.go | 3 +- .../v2/sharenetworks/requests.go | 26 ++-- .../v2/sharenetworks/testing/requests_test.go | 19 +-- .../sharedfilesystems/v2/shares/requests.go | 82 ++++++------ .../v2/shares/testing/request_test.go | 43 ++++--- .../v2/sharetransfers/requests.go | 18 +-- .../sharetransfers/testing/requests_test.go | 15 ++- .../v2/sharetypes/requests.go | 38 +++--- .../v2/sharetypes/testing/requests_test.go | 25 ++-- .../v2/snapshots/requests.go | 26 ++-- .../v2/snapshots/testing/request_test.go | 15 ++- openstack/testing/client_test.go | 9 +- openstack/utils/choose_version.go | 13 +- .../utils/testing/choose_version_test.go | 9 +- .../workflow/v2/crontriggers/requests.go | 13 +- .../v2/crontriggers/testing/requests_test.go | 9 +- openstack/workflow/v2/executions/requests.go | 13 +- .../v2/executions/testing/requests_test.go | 9 +- openstack/workflow/v2/workflows/requests.go | 13 +- .../v2/workflows/testing/requests_test.go | 9 +- pagination/http.go | 11 +- pagination/pager.go | 32 ++--- pagination/testing/linked_test.go | 5 +- pagination/testing/marker_test.go | 5 +- pagination/testing/single_test.go | 5 +- provider_client.go | 9 +- service_client.go | 75 +++-------- testing/provider_client_test.go | 32 ++--- testing/service_client_test.go | 3 +- 694 files changed, 5954 insertions(+), 5250 deletions(-) diff --git a/internal/acceptance/clients/clients.go b/internal/acceptance/clients/clients.go index ea395f2b2a..05f45fe56d 100644 --- a/internal/acceptance/clients/clients.go +++ b/internal/acceptance/clients/clients.go @@ -4,6 +4,7 @@ package clients import ( + "context" "fmt" "net/http" "os" @@ -143,7 +144,7 @@ func NewBlockStorageV1Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -164,7 +165,7 @@ func NewBlockStorageV2Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -185,7 +186,7 @@ func NewBlockStorageV3Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -244,7 +245,7 @@ func NewComputeV2Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -265,7 +266,7 @@ func NewBareMetalV1Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -306,7 +307,7 @@ func NewBareMetalIntrospectionV1Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -327,7 +328,7 @@ func NewDBV1Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -348,7 +349,7 @@ func NewDNSV2Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -369,7 +370,7 @@ func NewIdentityV2Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -390,7 +391,7 @@ func NewIdentityV2AdminClient() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -431,7 +432,7 @@ func NewIdentityV3Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -471,7 +472,7 @@ func NewImageServiceV2Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -492,7 +493,7 @@ func NewNetworkV2Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -513,7 +514,7 @@ func NewObjectStorageV1Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -534,7 +535,7 @@ func NewSharedFileSystemV2Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -555,7 +556,7 @@ func NewLoadBalancerV2Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -576,7 +577,7 @@ func NewClusteringV1Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -597,7 +598,7 @@ func NewMessagingV2Client(clientID string) (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -618,7 +619,7 @@ func NewContainerV1Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -639,7 +640,7 @@ func NewKeyManagerV1Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -674,7 +675,7 @@ func NewContainerInfraV1Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -695,7 +696,7 @@ func NewWorkflowV2Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -716,7 +717,7 @@ func NewOrchestrationV1Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } @@ -737,7 +738,7 @@ func NewPlacementV1Client() (*gophercloud.ServiceClient, error) { return nil, err } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { return nil, err } diff --git a/internal/acceptance/openstack/baremetal/httpbasic/allocations_test.go b/internal/acceptance/openstack/baremetal/httpbasic/allocations_test.go index ea32644e7b..2a677452c6 100644 --- a/internal/acceptance/openstack/baremetal/httpbasic/allocations_test.go +++ b/internal/acceptance/openstack/baremetal/httpbasic/allocations_test.go @@ -4,6 +4,7 @@ package httpbasic import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -27,7 +28,7 @@ func TestAllocationsCreateDestroy(t *testing.T) { defer v1.DeleteAllocation(t, client, allocation) found := false - err = allocations.List(client, allocations.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err = allocations.List(client, allocations.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { allocationList, err := allocations.ExtractAllocations(page) if err != nil { return false, err diff --git a/internal/acceptance/openstack/baremetal/httpbasic/nodes_test.go b/internal/acceptance/openstack/baremetal/httpbasic/nodes_test.go index 68ff249c3a..ca204eeecf 100644 --- a/internal/acceptance/openstack/baremetal/httpbasic/nodes_test.go +++ b/internal/acceptance/openstack/baremetal/httpbasic/nodes_test.go @@ -1,6 +1,7 @@ package httpbasic import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -24,7 +25,7 @@ func TestNodesCreateDestroy(t *testing.T) { defer v1.DeleteNode(t, client, node) found := false - err = nodes.List(client, nodes.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err = nodes.List(client, nodes.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { nodeList, err := nodes.ExtractNodes(page) if err != nil { return false, err @@ -56,7 +57,7 @@ func TestNodesUpdate(t *testing.T) { th.AssertNoErr(t, err) defer v1.DeleteNode(t, client, node) - updated, err := nodes.Update(client, node.UUID, nodes.UpdateOpts{ + updated, err := nodes.Update(context.TODO(), client, node.UUID, nodes.UpdateOpts{ nodes.UpdateOperation{ Op: nodes.ReplaceOp, Path: "/maintenance", @@ -84,7 +85,7 @@ func TestNodesRAIDConfig(t *testing.T) { sizeGB := 100 isTrue := true - err = nodes.SetRAIDConfig(client, node.UUID, nodes.RAIDConfigOpts{ + err = nodes.SetRAIDConfig(context.TODO(), client, node.UUID, nodes.RAIDConfigOpts{ LogicalDisks: []nodes.LogicalDisk{ { SizeGB: &sizeGB, @@ -113,7 +114,7 @@ func TestNodesFirmwareInterface(t *testing.T) { th.AssertEquals(t, node.FirmwareInterface, "no-firmware") - nodeFirmwareCmps, err := nodes.ListFirmware(client, node.UUID).Extract() + nodeFirmwareCmps, err := nodes.ListFirmware(context.TODO(), client, node.UUID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, nodeFirmwareCmps, []nodes.FirmwareComponent{}) } diff --git a/internal/acceptance/openstack/baremetal/httpbasic/ports_test.go b/internal/acceptance/openstack/baremetal/httpbasic/ports_test.go index ae12b6d9c6..618b4b8cba 100644 --- a/internal/acceptance/openstack/baremetal/httpbasic/ports_test.go +++ b/internal/acceptance/openstack/baremetal/httpbasic/ports_test.go @@ -4,6 +4,7 @@ package httpbasic import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -29,7 +30,7 @@ func TestPortsCreateDestroy(t *testing.T) { defer v1.DeletePort(t, client, port) found := false - err = ports.List(client, ports.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err = ports.List(client, ports.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { portList, err := ports.ExtractPorts(page) if err != nil { return false, err @@ -63,7 +64,7 @@ func TestPortsUpdate(t *testing.T) { defer v1.DeleteNode(t, client, node) defer v1.DeletePort(t, client, port) - updated, err := ports.Update(client, port.UUID, ports.UpdateOpts{ + updated, err := ports.Update(context.TODO(), client, port.UUID, ports.UpdateOpts{ ports.UpdateOperation{ Op: ports.ReplaceOp, Path: "/address", diff --git a/internal/acceptance/openstack/baremetal/noauth/allocations_test.go b/internal/acceptance/openstack/baremetal/noauth/allocations_test.go index 7ddf1fa4fd..11d792d1c4 100644 --- a/internal/acceptance/openstack/baremetal/noauth/allocations_test.go +++ b/internal/acceptance/openstack/baremetal/noauth/allocations_test.go @@ -4,6 +4,7 @@ package noauth import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -26,7 +27,7 @@ func TestAllocationsCreateDestroy(t *testing.T) { defer v1.DeleteAllocation(t, client, allocation) found := false - err = allocations.List(client, allocations.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err = allocations.List(client, allocations.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { allocationList, err := allocations.ExtractAllocations(page) if err != nil { return false, err diff --git a/internal/acceptance/openstack/baremetal/noauth/nodes_test.go b/internal/acceptance/openstack/baremetal/noauth/nodes_test.go index f64548e080..773dcdd9f6 100644 --- a/internal/acceptance/openstack/baremetal/noauth/nodes_test.go +++ b/internal/acceptance/openstack/baremetal/noauth/nodes_test.go @@ -1,6 +1,7 @@ package noauth import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -23,7 +24,7 @@ func TestNodesCreateDestroy(t *testing.T) { defer v1.DeleteNode(t, client, node) found := false - err = nodes.List(client, nodes.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err = nodes.List(client, nodes.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { nodeList, err := nodes.ExtractNodes(page) if err != nil { return false, err @@ -54,7 +55,7 @@ func TestNodesUpdate(t *testing.T) { th.AssertNoErr(t, err) defer v1.DeleteNode(t, client, node) - updated, err := nodes.Update(client, node.UUID, nodes.UpdateOpts{ + updated, err := nodes.Update(context.TODO(), client, node.UUID, nodes.UpdateOpts{ nodes.UpdateOperation{ Op: nodes.ReplaceOp, Path: "/maintenance", @@ -81,7 +82,7 @@ func TestNodesRAIDConfig(t *testing.T) { sizeGB := 100 isTrue := true - err = nodes.SetRAIDConfig(client, node.UUID, nodes.RAIDConfigOpts{ + err = nodes.SetRAIDConfig(context.TODO(), client, node.UUID, nodes.RAIDConfigOpts{ LogicalDisks: []nodes.LogicalDisk{ { SizeGB: &sizeGB, diff --git a/internal/acceptance/openstack/baremetal/noauth/ports_test.go b/internal/acceptance/openstack/baremetal/noauth/ports_test.go index ba4c6f8e57..4215002a97 100644 --- a/internal/acceptance/openstack/baremetal/noauth/ports_test.go +++ b/internal/acceptance/openstack/baremetal/noauth/ports_test.go @@ -4,6 +4,7 @@ package noauth import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -28,7 +29,7 @@ func TestPortsCreateDestroy(t *testing.T) { defer v1.DeletePort(t, client, port) found := false - err = ports.List(client, ports.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err = ports.List(client, ports.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { portList, err := ports.ExtractPorts(page) if err != nil { return false, err @@ -61,7 +62,7 @@ func TestPortsUpdate(t *testing.T) { defer v1.DeleteNode(t, client, node) defer v1.DeletePort(t, client, port) - updated, err := ports.Update(client, port.UUID, ports.UpdateOpts{ + updated, err := ports.Update(context.TODO(), client, port.UUID, ports.UpdateOpts{ ports.UpdateOperation{ Op: ports.ReplaceOp, Path: "/address", diff --git a/internal/acceptance/openstack/baremetal/v1/allocations_test.go b/internal/acceptance/openstack/baremetal/v1/allocations_test.go index eafc5a6204..88747fdbcf 100644 --- a/internal/acceptance/openstack/baremetal/v1/allocations_test.go +++ b/internal/acceptance/openstack/baremetal/v1/allocations_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -25,7 +26,7 @@ func TestAllocationsCreateDestroy(t *testing.T) { defer DeleteAllocation(t, client, allocation) found := false - err = allocations.List(client, allocations.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err = allocations.List(client, allocations.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { allocationList, err := allocations.ExtractAllocations(page) if err != nil { return false, err diff --git a/internal/acceptance/openstack/baremetal/v1/baremetal.go b/internal/acceptance/openstack/baremetal/v1/baremetal.go index 5257d27ded..4bb1a19631 100644 --- a/internal/acceptance/openstack/baremetal/v1/baremetal.go +++ b/internal/acceptance/openstack/baremetal/v1/baremetal.go @@ -1,6 +1,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -15,7 +16,7 @@ func CreateNode(t *testing.T, client *gophercloud.ServiceClient) (*nodes.Node, e name := tools.RandomString("ACPTTEST", 16) t.Logf("Attempting to create bare metal node: %s", name) - node, err := nodes.Create(client, nodes.CreateOpts{ + node, err := nodes.Create(context.TODO(), client, nodes.CreateOpts{ Name: name, Driver: "ipmi", BootInterface: "ipxe", @@ -35,7 +36,7 @@ func CreateNode(t *testing.T, client *gophercloud.ServiceClient) (*nodes.Node, e // DeleteNode deletes a bare metal node via its UUID. func DeleteNode(t *testing.T, client *gophercloud.ServiceClient, node *nodes.Node) { - err := nodes.Delete(client, node.UUID).ExtractErr() + err := nodes.Delete(context.TODO(), client, node.UUID).ExtractErr() if err != nil { t.Fatalf("Unable to delete node %s: %s", node.UUID, err) } @@ -48,7 +49,7 @@ func CreateAllocation(t *testing.T, client *gophercloud.ServiceClient) (*allocat name := tools.RandomString("ACPTTEST", 16) t.Logf("Attempting to create bare metal allocation: %s", name) - allocation, err := allocations.Create(client, allocations.CreateOpts{ + allocation, err := allocations.Create(context.TODO(), client, allocations.CreateOpts{ Name: name, ResourceClass: "baremetal", }).Extract() @@ -58,7 +59,7 @@ func CreateAllocation(t *testing.T, client *gophercloud.ServiceClient) (*allocat // DeleteAllocation deletes a bare metal allocation via its UUID. func DeleteAllocation(t *testing.T, client *gophercloud.ServiceClient, allocation *allocations.Allocation) { - err := allocations.Delete(client, allocation.UUID).ExtractErr() + err := allocations.Delete(context.TODO(), client, allocation.UUID).ExtractErr() if err != nil { t.Fatalf("Unable to delete allocation %s: %s", allocation.UUID, err) } @@ -71,7 +72,7 @@ func CreateFakeNode(t *testing.T, client *gophercloud.ServiceClient) (*nodes.Nod name := tools.RandomString("ACPTTEST", 16) t.Logf("Attempting to create bare metal node: %s", name) - node, err := nodes.Create(client, nodes.CreateOpts{ + node, err := nodes.Create(context.TODO(), client, nodes.CreateOpts{ Name: name, Driver: "fake-hardware", BootInterface: "fake", @@ -94,7 +95,7 @@ func CreatePort(t *testing.T, client *gophercloud.ServiceClient, node *nodes.Nod t.Logf("Attempting to create Port for Node: %s with Address: %s", node.UUID, mac) iTrue := true - port, err := ports.Create(client, ports.CreateOpts{ + port, err := ports.Create(context.TODO(), client, ports.CreateOpts{ NodeUUID: node.UUID, Address: mac, PXEEnabled: &iTrue, @@ -105,7 +106,7 @@ func CreatePort(t *testing.T, client *gophercloud.ServiceClient, node *nodes.Nod // DeletePort - deletes a port via its UUID func DeletePort(t *testing.T, client *gophercloud.ServiceClient, port *ports.Port) { - err := ports.Delete(client, port.UUID).ExtractErr() + err := ports.Delete(context.TODO(), client, port.UUID).ExtractErr() if err != nil { t.Fatalf("Unable to delete port %s: %s", port.UUID, err) } diff --git a/internal/acceptance/openstack/baremetal/v1/conductors_test.go b/internal/acceptance/openstack/baremetal/v1/conductors_test.go index 0b5e8d46b3..f63b7eec46 100644 --- a/internal/acceptance/openstack/baremetal/v1/conductors_test.go +++ b/internal/acceptance/openstack/baremetal/v1/conductors_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -21,7 +22,7 @@ func TestConductorsListAndGet(t *testing.T) { th.AssertNoErr(t, err) client.Microversion = "1.49" - err = conductors.List(client, conductors.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err = conductors.List(client, conductors.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { conductorList, err := conductors.ExtractConductors(page) if err != nil { return false, err @@ -30,7 +31,7 @@ func TestConductorsListAndGet(t *testing.T) { tools.PrintResource(t, conductorList) if len(conductorList) > 0 { - conductor, err := conductors.Get(client, conductorList[0].Hostname).Extract() + conductor, err := conductors.Get(context.TODO(), client, conductorList[0].Hostname).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, conductor) diff --git a/internal/acceptance/openstack/baremetal/v1/nodes_test.go b/internal/acceptance/openstack/baremetal/v1/nodes_test.go index 98fe95fed1..e51501eadf 100644 --- a/internal/acceptance/openstack/baremetal/v1/nodes_test.go +++ b/internal/acceptance/openstack/baremetal/v1/nodes_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -25,7 +26,7 @@ func TestNodesCreateDestroy(t *testing.T) { defer DeleteNode(t, client, node) found := false - err = nodes.List(client, nodes.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err = nodes.List(client, nodes.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { nodeList, err := nodes.ExtractNodes(page) if err != nil { return false, err @@ -56,7 +57,7 @@ func TestNodesUpdate(t *testing.T) { th.AssertNoErr(t, err) defer DeleteNode(t, client, node) - updated, err := nodes.Update(client, node.UUID, nodes.UpdateOpts{ + updated, err := nodes.Update(context.TODO(), client, node.UUID, nodes.UpdateOpts{ nodes.UpdateOperation{ Op: nodes.ReplaceOp, Path: "/maintenance", @@ -79,21 +80,21 @@ func TestNodesMaintenance(t *testing.T) { th.AssertNoErr(t, err) defer DeleteNode(t, client, node) - err = nodes.SetMaintenance(client, node.UUID, nodes.MaintenanceOpts{ + err = nodes.SetMaintenance(context.TODO(), client, node.UUID, nodes.MaintenanceOpts{ Reason: "I'm tired", }).ExtractErr() th.AssertNoErr(t, err) - updated, err := nodes.Get(client, node.UUID).Extract() + updated, err := nodes.Get(context.TODO(), client, node.UUID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, updated.Maintenance, true) th.AssertEquals(t, updated.MaintenanceReason, "I'm tired") - err = nodes.UnsetMaintenance(client, node.UUID).ExtractErr() + err = nodes.UnsetMaintenance(context.TODO(), client, node.UUID).ExtractErr() th.AssertNoErr(t, err) - updated, err = nodes.Get(client, node.UUID).Extract() + updated, err = nodes.Get(context.TODO(), client, node.UUID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, updated.Maintenance, false) @@ -115,7 +116,7 @@ func TestNodesRAIDConfig(t *testing.T) { sizeGB := 100 isTrue := true - err = nodes.SetRAIDConfig(client, node.UUID, nodes.RAIDConfigOpts{ + err = nodes.SetRAIDConfig(context.TODO(), client, node.UUID, nodes.RAIDConfigOpts{ LogicalDisks: []nodes.LogicalDisk{ { SizeGB: &sizeGB, @@ -135,7 +136,7 @@ func TestNodesRAIDConfig(t *testing.T) { }).ExtractErr() th.AssertNoErr(t, err) - err = nodes.SetRAIDConfig(client, node.UUID, nodes.RAIDConfigOpts{ + err = nodes.SetRAIDConfig(context.TODO(), client, node.UUID, nodes.RAIDConfigOpts{ LogicalDisks: []nodes.LogicalDisk{ { SizeGB: &sizeGB, @@ -163,7 +164,7 @@ func TestNodesFirmwareInterface(t *testing.T) { th.AssertEquals(t, node.FirmwareInterface, "no-firmware") - nodeFirmwareCmps, err := nodes.ListFirmware(client, node.UUID).Extract() + nodeFirmwareCmps, err := nodes.ListFirmware(context.TODO(), client, node.UUID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, nodeFirmwareCmps, []nodes.FirmwareComponent{}) } diff --git a/internal/acceptance/openstack/baremetal/v1/ports_test.go b/internal/acceptance/openstack/baremetal/v1/ports_test.go index 068c28d764..6ee31a7ad0 100644 --- a/internal/acceptance/openstack/baremetal/v1/ports_test.go +++ b/internal/acceptance/openstack/baremetal/v1/ports_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -28,7 +29,7 @@ func TestPortsCreateDestroy(t *testing.T) { defer DeletePort(t, client, port) found := false - err = ports.List(client, ports.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err = ports.List(client, ports.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { portList, err := ports.ExtractPorts(page) if err != nil { return false, err @@ -62,7 +63,7 @@ func TestPortsUpdate(t *testing.T) { th.AssertNoErr(t, err) defer DeletePort(t, client, port) - updated, err := ports.Update(client, port.UUID, ports.UpdateOpts{ + updated, err := ports.Update(context.TODO(), client, port.UUID, ports.UpdateOpts{ ports.UpdateOperation{ Op: ports.ReplaceOp, Path: "/address", diff --git a/internal/acceptance/openstack/blockstorage/apiversions_test.go b/internal/acceptance/openstack/blockstorage/apiversions_test.go index 3cf2ac717f..1b86ee5490 100644 --- a/internal/acceptance/openstack/blockstorage/apiversions_test.go +++ b/internal/acceptance/openstack/blockstorage/apiversions_test.go @@ -4,6 +4,7 @@ package blockstorage import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestAPIVersionsList(t *testing.T) { t.Fatalf("Unable to create a blockstorage client: %v", err) } - allPages, err := apiversions.List(client).AllPages() + allPages, err := apiversions.List(client).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve API versions: %v", err) } @@ -38,7 +39,7 @@ func TestAPIVersionsGet(t *testing.T) { t.Fatalf("Unable to create a blockstorage client: %v", err) } - allPages, err := apiversions.List(client).AllPages() + allPages, err := apiversions.List(client).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve API versions: %v", err) } diff --git a/internal/acceptance/openstack/blockstorage/extensions/backups_test.go b/internal/acceptance/openstack/blockstorage/extensions/backups_test.go index fd9f32e1db..e90a68482a 100644 --- a/internal/acceptance/openstack/blockstorage/extensions/backups_test.go +++ b/internal/acceptance/openstack/blockstorage/extensions/backups_test.go @@ -4,6 +4,7 @@ package extensions import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -25,7 +26,7 @@ func TestBackupsCRUD(t *testing.T) { th.AssertNoErr(t, err) defer DeleteBackup(t, blockClient, backup.ID) - allPages, err := backups.List(blockClient, nil).AllPages() + allPages, err := backups.List(blockClient, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allBackups, err := backups.ExtractBackups(allPages) @@ -75,7 +76,7 @@ func TestBackupsForceDelete(t *testing.T) { err = WaitForBackupStatus(blockClient, backup.ID, "available") th.AssertNoErr(t, err) - err = backups.ForceDelete(blockClient, backup.ID).ExtractErr() + err = backups.ForceDelete(context.TODO(), blockClient, backup.ID).ExtractErr() th.AssertNoErr(t, err) err = WaitForBackupStatus(blockClient, backup.ID, "deleted") diff --git a/internal/acceptance/openstack/blockstorage/extensions/extensions.go b/internal/acceptance/openstack/blockstorage/extensions/extensions.go index c606004f9f..bc46f09f3f 100644 --- a/internal/acceptance/openstack/blockstorage/extensions/extensions.go +++ b/internal/acceptance/openstack/blockstorage/extensions/extensions.go @@ -4,6 +4,7 @@ package extensions import ( + "context" "fmt" "strings" "testing" @@ -33,14 +34,14 @@ func CreateUploadImage(t *testing.T, client *gophercloud.ServiceClient, volume * Force: true, } - volumeImage, err := volumeactions.UploadImage(client, volume.ID, uploadImageOpts).Extract() + volumeImage, err := volumeactions.UploadImage(context.TODO(), client, volume.ID, uploadImageOpts).Extract() if err != nil { return volumeImage, err } t.Logf("Uploading volume %s as volume-backed image %s", volume.ID, imageName) - if err := volumes.WaitForStatus(client, volume.ID, "available", 60); err != nil { + if err := volumes.WaitForStatus(context.TODO(), client, volume.ID, "available", 60); err != nil { return volumeImage, err } @@ -59,7 +60,7 @@ func DeleteUploadedImage(t *testing.T, client *gophercloud.ServiceClient, imageI t.Logf("Removing image %s", imageID) - err := images.Delete(client, imageID).ExtractErr() + err := images.Delete(context.TODO(), client, imageID).ExtractErr() if err != nil { return err } @@ -82,11 +83,11 @@ func CreateVolumeAttach(t *testing.T, client *gophercloud.ServiceClient, volume t.Logf("Attempting to attach volume %s to server %s", volume.ID, server.ID) - if err := volumeactions.Attach(client, volume.ID, attachOpts).ExtractErr(); err != nil { + if err := volumeactions.Attach(context.TODO(), client, volume.ID, attachOpts).ExtractErr(); err != nil { return err } - if err := volumes.WaitForStatus(client, volume.ID, "in-use", 60); err != nil { + if err := volumes.WaitForStatus(context.TODO(), client, volume.ID, "in-use", 60); err != nil { return err } @@ -104,7 +105,7 @@ func CreateVolumeReserve(t *testing.T, client *gophercloud.ServiceClient, volume t.Logf("Attempting to reserve volume %s", volume.ID) - if err := volumeactions.Reserve(client, volume.ID).ExtractErr(); err != nil { + if err := volumeactions.Reserve(context.TODO(), client, volume.ID).ExtractErr(); err != nil { return err } @@ -123,11 +124,11 @@ func DeleteVolumeAttach(t *testing.T, client *gophercloud.ServiceClient, volume AttachmentID: volume.Attachments[0].AttachmentID, } - if err := volumeactions.Detach(client, volume.ID, detachOpts).ExtractErr(); err != nil { + if err := volumeactions.Detach(context.TODO(), client, volume.ID, detachOpts).ExtractErr(); err != nil { t.Fatalf("Unable to detach volume %s: %v", volume.ID, err) } - if err := volumes.WaitForStatus(client, volume.ID, "available", 60); err != nil { + if err := volumes.WaitForStatus(context.TODO(), client, volume.ID, "available", 60); err != nil { t.Fatalf("Volume %s failed to become unavailable in 60 seconds: %v", volume.ID, err) } @@ -144,7 +145,7 @@ func DeleteVolumeReserve(t *testing.T, client *gophercloud.ServiceClient, volume t.Logf("Attempting to unreserve volume %s", volume.ID) - if err := volumeactions.Unreserve(client, volume.ID).ExtractErr(); err != nil { + if err := volumeactions.Unreserve(context.TODO(), client, volume.ID).ExtractErr(); err != nil { t.Fatalf("Unable to unreserve volume %s: %v", volume.ID, err) } @@ -159,12 +160,12 @@ func ExtendVolumeSize(t *testing.T, client *gophercloud.ServiceClient, volume *v NewSize: 2, } - err := volumeactions.ExtendSize(client, volume.ID, extendOpts).ExtractErr() + err := volumeactions.ExtendSize(context.TODO(), client, volume.ID, extendOpts).ExtractErr() if err != nil { return err } - if err := volumes.WaitForStatus(client, volume.ID, "available", 60); err != nil { + if err := volumes.WaitForStatus(context.TODO(), client, volume.ID, "available", 60); err != nil { return err } @@ -181,7 +182,7 @@ func SetImageMetadata(t *testing.T, client *gophercloud.ServiceClient, volume *v }, } - err := volumeactions.SetImageMetadata(client, volume.ID, imageMetadataOpts).ExtractErr() + err := volumeactions.SetImageMetadata(context.TODO(), client, volume.ID, imageMetadataOpts).ExtractErr() if err != nil { return err } @@ -200,7 +201,7 @@ func CreateBackup(t *testing.T, client *gophercloud.ServiceClient, volumeID stri Name: backupName, } - backup, err := backups.Create(client, createOpts).Extract() + backup, err := backups.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -210,7 +211,7 @@ func CreateBackup(t *testing.T, client *gophercloud.ServiceClient, volumeID stri return nil, err } - backup, err = backups.Get(client, backup.ID).Extract() + backup, err = backups.Get(context.TODO(), client, backup.ID).Extract() if err != nil { return nil, err } @@ -226,7 +227,7 @@ func CreateBackup(t *testing.T, client *gophercloud.ServiceClient, volumeID stri // DeleteBackup will delete a backup. A fatal error will occur if the backup // could not be deleted. This works best when used as a deferred function. func DeleteBackup(t *testing.T, client *gophercloud.ServiceClient, backupID string) { - if err := backups.Delete(client, backupID).ExtractErr(); err != nil { + if err := backups.Delete(context.TODO(), client, backupID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { t.Logf("Backup %s is already deleted", backupID) return @@ -241,7 +242,7 @@ func DeleteBackup(t *testing.T, client *gophercloud.ServiceClient, backupID stri // status. It will do this for the amount of seconds defined. func WaitForBackupStatus(client *gophercloud.ServiceClient, id, status string) error { return tools.WaitFor(func() (bool, error) { - current, err := backups.Get(client, id).Extract() + current, err := backups.Get(context.TODO(), client, id).Extract() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok && status == "deleted" { return true, nil @@ -265,12 +266,12 @@ func SetBootable(t *testing.T, client *gophercloud.ServiceClient, volume *volume Bootable: true, } - err := volumeactions.SetBootable(client, volume.ID, bootableOpts).ExtractErr() + err := volumeactions.SetBootable(context.TODO(), client, volume.ID, bootableOpts).ExtractErr() if err != nil { return err } - vol, err := v3.Get(client, volume.ID).Extract() + vol, err := v3.Get(context.TODO(), client, volume.ID).Extract() if err != nil { return err } @@ -283,12 +284,12 @@ func SetBootable(t *testing.T, client *gophercloud.ServiceClient, volume *volume Bootable: false, } - err = volumeactions.SetBootable(client, volume.ID, bootableOpts).ExtractErr() + err = volumeactions.SetBootable(context.TODO(), client, volume.ID, bootableOpts).ExtractErr() if err != nil { return err } - vol, err = v3.Get(client, volume.ID).Extract() + vol, err = v3.Get(context.TODO(), client, volume.ID).Extract() if err != nil { return err } @@ -309,12 +310,12 @@ func ChangeVolumeType(t *testing.T, client *gophercloud.ServiceClient, volume *v MigrationPolicy: volumeactions.MigrationPolicyOnDemand, } - err := volumeactions.ChangeType(client, volume.ID, changeOpts).ExtractErr() + err := volumeactions.ChangeType(context.TODO(), client, volume.ID, changeOpts).ExtractErr() if err != nil { return err } - if err := volumes.WaitForStatus(client, volume.ID, "available", 60); err != nil { + if err := volumes.WaitForStatus(context.TODO(), client, volume.ID, "available", 60); err != nil { return err } @@ -328,12 +329,12 @@ func ResetVolumeStatus(t *testing.T, client *gophercloud.ServiceClient, volume * resetOpts := volumeactions.ResetStatusOpts{ Status: status, } - err := volumeactions.ResetStatus(client, volume.ID, resetOpts).ExtractErr() + err := volumeactions.ResetStatus(context.TODO(), client, volume.ID, resetOpts).ExtractErr() if err != nil { return err } - if err := volumes.WaitForStatus(client, volume.ID, status, 60); err != nil { + if err := volumes.WaitForStatus(context.TODO(), client, volume.ID, status, 60); err != nil { return err } @@ -347,7 +348,7 @@ func ResetBackupStatus(t *testing.T, client *gophercloud.ServiceClient, backup * resetOpts := backups.ResetStatusOpts{ Status: status, } - err := backups.ResetStatus(client, backup.ID, resetOpts).ExtractErr() + err := backups.ResetStatus(context.TODO(), client, backup.ID, resetOpts).ExtractErr() if err != nil { return err } @@ -364,17 +365,17 @@ func ReImage(t *testing.T, client *gophercloud.ServiceClient, volume *volumes.Vo ReImageReserved: false, } - err := volumeactions.ReImage(client, volume.ID, reimageOpts).ExtractErr() + err := volumeactions.ReImage(context.TODO(), client, volume.ID, reimageOpts).ExtractErr() if err != nil { return err } - err = volumes.WaitForStatus(client, volume.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, volume.ID, "available", 60) if err != nil { return err } - vol, err := v3.Get(client, volume.ID).Extract() + vol, err := v3.Get(context.TODO(), client, volume.ID).Extract() if err != nil { return err } diff --git a/internal/acceptance/openstack/blockstorage/extensions/limits_test.go b/internal/acceptance/openstack/blockstorage/extensions/limits_test.go index efdea5e95e..24bcee1096 100644 --- a/internal/acceptance/openstack/blockstorage/extensions/limits_test.go +++ b/internal/acceptance/openstack/blockstorage/extensions/limits_test.go @@ -1,6 +1,7 @@ package extensions import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -13,7 +14,7 @@ func TestLimits(t *testing.T) { client, err := clients.NewBlockStorageV3Client() th.AssertNoErr(t, err) - limits, err := limits.Get(client).Extract() + limits, err := limits.Get(context.TODO(), client).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, limits) diff --git a/internal/acceptance/openstack/blockstorage/extensions/schedulerhints_test.go b/internal/acceptance/openstack/blockstorage/extensions/schedulerhints_test.go index 6b08ea39dd..3b77886402 100644 --- a/internal/acceptance/openstack/blockstorage/extensions/schedulerhints_test.go +++ b/internal/acceptance/openstack/blockstorage/extensions/schedulerhints_test.go @@ -4,6 +4,7 @@ package extensions import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -25,12 +26,12 @@ func TestSchedulerHints(t *testing.T) { Name: volumeName, } - volume1, err := volumes.Create(client, createOpts).Extract() + volume1, err := volumes.Create(context.TODO(), client, createOpts).Extract() th.AssertNoErr(t, err) - err = volumes.WaitForStatus(client, volume1.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, volume1.ID, "available", 60) th.AssertNoErr(t, err) - defer volumes.Delete(client, volume1.ID, volumes.DeleteOpts{}) + defer volumes.Delete(context.TODO(), client, volume1.ID, volumes.DeleteOpts{}) volumeName = tools.RandomString("ACPTTEST", 16) base := volumes.CreateOpts{ @@ -49,12 +50,12 @@ func TestSchedulerHints(t *testing.T) { SchedulerHints: schedulerHints, } - volume2, err := volumes.Create(client, createOptsWithHints).Extract() + volume2, err := volumes.Create(context.TODO(), client, createOptsWithHints).Extract() th.AssertNoErr(t, err) - err = volumes.WaitForStatus(client, volume2.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, volume2.ID, "available", 60) th.AssertNoErr(t, err) - err = volumes.Delete(client, volume2.ID, volumes.DeleteOpts{}).ExtractErr() + err = volumes.Delete(context.TODO(), client, volume2.ID, volumes.DeleteOpts{}).ExtractErr() th.AssertNoErr(t, err) } diff --git a/internal/acceptance/openstack/blockstorage/extensions/schedulerstats_test.go b/internal/acceptance/openstack/blockstorage/extensions/schedulerstats_test.go index bc3124314b..5760970cac 100644 --- a/internal/acceptance/openstack/blockstorage/extensions/schedulerstats_test.go +++ b/internal/acceptance/openstack/blockstorage/extensions/schedulerstats_test.go @@ -4,6 +4,7 @@ package extensions import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,7 +23,7 @@ func TestSchedulerStatsList(t *testing.T) { Detail: true, } - allPages, err := schedulerstats.List(blockClient, listOpts).AllPages() + allPages, err := schedulerstats.List(blockClient, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allStats, err := schedulerstats.ExtractStoragePools(allPages) diff --git a/internal/acceptance/openstack/blockstorage/extensions/services_test.go b/internal/acceptance/openstack/blockstorage/extensions/services_test.go index c9c95aa387..92ae10a016 100644 --- a/internal/acceptance/openstack/blockstorage/extensions/services_test.go +++ b/internal/acceptance/openstack/blockstorage/extensions/services_test.go @@ -4,6 +4,7 @@ package extensions import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestServicesList(t *testing.T) { blockClient, err := clients.NewBlockStorageV3Client() th.AssertNoErr(t, err) - allPages, err := services.List(blockClient, services.ListOpts{}).AllPages() + allPages, err := services.List(blockClient, services.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allServices, err := services.ExtractServices(allPages) diff --git a/internal/acceptance/openstack/blockstorage/extensions/volumeactions_test.go b/internal/acceptance/openstack/blockstorage/extensions/volumeactions_test.go index 1427704583..2768c90132 100644 --- a/internal/acceptance/openstack/blockstorage/extensions/volumeactions_test.go +++ b/internal/acceptance/openstack/blockstorage/extensions/volumeactions_test.go @@ -4,6 +4,7 @@ package extensions import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -53,7 +54,7 @@ func TestVolumeActionsAttachCreateDestroy(t *testing.T) { err = CreateVolumeAttach(t, blockClient, volume, server) th.AssertNoErr(t, err) - newVolume, err := volumes.Get(blockClient, volume.ID).Extract() + newVolume, err := volumes.Get(context.TODO(), blockClient, volume.ID).Extract() th.AssertNoErr(t, err) DeleteVolumeAttach(t, blockClient, newVolume) @@ -85,7 +86,7 @@ func TestVolumeActionsExtendSize(t *testing.T) { err = ExtendVolumeSize(t, blockClient, volume) th.AssertNoErr(t, err) - newVolume, err := volumes.Get(blockClient, volume.ID).Extract() + newVolume, err := volumes.Get(context.TODO(), blockClient, volume.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newVolume) @@ -138,7 +139,7 @@ func TestVolumeActionsChangeType(t *testing.T) { err = ChangeVolumeType(t, client, volume, volumeType2) th.AssertNoErr(t, err) - newVolume, err := volumes.Get(client, volume.ID).Extract() + newVolume, err := volumes.Get(context.TODO(), client, volume.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, newVolume.VolumeType, volumeType2.Name) @@ -190,22 +191,22 @@ func TestVolumeConns(t *testing.T) { th.AssertNoErr(t, err) t.Logf("Creating volume") - cv, err := volumes.Create(client, &volumes.CreateOpts{ + cv, err := volumes.Create(context.TODO(), client, &volumes.CreateOpts{ Size: 1, Name: "blockv2-volume", }).Extract() th.AssertNoErr(t, err) defer func() { - err = volumes.WaitForStatus(client, cv.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, cv.ID, "available", 60) th.AssertNoErr(t, err) t.Logf("Deleting volume") - err = volumes.Delete(client, cv.ID, volumes.DeleteOpts{}).ExtractErr() + err = volumes.Delete(context.TODO(), client, cv.ID, volumes.DeleteOpts{}).ExtractErr() th.AssertNoErr(t, err) }() - err = volumes.WaitForStatus(client, cv.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, cv.ID, "available", 60) th.AssertNoErr(t, err) connOpts := &volumeactions.ConnectorOpts{ diff --git a/internal/acceptance/openstack/blockstorage/extensions/volumetenants_test.go b/internal/acceptance/openstack/blockstorage/extensions/volumetenants_test.go index 82a7e1c238..70a2681176 100644 --- a/internal/acceptance/openstack/blockstorage/extensions/volumetenants_test.go +++ b/internal/acceptance/openstack/blockstorage/extensions/volumetenants_test.go @@ -4,6 +4,7 @@ package extensions import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -27,7 +28,7 @@ func TestVolumeTenants(t *testing.T) { listOpts := volumes.ListOpts{ Name: "I SHOULD NOT EXIST", } - allPages, err := volumes.List(client, listOpts).AllPages() + allPages, err := volumes.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) err = volumes.ExtractVolumesInto(allPages, &allVolumes) @@ -38,7 +39,7 @@ func TestVolumeTenants(t *testing.T) { th.AssertNoErr(t, err) defer blockstorage.DeleteVolume(t, client, volume1) - allPages, err = volumes.List(client, nil).AllPages() + allPages, err = volumes.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) err = volumes.ExtractVolumesInto(allPages, &allVolumes) diff --git a/internal/acceptance/openstack/blockstorage/noauth/blockstorage.go b/internal/acceptance/openstack/blockstorage/noauth/blockstorage.go index 4caa5d5fd3..78ee6833dc 100644 --- a/internal/acceptance/openstack/blockstorage/noauth/blockstorage.go +++ b/internal/acceptance/openstack/blockstorage/noauth/blockstorage.go @@ -4,6 +4,7 @@ package noauth import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -28,12 +29,12 @@ func CreateVolume(t *testing.T, client *gophercloud.ServiceClient) (*volumes.Vol Name: volumeName, } - volume, err := volumes.Create(client, createOpts).Extract() + volume, err := volumes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return volume, err } - err = volumes.WaitForStatus(client, volume.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, volume.ID, "available", 60) if err != nil { return volume, err } @@ -62,12 +63,12 @@ func CreateVolumeFromImage(t *testing.T, client *gophercloud.ServiceClient) (*vo ImageID: choices.ImageID, } - volume, err := volumes.Create(client, createOpts).Extract() + volume, err := volumes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return volume, err } - err = volumes.WaitForStatus(client, volume.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, volume.ID, "available", 60) if err != nil { return volume, err } @@ -78,7 +79,7 @@ func CreateVolumeFromImage(t *testing.T, client *gophercloud.ServiceClient) (*vo // DeleteVolume will delete a volume. A fatal error will occur if the volume // failed to be deleted. This works best when used as a deferred function. func DeleteVolume(t *testing.T, client *gophercloud.ServiceClient, volume *volumes.Volume) { - err := volumes.Delete(client, volume.ID, volumes.DeleteOpts{}).ExtractErr() + err := volumes.Delete(context.TODO(), client, volume.ID, volumes.DeleteOpts{}).ExtractErr() if err != nil { t.Fatalf("Unable to delete volume %s: %v", volume.ID, err) } @@ -103,12 +104,12 @@ func CreateSnapshot(t *testing.T, client *gophercloud.ServiceClient, volume *vol Description: snapshotDescription, } - snapshot, err := snapshots.Create(client, createOpts).Extract() + snapshot, err := snapshots.Create(context.TODO(), client, createOpts).Extract() if err != nil { return snapshot, err } - err = snapshots.WaitForStatus(client, snapshot.ID, "available", 60) + err = snapshots.WaitForStatus(context.TODO(), client, snapshot.ID, "available", 60) if err != nil { return snapshot, err } @@ -119,7 +120,7 @@ func CreateSnapshot(t *testing.T, client *gophercloud.ServiceClient, volume *vol // DeleteSnapshot will delete a snapshot. A fatal error will occur if the // snapshot failed to be deleted. func DeleteSnapshot(t *testing.T, client *gophercloud.ServiceClient, snapshot *snapshots.Snapshot) { - err := snapshots.Delete(client, snapshot.ID).ExtractErr() + err := snapshots.Delete(context.TODO(), client, snapshot.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete snapshot %s: %+v", snapshot.ID, err) } @@ -127,7 +128,7 @@ func DeleteSnapshot(t *testing.T, client *gophercloud.ServiceClient, snapshot *s // Volumes can't be deleted until their snapshots have been, // so block up to 120 seconds for the snapshot to delete. err = tools.WaitFor(func() (bool, error) { - _, err := snapshots.Get(client, snapshot.ID).Extract() + _, err := snapshots.Get(context.TODO(), client, snapshot.ID).Extract() if err != nil { return true, nil } diff --git a/internal/acceptance/openstack/blockstorage/noauth/snapshots_test.go b/internal/acceptance/openstack/blockstorage/noauth/snapshots_test.go index 3d1176cf49..ecce2d8e92 100644 --- a/internal/acceptance/openstack/blockstorage/noauth/snapshots_test.go +++ b/internal/acceptance/openstack/blockstorage/noauth/snapshots_test.go @@ -4,6 +4,7 @@ package noauth import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestSnapshotsList(t *testing.T) { t.Fatalf("Unable to create a blockstorage client: %v", err) } - allPages, err := snapshots.List(client, snapshots.ListOpts{}).AllPages() + allPages, err := snapshots.List(client, snapshots.ListOpts{}).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve snapshots: %v", err) } @@ -50,7 +51,7 @@ func TestSnapshotsCreateDelete(t *testing.T) { } defer DeleteSnapshot(t, client, snapshot) - newSnapshot, err := snapshots.Get(client, snapshot.ID).Extract() + newSnapshot, err := snapshots.Get(context.TODO(), client, snapshot.ID).Extract() if err != nil { t.Errorf("Unable to retrieve snapshot: %v", err) } diff --git a/internal/acceptance/openstack/blockstorage/noauth/volumes_test.go b/internal/acceptance/openstack/blockstorage/noauth/volumes_test.go index 959a0b0286..e0356b0650 100644 --- a/internal/acceptance/openstack/blockstorage/noauth/volumes_test.go +++ b/internal/acceptance/openstack/blockstorage/noauth/volumes_test.go @@ -4,6 +4,7 @@ package noauth import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestVolumesList(t *testing.T) { t.Fatalf("Unable to create a blockstorage client: %v", err) } - allPages, err := volumes.List(client, volumes.ListOpts{}).AllPages() + allPages, err := volumes.List(client, volumes.ListOpts{}).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve volumes: %v", err) } @@ -44,7 +45,7 @@ func TestVolumesCreateDestroy(t *testing.T) { } defer DeleteVolume(t, client, volume) - newVolume, err := volumes.Get(client, volume.ID).Extract() + newVolume, err := volumes.Get(context.TODO(), client, volume.ID).Extract() if err != nil { t.Errorf("Unable to retrieve volume: %v", err) } diff --git a/internal/acceptance/openstack/blockstorage/v1/blockstorage.go b/internal/acceptance/openstack/blockstorage/v1/blockstorage.go index 67d6172363..98f60b5d70 100644 --- a/internal/acceptance/openstack/blockstorage/v1/blockstorage.go +++ b/internal/acceptance/openstack/blockstorage/v1/blockstorage.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -29,12 +30,12 @@ func CreateSnapshot(t *testing.T, client *gophercloud.ServiceClient, volume *vol VolumeID: volume.ID, } - snapshot, err := snapshots.Create(client, createOpts).Extract() + snapshot, err := snapshots.Create(context.TODO(), client, createOpts).Extract() if err != nil { return snapshot, err } - err = snapshots.WaitForStatus(client, snapshot.ID, "available", 60) + err = snapshots.WaitForStatus(context.TODO(), client, snapshot.ID, "available", 60) if err != nil { return snapshot, err } @@ -59,12 +60,12 @@ func CreateVolume(t *testing.T, client *gophercloud.ServiceClient) (*volumes.Vol Description: volumeDescription, } - volume, err := volumes.Create(client, createOpts).Extract() + volume, err := volumes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return volume, err } - err = volumes.WaitForStatus(client, volume.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, volume.ID, "available", 60) if err != nil { return volume, err } @@ -86,7 +87,7 @@ func CreateVolumeType(t *testing.T, client *gophercloud.ServiceClient) (*volumet }, } - volumeType, err := volumetypes.Create(client, createOpts).Extract() + volumeType, err := volumetypes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return volumeType, err } @@ -98,7 +99,7 @@ func CreateVolumeType(t *testing.T, client *gophercloud.ServiceClient) (*volumet // snapshot failed to be deleted. This works best when used as a deferred // function. func DeleteSnapshotshot(t *testing.T, client *gophercloud.ServiceClient, snapshot *snapshots.Snapshot) { - err := snapshots.Delete(client, snapshot.ID).ExtractErr() + err := snapshots.Delete(context.TODO(), client, snapshot.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete snapshot %s: %v", snapshot.ID, err) } @@ -106,7 +107,7 @@ func DeleteSnapshotshot(t *testing.T, client *gophercloud.ServiceClient, snapsho // Volumes can't be deleted until their snapshots have been, // so block until the snapshot has been deleted. err = tools.WaitFor(func() (bool, error) { - _, err := snapshots.Get(client, snapshot.ID).Extract() + _, err := snapshots.Get(context.TODO(), client, snapshot.ID).Extract() if err != nil { return true, nil } @@ -123,7 +124,7 @@ func DeleteSnapshotshot(t *testing.T, client *gophercloud.ServiceClient, snapsho // DeleteVolume will delete a volume. A fatal error will occur if the volume // failed to be deleted. This works best when used as a deferred function. func DeleteVolume(t *testing.T, client *gophercloud.ServiceClient, volume *volumes.Volume) { - err := volumes.Delete(client, volume.ID).ExtractErr() + err := volumes.Delete(context.TODO(), client, volume.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete volume %s: %v", volume.ID, err) } @@ -135,7 +136,7 @@ func DeleteVolume(t *testing.T, client *gophercloud.ServiceClient, volume *volum // volume type failed to be deleted. This works best when used as a deferred // function. func DeleteVolumeType(t *testing.T, client *gophercloud.ServiceClient, volumeType *volumetypes.VolumeType) { - err := volumetypes.Delete(client, volumeType.ID).ExtractErr() + err := volumetypes.Delete(context.TODO(), client, volumeType.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete volume type %s: %v", volumeType.ID, err) } diff --git a/internal/acceptance/openstack/blockstorage/v1/snapshots_test.go b/internal/acceptance/openstack/blockstorage/v1/snapshots_test.go index 2e3d8f38b8..06981d9869 100644 --- a/internal/acceptance/openstack/blockstorage/v1/snapshots_test.go +++ b/internal/acceptance/openstack/blockstorage/v1/snapshots_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestSnapshotsList(t *testing.T) { t.Fatalf("Unable to create a blockstorage client: %v", err) } - allPages, err := snapshots.List(client, snapshots.ListOpts{}).AllPages() + allPages, err := snapshots.List(client, snapshots.ListOpts{}).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve snapshots: %v", err) } @@ -52,7 +53,7 @@ func TestSnapshotsCreateDelete(t *testing.T) { } defer DeleteSnapshotshot(t, client, snapshot) - newSnapshot, err := snapshots.Get(client, snapshot.ID).Extract() + newSnapshot, err := snapshots.Get(context.TODO(), client, snapshot.ID).Extract() if err != nil { t.Errorf("Unable to retrieve snapshot: %v", err) } diff --git a/internal/acceptance/openstack/blockstorage/v1/volumes_test.go b/internal/acceptance/openstack/blockstorage/v1/volumes_test.go index fba2ddbf0f..ad222542e1 100644 --- a/internal/acceptance/openstack/blockstorage/v1/volumes_test.go +++ b/internal/acceptance/openstack/blockstorage/v1/volumes_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestVolumesList(t *testing.T) { t.Fatalf("Unable to create a blockstorage client: %v", err) } - allPages, err := volumes.List(client, volumes.ListOpts{}).AllPages() + allPages, err := volumes.List(client, volumes.ListOpts{}).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve volumes: %v", err) } @@ -47,7 +48,7 @@ func TestVolumesCreateDestroy(t *testing.T) { } defer DeleteVolume(t, client, volume) - newVolume, err := volumes.Get(client, volume.ID).Extract() + newVolume, err := volumes.Get(context.TODO(), client, volume.ID).Extract() if err != nil { t.Errorf("Unable to retrieve volume: %v", err) } @@ -63,7 +64,7 @@ func TestVolumesCreateDestroy(t *testing.T) { Name: &updatedVolumeName, Description: &updatedVolumeDescription, } - updatedVolume, err := volumes.Update(client, volume.ID, updateOpts).Extract() + updatedVolume, err := volumes.Update(context.TODO(), client, volume.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedVolume) diff --git a/internal/acceptance/openstack/blockstorage/v1/volumetypes_test.go b/internal/acceptance/openstack/blockstorage/v1/volumetypes_test.go index 08399ac6b6..e1edcf79bc 100644 --- a/internal/acceptance/openstack/blockstorage/v1/volumetypes_test.go +++ b/internal/acceptance/openstack/blockstorage/v1/volumetypes_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestVolumeTypesList(t *testing.T) { t.Fatalf("Unable to create a blockstorage client: %v", err) } - allPages, err := volumetypes.List(client).AllPages() + allPages, err := volumetypes.List(client).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve volume types: %v", err) } diff --git a/internal/acceptance/openstack/blockstorage/v2/blockstorage.go b/internal/acceptance/openstack/blockstorage/v2/blockstorage.go index c35c0fe605..aa5677f1bd 100644 --- a/internal/acceptance/openstack/blockstorage/v2/blockstorage.go +++ b/internal/acceptance/openstack/blockstorage/v2/blockstorage.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -27,12 +28,12 @@ func CreateSnapshot(t *testing.T, client *gophercloud.ServiceClient, volume *vol Description: snapshotDescription, } - snapshot, err := snapshots.Create(client, createOpts).Extract() + snapshot, err := snapshots.Create(context.TODO(), client, createOpts).Extract() if err != nil { return snapshot, err } - err = snapshots.WaitForStatus(client, snapshot.ID, "available", 60) + err = snapshots.WaitForStatus(context.TODO(), client, snapshot.ID, "available", 60) if err != nil { return snapshot, err } @@ -55,12 +56,12 @@ func CreateVolume(t *testing.T, client *gophercloud.ServiceClient) (*volumes.Vol Description: volumeDescription, } - volume, err := volumes.Create(client, createOpts).Extract() + volume, err := volumes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return volume, err } - err = volumes.WaitForStatus(client, volume.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, volume.ID, "available", 60) if err != nil { return volume, err } @@ -92,17 +93,17 @@ func CreateVolumeFromImage(t *testing.T, client *gophercloud.ServiceClient) (*vo ImageID: choices.ImageID, } - volume, err := volumes.Create(client, createOpts).Extract() + volume, err := volumes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return volume, err } - err = volumes.WaitForStatus(client, volume.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, volume.ID, "available", 60) if err != nil { return volume, err } - newVolume, err := volumes.Get(client, volume.ID).Extract() + newVolume, err := volumes.Get(context.TODO(), client, volume.ID).Extract() if err != nil { return nil, err } @@ -120,7 +121,7 @@ func CreateVolumeFromImage(t *testing.T, client *gophercloud.ServiceClient) (*vo func DeleteVolume(t *testing.T, client *gophercloud.ServiceClient, volume *volumes.Volume) { t.Logf("Attempting to delete volume: %s", volume.ID) - err := volumes.Delete(client, volume.ID, volumes.DeleteOpts{}).ExtractErr() + err := volumes.Delete(context.TODO(), client, volume.ID, volumes.DeleteOpts{}).ExtractErr() if err != nil { t.Fatalf("Unable to delete volume %s: %v", volume.ID, err) } @@ -133,7 +134,7 @@ func DeleteVolume(t *testing.T, client *gophercloud.ServiceClient, volume *volum func DeleteSnapshot(t *testing.T, client *gophercloud.ServiceClient, snapshot *snapshots.Snapshot) { t.Logf("Attempting to delete snapshot: %s", snapshot.ID) - err := snapshots.Delete(client, snapshot.ID).ExtractErr() + err := snapshots.Delete(context.TODO(), client, snapshot.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete snapshot %s: %+v", snapshot.ID, err) } @@ -141,7 +142,7 @@ func DeleteSnapshot(t *testing.T, client *gophercloud.ServiceClient, snapshot *s // Volumes can't be deleted until their snapshots have been, // so block until the snapshot is deleted. err = tools.WaitFor(func() (bool, error) { - _, err := snapshots.Get(client, snapshot.ID).Extract() + _, err := snapshots.Get(context.TODO(), client, snapshot.ID).Extract() if err != nil { return true, nil } diff --git a/internal/acceptance/openstack/blockstorage/v2/snapshots_test.go b/internal/acceptance/openstack/blockstorage/v2/snapshots_test.go index 975d492ea1..0ccdea2eae 100644 --- a/internal/acceptance/openstack/blockstorage/v2/snapshots_test.go +++ b/internal/acceptance/openstack/blockstorage/v2/snapshots_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -27,10 +28,10 @@ func TestSnapshots(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSnapshot(t, client, snapshot) - newSnapshot, err := snapshots.Get(client, snapshot.ID).Extract() + newSnapshot, err := snapshots.Get(context.TODO(), client, snapshot.ID).Extract() th.AssertNoErr(t, err) - allPages, err := snapshots.List(client, snapshots.ListOpts{}).AllPages() + allPages, err := snapshots.List(client, snapshots.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allSnapshots, err := snapshots.ExtractSnapshots(allPages) diff --git a/internal/acceptance/openstack/blockstorage/v2/volumes_test.go b/internal/acceptance/openstack/blockstorage/v2/volumes_test.go index 1674dcc40c..b45be9a7f3 100644 --- a/internal/acceptance/openstack/blockstorage/v2/volumes_test.go +++ b/internal/acceptance/openstack/blockstorage/v2/volumes_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -25,7 +26,7 @@ func TestVolumesCreateDestroy(t *testing.T) { th.AssertNoErr(t, err) defer DeleteVolume(t, client, volume) - newVolume, err := volumes.Get(client, volume.ID).Extract() + newVolume, err := volumes.Get(context.TODO(), client, volume.ID).Extract() th.AssertNoErr(t, err) // Update volume @@ -35,14 +36,14 @@ func TestVolumesCreateDestroy(t *testing.T) { Name: &updatedVolumeName, Description: &updatedVolumeDescription, } - updatedVolume, err := volumes.Update(client, volume.ID, updateOpts).Extract() + updatedVolume, err := volumes.Update(context.TODO(), client, volume.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedVolume) th.AssertEquals(t, updatedVolume.Name, updatedVolumeName) th.AssertEquals(t, updatedVolume.Description, updatedVolumeDescription) - allPages, err := volumes.List(client, volumes.ListOpts{}).AllPages() + allPages, err := volumes.List(client, volumes.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allVolumes, err := volumes.ExtractVolumes(allPages) @@ -69,12 +70,12 @@ func TestVolumesCreateForceDestroy(t *testing.T) { volume, err := CreateVolume(t, client) th.AssertNoErr(t, err) - newVolume, err := volumes.Get(client, volume.ID).Extract() + newVolume, err := volumes.Get(context.TODO(), client, volume.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newVolume) - err = volumeactions.ForceDelete(client, newVolume.ID).ExtractErr() + err = volumeactions.ForceDelete(context.TODO(), client, newVolume.ID).ExtractErr() th.AssertNoErr(t, err) } @@ -88,7 +89,7 @@ func TestVolumesCascadeDelete(t *testing.T) { vol, err := CreateVolume(t, client) th.AssertNoErr(t, err) - err = volumes.WaitForStatus(client, vol.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, vol.ID, "available", 60) th.AssertNoErr(t, err) snapshot1, err := CreateSnapshot(t, client, vol) @@ -100,14 +101,14 @@ func TestVolumesCascadeDelete(t *testing.T) { t.Logf("Attempting to delete volume: %s", vol.ID) deleteOpts := volumes.DeleteOpts{Cascade: true} - err = volumes.Delete(client, vol.ID, deleteOpts).ExtractErr() + err = volumes.Delete(context.TODO(), client, vol.ID, deleteOpts).ExtractErr() if err != nil { t.Fatalf("Unable to delete volume %s: %v", vol.ID, err) } for _, sid := range []string{snapshot1.ID, snapshot2.ID} { err := tools.WaitFor(func() (bool, error) { - _, err := snapshots.Get(client, sid).Extract() + _, err := snapshots.Get(context.TODO(), client, sid).Extract() if err != nil { return true, nil } @@ -118,7 +119,7 @@ func TestVolumesCascadeDelete(t *testing.T) { } err = tools.WaitFor(func() (bool, error) { - _, err := volumes.Get(client, vol.ID).Extract() + _, err := volumes.Get(context.TODO(), client, vol.ID).Extract() if err != nil { return true, nil } diff --git a/internal/acceptance/openstack/blockstorage/v3/blockstorage.go b/internal/acceptance/openstack/blockstorage/v3/blockstorage.go index 55d21c5644..75686e05a1 100644 --- a/internal/acceptance/openstack/blockstorage/v3/blockstorage.go +++ b/internal/acceptance/openstack/blockstorage/v3/blockstorage.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -28,17 +29,17 @@ func CreateSnapshot(t *testing.T, client *gophercloud.ServiceClient, volume *vol Description: snapshotDescription, } - snapshot, err := snapshots.Create(client, createOpts).Extract() + snapshot, err := snapshots.Create(context.TODO(), client, createOpts).Extract() if err != nil { return snapshot, err } - err = snapshots.WaitForStatus(client, snapshot.ID, "available", 60) + err = snapshots.WaitForStatus(context.TODO(), client, snapshot.ID, "available", 60) if err != nil { return snapshot, err } - snapshot, err = snapshots.Get(client, snapshot.ID).Extract() + snapshot, err = snapshots.Get(context.TODO(), client, snapshot.ID).Extract() if err != nil { return snapshot, err } @@ -65,17 +66,17 @@ func CreateVolume(t *testing.T, client *gophercloud.ServiceClient) (*volumes.Vol Description: volumeDescription, } - volume, err := volumes.Create(client, createOpts).Extract() + volume, err := volumes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return volume, err } - err = volumes.WaitForStatus(client, volume.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, volume.ID, "available", 60) if err != nil { return volume, err } - volume, err = volumes.Get(client, volume.ID).Extract() + volume, err = volumes.Get(context.TODO(), client, volume.ID).Extract() if err != nil { return volume, err } @@ -105,17 +106,17 @@ func CreateVolumeWithType(t *testing.T, client *gophercloud.ServiceClient, vt *v VolumeType: vt.Name, } - volume, err := volumes.Create(client, createOpts).Extract() + volume, err := volumes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return volume, err } - err = volumes.WaitForStatus(client, volume.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, volume.ID, "available", 60) if err != nil { return volume, err } - volume, err = volumes.Get(client, volume.ID).Extract() + volume, err = volumes.Get(context.TODO(), client, volume.ID).Extract() if err != nil { return volume, err } @@ -144,7 +145,7 @@ func CreateVolumeType(t *testing.T, client *gophercloud.ServiceClient) (*volumet Description: description, } - vt, err := volumetypes.Create(client, createOpts).Extract() + vt, err := volumetypes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -177,7 +178,7 @@ func CreateVolumeTypeNoExtraSpecs(t *testing.T, client *gophercloud.ServiceClien Description: description, } - vt, err := volumetypes.Create(client, createOpts).Extract() + vt, err := volumetypes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -206,7 +207,7 @@ func CreateVolumeTypeMultiAttach(t *testing.T, client *gophercloud.ServiceClient Description: description, } - vt, err := volumetypes.Create(client, createOpts).Extract() + vt, err := volumetypes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -238,7 +239,7 @@ func CreatePrivateVolumeType(t *testing.T, client *gophercloud.ServiceClient) (* IsPublic: &isPublic, } - vt, err := volumetypes.Create(client, createOpts).Extract() + vt, err := volumetypes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -256,7 +257,7 @@ func CreatePrivateVolumeType(t *testing.T, client *gophercloud.ServiceClient) (* // DeleteSnapshot will delete a snapshot. A fatal error will occur if the // snapshot failed to be deleted. func DeleteSnapshot(t *testing.T, client *gophercloud.ServiceClient, snapshot *snapshots.Snapshot) { - err := snapshots.Delete(client, snapshot.ID).ExtractErr() + err := snapshots.Delete(context.TODO(), client, snapshot.ID).ExtractErr() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { t.Logf("Snapshot %s is already deleted", snapshot.ID) @@ -268,7 +269,7 @@ func DeleteSnapshot(t *testing.T, client *gophercloud.ServiceClient, snapshot *s // Volumes can't be deleted until their snapshots have been, // so block until the snapshoth as been deleted. err = tools.WaitFor(func() (bool, error) { - _, err := snapshots.Get(client, snapshot.ID).Extract() + _, err := snapshots.Get(context.TODO(), client, snapshot.ID).Extract() if err != nil { return true, nil } @@ -287,7 +288,7 @@ func DeleteSnapshot(t *testing.T, client *gophercloud.ServiceClient, snapshot *s func DeleteVolume(t *testing.T, client *gophercloud.ServiceClient, volume *volumes.Volume) { t.Logf("Attempting to delete volume: %s", volume.ID) - err := volumes.Delete(client, volume.ID, volumes.DeleteOpts{}).ExtractErr() + err := volumes.Delete(context.TODO(), client, volume.ID, volumes.DeleteOpts{}).ExtractErr() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { t.Logf("Volume %s is already deleted", volume.ID) @@ -299,7 +300,7 @@ func DeleteVolume(t *testing.T, client *gophercloud.ServiceClient, volume *volum // VolumeTypes can't be deleted until their volumes have been, // so block until the volume is deleted. err = tools.WaitFor(func() (bool, error) { - _, err := volumes.Get(client, volume.ID).Extract() + _, err := volumes.Get(context.TODO(), client, volume.ID).Extract() if err != nil { return true, nil } @@ -319,7 +320,7 @@ func DeleteVolume(t *testing.T, client *gophercloud.ServiceClient, volume *volum func DeleteVolumeType(t *testing.T, client *gophercloud.ServiceClient, vt *volumetypes.VolumeType) { t.Logf("Attempting to delete volume type: %s", vt.ID) - err := volumetypes.Delete(client, vt.ID).ExtractErr() + err := volumetypes.Delete(context.TODO(), client, vt.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete volume type %s: %v", vt.ID, err) } @@ -341,7 +342,7 @@ func CreateQoS(t *testing.T, client *gophercloud.ServiceClient) (*qos.QoS, error }, } - qs, err := qos.Create(client, createOpts).Extract() + qs, err := qos.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -365,7 +366,7 @@ func DeleteQoS(t *testing.T, client *gophercloud.ServiceClient, qs *qos.QoS) { Force: true, } - err := qos.Delete(client, qs.ID, deleteOpts).ExtractErr() + err := qos.Delete(context.TODO(), client, qs.ID, deleteOpts).ExtractErr() if err != nil { t.Fatalf("Unable to delete QoS %s: %v", qs.ID, err) } diff --git a/internal/acceptance/openstack/blockstorage/v3/qos_test.go b/internal/acceptance/openstack/blockstorage/v3/qos_test.go index 3fca65ae35..2fc694792d 100644 --- a/internal/acceptance/openstack/blockstorage/v3/qos_test.go +++ b/internal/acceptance/openstack/blockstorage/v3/qos_test.go @@ -1,6 +1,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -24,11 +25,11 @@ func TestQoS(t *testing.T) { th.AssertNoErr(t, err) defer DeleteQoS(t, client, qos2) - getQoS2, err := qos.Get(client, qos2.ID).Extract() + getQoS2, err := qos.Get(context.TODO(), client, qos2.ID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, qos2, getQoS2) - err = qos.DeleteKeys(client, qos2.ID, qos.DeleteKeysOpts{"read_iops_sec"}).ExtractErr() + err = qos.DeleteKeys(context.TODO(), client, qos2.ID, qos.DeleteKeysOpts{"read_iops_sec"}).ExtractErr() th.AssertNoErr(t, err) updateOpts := qos.UpdateOpts{ @@ -45,7 +46,7 @@ func TestQoS(t *testing.T) { "write_iops_sec": "40000", } - updatedQosSpecs, err := qos.Update(client, qos2.ID, updateOpts).Extract() + updatedQosSpecs, err := qos.Update(context.TODO(), client, qos2.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, updatedQosSpecs, expectedQosSpecs) @@ -53,7 +54,7 @@ func TestQoS(t *testing.T) { Limit: 1, } - err = qos.List(client, listOpts).EachPage(func(page pagination.Page) (bool, error) { + err = qos.List(client, listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { actual, err := qos.ExtractQoS(page) th.AssertNoErr(t, err) th.AssertEquals(t, 1, len(actual)) @@ -92,10 +93,10 @@ func TestQoSAssociations(t *testing.T) { VolumeTypeID: vt.ID, } - err = qos.Associate(client, qos1.ID, associateOpts).ExtractErr() + err = qos.Associate(context.TODO(), client, qos1.ID, associateOpts).ExtractErr() th.AssertNoErr(t, err) - allQosAssociations, err := qos.ListAssociations(client, qos1.ID).AllPages() + allQosAssociations, err := qos.ListAssociations(client, qos1.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allAssociations, err := qos.ExtractAssociations(allQosAssociations) @@ -108,10 +109,10 @@ func TestQoSAssociations(t *testing.T) { VolumeTypeID: vt.ID, } - err = qos.Disassociate(client, qos1.ID, disassociateOpts).ExtractErr() + err = qos.Disassociate(context.TODO(), client, qos1.ID, disassociateOpts).ExtractErr() th.AssertNoErr(t, err) - allQosAssociations, err = qos.ListAssociations(client, qos1.ID).AllPages() + allQosAssociations, err = qos.ListAssociations(client, qos1.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allAssociations, err = qos.ExtractAssociations(allQosAssociations) @@ -119,9 +120,9 @@ func TestQoSAssociations(t *testing.T) { tools.PrintResource(t, allAssociations) th.AssertEquals(t, 0, len(allAssociations)) - err = qos.Associate(client, qos1.ID, associateOpts).ExtractErr() + err = qos.Associate(context.TODO(), client, qos1.ID, associateOpts).ExtractErr() th.AssertNoErr(t, err) - err = qos.DisassociateAll(client, qos1.ID).ExtractErr() + err = qos.DisassociateAll(context.TODO(), client, qos1.ID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/internal/acceptance/openstack/blockstorage/v3/quotaset_test.go b/internal/acceptance/openstack/blockstorage/v3/quotaset_test.go index e5e7cbd6a4..4a546516ff 100644 --- a/internal/acceptance/openstack/blockstorage/v3/quotaset_test.go +++ b/internal/acceptance/openstack/blockstorage/v3/quotaset_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "os" "testing" @@ -20,7 +21,7 @@ func TestQuotasetGet(t *testing.T) { client, projectID := getClientAndProject(t) - quotaSet, err := quotasets.Get(client, projectID).Extract() + quotaSet, err := quotasets.Get(context.TODO(), client, projectID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, quotaSet) @@ -31,7 +32,7 @@ func TestQuotasetGetDefaults(t *testing.T) { client, projectID := getClientAndProject(t) - quotaSet, err := quotasets.GetDefaults(client, projectID).Extract() + quotaSet, err := quotasets.GetDefaults(context.TODO(), client, projectID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, quotaSet) @@ -42,7 +43,7 @@ func TestQuotasetGetUsage(t *testing.T) { client, projectID := getClientAndProject(t) - quotaSetUsage, err := quotasets.GetUsage(client, projectID).Extract() + quotaSetUsage, err := quotasets.GetUsage(context.TODO(), client, projectID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, quotaSetUsage) @@ -85,32 +86,32 @@ func TestQuotasetUpdate(t *testing.T) { client, projectID := getClientAndProject(t) // save original quotas - orig, err := quotasets.Get(client, projectID).Extract() + orig, err := quotasets.Get(context.TODO(), client, projectID).Extract() th.AssertNoErr(t, err) // create volumeType to test volume type quota - volumeType, err := volumetypes.Create(client, VolumeTypeCreateOpts).Extract() + volumeType, err := volumetypes.Create(context.TODO(), client, VolumeTypeCreateOpts).Extract() th.AssertNoErr(t, err) defer func() { restore := quotasets.UpdateOpts{} FillUpdateOptsFromQuotaSet(*orig, &restore) - err := volumetypes.Delete(client, volumeType.ID).ExtractErr() + err := volumetypes.Delete(context.TODO(), client, volumeType.ID).ExtractErr() th.AssertNoErr(t, err) - _, err = quotasets.Update(client, projectID, restore).Extract() + _, err = quotasets.Update(context.TODO(), client, projectID, restore).Extract() th.AssertNoErr(t, err) }() // test Update - resultQuotas, err := quotasets.Update(client, projectID, UpdateQuotaOpts).Extract() + resultQuotas, err := quotasets.Update(context.TODO(), client, projectID, UpdateQuotaOpts).Extract() th.AssertNoErr(t, err) // We dont know the default quotas, so just check if the quotas are not the // same as before - newQuotas, err := quotasets.Get(client, projectID).Extract() + newQuotas, err := quotasets.Get(context.TODO(), client, projectID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, resultQuotas.Volumes, newQuotas.Volumes) th.AssertEquals(t, resultQuotas.Extra["volumes_foo"], newQuotas.Extra["volumes_foo"]) @@ -143,26 +144,26 @@ func TestQuotasetDelete(t *testing.T) { client, projectID := getClientAndProject(t) // save original quotas - orig, err := quotasets.Get(client, projectID).Extract() + orig, err := quotasets.Get(context.TODO(), client, projectID).Extract() th.AssertNoErr(t, err) defer func() { restore := quotasets.UpdateOpts{} FillUpdateOptsFromQuotaSet(*orig, &restore) - _, err = quotasets.Update(client, projectID, restore).Extract() + _, err = quotasets.Update(context.TODO(), client, projectID, restore).Extract() th.AssertNoErr(t, err) }() // Obtain environment default quotaset values to validate deletion. - defaultQuotaSet, err := quotasets.GetDefaults(client, projectID).Extract() + defaultQuotaSet, err := quotasets.GetDefaults(context.TODO(), client, projectID).Extract() th.AssertNoErr(t, err) // Test Delete - err = quotasets.Delete(client, projectID).ExtractErr() + err = quotasets.Delete(context.TODO(), client, projectID).ExtractErr() th.AssertNoErr(t, err) - newQuotas, err := quotasets.Get(client, projectID).Extract() + newQuotas, err := quotasets.Get(context.TODO(), client, projectID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, newQuotas.Volumes, defaultQuotaSet.Volumes) diff --git a/internal/acceptance/openstack/blockstorage/v3/snapshots_test.go b/internal/acceptance/openstack/blockstorage/v3/snapshots_test.go index c16014ba1a..4526f83746 100644 --- a/internal/acceptance/openstack/blockstorage/v3/snapshots_test.go +++ b/internal/acceptance/openstack/blockstorage/v3/snapshots_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "fmt" "testing" @@ -37,7 +38,7 @@ func TestSnapshots(t *testing.T) { Description: &updatedSnapshotDescription, } t.Logf("Attempting to update snapshot: %s", updatedSnapshotName) - updatedSnapshot, err := snapshots.Update(client, snapshot1.ID, updateOpts).Extract() + updatedSnapshot, err := snapshots.Update(context.TODO(), client, snapshot1.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedSnapshot) @@ -56,7 +57,7 @@ func TestSnapshots(t *testing.T) { Limit: 1, } - err = snapshots.List(client, listOpts).EachPage(func(page pagination.Page) (bool, error) { + err = snapshots.List(client, listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { actual, err := snapshots.ExtractSnapshots(page) th.AssertNoErr(t, err) th.AssertEquals(t, 1, len(actual)) @@ -95,10 +96,10 @@ func TestSnapshotsResetStatus(t *testing.T) { Status: "error", } t.Logf("Attempting to reset snapshot status to %s", resetOpts.Status) - err = snapshots.ResetStatus(client, snapshot1.ID, resetOpts).ExtractErr() + err = snapshots.ResetStatus(context.TODO(), client, snapshot1.ID, resetOpts).ExtractErr() th.AssertNoErr(t, err) - snapshot, err := snapshots.Get(client, snapshot1.ID).Extract() + snapshot, err := snapshots.Get(context.TODO(), client, snapshot1.ID).Extract() th.AssertNoErr(t, err) if snapshot.Status != resetOpts.Status { @@ -110,10 +111,10 @@ func TestSnapshotsResetStatus(t *testing.T) { Status: "available", } t.Logf("Attempting to reset snapshot status to %s", resetOpts.Status) - err = snapshots.ResetStatus(client, snapshot1.ID, resetOpts).ExtractErr() + err = snapshots.ResetStatus(context.TODO(), client, snapshot1.ID, resetOpts).ExtractErr() th.AssertNoErr(t, err) - snapshot, err = snapshots.Get(client, snapshot1.ID).Extract() + snapshot, err = snapshots.Get(context.TODO(), client, snapshot1.ID).Extract() th.AssertNoErr(t, err) if snapshot.Status != resetOpts.Status { @@ -140,10 +141,10 @@ func TestSnapshotsUpdateStatus(t *testing.T) { Status: "creating", } t.Logf("Attempting to update snapshot status to %s", resetOpts.Status) - err = snapshots.ResetStatus(client, snapshot1.ID, resetOpts).ExtractErr() + err = snapshots.ResetStatus(context.TODO(), client, snapshot1.ID, resetOpts).ExtractErr() th.AssertNoErr(t, err) - snapshot, err := snapshots.Get(client, snapshot1.ID).Extract() + snapshot, err := snapshots.Get(context.TODO(), client, snapshot1.ID).Extract() th.AssertNoErr(t, err) if snapshot.Status != resetOpts.Status { @@ -155,10 +156,10 @@ func TestSnapshotsUpdateStatus(t *testing.T) { Status: "available", } t.Logf("Attempting to update snapshot status to %s", updateOpts.Status) - err = snapshots.UpdateStatus(client, snapshot1.ID, updateOpts).ExtractErr() + err = snapshots.UpdateStatus(context.TODO(), client, snapshot1.ID, updateOpts).ExtractErr() th.AssertNoErr(t, err) - snapshot, err = snapshots.Get(client, snapshot1.ID).Extract() + snapshot, err = snapshots.Get(context.TODO(), client, snapshot1.ID).Extract() th.AssertNoErr(t, err) if snapshot.Status != updateOpts.Status { @@ -182,11 +183,11 @@ func TestSnapshotsForceDelete(t *testing.T) { // Force delete snapshot t.Logf("Attempting to force delete %s snapshot", snapshot.ID) - err = snapshots.ForceDelete(client, snapshot.ID).ExtractErr() + err = snapshots.ForceDelete(context.TODO(), client, snapshot.ID).ExtractErr() th.AssertNoErr(t, err) err = tools.WaitFor(func() (bool, error) { - _, err := snapshots.Get(client, snapshot.ID).Extract() + _, err := snapshots.Get(context.TODO(), client, snapshot.ID).Extract() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { return true, nil diff --git a/internal/acceptance/openstack/blockstorage/v3/volumeattachments.go b/internal/acceptance/openstack/blockstorage/v3/volumeattachments.go index 134962654b..536830efd4 100644 --- a/internal/acceptance/openstack/blockstorage/v3/volumeattachments.go +++ b/internal/acceptance/openstack/blockstorage/v3/volumeattachments.go @@ -1,6 +1,7 @@ package v3 import ( + "context" "fmt" "testing" @@ -26,7 +27,7 @@ func CreateVolumeAttachment(t *testing.T, client *gophercloud.ServiceClient, vol var err error var attachment *attachments.Attachment - if attachment, err = attachments.Create(client, attachOpts).Extract(); err != nil { + if attachment, err = attachments.Create(context.TODO(), client, attachOpts).Extract(); err != nil { return err } @@ -35,19 +36,19 @@ func CreateVolumeAttachment(t *testing.T, client *gophercloud.ServiceClient, vol defer func() { client.Microversion = mv }() - if err = attachments.Complete(client, attachment.ID).ExtractErr(); err != nil { + if err = attachments.Complete(context.TODO(), client, attachment.ID).ExtractErr(); err != nil { return err } - if err = attachments.WaitForStatus(client, attachment.ID, "attached", 60); err != nil { - e := attachments.Delete(client, attachment.ID).ExtractErr() + if err = attachments.WaitForStatus(context.TODO(), client, attachment.ID, "attached", 60); err != nil { + e := attachments.Delete(context.TODO(), client, attachment.ID).ExtractErr() if e != nil { t.Logf("Failed to delete %q attachment: %s", attachment.ID, err) } return err } - attachment, err = attachments.Get(client, attachment.ID).Extract() + attachment, err = attachments.Get(context.TODO(), client, attachment.ID).Extract() if err != nil { return err } @@ -56,7 +57,7 @@ func CreateVolumeAttachment(t *testing.T, client *gophercloud.ServiceClient, vol VolumeID: volume.ID, InstanceID: server.ID, } - allPages, err := attachments.List(client, listOpts).AllPages() + allPages, err := attachments.List(client, listOpts).AllPages(context.TODO()) if err != nil { return err } @@ -80,11 +81,11 @@ func CreateVolumeAttachment(t *testing.T, client *gophercloud.ServiceClient, vol func DeleteVolumeAttachment(t *testing.T, client *gophercloud.ServiceClient, volume *v3.Volume) { t.Logf("Attepting to detach volume volume: %s", volume.ID) - if err := attachments.Delete(client, volume.Attachments[0].AttachmentID).ExtractErr(); err != nil { + if err := attachments.Delete(context.TODO(), client, volume.Attachments[0].AttachmentID).ExtractErr(); err != nil { t.Fatalf("Unable to detach volume %s: %v", volume.ID, err) } - if err := v3.WaitForStatus(client, volume.ID, "available", 60); err != nil { + if err := v3.WaitForStatus(context.TODO(), client, volume.ID, "available", 60); err != nil { t.Fatalf("Volume %s failed to become unavailable in 60 seconds: %v", volume.ID, err) } diff --git a/internal/acceptance/openstack/blockstorage/v3/volumeattachments_test.go b/internal/acceptance/openstack/blockstorage/v3/volumeattachments_test.go index fd45869e77..2cf187d44d 100644 --- a/internal/acceptance/openstack/blockstorage/v3/volumeattachments_test.go +++ b/internal/acceptance/openstack/blockstorage/v3/volumeattachments_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -33,7 +34,7 @@ func TestVolumeAttachments(t *testing.T) { err = CreateVolumeAttachment(t, blockClient, volume, server) th.AssertNoErr(t, err) - newVolume, err := volumes.Get(blockClient, volume.ID).Extract() + newVolume, err := volumes.Get(context.TODO(), blockClient, volume.ID).Extract() th.AssertNoErr(t, err) DeleteVolumeAttachment(t, blockClient, newVolume) diff --git a/internal/acceptance/openstack/blockstorage/v3/volumes_test.go b/internal/acceptance/openstack/blockstorage/v3/volumes_test.go index 9605c3a2a0..b8609fd540 100644 --- a/internal/acceptance/openstack/blockstorage/v3/volumes_test.go +++ b/internal/acceptance/openstack/blockstorage/v3/volumes_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -35,7 +36,7 @@ func TestVolumes(t *testing.T) { Name: &updatedVolumeName, Description: &updatedVolumeDescription, } - updatedVolume, err := volumes.Update(client, volume1.ID, updateOpts).Extract() + updatedVolume, err := volumes.Update(context.TODO(), client, volume1.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedVolume) @@ -46,7 +47,7 @@ func TestVolumes(t *testing.T) { Limit: 1, } - err = volumes.List(client, listOpts).EachPage(func(page pagination.Page) (bool, error) { + err = volumes.List(client, listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { actual, err := volumes.ExtractVolumes(page) th.AssertNoErr(t, err) th.AssertEquals(t, 1, len(actual)) @@ -86,11 +87,11 @@ func TestVolumesMultiAttach(t *testing.T) { VolumeType: vt.ID, } - vol, err := volumes.Create(client, volOpts).Extract() + vol, err := volumes.Create(context.TODO(), client, volOpts).Extract() th.AssertNoErr(t, err) defer DeleteVolume(t, client, vol) - err = volumes.WaitForStatus(client, vol.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, vol.ID, "available", 60) th.AssertNoErr(t, err) th.AssertEquals(t, vol.Multiattach, true) @@ -105,7 +106,7 @@ func TestVolumesCascadeDelete(t *testing.T) { vol, err := CreateVolume(t, client) th.AssertNoErr(t, err) - err = volumes.WaitForStatus(client, vol.ID, "available", 60) + err = volumes.WaitForStatus(context.TODO(), client, vol.ID, "available", 60) th.AssertNoErr(t, err) snapshot1, err := CreateSnapshot(t, client, vol) @@ -117,14 +118,14 @@ func TestVolumesCascadeDelete(t *testing.T) { t.Logf("Attempting to delete volume: %s", vol.ID) deleteOpts := volumes.DeleteOpts{Cascade: true} - err = volumes.Delete(client, vol.ID, deleteOpts).ExtractErr() + err = volumes.Delete(context.TODO(), client, vol.ID, deleteOpts).ExtractErr() if err != nil { t.Fatalf("Unable to delete volume %s: %v", vol.ID, err) } for _, sid := range []string{snapshot1.ID, snapshot2.ID} { err := tools.WaitFor(func() (bool, error) { - _, err := snapshots.Get(client, sid).Extract() + _, err := snapshots.Get(context.TODO(), client, sid).Extract() if err != nil { return true, nil } @@ -135,7 +136,7 @@ func TestVolumesCascadeDelete(t *testing.T) { } err = tools.WaitFor(func() (bool, error) { - _, err := volumes.Get(client, vol.ID).Extract() + _, err := volumes.Get(context.TODO(), client, vol.ID).Extract() if err != nil { return true, nil } diff --git a/internal/acceptance/openstack/blockstorage/v3/volumetypes_test.go b/internal/acceptance/openstack/blockstorage/v3/volumetypes_test.go index 96a6b909a8..da8dc95463 100644 --- a/internal/acceptance/openstack/blockstorage/v3/volumetypes_test.go +++ b/internal/acceptance/openstack/blockstorage/v3/volumetypes_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -23,7 +24,7 @@ func TestVolumeTypes(t *testing.T) { th.AssertNoErr(t, err) defer DeleteVolumeType(t, client, vt) - allPages, err := volumetypes.List(client, nil).AllPages() + allPages, err := volumetypes.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allVolumeTypes, err := volumetypes.ExtractVolumeTypes(allPages) @@ -48,7 +49,7 @@ func TestVolumeTypes(t *testing.T) { IsPublic: &isPublic, } - newVT, err := volumetypes.Update(client, vt.ID, updateOpts).Extract() + newVT, err := volumetypes.Update(context.TODO(), client, vt.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newVT) @@ -72,7 +73,7 @@ func TestVolumeTypesExtraSpecs(t *testing.T) { "volume_backend_name": "ssd", } - createdExtraSpecs, err := volumetypes.CreateExtraSpecs(client, vt.ID, createOpts).Extract() + createdExtraSpecs, err := volumetypes.CreateExtraSpecs(context.TODO(), client, vt.ID, createOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, createdExtraSpecs) @@ -81,20 +82,20 @@ func TestVolumeTypesExtraSpecs(t *testing.T) { th.AssertEquals(t, createdExtraSpecs["capabilities"], "gpu") th.AssertEquals(t, createdExtraSpecs["volume_backend_name"], "ssd") - err = volumetypes.DeleteExtraSpec(client, vt.ID, "volume_backend_name").ExtractErr() + err = volumetypes.DeleteExtraSpec(context.TODO(), client, vt.ID, "volume_backend_name").ExtractErr() th.AssertNoErr(t, err) updateOpts := volumetypes.ExtraSpecsOpts{ "capabilities": "gpu-2", } - updatedExtraSpec, err := volumetypes.UpdateExtraSpec(client, vt.ID, updateOpts).Extract() + updatedExtraSpec, err := volumetypes.UpdateExtraSpec(context.TODO(), client, vt.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedExtraSpec) th.AssertEquals(t, updatedExtraSpec["capabilities"], "gpu-2") - allExtraSpecs, err := volumetypes.ListExtraSpecs(client, vt.ID).Extract() + allExtraSpecs, err := volumetypes.ListExtraSpecs(context.TODO(), client, vt.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, allExtraSpecs) @@ -102,7 +103,7 @@ func TestVolumeTypesExtraSpecs(t *testing.T) { th.AssertEquals(t, len(allExtraSpecs), 1) th.AssertEquals(t, allExtraSpecs["capabilities"], "gpu-2") - singleSpec, err := volumetypes.GetExtraSpec(client, vt.ID, "capabilities").Extract() + singleSpec, err := volumetypes.GetExtraSpec(context.TODO(), client, vt.ID, "capabilities").Extract() th.AssertNoErr(t, err) tools.PrintResource(t, singleSpec) @@ -131,10 +132,10 @@ func TestVolumeTypesAccess(t *testing.T) { Project: project.ID, } - err = volumetypes.AddAccess(client, vt.ID, addAccessOpts).ExtractErr() + err = volumetypes.AddAccess(context.TODO(), client, vt.ID, addAccessOpts).ExtractErr() th.AssertNoErr(t, err) - allPages, err := volumetypes.ListAccesses(client, vt.ID).AllPages() + allPages, err := volumetypes.ListAccesses(client, vt.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) accessList, err := volumetypes.ExtractAccesses(allPages) @@ -150,10 +151,10 @@ func TestVolumeTypesAccess(t *testing.T) { Project: project.ID, } - err = volumetypes.RemoveAccess(client, vt.ID, removeAccessOpts).ExtractErr() + err = volumetypes.RemoveAccess(context.TODO(), client, vt.ID, removeAccessOpts).ExtractErr() th.AssertNoErr(t, err) - allPages, err = volumetypes.ListAccesses(client, vt.ID).AllPages() + allPages, err = volumetypes.ListAccesses(client, vt.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) accessList, err = volumetypes.ExtractAccesses(allPages) @@ -181,16 +182,16 @@ func TestEncryptionVolumeTypes(t *testing.T) { Cipher: "aes-xts-plain64", } - eVT, err := volumetypes.CreateEncryption(client, vt.ID, createEncryptionOpts).Extract() + eVT, err := volumetypes.CreateEncryption(context.TODO(), client, vt.ID, createEncryptionOpts).Extract() th.AssertNoErr(t, err) - defer volumetypes.DeleteEncryption(client, eVT.VolumeTypeID, eVT.EncryptionID) + defer volumetypes.DeleteEncryption(context.TODO(), client, eVT.VolumeTypeID, eVT.EncryptionID) - geVT, err := volumetypes.GetEncryption(client, vt.ID).Extract() + geVT, err := volumetypes.GetEncryption(context.TODO(), client, vt.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, geVT) key := "cipher" - gesVT, err := volumetypes.GetEncryptionSpec(client, vt.ID, key).Extract() + gesVT, err := volumetypes.GetEncryptionSpec(context.TODO(), client, vt.ID, key).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, gesVT) @@ -198,7 +199,7 @@ func TestEncryptionVolumeTypes(t *testing.T) { ControlLocation: "back-end", } - newEVT, err := volumetypes.UpdateEncryption(client, vt.ID, eVT.EncryptionID, updateEncryptionOpts).Extract() + newEVT, err := volumetypes.UpdateEncryption(context.TODO(), client, vt.ID, eVT.EncryptionID, updateEncryptionOpts).Extract() tools.PrintResource(t, newEVT) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/client_test.go b/internal/acceptance/openstack/client_test.go index 74961f380a..f44df3cd42 100644 --- a/internal/acceptance/openstack/client_test.go +++ b/internal/acceptance/openstack/client_test.go @@ -26,7 +26,7 @@ func TestAuthenticatedClient(t *testing.T) { t.Fatalf("Unable to acquire credentials: %v", err) } - client, err := openstack.AuthenticatedClient(ao) + client, err := openstack.AuthenticatedClient(context.TODO(), ao) if err != nil { t.Fatalf("Unable to authenticate: %v", err) } @@ -68,15 +68,15 @@ func TestEC2AuthMethod(t *testing.T) { DomainName: ao.DomainName, }, } - token, err := tokens.Create(client, &authOptions).Extract() + token, err := tokens.Create(context.TODO(), client, &authOptions).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, token) - user, err := tokens.Get(client, token.ID).ExtractUser() + user, err := tokens.Get(context.TODO(), client, token.ID).ExtractUser() th.AssertNoErr(t, err) tools.PrintResource(t, user) - project, err := tokens.Get(client, token.ID).ExtractProject() + project, err := tokens.Get(context.TODO(), client, token.ID).ExtractProject() th.AssertNoErr(t, err) tools.PrintResource(t, project) @@ -88,11 +88,11 @@ func TestEC2AuthMethod(t *testing.T) { } // Create a credential - credential, err := credentials.Create(client, createOpts).Extract() + credential, err := credentials.Create(context.TODO(), client, createOpts).Extract() th.AssertNoErr(t, err) // Delete a credential - defer credentials.Delete(client, credential.ID) + defer credentials.Delete(context.TODO(), client, credential.ID) tools.PrintResource(t, credential) newClient, err := clients.NewIdentityV3UnauthenticatedClient() @@ -104,7 +104,7 @@ func TestEC2AuthMethod(t *testing.T) { Secret: "secretKey", } - err = openstack.AuthenticateV3(newClient.ProviderClient, ec2AuthOptions, gophercloud.EndpointOpts{}) + err = openstack.AuthenticateV3(context.TODO(), newClient.ProviderClient, ec2AuthOptions, gophercloud.EndpointOpts{}) th.AssertNoErr(t, err) tools.PrintResource(t, newClient.TokenID) @@ -124,7 +124,7 @@ func TestReauth(t *testing.T) { t.Fatalf("Unable to create provider: %v", err) } - err = openstack.Authenticate(provider, ao) + err = openstack.Authenticate(context.TODO(), provider, ao) if err != nil { t.Fatalf("Unable to authenticate: %v", err) } diff --git a/internal/acceptance/openstack/clustering/v1/actions_test.go b/internal/acceptance/openstack/clustering/v1/actions_test.go index c33ec1bd60..9a4aa10708 100644 --- a/internal/acceptance/openstack/clustering/v1/actions_test.go +++ b/internal/acceptance/openstack/clustering/v1/actions_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -20,7 +21,7 @@ func TestActionsList(t *testing.T) { Limit: 200, } - allPages, err := actions.List(client, opts).AllPages() + allPages, err := actions.List(client, opts).AllPages(context.TODO()) th.AssertNoErr(t, err) allActions, err := actions.ExtractActions(allPages) diff --git a/internal/acceptance/openstack/clustering/v1/clustering.go b/internal/acceptance/openstack/clustering/v1/clustering.go index 326ce8f80d..5a296ec08b 100644 --- a/internal/acceptance/openstack/clustering/v1/clustering.go +++ b/internal/acceptance/openstack/clustering/v1/clustering.go @@ -1,6 +1,7 @@ package v1 import ( + "context" "fmt" "net/http" "strings" @@ -55,7 +56,7 @@ func CreateCluster(t *testing.T, client *gophercloud.ServiceClient, profileID st Config: map[string]interface{}{}, } - res := clusters.Create(client, createOpts) + res := clusters.Create(context.TODO(), client, createOpts) if res.Err != nil { return nil, res.Err } @@ -112,7 +113,7 @@ func CreateNode(t *testing.T, client *gophercloud.ServiceClient, clusterID, prof Role: "", } - res := nodes.Create(client, createOpts) + res := nodes.Create(context.TODO(), client, createOpts) if res.Err != nil { return nil, res.Err } @@ -143,7 +144,7 @@ func CreateNode(t *testing.T, client *gophercloud.ServiceClient, clusterID, prof t.Logf("Successfully created node: %s", node.ID) - node, err = nodes.Get(client, node.ID).Extract() + node, err = nodes.Get(context.TODO(), client, node.ID).Extract() if err != nil { return nil, err } @@ -169,7 +170,7 @@ func CreatePolicy(t *testing.T, client *gophercloud.ServiceClient) (*policies.Po Spec: TestPolicySpec, } - res := policies.Create(client, createOpts) + res := policies.Create(context.TODO(), client, createOpts) if res.Err != nil { return nil, res.Err } @@ -226,7 +227,7 @@ func CreateProfile(t *testing.T, client *gophercloud.ServiceClient) (*profiles.P }, } - res := profiles.Create(client, createOpts) + res := profiles.Create(context.TODO(), client, createOpts) if res.Err != nil { return nil, res.Err } @@ -266,7 +267,7 @@ func CreateWebhookReceiver(t *testing.T, client *gophercloud.ServiceClient, clus Action: "CLUSTER_SCALE_OUT", } - res := receivers.Create(client, createOpts) + res := receivers.Create(context.TODO(), client, createOpts) if res.Err != nil { return nil, res.Err } @@ -299,7 +300,7 @@ func CreateMessageReceiver(t *testing.T, client *gophercloud.ServiceClient, clus Type: receivers.MessageReceiver, } - res := receivers.Create(client, createOpts) + res := receivers.Create(context.TODO(), client, createOpts) if res.Err != nil { return nil, res.Err } @@ -325,7 +326,7 @@ func CreateMessageReceiver(t *testing.T, client *gophercloud.ServiceClient, clus func DeleteCluster(t *testing.T, client *gophercloud.ServiceClient, id string) { t.Logf("Attempting to delete cluster: %s", id) - res := clusters.Delete(client, id) + res := clusters.Delete(context.TODO(), client, id) if res.Err != nil { t.Fatalf("Error deleting cluster %s: %s:", id, res.Err) } @@ -350,7 +351,7 @@ func DeleteCluster(t *testing.T, client *gophercloud.ServiceClient, id string) { func DeleteNode(t *testing.T, client *gophercloud.ServiceClient, id string) { t.Logf("Attempting to delete node: %s", id) - res := nodes.Delete(client, id) + res := nodes.Delete(context.TODO(), client, id) if res.Err != nil { t.Fatalf("Error deleting node %s: %s:", id, res.Err) } @@ -376,7 +377,7 @@ func DeleteNode(t *testing.T, client *gophercloud.ServiceClient, id string) { func DeletePolicy(t *testing.T, client *gophercloud.ServiceClient, id string) { t.Logf("Attempting to delete policy: %s", id) - err := policies.Delete(client, id).ExtractErr() + err := policies.Delete(context.TODO(), client, id).ExtractErr() if err != nil { t.Fatalf("Error deleting policy %s: %s:", id, err) } @@ -391,7 +392,7 @@ func DeletePolicy(t *testing.T, client *gophercloud.ServiceClient, id string) { func DeleteProfile(t *testing.T, client *gophercloud.ServiceClient, id string) { t.Logf("Attempting to delete profile: %s", id) - err := profiles.Delete(client, id).ExtractErr() + err := profiles.Delete(context.TODO(), client, id).ExtractErr() if err != nil { t.Fatalf("Error deleting profile %s: %s:", id, err) } @@ -406,7 +407,7 @@ func DeleteProfile(t *testing.T, client *gophercloud.ServiceClient, id string) { func DeleteReceiver(t *testing.T, client *gophercloud.ServiceClient, id string) { t.Logf("Attempting to delete Receiver: %s", id) - res := receivers.Delete(client, id) + res := receivers.Delete(context.TODO(), client, id) if res.Err != nil { t.Fatalf("Error deleting receiver %s: %s:", id, res.Err) } @@ -431,7 +432,7 @@ func GetActionID(headers http.Header) (string, error) { func WaitForAction(client *gophercloud.ServiceClient, actionID string) error { return tools.WaitFor(func() (bool, error) { - action, err := actions.Get(client, actionID).Extract() + action, err := actions.Get(context.TODO(), client, actionID).Extract() if err != nil { return false, err } @@ -450,7 +451,7 @@ func WaitForAction(client *gophercloud.ServiceClient, actionID string) error { func WaitForNodeStatus(client *gophercloud.ServiceClient, id string, status string) error { return tools.WaitFor(func() (bool, error) { - latest, err := nodes.Get(client, id).Extract() + latest, err := nodes.Get(context.TODO(), client, id).Extract() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok && status == "DELETED" { return true, nil diff --git a/internal/acceptance/openstack/clustering/v1/clusters_test.go b/internal/acceptance/openstack/clustering/v1/clusters_test.go index 6b5a339a48..53cdaa5aa9 100644 --- a/internal/acceptance/openstack/clustering/v1/clusters_test.go +++ b/internal/acceptance/openstack/clustering/v1/clusters_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "sort" "strings" "testing" @@ -28,7 +29,7 @@ func TestClustersCRUD(t *testing.T) { defer DeleteCluster(t, client, cluster.ID) // Test clusters list - allPages, err := clusters.List(client, nil).AllPages() + allPages, err := clusters.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allClusters, err := clusters.ExtractClusters(allPages) @@ -48,7 +49,7 @@ func TestClustersCRUD(t *testing.T) { Name: cluster.Name + "-UPDATED", } - res := clusters.Update(client, cluster.ID, updateOpts) + res := clusters.Update(context.TODO(), client, cluster.ID, updateOpts) th.AssertNoErr(t, res.Err) actionID, err := GetActionID(res.Header) @@ -57,14 +58,14 @@ func TestClustersCRUD(t *testing.T) { err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - newCluster, err := clusters.Get(client, cluster.ID).Extract() + newCluster, err := clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, newCluster.Name, cluster.Name+"-UPDATED") tools.PrintResource(t, newCluster) // Test cluster health - actionID, err = clusters.Check(client, cluster.ID).Extract() + actionID, err = clusters.Check(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) err = WaitForAction(client, actionID) @@ -90,13 +91,13 @@ func TestClustersResize(t *testing.T) { Strict: &iTrue, } - actionID, err := clusters.Resize(client, cluster.ID, resizeOpts).Extract() + actionID, err := clusters.Resize(context.TODO(), client, cluster.ID, resizeOpts).Extract() th.AssertNoErr(t, err) err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - newCluster, err := clusters.Get(client, cluster.ID).Extract() + newCluster, err := clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, newCluster.DesiredCapacity, 2) @@ -119,13 +120,13 @@ func TestClustersScale(t *testing.T) { scaleOutOpts := clusters.ScaleOutOpts{ Count: 1, } - actionID, err := clusters.ScaleOut(client, cluster.ID, scaleOutOpts).Extract() + actionID, err := clusters.ScaleOut(context.TODO(), client, cluster.ID, scaleOutOpts).Extract() th.AssertNoErr(t, err) err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - newCluster, err := clusters.Get(client, cluster.ID).Extract() + newCluster, err := clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, newCluster.DesiredCapacity, 2) @@ -135,13 +136,13 @@ func TestClustersScale(t *testing.T) { Count: &count, } - actionID, err = clusters.ScaleIn(client, cluster.ID, scaleInOpts).Extract() + actionID, err = clusters.ScaleIn(context.TODO(), client, cluster.ID, scaleInOpts).Extract() th.AssertNoErr(t, err) err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - newCluster, err = clusters.Get(client, cluster.ID).Extract() + newCluster, err = clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, newCluster.DesiredCapacity, 0) @@ -171,7 +172,7 @@ func TestClustersPolicies(t *testing.T) { Enabled: &iTrue, } - actionID, err := clusters.AttachPolicy(client, cluster.ID, attachPolicyOpts).Extract() + actionID, err := clusters.AttachPolicy(context.TODO(), client, cluster.ID, attachPolicyOpts).Extract() th.AssertNoErr(t, err) err = WaitForAction(client, actionID) @@ -179,7 +180,7 @@ func TestClustersPolicies(t *testing.T) { // List all policies in the cluster to see if the policy was // successfully attached. - allPages, err := clusters.ListPolicies(client, cluster.ID, nil).AllPages() + allPages, err := clusters.ListPolicies(client, cluster.ID, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicies, err := clusters.ExtractClusterPolicies(allPages) @@ -202,13 +203,13 @@ func TestClustersPolicies(t *testing.T) { Enabled: &iFalse, } - actionID, err = clusters.UpdatePolicy(client, cluster.ID, updatePolicyOpts).Extract() + actionID, err = clusters.UpdatePolicy(context.TODO(), client, cluster.ID, updatePolicyOpts).Extract() th.AssertNoErr(t, err) err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - clusterPolicy, err := clusters.GetPolicy(client, cluster.ID, policy.ID).Extract() + clusterPolicy, err := clusters.GetPolicy(context.TODO(), client, cluster.ID, policy.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, clusterPolicy.Enabled, false) @@ -217,7 +218,7 @@ func TestClustersPolicies(t *testing.T) { PolicyID: policy.ID, } - actionID, err = clusters.DetachPolicy(client, cluster.ID, detachPolicyOpts).Extract() + actionID, err = clusters.DetachPolicy(context.TODO(), client, cluster.ID, detachPolicyOpts).Extract() th.AssertNoErr(t, err) err = WaitForAction(client, actionID) @@ -225,7 +226,7 @@ func TestClustersPolicies(t *testing.T) { // List all policies in the cluster to see if the policy was // successfully detached. - allPages, err = clusters.ListPolicies(client, cluster.ID, nil).AllPages() + allPages, err = clusters.ListPolicies(client, cluster.ID, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicies, err = clusters.ExtractClusterPolicies(allPages) @@ -258,13 +259,13 @@ func TestClustersRecovery(t *testing.T) { Operation: clusters.RebuildRecovery, } - actionID, err := clusters.Recover(client, cluster.ID, recoverOpts).Extract() + actionID, err := clusters.Recover(context.TODO(), client, cluster.ID, recoverOpts).Extract() th.AssertNoErr(t, err) err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - newCluster, err := clusters.Get(client, cluster.ID).Extract() + newCluster, err := clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newCluster) @@ -292,7 +293,7 @@ func TestClustersAddNode(t *testing.T) { // Even tho deleting the cluster will delete the nodes but only if added into cluster successfully. defer DeleteNode(t, client, node2.ID) - cluster, err = clusters.Get(client, cluster.ID).Extract() + cluster, err = clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) nodeIDs := []string{node1.ID, node2.ID} @@ -302,7 +303,7 @@ func TestClustersAddNode(t *testing.T) { addNodesOpts := clusters.AddNodesOpts{ Nodes: nodeNames, } - actionID, err := clusters.AddNodes(client, cluster.ID, addNodesOpts).Extract() + actionID, err := clusters.AddNodes(context.TODO(), client, cluster.ID, addNodesOpts).Extract() if err != nil { t.Fatalf("Unable to add nodes to cluster: %v", err) } @@ -310,7 +311,7 @@ func TestClustersAddNode(t *testing.T) { err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - cluster, err = clusters.Get(client, cluster.ID).Extract() + cluster, err = clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) sort.Strings(nodeIDs) @@ -336,12 +337,12 @@ func TestClustersRemoveNodeFromCluster(t *testing.T) { th.AssertNoErr(t, err) defer DeleteCluster(t, client, cluster.ID) - cluster, err = clusters.Get(client, cluster.ID).Extract() + cluster, err = clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, cluster) opt := clusters.RemoveNodesOpts{Nodes: cluster.Nodes} - actionID, err := clusters.RemoveNodes(client, cluster.ID, opt).Extract() + actionID, err := clusters.RemoveNodes(context.TODO(), client, cluster.ID, opt).Extract() if err != nil { t.Fatalf("Unable to remove nodes to cluster: %v", err) } @@ -353,7 +354,7 @@ func TestClustersRemoveNodeFromCluster(t *testing.T) { err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - cluster, err = clusters.Get(client, cluster.ID).Extract() + cluster, err = clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, 0, len(cluster.Nodes)) @@ -378,7 +379,7 @@ func TestClustersReplaceNode(t *testing.T) { th.AssertNoErr(t, err) defer DeleteNode(t, client, node1.ID) - cluster, err = clusters.Get(client, cluster.ID).Extract() + cluster, err = clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, true, len(cluster.Nodes) > 0) for _, n := range cluster.Nodes { @@ -387,12 +388,12 @@ func TestClustersReplaceNode(t *testing.T) { nodeIDToBeReplaced := cluster.Nodes[0] opts := clusters.ReplaceNodesOpts{Nodes: map[string]string{nodeIDToBeReplaced: node1.ID}} - actionID, err := clusters.ReplaceNodes(client, cluster.ID, opts).Extract() + actionID, err := clusters.ReplaceNodes(context.TODO(), client, cluster.ID, opts).Extract() th.AssertNoErr(t, err) err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - cluster, err = clusters.Get(client, cluster.ID).Extract() + cluster, err = clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) clusterNodes := strings.Join(cluster.Nodes, ",") @@ -414,14 +415,14 @@ func TestClustersCollectAttributes(t *testing.T) { th.AssertNoErr(t, err) defer DeleteCluster(t, client, cluster.ID) - cluster, err = clusters.Get(client, cluster.ID).Extract() + cluster, err = clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, true, len(cluster.Nodes) > 0) _, err = CreateNode(t, client, cluster.ID, profile.ID) th.AssertNoErr(t, err) - cluster, err = clusters.Get(client, cluster.ID).Extract() + cluster, err = clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, true, len(cluster.Nodes) > 0) @@ -432,7 +433,7 @@ func TestClustersCollectAttributes(t *testing.T) { opts := clusters.CollectOpts{ Path: "status", } - attrs, err := clusters.Collect(client, cluster.ID, opts).Extract() + attrs, err := clusters.Collect(context.TODO(), client, cluster.ID, opts).Extract() th.AssertNoErr(t, err) for _, attr := range attrs { th.AssertEquals(t, attr.Value, "ACTIVE") @@ -441,7 +442,7 @@ func TestClustersCollectAttributes(t *testing.T) { opts = clusters.CollectOpts{ Path: "data.placement.zone", } - attrs, err = clusters.Collect(client, cluster.ID, opts).Extract() + attrs, err = clusters.Collect(context.TODO(), client, cluster.ID, opts).Extract() th.AssertNoErr(t, err) for _, attr := range attrs { th.AssertEquals(t, attr.Value, "nova") @@ -490,20 +491,20 @@ func TestClustersOps(t *testing.T) { for _, op := range ops { opName := string(op.Operation) t.Logf("Attempting to perform '%s' on cluster: %s", opName, cluster.ID) - actionID, res := clusters.Ops(client, cluster.ID, op).Extract() + actionID, res := clusters.Ops(context.TODO(), client, cluster.ID, op).Extract() th.AssertNoErr(t, res) err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - action, err := actions.Get(client, actionID).Extract() + action, err := actions.Get(context.TODO(), client, actionID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "SUCCEEDED", action.Status) t.Logf("Successfully performed '%s' on cluster: %s", opName, cluster.ID) } - cluster, err = clusters.Get(client, cluster.ID).Extract() + cluster, err = clusters.Get(context.TODO(), client, cluster.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, cluster) } diff --git a/internal/acceptance/openstack/clustering/v1/events_test.go b/internal/acceptance/openstack/clustering/v1/events_test.go index dcc7c5638e..98676da5d9 100644 --- a/internal/acceptance/openstack/clustering/v1/events_test.go +++ b/internal/acceptance/openstack/clustering/v1/events_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -20,7 +21,7 @@ func TestEventsList(t *testing.T) { Limit: 200, } - allPages, err := events.List(client, opts).AllPages() + allPages, err := events.List(client, opts).AllPages(context.TODO()) th.AssertNoErr(t, err) allEvents, err := events.ExtractEvents(allPages) diff --git a/internal/acceptance/openstack/clustering/v1/nodes_test.go b/internal/acceptance/openstack/clustering/v1/nodes_test.go index 38a5b8af7e..13534256a8 100644 --- a/internal/acceptance/openstack/clustering/v1/nodes_test.go +++ b/internal/acceptance/openstack/clustering/v1/nodes_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -29,7 +30,7 @@ func TestNodesCRUD(t *testing.T) { defer DeleteNode(t, client, node.ID) // Test nodes list - allPages, err := nodes.List(client, nil).AllPages() + allPages, err := nodes.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allNodes, err := nodes.ExtractNodes(allPages) @@ -53,7 +54,7 @@ func TestNodesCRUD(t *testing.T) { }, } - res := nodes.Update(client, node.ID, updateOpts) + res := nodes.Update(context.TODO(), client, node.ID, updateOpts) th.AssertNoErr(t, res.Err) actionID, err := GetActionID(res.Header) @@ -62,7 +63,7 @@ func TestNodesCRUD(t *testing.T) { err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - node, err = nodes.Get(client, node.ID).Extract() + node, err = nodes.Get(context.TODO(), client, node.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, node) @@ -110,13 +111,13 @@ func TestNodesOps(t *testing.T) { for _, op := range ops { opName := string(op.Operation) t.Logf("Attempting to perform '%s' on node: %s", opName, node.ID) - actionID, res := nodes.Ops(client, node.ID, op).Extract() + actionID, res := nodes.Ops(context.TODO(), client, node.ID, op).Extract() th.AssertNoErr(t, res) err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - node, err = nodes.Get(client, node.ID).Extract() + node, err = nodes.Get(context.TODO(), client, node.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "Operation '"+opName+"' succeeded", node.StatusReason) t.Logf("Successfully performed '%s' on node: %s", opName, node.ID) @@ -168,7 +169,7 @@ func TestNodesRecover(t *testing.T) { t.Logf("Attempting to recover by using '%s' on node: %s", recoverOpt.Operation, node.ID) } - actionID, err := nodes.Recover(client, node.ID, recoverOpt).Extract() + actionID, err := nodes.Recover(context.TODO(), client, node.ID, recoverOpt).Extract() th.AssertNoErr(t, err) err = WaitForAction(client, actionID) @@ -179,7 +180,7 @@ func TestNodesRecover(t *testing.T) { t.Logf("Successfully recovered by using '%s' on node: %s", recoverOpt.Operation, node.ID) } - node, err := nodes.Get(client, node.ID).Extract() + node, err := nodes.Get(context.TODO(), client, node.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, node) } @@ -203,13 +204,13 @@ func TestNodeCheck(t *testing.T) { t.Logf("Attempting to check on node: %s", node.ID) - actionID, err := nodes.Check(client, node.ID).Extract() + actionID, err := nodes.Check(context.TODO(), client, node.ID).Extract() th.AssertNoErr(t, err) err = WaitForAction(client, actionID) th.AssertNoErr(t, err) - node, err = nodes.Get(client, node.ID).Extract() + node, err = nodes.Get(context.TODO(), client, node.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "Check: Node is ACTIVE.", node.StatusReason) tools.PrintResource(t, node) diff --git a/internal/acceptance/openstack/clustering/v1/policies_test.go b/internal/acceptance/openstack/clustering/v1/policies_test.go index 97011c3e60..a763dd6b6f 100644 --- a/internal/acceptance/openstack/clustering/v1/policies_test.go +++ b/internal/acceptance/openstack/clustering/v1/policies_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,7 +23,7 @@ func TestPoliciesCRUD(t *testing.T) { defer DeletePolicy(t, client, policy.ID) // Test listing policies - allPages, err := policies.List(client, nil).AllPages() + allPages, err := policies.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicies, err := policies.ExtractPolicies(allPages) @@ -38,7 +39,7 @@ func TestPoliciesCRUD(t *testing.T) { th.AssertEquals(t, found, true) // Test Get policy - getPolicy, err := policies.Get(client, policy.ID).Extract() + getPolicy, err := policies.Get(context.TODO(), client, policy.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, getPolicy) @@ -48,7 +49,7 @@ func TestPoliciesCRUD(t *testing.T) { } t.Logf("Attempting to update policy: %s", policy.ID) - updatePolicy, err := policies.Update(client, policy.ID, updateOpts).Extract() + updatePolicy, err := policies.Update(context.TODO(), client, policy.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatePolicy) @@ -60,7 +61,7 @@ func TestPoliciesCRUD(t *testing.T) { Spec: TestPolicySpec, } - validatePolicy, err := policies.Validate(client, validateOpts).Extract() + validatePolicy, err := policies.Validate(context.TODO(), client, validateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, validatePolicy) diff --git a/internal/acceptance/openstack/clustering/v1/policytypes_test.go b/internal/acceptance/openstack/clustering/v1/policytypes_test.go index c25a89dca5..4170928e35 100644 --- a/internal/acceptance/openstack/clustering/v1/policytypes_test.go +++ b/internal/acceptance/openstack/clustering/v1/policytypes_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -16,7 +17,7 @@ func TestPolicyTypeList(t *testing.T) { client, err := clients.NewClusteringV1Client() th.AssertNoErr(t, err) - allPages, err := policytypes.List(client).AllPages() + allPages, err := policytypes.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicyTypes, err := policytypes.ExtractPolicyTypes(allPages) @@ -32,7 +33,7 @@ func TestPolicyTypeList_v_1_5(t *testing.T) { th.AssertNoErr(t, err) client.Microversion = "1.5" - allPages, err := policytypes.List(client).AllPages() + allPages, err := policytypes.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicyTypes, err := policytypes.ExtractPolicyTypes(allPages) @@ -47,7 +48,7 @@ func TestPolicyTypeGet(t *testing.T) { client, err := clients.NewClusteringV1Client() th.AssertNoErr(t, err) - policyType, err := policytypes.Get(client, "senlin.policy.batch-1.0").Extract() + policyType, err := policytypes.Get(context.TODO(), client, "senlin.policy.batch-1.0").Extract() th.AssertNoErr(t, err) tools.PrintResource(t, policyType) @@ -58,7 +59,7 @@ func TestPolicyTypeGet_v_1_5(t *testing.T) { th.AssertNoErr(t, err) client.Microversion = "1.5" - policyType, err := policytypes.Get(client, "senlin.policy.batch-1.0").Extract() + policyType, err := policytypes.Get(context.TODO(), client, "senlin.policy.batch-1.0").Extract() th.AssertNoErr(t, err) tools.PrintResource(t, policyType) diff --git a/internal/acceptance/openstack/clustering/v1/profiles_test.go b/internal/acceptance/openstack/clustering/v1/profiles_test.go index 35bca43431..550c889449 100644 --- a/internal/acceptance/openstack/clustering/v1/profiles_test.go +++ b/internal/acceptance/openstack/clustering/v1/profiles_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -21,7 +22,7 @@ func TestProfilesCRUD(t *testing.T) { defer DeleteProfile(t, client, profile.ID) // Test listing profiles - allPages, err := profiles.List(client, nil).AllPages() + allPages, err := profiles.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allProfiles, err := profiles.ExtractProfiles(allPages) @@ -41,7 +42,7 @@ func TestProfilesCRUD(t *testing.T) { Name: profile.Name + "-UPDATED", } - newProfile, err := profiles.Update(client, profile.ID, updateOpts).Extract() + newProfile, err := profiles.Update(context.TODO(), client, profile.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, newProfile.Name, profile.Name+"-UPDATED") @@ -61,7 +62,7 @@ func TestProfileValidate(t *testing.T) { opts := profiles.ValidateOpts{ Spec: profile.Spec, } - validatedProfile, err := profiles.Validate(client, opts).Extract() + validatedProfile, err := profiles.Validate(context.TODO(), client, opts).Extract() th.AssertNoErr(t, err) // Do not validate the following fields for AssertDeepEquals() because the actual fields are either missing or hardcoded. diff --git a/internal/acceptance/openstack/clustering/v1/profiletypes_test.go b/internal/acceptance/openstack/clustering/v1/profiletypes_test.go index e10af5a96f..43ba35ffa0 100644 --- a/internal/acceptance/openstack/clustering/v1/profiletypes_test.go +++ b/internal/acceptance/openstack/clustering/v1/profiletypes_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestProfileTypesList(t *testing.T) { client.Microversion = "1.5" - allPages, err := profiletypes.List(client).AllPages() + allPages, err := profiletypes.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allProfileTypes, err := profiletypes.ExtractProfileTypes(allPages) @@ -35,7 +36,7 @@ func TestProfileTypesOpsList(t *testing.T) { client.Microversion = "1.5" profileTypeName := "os.nova.server-1.0" - allPages, err := profiletypes.ListOps(client, profileTypeName).AllPages() + allPages, err := profiletypes.ListOps(client, profileTypeName).AllPages(context.TODO()) th.AssertNoErr(t, err) ops, err := profiletypes.ExtractOps(allPages) diff --git a/internal/acceptance/openstack/clustering/v1/receivers_test.go b/internal/acceptance/openstack/clustering/v1/receivers_test.go index 1dea38fee5..2376e83d32 100644 --- a/internal/acceptance/openstack/clustering/v1/receivers_test.go +++ b/internal/acceptance/openstack/clustering/v1/receivers_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -29,7 +30,7 @@ func TestReceiversCRUD(t *testing.T) { defer DeleteReceiver(t, client, receiver.ID) // Test listing receivers - allPages, err := receivers.List(client, nil).AllPages() + allPages, err := receivers.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allReceivers, err := receivers.ExtractReceivers(allPages) @@ -50,7 +51,7 @@ func TestReceiversCRUD(t *testing.T) { Name: newName, } - receiver, err = receivers.Update(client, receiver.ID, updateOpts).Extract() + receiver, err = receivers.Update(context.TODO(), client, receiver.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, receiver) @@ -77,7 +78,7 @@ func TestReceiversNotify(t *testing.T) { defer DeleteReceiver(t, client, receiver.ID) t.Logf("Created Mesage Receiver Name:[%s] Message Receiver ID:[%s]", receiver.Name, receiver.ID) - requestID, err := receivers.Notify(client, receiver.ID).Extract() + requestID, err := receivers.Notify(context.TODO(), client, receiver.ID).Extract() th.AssertNoErr(t, err) t.Logf("Receiver Notify Service Request ID: %s", requestID) } diff --git a/internal/acceptance/openstack/clustering/v1/webhooktrigger_test.go b/internal/acceptance/openstack/clustering/v1/webhooktrigger_test.go index 371bc8349f..8f34bf717c 100644 --- a/internal/acceptance/openstack/clustering/v1/webhooktrigger_test.go +++ b/internal/acceptance/openstack/clustering/v1/webhooktrigger_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -37,7 +38,7 @@ func TestClusteringWebhookTrigger(t *testing.T) { defer DeleteReceiver(t, client, receiver.ID) // trigger webhook - actionID, err := webhooks.Trigger(client, receiver.ID, opts).Extract() + actionID, err := webhooks.Trigger(context.TODO(), client, receiver.ID, opts).Extract() if err != nil { t.Fatalf("Unable to extract webhooks trigger: %v", err) } else { @@ -54,7 +55,7 @@ func TestClusteringWebhookTrigger(t *testing.T) { ClusterID: cluster.ID, } - allPages, err := nodes.List(client, nodelistopts).AllPages() + allPages, err := nodes.List(client, nodelistopts).AllPages(context.TODO()) th.AssertNoErr(t, err) allNodes, err := nodes.ExtractNodes(allPages) diff --git a/internal/acceptance/openstack/compute/v2/aggregates_test.go b/internal/acceptance/openstack/compute/v2/aggregates_test.go index 6e6aa53ae0..ed460944ea 100644 --- a/internal/acceptance/openstack/compute/v2/aggregates_test.go +++ b/internal/acceptance/openstack/compute/v2/aggregates_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "fmt" "strings" "testing" @@ -22,7 +23,7 @@ func TestAggregatesList(t *testing.T) { client, err := clients.NewComputeV2Client() th.AssertNoErr(t, err) - allPages, err := aggregates.List(client).AllPages() + allPages, err := aggregates.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allAggregates, err := aggregates.ExtractAggregates(allPages) @@ -51,7 +52,7 @@ func TestAggregatesCRUD(t *testing.T) { AvailabilityZone: "new_azone", } - updatedAggregate, err := aggregates.Update(client, aggregate.ID, updateOpts).Extract() + updatedAggregate, err := aggregates.Update(context.TODO(), client, aggregate.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, aggregate) @@ -77,7 +78,7 @@ func TestAggregatesAddRemoveHost(t *testing.T) { Host: hostToAdd, } - aggregateWithNewHost, err := aggregates.AddHost(client, aggregate.ID, addHostOpts).Extract() + aggregateWithNewHost, err := aggregates.AddHost(context.TODO(), client, aggregate.ID, addHostOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, aggregateWithNewHost) @@ -88,7 +89,7 @@ func TestAggregatesAddRemoveHost(t *testing.T) { Host: hostToAdd, } - aggregateWithRemovedHost, err := aggregates.RemoveHost(client, aggregate.ID, removeHostOpts).Extract() + aggregateWithRemovedHost, err := aggregates.RemoveHost(context.TODO(), client, aggregate.ID, removeHostOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, aggregateWithRemovedHost) @@ -110,7 +111,7 @@ func TestAggregatesSetRemoveMetadata(t *testing.T) { Metadata: map[string]interface{}{"key": "value"}, } - aggregateWithMetadata, err := aggregates.SetMetadata(client, aggregate.ID, opts).Extract() + aggregateWithMetadata, err := aggregates.SetMetadata(context.TODO(), client, aggregate.ID, opts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, aggregateWithMetadata) @@ -123,7 +124,7 @@ func TestAggregatesSetRemoveMetadata(t *testing.T) { Metadata: map[string]interface{}{"key": nil}, } - aggregateWithRemovedKey, err := aggregates.SetMetadata(client, aggregate.ID, optsToRemove).Extract() + aggregateWithRemovedKey, err := aggregates.SetMetadata(context.TODO(), client, aggregate.ID, optsToRemove).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, aggregateWithRemovedKey) @@ -134,7 +135,7 @@ func TestAggregatesSetRemoveMetadata(t *testing.T) { } func getHypervisor(t *testing.T, client *gophercloud.ServiceClient) (string, error) { - allPages, err := hypervisors.List(client, nil).AllPages() + allPages, err := hypervisors.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allHypervisors, err := hypervisors.ExtractHypervisors(allPages) diff --git a/internal/acceptance/openstack/compute/v2/attachinterfaces_test.go b/internal/acceptance/openstack/compute/v2/attachinterfaces_test.go index 98f36f4bc6..9d46ec0ac9 100644 --- a/internal/acceptance/openstack/compute/v2/attachinterfaces_test.go +++ b/internal/acceptance/openstack/compute/v2/attachinterfaces_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -31,7 +32,7 @@ func TestAttachDetachInterface(t *testing.T) { tools.PrintResource(t, iface) - server, err = servers.Get(client, server.ID).Extract() + server, err = servers.Get(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) var found bool diff --git a/internal/acceptance/openstack/compute/v2/availabilityzones_test.go b/internal/acceptance/openstack/compute/v2/availabilityzones_test.go index 09bf4efa2e..54e82168ed 100644 --- a/internal/acceptance/openstack/compute/v2/availabilityzones_test.go +++ b/internal/acceptance/openstack/compute/v2/availabilityzones_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -16,7 +17,7 @@ func TestAvailabilityZonesList(t *testing.T) { client, err := clients.NewComputeV2Client() th.AssertNoErr(t, err) - allPages, err := availabilityzones.List(client).AllPages() + allPages, err := availabilityzones.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) availabilityZoneInfo, err := availabilityzones.ExtractAvailabilityZones(allPages) @@ -40,7 +41,7 @@ func TestAvailabilityZonesListDetail(t *testing.T) { client, err := clients.NewComputeV2Client() th.AssertNoErr(t, err) - allPages, err := availabilityzones.ListDetail(client).AllPages() + allPages, err := availabilityzones.ListDetail(client).AllPages(context.TODO()) th.AssertNoErr(t, err) availabilityZoneInfo, err := availabilityzones.ExtractAvailabilityZones(allPages) diff --git a/internal/acceptance/openstack/compute/v2/bootfromvolume_test.go b/internal/acceptance/openstack/compute/v2/bootfromvolume_test.go index 9901a24fee..45faadc132 100644 --- a/internal/acceptance/openstack/compute/v2/bootfromvolume_test.go +++ b/internal/acceptance/openstack/compute/v2/bootfromvolume_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -71,7 +72,7 @@ func TestBootFromNewVolume(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServer(t, client, server) - attachPages, err := volumeattach.List(client, server.ID).AllPages() + attachPages, err := volumeattach.List(client, server.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) attachments, err := volumeattach.ExtractVolumeAttachments(attachPages) @@ -118,7 +119,7 @@ func TestBootFromExistingVolume(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServer(t, computeClient, server) - attachPages, err := volumeattach.List(computeClient, server.ID).AllPages() + attachPages, err := volumeattach.List(computeClient, server.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) attachments, err := volumeattach.ExtractVolumeAttachments(attachPages) @@ -209,7 +210,7 @@ func TestAttachNewVolume(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServer(t, client, server) - attachPages, err := volumeattach.List(client, server.ID).AllPages() + attachPages, err := volumeattach.List(client, server.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) attachments, err := volumeattach.ExtractVolumeAttachments(attachPages) @@ -260,7 +261,7 @@ func TestAttachExistingVolume(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServer(t, computeClient, server) - attachPages, err := volumeattach.List(computeClient, server.ID).AllPages() + attachPages, err := volumeattach.List(computeClient, server.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) attachments, err := volumeattach.ExtractVolumeAttachments(attachPages) diff --git a/internal/acceptance/openstack/compute/v2/compute.go b/internal/acceptance/openstack/compute/v2/compute.go index b5f9cb381b..8210b4acf2 100644 --- a/internal/acceptance/openstack/compute/v2/compute.go +++ b/internal/acceptance/openstack/compute/v2/compute.go @@ -3,6 +3,7 @@ package v2 import ( + "context" "crypto/rand" "crypto/rsa" "fmt" @@ -43,7 +44,7 @@ func AssociateFloatingIP(t *testing.T, client *gophercloud.ServiceClient, floati } t.Logf("Attempting to associate floating IP %s to instance %s", floatingIP.IP, server.ID) - err := floatingips.AssociateInstance(client, server.ID, associateOpts).ExtractErr() + err := floatingips.AssociateInstance(context.TODO(), client, server.ID, associateOpts).ExtractErr() if err != nil { return err } @@ -61,7 +62,7 @@ func AssociateFloatingIPWithFixedIP(t *testing.T, client *gophercloud.ServiceCli } t.Logf("Attempting to associate floating IP %s to fixed IP %s on instance %s", floatingIP.IP, fixedIP, server.ID) - err := floatingips.AssociateInstance(client, server.ID, associateOpts).ExtractErr() + err := floatingips.AssociateInstance(context.TODO(), client, server.ID, associateOpts).ExtractErr() if err != nil { return err } @@ -88,7 +89,7 @@ func AttachInterface(t *testing.T, client *gophercloud.ServiceClient, serverID s NetworkID: networkID, } - iface, err := attachinterfaces.Create(client, serverID, createOpts).Extract() + iface, err := attachinterfaces.Create(context.TODO(), client, serverID, createOpts).Extract() if err != nil { return nil, err } @@ -110,14 +111,14 @@ func CreateAggregate(t *testing.T, client *gophercloud.ServiceClient) (*aggregat AvailabilityZone: availabilityZone, } - aggregate, err := aggregates.Create(client, createOpts).Extract() + aggregate, err := aggregates.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } t.Logf("Successfully created aggregate %d", aggregate.ID) - aggregate, err = aggregates.Get(client, aggregate.ID).Extract() + aggregate, err = aggregates.Get(context.TODO(), client, aggregate.ID).Extract() if err != nil { return nil, err } @@ -159,7 +160,7 @@ func CreateBootableVolumeServer(t *testing.T, client *gophercloud.ServiceClient, serverCreateOpts.ImageRef = blockDevices[0].UUID } - server, err = bootfromvolume.Create(client, bootfromvolume.CreateOptsExt{ + server, err = bootfromvolume.Create(context.TODO(), client, bootfromvolume.CreateOptsExt{ CreateOptsBuilder: serverCreateOpts, BlockDevice: blockDevices, }).Extract() @@ -172,7 +173,7 @@ func CreateBootableVolumeServer(t *testing.T, client *gophercloud.ServiceClient, return server, err } - newServer, err := servers.Get(client, server.ID).Extract() + newServer, err := servers.Get(context.TODO(), client, server.ID).Extract() if err != nil { return nil, err } @@ -193,7 +194,7 @@ func CreateDefaultRule(t *testing.T, client *gophercloud.ServiceClient) (dsr.Def CIDR: "0.0.0.0/0", } - defaultRule, err := dsr.Create(client, createOpts).Extract() + defaultRule, err := dsr.Create(context.TODO(), client, createOpts).Extract() if err != nil { return *defaultRule, err } @@ -223,7 +224,7 @@ func CreateFlavor(t *testing.T, client *gophercloud.ServiceClient) (*flavors.Fla Description: flavorDescription, } - flavor, err := flavors.Create(client, createOpts).Extract() + flavor, err := flavors.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -251,7 +252,7 @@ func CreateFloatingIP(t *testing.T, client *gophercloud.ServiceClient) (*floatin createOpts := floatingips.CreateOpts{ Pool: choices.FloatingIPPoolName, } - floatingIP, err := floatingips.Create(client, createOpts).Extract() + floatingIP, err := floatingips.Create(context.TODO(), client, createOpts).Extract() if err != nil { return floatingIP, err } @@ -287,7 +288,7 @@ func CreateKeyPair(t *testing.T, client *gophercloud.ServiceClient) (*keypairs.K createOpts := keypairs.CreateOpts{ Name: keyPairName, } - keyPair, err := keypairs.Create(client, createOpts).Extract() + keyPair, err := keypairs.Create(context.TODO(), client, createOpts).Extract() if err != nil { return keyPair, err } @@ -329,7 +330,7 @@ func CreateMultiEphemeralServer(t *testing.T, client *gophercloud.ServiceClient, }, } - server, err = bootfromvolume.Create(client, bootfromvolume.CreateOptsExt{ + server, err = bootfromvolume.Create(context.TODO(), client, bootfromvolume.CreateOptsExt{ CreateOptsBuilder: serverCreateOpts, BlockDevice: blockDevices, }).Extract() @@ -342,7 +343,7 @@ func CreateMultiEphemeralServer(t *testing.T, client *gophercloud.ServiceClient, return server, err } - newServer, err := servers.Get(client, server.ID).Extract() + newServer, err := servers.Get(context.TODO(), client, server.ID).Extract() if err != nil { return server, err } @@ -368,7 +369,7 @@ func CreatePrivateFlavor(t *testing.T, client *gophercloud.ServiceClient) (*flav IsPublic: &isPublic, } - flavor, err := flavors.Create(client, createOpts).Extract() + flavor, err := flavors.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -394,7 +395,7 @@ func CreateSecurityGroup(t *testing.T, client *gophercloud.ServiceClient) (*secg Description: "something", } - securityGroup, err := secgroups.Create(client, createOpts).Extract() + securityGroup, err := secgroups.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -420,7 +421,7 @@ func CreateSecurityGroupRule(t *testing.T, client *gophercloud.ServiceClient, se CIDR: "0.0.0.0/0", } - rule, err := secgroups.CreateRule(client, createOpts).Extract() + rule, err := secgroups.CreateRule(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -455,7 +456,7 @@ func CreateServer(t *testing.T, client *gophercloud.ServiceClient) (*servers.Ser pwd := tools.MakeNewPassword("") - server, err := servers.Create(client, servers.CreateOpts{ + server, err := servers.Create(context.TODO(), client, servers.CreateOpts{ Name: name, FlavorRef: choices.FlavorID, ImageRef: choices.ImageID, @@ -481,7 +482,7 @@ func CreateServer(t *testing.T, client *gophercloud.ServiceClient) (*servers.Ser return nil, err } - newServer, err := servers.Get(client, server.ID).Extract() + newServer, err := servers.Get(context.TODO(), client, server.ID).Extract() if err != nil { return nil, err } @@ -515,7 +516,7 @@ func CreateMicroversionServer(t *testing.T, client *gophercloud.ServiceClient) ( pwd := tools.MakeNewPassword("") - server, err := servers.Create(client, servers.CreateOpts{ + server, err := servers.Create(context.TODO(), client, servers.CreateOpts{ Name: name, FlavorRef: choices.FlavorID, ImageRef: choices.ImageID, @@ -535,7 +536,7 @@ func CreateMicroversionServer(t *testing.T, client *gophercloud.ServiceClient) ( return nil, err } - newServer, err := servers.Get(client, server.ID).Extract() + newServer, err := servers.Get(context.TODO(), client, server.ID).Extract() if err != nil { return nil, err } @@ -567,7 +568,7 @@ func CreateServerWithoutImageRef(t *testing.T, client *gophercloud.ServiceClient pwd := tools.MakeNewPassword("") - server, err := servers.Create(client, servers.CreateOpts{ + server, err := servers.Create(context.TODO(), client, servers.CreateOpts{ Name: name, FlavorRef: choices.FlavorID, AdminPass: pwd, @@ -609,7 +610,7 @@ func CreateServerWithTags(t *testing.T, client *gophercloud.ServiceClient, netwo pwd := tools.MakeNewPassword("") - server, err := servers.Create(client, servers.CreateOpts{ + server, err := servers.Create(context.TODO(), client, servers.CreateOpts{ Name: name, FlavorRef: choices.FlavorID, ImageRef: choices.ImageID, @@ -636,7 +637,7 @@ func CreateServerWithTags(t *testing.T, client *gophercloud.ServiceClient, netwo return nil, err } - res := servers.Get(client, server.ID) + res := servers.Get(context.TODO(), client, server.ID) if res.Err != nil { return nil, res.Err } @@ -656,7 +657,7 @@ func CreateServerGroup(t *testing.T, client *gophercloud.ServiceClient, policy s t.Logf("Attempting to create server group %s", name) - sg, err := servergroups.Create(client, &servergroups.CreateOpts{ + sg, err := servergroups.Create(context.TODO(), client, &servergroups.CreateOpts{ Name: name, Policies: []string{policy}, }).Extract() @@ -681,7 +682,7 @@ func CreateServerGroupMicroversion(t *testing.T, client *gophercloud.ServiceClie t.Logf("Attempting to create %s server group with max server per host = %d: %s", policy, maxServerPerHost, name) - sg, err := servergroups.Create(client, &servergroups.CreateOpts{ + sg, err := servergroups.Create(context.TODO(), client, &servergroups.CreateOpts{ Name: name, Policy: policy, Rules: &servergroups.Rules{ @@ -734,7 +735,7 @@ func CreateServerInServerGroup(t *testing.T, client *gophercloud.ServiceClient, Group: serverGroup.ID, }, } - server, err := servers.Create(client, schedulerHintsOpts).Extract() + server, err := servers.Create(context.TODO(), client, schedulerHintsOpts).Extract() if err != nil { return nil, err } @@ -743,7 +744,7 @@ func CreateServerInServerGroup(t *testing.T, client *gophercloud.ServiceClient, return nil, err } - newServer, err := servers.Get(client, server.ID).Extract() + newServer, err := servers.Get(context.TODO(), client, server.ID).Extract() if err != nil { return nil, err } @@ -780,7 +781,7 @@ func CreateServerWithPublicKey(t *testing.T, client *gophercloud.ServiceClient, }, } - server, err := servers.Create(client, keypairs.CreateOptsExt{ + server, err := servers.Create(context.TODO(), client, keypairs.CreateOptsExt{ CreateOptsBuilder: serverCreateOpts, KeyName: keyPairName, }).Extract() @@ -792,7 +793,7 @@ func CreateServerWithPublicKey(t *testing.T, client *gophercloud.ServiceClient, return nil, err } - newServer, err := servers.Get(client, server.ID).Extract() + newServer, err := servers.Get(context.TODO(), client, server.ID).Extract() if err != nil { return nil, err } @@ -817,12 +818,12 @@ func CreateVolumeAttachment(t *testing.T, client *gophercloud.ServiceClient, blo } t.Logf("Attempting to attach volume %s to server %s", volume.ID, server.ID) - volumeAttachment, err := volumeattach.Create(client, server.ID, volumeAttachOptions).Extract() + volumeAttachment, err := volumeattach.Create(context.TODO(), client, server.ID, volumeAttachOptions).Extract() if err != nil { return volumeAttachment, err } - if err := volumes.WaitForStatus(blockClient, volume.ID, "in-use", 60); err != nil { + if err := volumes.WaitForStatus(context.TODO(), blockClient, volume.ID, "in-use", 60); err != nil { return volumeAttachment, err } @@ -833,7 +834,7 @@ func CreateVolumeAttachment(t *testing.T, client *gophercloud.ServiceClient, blo // the aggregate deleting is failed. This works best when using it as a // deferred function. func DeleteAggregate(t *testing.T, client *gophercloud.ServiceClient, aggregate *aggregates.Aggregate) { - err := aggregates.Delete(client, aggregate.ID).ExtractErr() + err := aggregates.Delete(context.TODO(), client, aggregate.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete aggregate %d", aggregate.ID) } @@ -845,7 +846,7 @@ func DeleteAggregate(t *testing.T, client *gophercloud.ServiceClient, aggregate // A fatal error will occur if the rule failed to delete. This works best when // using it as a deferred function. func DeleteDefaultRule(t *testing.T, client *gophercloud.ServiceClient, defaultRule dsr.DefaultRule) { - err := dsr.Delete(client, defaultRule.ID).ExtractErr() + err := dsr.Delete(context.TODO(), client, defaultRule.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete default rule %s: %v", defaultRule.ID, err) } @@ -856,7 +857,7 @@ func DeleteDefaultRule(t *testing.T, client *gophercloud.ServiceClient, defaultR // DeleteFlavor will delete a flavor. A fatal error will occur if the flavor // could not be deleted. This works best when using it as a deferred function. func DeleteFlavor(t *testing.T, client *gophercloud.ServiceClient, flavor *flavors.Flavor) { - err := flavors.Delete(client, flavor.ID).ExtractErr() + err := flavors.Delete(context.TODO(), client, flavor.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete flavor %s", flavor.ID) } @@ -868,7 +869,7 @@ func DeleteFlavor(t *testing.T, client *gophercloud.ServiceClient, flavor *flavo // the floating IP failed to de-allocate. This works best when using it as a // deferred function. func DeleteFloatingIP(t *testing.T, client *gophercloud.ServiceClient, floatingIP *floatingips.FloatingIP) { - err := floatingips.Delete(client, floatingIP.ID).ExtractErr() + err := floatingips.Delete(context.TODO(), client, floatingIP.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete floating IP %s: %v", floatingIP.ID, err) } @@ -880,7 +881,7 @@ func DeleteFloatingIP(t *testing.T, client *gophercloud.ServiceClient, floatingI // the keypair failed to be deleted. This works best when used as a deferred // function. func DeleteKeyPair(t *testing.T, client *gophercloud.ServiceClient, keyPair *keypairs.KeyPair) { - err := keypairs.Delete(client, keyPair.Name, nil).ExtractErr() + err := keypairs.Delete(context.TODO(), client, keyPair.Name, nil).ExtractErr() if err != nil { t.Fatalf("Unable to delete keypair %s: %v", keyPair.Name, err) } @@ -891,7 +892,7 @@ func DeleteKeyPair(t *testing.T, client *gophercloud.ServiceClient, keyPair *key // DeleteSecurityGroup will delete a security group. A fatal error will occur // if the group failed to be deleted. This works best as a deferred function. func DeleteSecurityGroup(t *testing.T, client *gophercloud.ServiceClient, securityGroupID string) { - err := secgroups.Delete(client, securityGroupID).ExtractErr() + err := secgroups.Delete(context.TODO(), client, securityGroupID).ExtractErr() if err != nil { t.Fatalf("Unable to delete security group %s: %s", securityGroupID, err) } @@ -903,7 +904,7 @@ func DeleteSecurityGroup(t *testing.T, client *gophercloud.ServiceClient, securi // will occur if the rule failed to be deleted. This works best when used // as a deferred function. func DeleteSecurityGroupRule(t *testing.T, client *gophercloud.ServiceClient, ruleID string) { - err := secgroups.DeleteRule(client, ruleID).ExtractErr() + err := secgroups.DeleteRule(context.TODO(), client, ruleID).ExtractErr() if err != nil { t.Fatalf("Unable to delete rule: %v", err) } @@ -915,7 +916,7 @@ func DeleteSecurityGroupRule(t *testing.T, client *gophercloud.ServiceClient, ru // A fatal error will occur if the instance failed to be destroyed. This works // best when using it as a deferred function. func DeleteServer(t *testing.T, client *gophercloud.ServiceClient, server *servers.Server) { - err := servers.Delete(client, server.ID).ExtractErr() + err := servers.Delete(context.TODO(), client, server.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete server %s: %s", server.ID, err) } @@ -937,7 +938,7 @@ func DeleteServer(t *testing.T, client *gophercloud.ServiceClient, server *serve // the server group failed to be deleted. This works best when used as a // deferred function. func DeleteServerGroup(t *testing.T, client *gophercloud.ServiceClient, serverGroup *servergroups.ServerGroup) { - err := servergroups.Delete(client, serverGroup.ID).ExtractErr() + err := servergroups.Delete(context.TODO(), client, serverGroup.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete server group %s: %v", serverGroup.ID, err) } @@ -950,12 +951,12 @@ func DeleteServerGroup(t *testing.T, client *gophercloud.ServiceClient, serverGr // as a deferred function. func DeleteVolumeAttachment(t *testing.T, client *gophercloud.ServiceClient, blockClient *gophercloud.ServiceClient, server *servers.Server, volumeAttachment *volumeattach.VolumeAttachment) { - err := volumeattach.Delete(client, server.ID, volumeAttachment.VolumeID).ExtractErr() + err := volumeattach.Delete(context.TODO(), client, server.ID, volumeAttachment.VolumeID).ExtractErr() if err != nil { t.Fatalf("Unable to detach volume: %v", err) } - if err := volumes.WaitForStatus(blockClient, volumeAttachment.ID, "available", 60); err != nil { + if err := volumes.WaitForStatus(context.TODO(), blockClient, volumeAttachment.ID, "available", 60); err != nil { t.Fatalf("Unable to wait for volume: %v", err) } t.Logf("Deleted volume: %s", volumeAttachment.VolumeID) @@ -967,7 +968,7 @@ func DeleteVolumeAttachment(t *testing.T, client *gophercloud.ServiceClient, blo func DetachInterface(t *testing.T, client *gophercloud.ServiceClient, serverID, portID string) { t.Logf("Attempting to detach interface %s from server %s", portID, serverID) - err := attachinterfaces.Delete(client, serverID, portID).ExtractErr() + err := attachinterfaces.Delete(context.TODO(), client, serverID, portID).ExtractErr() if err != nil { t.Fatalf("Unable to detach interface %s from server %s", portID, serverID) } @@ -983,7 +984,7 @@ func DisassociateFloatingIP(t *testing.T, client *gophercloud.ServiceClient, flo FloatingIP: floatingIP.IP, } - err := floatingips.DisassociateInstance(client, server.ID, disassociateOpts).ExtractErr() + err := floatingips.DisassociateInstance(context.TODO(), client, server.ID, disassociateOpts).ExtractErr() if err != nil { t.Fatalf("Unable to disassociate floating IP %s from server %s: %v", floatingIP.IP, server.ID, err) } @@ -995,7 +996,7 @@ func DisassociateFloatingIP(t *testing.T, client *gophercloud.ServiceClient, flo // UUID using the os-networks API extension. An error will be returned if the // network could not be retrieved. func GetNetworkIDFromOSNetworks(t *testing.T, client *gophercloud.ServiceClient, networkName string) (string, error) { - allPages, err := networks.List(client).AllPages() + allPages, err := networks.List(client).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list networks: %v", err) } @@ -1022,7 +1023,7 @@ func GetNetworkIDFromOSNetworks(t *testing.T, client *gophercloud.ServiceClient, // network name using the os-tenant-networks API extension. An error will be // returned if the network could not be retrieved. func GetNetworkIDFromTenantNetworks(t *testing.T, client *gophercloud.ServiceClient, networkName string) (string, error) { - allPages, err := tenantnetworks.List(client).AllPages() + allPages, err := tenantnetworks.List(client).AllPages(context.TODO()) if err != nil { return "", err } @@ -1045,7 +1046,7 @@ func GetNetworkIDFromTenantNetworks(t *testing.T, client *gophercloud.ServiceCli // name using either the os-tenant-networks API extension or Neutron API. // An error will be returned if the network could not be retrieved. func GetNetworkIDFromNetworks(t *testing.T, client *gophercloud.ServiceClient, networkName string) (string, error) { - allPages, err := tenantnetworks.List(client).AllPages() + allPages, err := tenantnetworks.List(client).AllPages(context.TODO()) if err == nil { allTenantNetworks, err := tenantnetworks.ExtractNetworks(allPages) if err != nil { @@ -1062,7 +1063,7 @@ func GetNetworkIDFromNetworks(t *testing.T, client *gophercloud.ServiceClient, n networkClient, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - allPages2, err := neutron.List(networkClient, nil).AllPages() + allPages2, err := neutron.List(networkClient, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allNetworks, err := neutron.ExtractNetworks(allPages2) @@ -1087,7 +1088,7 @@ func ImportPublicKey(t *testing.T, client *gophercloud.ServiceClient, publicKey Name: keyPairName, PublicKey: publicKey, } - keyPair, err := keypairs.Create(client, createOpts).Extract() + keyPair, err := keypairs.Create(context.TODO(), client, createOpts).Extract() if err != nil { return keyPair, err } @@ -1112,7 +1113,7 @@ func ResizeServer(t *testing.T, client *gophercloud.ServiceClient, server *serve opts := &servers.ResizeOpts{ FlavorRef: choices.FlavorIDResize, } - if res := servers.Resize(client, server.ID, opts); res.Err != nil { + if res := servers.Resize(context.TODO(), client, server.ID, opts); res.Err != nil { return res.Err } @@ -1127,7 +1128,7 @@ func ResizeServer(t *testing.T, client *gophercloud.ServiceClient, server *serve // the specified status or the status becomes ERROR. func WaitForComputeStatus(client *gophercloud.ServiceClient, server *servers.Server, status string) error { return tools.WaitFor(func() (bool, error) { - latest, err := servers.Get(client, server.ID).Extract() + latest, err := servers.Get(context.TODO(), client, server.ID).Extract() if err != nil { return false, err } @@ -1166,7 +1167,7 @@ func FillUpdateOptsFromQuotaSet(src quotasets.QuotaSet, dest *quotasets.UpdateOp // RescueServer will place the specified server into rescue mode. func RescueServer(t *testing.T, client *gophercloud.ServiceClient, server *servers.Server) error { t.Logf("Attempting to put server %s into rescue mode", server.ID) - _, err := rescueunrescue.Rescue(client, server.ID, rescueunrescue.RescueOpts{}).Extract() + _, err := rescueunrescue.Rescue(context.TODO(), client, server.ID, rescueunrescue.RescueOpts{}).Extract() if err != nil { return err } @@ -1181,7 +1182,7 @@ func RescueServer(t *testing.T, client *gophercloud.ServiceClient, server *serve // UnrescueServer will return server from rescue mode. func UnrescueServer(t *testing.T, client *gophercloud.ServiceClient, server *servers.Server) error { t.Logf("Attempting to return server %s from rescue mode", server.ID) - if err := rescueunrescue.Unrescue(client, server.ID).ExtractErr(); err != nil { + if err := rescueunrescue.Unrescue(context.TODO(), client, server.ID).ExtractErr(); err != nil { return err } @@ -1200,7 +1201,7 @@ func CreateRemoteConsole(t *testing.T, client *gophercloud.ServiceClient, server } t.Logf("Attempting to create a %s console for the server %s", createOpts.Type, serverID) - remoteConsole, err := remoteconsoles.Create(client, serverID, createOpts).Extract() + remoteConsole, err := remoteconsoles.Create(context.TODO(), client, serverID, createOpts).Extract() if err != nil { return nil, err } @@ -1225,7 +1226,7 @@ func CreateServerNoNetwork(t *testing.T, client *gophercloud.ServiceClient) (*se pwd := tools.MakeNewPassword("") - server, err := servers.Create(client, servers.CreateOpts{ + server, err := servers.Create(context.TODO(), client, servers.CreateOpts{ Name: name, FlavorRef: choices.FlavorID, ImageRef: choices.ImageID, @@ -1249,7 +1250,7 @@ func CreateServerNoNetwork(t *testing.T, client *gophercloud.ServiceClient) (*se return nil, err } - newServer, err := servers.Get(client, server.ID).Extract() + newServer, err := servers.Get(context.TODO(), client, server.ID).Extract() if err != nil { return nil, err } diff --git a/internal/acceptance/openstack/compute/v2/defsecrules_test.go b/internal/acceptance/openstack/compute/v2/defsecrules_test.go index 4fa4e3d4a1..c457be6920 100644 --- a/internal/acceptance/openstack/compute/v2/defsecrules_test.go +++ b/internal/acceptance/openstack/compute/v2/defsecrules_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestDefSecRulesList(t *testing.T) { client, err := clients.NewComputeV2Client() th.AssertNoErr(t, err) - allPages, err := dsr.List(client).AllPages() + allPages, err := dsr.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allDefaultRules, err := dsr.ExtractDefaultRules(allPages) @@ -55,7 +56,7 @@ func TestDefSecRulesGet(t *testing.T) { th.AssertNoErr(t, err) defer DeleteDefaultRule(t, client, defaultRule) - newDefaultRule, err := dsr.Get(client, defaultRule.ID).Extract() + newDefaultRule, err := dsr.Get(context.TODO(), client, defaultRule.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newDefaultRule) diff --git a/internal/acceptance/openstack/compute/v2/diagnostics_test.go b/internal/acceptance/openstack/compute/v2/diagnostics_test.go index 473b6fda61..2de23bfb62 100644 --- a/internal/acceptance/openstack/compute/v2/diagnostics_test.go +++ b/internal/acceptance/openstack/compute/v2/diagnostics_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,7 +23,7 @@ func TestDiagnostics(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServer(t, client, server) - diag, err := diagnostics.Get(client, server.ID).Extract() + diag, err := diagnostics.Get(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, diag) diff --git a/internal/acceptance/openstack/compute/v2/extension_test.go b/internal/acceptance/openstack/compute/v2/extension_test.go index f51ec75910..3ed26bcbce 100644 --- a/internal/acceptance/openstack/compute/v2/extension_test.go +++ b/internal/acceptance/openstack/compute/v2/extension_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -16,7 +17,7 @@ func TestExtensionsList(t *testing.T) { client, err := clients.NewComputeV2Client() th.AssertNoErr(t, err) - allPages, err := extensions.List(client).AllPages() + allPages, err := extensions.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allExtensions, err := extensions.ExtractExtensions(allPages) @@ -38,7 +39,7 @@ func TestExtensionsGet(t *testing.T) { client, err := clients.NewComputeV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(client, "os-admin-actions").Extract() + extension, err := extensions.Get(context.TODO(), client, "os-admin-actions").Extract() th.AssertNoErr(t, err) tools.PrintResource(t, extension) diff --git a/internal/acceptance/openstack/compute/v2/flavors_test.go b/internal/acceptance/openstack/compute/v2/flavors_test.go index 0643dfd64d..31ed4fb6de 100644 --- a/internal/acceptance/openstack/compute/v2/flavors_test.go +++ b/internal/acceptance/openstack/compute/v2/flavors_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -20,7 +21,7 @@ func TestFlavorsList(t *testing.T) { choices, err := clients.AcceptanceTestChoicesFromEnv() th.AssertNoErr(t, err) - allPages, err := flavors.ListDetail(client, nil).AllPages() + allPages, err := flavors.ListDetail(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allFlavors, err := flavors.ExtractFlavors(allPages) @@ -50,7 +51,7 @@ func TestFlavorsAccessTypeList(t *testing.T) { for flavorTypeName, flavorAccessType := range flavorAccessTypes { t.Logf("** %s flavors: **", flavorTypeName) - allPages, err := flavors.ListDetail(client, flavors.ListOpts{AccessType: flavorAccessType}).AllPages() + allPages, err := flavors.ListDetail(client, flavors.ListOpts{AccessType: flavorAccessType}).AllPages(context.TODO()) th.AssertNoErr(t, err) allFlavors, err := flavors.ExtractFlavors(allPages) @@ -69,7 +70,7 @@ func TestFlavorsGet(t *testing.T) { choices, err := clients.AcceptanceTestChoicesFromEnv() th.AssertNoErr(t, err) - flavor, err := flavors.Get(client, choices.FlavorID).Extract() + flavor, err := flavors.Get(context.TODO(), client, choices.FlavorID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, flavor) @@ -94,12 +95,12 @@ func TestFlavorExtraSpecsGet(t *testing.T) { "hw:cpu_policy": "CPU-POLICY", "hw:cpu_thread_policy": "CPU-THREAD-POLICY", } - createdExtraSpecs, err := flavors.CreateExtraSpecs(client, flavor.ID, createOpts).Extract() + createdExtraSpecs, err := flavors.CreateExtraSpecs(context.TODO(), client, flavor.ID, createOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, createdExtraSpecs) - flavor, err = flavors.Get(client, flavor.ID).Extract() + flavor, err = flavors.Get(context.TODO(), client, flavor.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, flavor) @@ -138,7 +139,7 @@ func TestFlavorsCreateUpdateDelete(t *testing.T) { Description: newFlavorDescription, } - flavor, err = flavors.Update(client, flavor.ID, updateOpts).Extract() + flavor, err = flavors.Update(context.TODO(), client, flavor.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, flavor.Description, newFlavorDescription) @@ -155,7 +156,7 @@ func TestFlavorsAccessesList(t *testing.T) { th.AssertNoErr(t, err) defer DeleteFlavor(t, client, flavor) - allPages, err := flavors.ListAccesses(client, flavor.ID).AllPages() + allPages, err := flavors.ListAccesses(client, flavor.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allAccesses, err := flavors.ExtractAccesses(allPages) @@ -185,7 +186,7 @@ func TestFlavorsAccessCRUD(t *testing.T) { Tenant: project.ID, } - accessList, err := flavors.AddAccess(client, flavor.ID, addAccessOpts).Extract() + accessList, err := flavors.AddAccess(context.TODO(), client, flavor.ID, addAccessOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, len(accessList), 1) @@ -200,7 +201,7 @@ func TestFlavorsAccessCRUD(t *testing.T) { Tenant: project.ID, } - accessList, err = flavors.RemoveAccess(client, flavor.ID, removeAccessOpts).Extract() + accessList, err = flavors.RemoveAccess(context.TODO(), client, flavor.ID, removeAccessOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, len(accessList), 0) @@ -220,7 +221,7 @@ func TestFlavorsExtraSpecsCRUD(t *testing.T) { "hw:cpu_policy": "CPU-POLICY", "hw:cpu_thread_policy": "CPU-THREAD-POLICY", } - createdExtraSpecs, err := flavors.CreateExtraSpecs(client, flavor.ID, createOpts).Extract() + createdExtraSpecs, err := flavors.CreateExtraSpecs(context.TODO(), client, flavor.ID, createOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, createdExtraSpecs) @@ -229,18 +230,18 @@ func TestFlavorsExtraSpecsCRUD(t *testing.T) { th.AssertEquals(t, createdExtraSpecs["hw:cpu_policy"], "CPU-POLICY") th.AssertEquals(t, createdExtraSpecs["hw:cpu_thread_policy"], "CPU-THREAD-POLICY") - err = flavors.DeleteExtraSpec(client, flavor.ID, "hw:cpu_policy").ExtractErr() + err = flavors.DeleteExtraSpec(context.TODO(), client, flavor.ID, "hw:cpu_policy").ExtractErr() th.AssertNoErr(t, err) updateOpts := flavors.ExtraSpecsOpts{ "hw:cpu_thread_policy": "CPU-THREAD-POLICY-BETTER", } - updatedExtraSpec, err := flavors.UpdateExtraSpec(client, flavor.ID, updateOpts).Extract() + updatedExtraSpec, err := flavors.UpdateExtraSpec(context.TODO(), client, flavor.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedExtraSpec) - allExtraSpecs, err := flavors.ListExtraSpecs(client, flavor.ID).Extract() + allExtraSpecs, err := flavors.ListExtraSpecs(context.TODO(), client, flavor.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, allExtraSpecs) @@ -248,7 +249,7 @@ func TestFlavorsExtraSpecsCRUD(t *testing.T) { th.AssertEquals(t, len(allExtraSpecs), 1) th.AssertEquals(t, allExtraSpecs["hw:cpu_thread_policy"], "CPU-THREAD-POLICY-BETTER") - spec, err := flavors.GetExtraSpec(client, flavor.ID, "hw:cpu_thread_policy").Extract() + spec, err := flavors.GetExtraSpec(context.TODO(), client, flavor.ID, "hw:cpu_thread_policy").Extract() th.AssertNoErr(t, err) tools.PrintResource(t, spec) diff --git a/internal/acceptance/openstack/compute/v2/floatingip_test.go b/internal/acceptance/openstack/compute/v2/floatingip_test.go index a09476f72a..0445e31066 100644 --- a/internal/acceptance/openstack/compute/v2/floatingip_test.go +++ b/internal/acceptance/openstack/compute/v2/floatingip_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -23,7 +24,7 @@ func TestFloatingIPsCreateDelete(t *testing.T) { tools.PrintResource(t, floatingIP) - allPages, err := floatingips.List(client).AllPages() + allPages, err := floatingips.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allFloatingIPs, err := floatingips.ExtractFloatingIPs(allPages) @@ -40,7 +41,7 @@ func TestFloatingIPsCreateDelete(t *testing.T) { th.AssertEquals(t, found, true) - fip, err := floatingips.Get(client, floatingIP.ID).Extract() + fip, err := floatingips.Get(context.TODO(), client, floatingIP.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, floatingIP.ID, fip.ID) @@ -66,7 +67,7 @@ func TestFloatingIPsAssociate(t *testing.T) { th.AssertNoErr(t, err) defer DisassociateFloatingIP(t, client, floatingIP, server) - newFloatingIP, err := floatingips.Get(client, floatingIP.ID).Extract() + newFloatingIP, err := floatingips.Get(context.TODO(), client, floatingIP.ID).Extract() th.AssertNoErr(t, err) t.Logf("Floating IP %s is associated with Fixed IP %s", floatingIP.IP, newFloatingIP.FixedIP) @@ -89,7 +90,7 @@ func TestFloatingIPsFixedIPAssociate(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServer(t, client, server) - newServer, err := servers.Get(client, server.ID).Extract() + newServer, err := servers.Get(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) floatingIP, err := CreateFloatingIP(t, client) @@ -112,7 +113,7 @@ func TestFloatingIPsFixedIPAssociate(t *testing.T) { th.AssertNoErr(t, err) defer DisassociateFloatingIP(t, client, floatingIP, newServer) - newFloatingIP, err := floatingips.Get(client, floatingIP.ID).Extract() + newFloatingIP, err := floatingips.Get(context.TODO(), client, floatingIP.ID).Extract() th.AssertNoErr(t, err) t.Logf("Floating IP %s is associated with Fixed IP %s", floatingIP.IP, newFloatingIP.FixedIP) diff --git a/internal/acceptance/openstack/compute/v2/hypervisors_test.go b/internal/acceptance/openstack/compute/v2/hypervisors_test.go index 0d870ebb72..44b7c6a3ac 100644 --- a/internal/acceptance/openstack/compute/v2/hypervisors_test.go +++ b/internal/acceptance/openstack/compute/v2/hypervisors_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "fmt" "testing" @@ -20,7 +21,7 @@ func TestHypervisorsList(t *testing.T) { client, err := clients.NewComputeV2Client() th.AssertNoErr(t, err) - allPages, err := hypervisors.List(client, nil).AllPages() + allPages, err := hypervisors.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allHypervisors, err := hypervisors.ExtractHypervisors(allPages) @@ -40,7 +41,7 @@ func TestHypervisorsGet(t *testing.T) { hypervisorID, err := getHypervisorID(t, client) th.AssertNoErr(t, err) - hypervisor, err := hypervisors.Get(client, hypervisorID).Extract() + hypervisor, err := hypervisors.Get(context.TODO(), client, hypervisorID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, hypervisor) @@ -54,7 +55,7 @@ func TestHypervisorsGetStatistics(t *testing.T) { client, err := clients.NewComputeV2Client() th.AssertNoErr(t, err) - hypervisorsStats, err := hypervisors.GetStatistics(client).Extract() + hypervisorsStats, err := hypervisors.GetStatistics(context.TODO(), client).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, hypervisorsStats) @@ -73,7 +74,7 @@ func TestHypervisorsGetUptime(t *testing.T) { hypervisorID, err := getHypervisorID(t, client) th.AssertNoErr(t, err) - hypervisor, err := hypervisors.GetUptime(client, hypervisorID).Extract() + hypervisor, err := hypervisors.GetUptime(context.TODO(), client, hypervisorID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, hypervisor) @@ -98,7 +99,7 @@ func TestHypervisorListQuery(t *testing.T) { WithServers: &iTrue, } - allPages, err := hypervisors.List(client, listOpts).AllPages() + allPages, err := hypervisors.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allHypervisors, err := hypervisors.ExtractHypervisors(allPages) @@ -111,7 +112,7 @@ func TestHypervisorListQuery(t *testing.T) { } func getHypervisorID(t *testing.T, client *gophercloud.ServiceClient) (string, error) { - allPages, err := hypervisors.List(client, nil).AllPages() + allPages, err := hypervisors.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allHypervisors, err := hypervisors.ExtractHypervisors(allPages) diff --git a/internal/acceptance/openstack/compute/v2/images_test.go b/internal/acceptance/openstack/compute/v2/images_test.go index e6f1bc51f7..eae54cb3e9 100644 --- a/internal/acceptance/openstack/compute/v2/images_test.go +++ b/internal/acceptance/openstack/compute/v2/images_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestImagesList(t *testing.T) { choices, err := clients.AcceptanceTestChoicesFromEnv() th.AssertNoErr(t, err) - allPages, err := images.ListDetail(client, nil).AllPages() + allPages, err := images.ListDetail(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allImages, err := images.ExtractImages(allPages) @@ -44,7 +45,7 @@ func TestImagesGet(t *testing.T) { choices, err := clients.AcceptanceTestChoicesFromEnv() th.AssertNoErr(t, err) - image, err := images.Get(client, choices.ImageID).Extract() + image, err := images.Get(context.TODO(), client, choices.ImageID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, image) diff --git a/internal/acceptance/openstack/compute/v2/instance_actions_test.go b/internal/acceptance/openstack/compute/v2/instance_actions_test.go index 25918e0ba3..7d1a7a1abe 100644 --- a/internal/acceptance/openstack/compute/v2/instance_actions_test.go +++ b/internal/acceptance/openstack/compute/v2/instance_actions_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "time" @@ -22,7 +23,7 @@ func TestInstanceActions(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServer(t, client, server) - allPages, err := instanceactions.List(client, server.ID, nil).AllPages() + allPages, err := instanceactions.List(client, server.ID, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allActions, err := instanceactions.ExtractInstanceActions(allPages) th.AssertNoErr(t, err) @@ -30,7 +31,7 @@ func TestInstanceActions(t *testing.T) { var found bool for _, action := range allActions { - action, err := instanceactions.Get(client, server.ID, action.RequestID).Extract() + action, err := instanceactions.Get(context.TODO(), client, server.ID, action.RequestID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, action) @@ -59,7 +60,7 @@ func TestInstanceActionsMicroversions(t *testing.T) { Type: servers.HardReboot, } - err = servers.Reboot(client, server.ID, rebootOpts).ExtractErr() + err = servers.Reboot(context.TODO(), client, server.ID, rebootOpts).ExtractErr() if err = WaitForComputeStatus(client, server, "ACTIVE"); err != nil { t.Fatal(err) } @@ -69,7 +70,7 @@ func TestInstanceActionsMicroversions(t *testing.T) { ChangesSince: &now, } - allPages, err := instanceactions.List(client, server.ID, listOpts).AllPages() + allPages, err := instanceactions.List(client, server.ID, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allActions, err := instanceactions.ExtractInstanceActions(allPages) @@ -78,7 +79,7 @@ func TestInstanceActionsMicroversions(t *testing.T) { var found bool for _, action := range allActions { - action, err := instanceactions.Get(client, server.ID, action.RequestID).Extract() + action, err := instanceactions.Get(context.TODO(), client, server.ID, action.RequestID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, action) @@ -94,7 +95,7 @@ func TestInstanceActionsMicroversions(t *testing.T) { ChangesBefore: &now, } - allPages, err = instanceactions.List(client, server.ID, listOpts).AllPages() + allPages, err = instanceactions.List(client, server.ID, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allActions, err = instanceactions.ExtractInstanceActions(allPages) diff --git a/internal/acceptance/openstack/compute/v2/keypairs_test.go b/internal/acceptance/openstack/compute/v2/keypairs_test.go index 4565fc5b2a..ac4e2207c8 100644 --- a/internal/acceptance/openstack/compute/v2/keypairs_test.go +++ b/internal/acceptance/openstack/compute/v2/keypairs_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -44,7 +45,7 @@ func TestKeyPairsCreateDelete(t *testing.T) { tools.PrintResource(t, keyPair) - allPages, err := keypairs.List(client, nil).AllPages() + allPages, err := keypairs.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allKeys, err := keypairs.ExtractKeyPairs(allPages) @@ -93,7 +94,7 @@ func TestKeyPairsServerCreateWithKey(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServer(t, client, server) - server, err = servers.Get(client, server.ID).Extract() + server, err = servers.Get(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, server.KeyName, keyPair.Name) @@ -120,14 +121,14 @@ func TestKeyPairsCreateDeleteByID(t *testing.T) { UserID: user.ID, } - keyPair, err := keypairs.Create(computeClient, createOpts).Extract() + keyPair, err := keypairs.Create(context.TODO(), computeClient, createOpts).Extract() th.AssertNoErr(t, err) getOpts := keypairs.GetOpts{ UserID: user.ID, } - newKeyPair, err := keypairs.Get(computeClient, keyPair.Name, getOpts).Extract() + newKeyPair, err := keypairs.Get(context.TODO(), computeClient, keyPair.Name, getOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, keyPair.Name, newKeyPair.Name) @@ -135,7 +136,7 @@ func TestKeyPairsCreateDeleteByID(t *testing.T) { UserID: user.ID, } - allPages, err := keypairs.List(computeClient, listOpts).AllPages() + allPages, err := keypairs.List(computeClient, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allKeys, err := keypairs.ExtractKeyPairs(allPages) @@ -154,6 +155,6 @@ func TestKeyPairsCreateDeleteByID(t *testing.T) { UserID: user.ID, } - err = keypairs.Delete(computeClient, keyPair.Name, deleteOpts).ExtractErr() + err = keypairs.Delete(context.TODO(), computeClient, keyPair.Name, deleteOpts).ExtractErr() th.AssertNoErr(t, err) } diff --git a/internal/acceptance/openstack/compute/v2/limits_test.go b/internal/acceptance/openstack/compute/v2/limits_test.go index f960c16472..a8257a288d 100644 --- a/internal/acceptance/openstack/compute/v2/limits_test.go +++ b/internal/acceptance/openstack/compute/v2/limits_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "strings" "testing" @@ -17,7 +18,7 @@ func TestLimits(t *testing.T) { client, err := clients.NewComputeV2Client() th.AssertNoErr(t, err) - limits, err := limits.Get(client, nil).Extract() + limits, err := limits.Get(context.TODO(), client, nil).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, limits) @@ -42,7 +43,7 @@ func TestLimitsForTenant(t *testing.T) { TenantID: tenantID, } - limits, err := limits.Get(client, getOpts).Extract() + limits, err := limits.Get(context.TODO(), client, getOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, limits) diff --git a/internal/acceptance/openstack/compute/v2/migrate_test.go b/internal/acceptance/openstack/compute/v2/migrate_test.go index bebbe9af06..0e320739d1 100644 --- a/internal/acceptance/openstack/compute/v2/migrate_test.go +++ b/internal/acceptance/openstack/compute/v2/migrate_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -24,7 +25,7 @@ func TestMigrate(t *testing.T) { t.Logf("Attempting to migrate server %s", server.ID) - err = migrate.Migrate(client, server.ID).ExtractErr() + err = migrate.Migrate(context.TODO(), client, server.ID).ExtractErr() th.AssertNoErr(t, err) } @@ -50,6 +51,6 @@ func TestLiveMigrate(t *testing.T) { DiskOverCommit: &diskOverCommit, } - err = migrate.LiveMigrate(client, server.ID, liveMigrateOpts).ExtractErr() + err = migrate.LiveMigrate(context.TODO(), client, server.ID, liveMigrateOpts).ExtractErr() th.AssertNoErr(t, err) } diff --git a/internal/acceptance/openstack/compute/v2/network_test.go b/internal/acceptance/openstack/compute/v2/network_test.go index 5ae1db18ba..c32459fd66 100644 --- a/internal/acceptance/openstack/compute/v2/network_test.go +++ b/internal/acceptance/openstack/compute/v2/network_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestNetworksList(t *testing.T) { choices, err := clients.AcceptanceTestChoicesFromEnv() th.AssertNoErr(t, err) - allPages, err := networks.List(client).AllPages() + allPages, err := networks.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allNetworks, err := networks.ExtractNetworks(allPages) @@ -47,7 +48,7 @@ func TestNetworksGet(t *testing.T) { networkID, err := GetNetworkIDFromOSNetworks(t, client, choices.NetworkName) th.AssertNoErr(t, err) - network, err := networks.Get(client, networkID).Extract() + network, err := networks.Get(context.TODO(), client, networkID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, network) diff --git a/internal/acceptance/openstack/compute/v2/quotaset_test.go b/internal/acceptance/openstack/compute/v2/quotaset_test.go index 01e7216e55..dfd55af976 100644 --- a/internal/acceptance/openstack/compute/v2/quotaset_test.go +++ b/internal/acceptance/openstack/compute/v2/quotaset_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "fmt" "os" "testing" @@ -26,7 +27,7 @@ func TestQuotasetGet(t *testing.T) { projectID, err := getProjectID(t, identityClient) th.AssertNoErr(t, err) - quotaSet, err := quotasets.Get(client, projectID).Extract() + quotaSet, err := quotasets.Get(context.TODO(), client, projectID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, quotaSet) @@ -35,7 +36,7 @@ func TestQuotasetGet(t *testing.T) { } func getProjectID(t *testing.T, client *gophercloud.ServiceClient) (string, error) { - allPages, err := projects.ListAvailable(client).AllPages() + allPages, err := projects.ListAvailable(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err := projects.ExtractProjects(allPages) @@ -49,7 +50,7 @@ func getProjectID(t *testing.T, client *gophercloud.ServiceClient) (string, erro } func getProjectIDByName(t *testing.T, client *gophercloud.ServiceClient, name string) (string, error) { - allPages, err := projects.List(client, nil).AllPages() + allPages, err := projects.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err := projects.ExtractProjects(allPages) @@ -113,20 +114,20 @@ func TestQuotasetUpdateDelete(t *testing.T) { th.AssertNoErr(t, err) // save original quotas - orig, err := quotasets.Get(client, projectid).Extract() + orig, err := quotasets.Get(context.TODO(), client, projectid).Extract() th.AssertNoErr(t, err) // Test Update - res, err := quotasets.Update(client, projectid, UpdateQuotaOpts).Extract() + res, err := quotasets.Update(context.TODO(), client, projectid, UpdateQuotaOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, UpdatedQuotas, *res) // Test Delete - _, err = quotasets.Delete(client, projectid).Extract() + _, err = quotasets.Delete(context.TODO(), client, projectid).Extract() th.AssertNoErr(t, err) // We dont know the default quotas, so just check if the quotas are not the same as before - newres, err := quotasets.Get(client, projectid).Extract() + newres, err := quotasets.Get(context.TODO(), client, projectid).Extract() th.AssertNoErr(t, err) if newres.RAM == res.RAM { t.Fatalf("Failed to update quotas") @@ -136,7 +137,7 @@ func TestQuotasetUpdateDelete(t *testing.T) { FillUpdateOptsFromQuotaSet(*orig, &restore) // restore original quotas - res, err = quotasets.Update(client, projectid, restore).Extract() + res, err = quotasets.Update(context.TODO(), client, projectid, restore).Extract() th.AssertNoErr(t, err) orig.ID = "" diff --git a/internal/acceptance/openstack/compute/v2/secgroup_test.go b/internal/acceptance/openstack/compute/v2/secgroup_test.go index 14eb40b026..130397c4ef 100644 --- a/internal/acceptance/openstack/compute/v2/secgroup_test.go +++ b/internal/acceptance/openstack/compute/v2/secgroup_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestSecGroupsList(t *testing.T) { client, err := clients.NewComputeV2Client() th.AssertNoErr(t, err) - allPages, err := secgroups.List(client).AllPages() + allPages, err := secgroups.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allSecGroups, err := secgroups.ExtractSecurityGroups(allPages) @@ -51,7 +52,7 @@ func TestSecGroupsCRUD(t *testing.T) { Name: newName, Description: &description, } - updatedSecurityGroup, err := secgroups.Update(client, securityGroup.ID, updateOpts).Extract() + updatedSecurityGroup, err := secgroups.Update(context.TODO(), client, securityGroup.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedSecurityGroup) @@ -78,7 +79,7 @@ func TestSecGroupsRuleCreate(t *testing.T) { tools.PrintResource(t, rule) - newSecurityGroup, err := secgroups.Get(client, securityGroup.ID).Extract() + newSecurityGroup, err := secgroups.Get(context.TODO(), client, securityGroup.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newSecurityGroup) @@ -105,10 +106,10 @@ func TestSecGroupsAddGroupToServer(t *testing.T) { defer DeleteSecurityGroupRule(t, client, rule.ID) t.Logf("Adding group %s to server %s", securityGroup.ID, server.ID) - err = secgroups.AddServer(client, server.ID, securityGroup.Name).ExtractErr() + err = secgroups.AddServer(context.TODO(), client, server.ID, securityGroup.Name).ExtractErr() th.AssertNoErr(t, err) - server, err = servers.Get(client, server.ID).Extract() + server, err = servers.Get(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, server) @@ -123,10 +124,10 @@ func TestSecGroupsAddGroupToServer(t *testing.T) { th.AssertEquals(t, found, true) t.Logf("Removing group %s from server %s", securityGroup.ID, server.ID) - err = secgroups.RemoveServer(client, server.ID, securityGroup.Name).ExtractErr() + err = secgroups.RemoveServer(context.TODO(), client, server.ID, securityGroup.Name).ExtractErr() th.AssertNoErr(t, err) - server, err = servers.Get(client, server.ID).Extract() + server, err = servers.Get(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) found = false diff --git a/internal/acceptance/openstack/compute/v2/servergroup_test.go b/internal/acceptance/openstack/compute/v2/servergroup_test.go index 63c1d56844..5421150024 100644 --- a/internal/acceptance/openstack/compute/v2/servergroup_test.go +++ b/internal/acceptance/openstack/compute/v2/servergroup_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -21,12 +22,12 @@ func TestServergroupsCreateDelete(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServerGroup(t, client, serverGroup) - serverGroup, err = servergroups.Get(client, serverGroup.ID).Extract() + serverGroup, err = servergroups.Get(context.TODO(), client, serverGroup.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, serverGroup) - allPages, err := servergroups.List(client, &servergroups.ListOpts{}).AllPages() + allPages, err := servergroups.List(client, &servergroups.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allServerGroups, err := servergroups.ExtractServerGroups(allPages) @@ -58,14 +59,14 @@ func TestServergroupsAffinityPolicy(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServer(t, client, firstServer) - firstServer, err = servers.Get(client, firstServer.ID).Extract() + firstServer, err = servers.Get(context.TODO(), client, firstServer.ID).Extract() th.AssertNoErr(t, err) secondServer, err := CreateServerInServerGroup(t, client, serverGroup) th.AssertNoErr(t, err) defer DeleteServer(t, client, secondServer) - secondServer, err = servers.Get(client, secondServer.ID).Extract() + secondServer, err = servers.Get(context.TODO(), client, secondServer.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, firstServer.HostID, secondServer.HostID) @@ -80,12 +81,12 @@ func TestServergroupsMicroversionCreateDelete(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServerGroup(t, client, serverGroup) - serverGroup, err = servergroups.Get(client, serverGroup.ID).Extract() + serverGroup, err = servergroups.Get(context.TODO(), client, serverGroup.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, serverGroup) - allPages, err := servergroups.List(client, &servergroups.ListOpts{}).AllPages() + allPages, err := servergroups.List(client, &servergroups.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allServerGroups, err := servergroups.ExtractServerGroups(allPages) diff --git a/internal/acceptance/openstack/compute/v2/servers_test.go b/internal/acceptance/openstack/compute/v2/servers_test.go index 08e182db14..ef58fe08c9 100644 --- a/internal/acceptance/openstack/compute/v2/servers_test.go +++ b/internal/acceptance/openstack/compute/v2/servers_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "strings" "testing" @@ -37,7 +38,7 @@ func TestServersCreateDestroy(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServer(t, client, server) - allPages, err := servers.List(client, servers.ListOpts{}).AllPages() + allPages, err := servers.List(client, servers.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allServers, err := servers.ExtractServers(allPages) @@ -54,7 +55,7 @@ func TestServersCreateDestroy(t *testing.T) { th.AssertEquals(t, found, true) - allAddressPages, err := servers.ListAddresses(client, server.ID).AllPages() + allAddressPages, err := servers.ListAddresses(client, server.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allAddresses, err := servers.ExtractAddresses(allAddressPages) @@ -64,7 +65,7 @@ func TestServersCreateDestroy(t *testing.T) { t.Logf("Addresses on %s: %+v", network, address) } - allInterfacePages, err := attachinterfaces.List(client, server.ID).AllPages() + allInterfacePages, err := attachinterfaces.List(client, server.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allInterfaces, err := attachinterfaces.ExtractInterfaces(allInterfacePages) @@ -74,7 +75,7 @@ func TestServersCreateDestroy(t *testing.T) { t.Logf("Interfaces: %+v", iface) } - allNetworkAddressPages, err := servers.ListAddressesByNetwork(client, server.ID, choices.NetworkName).AllPages() + allNetworkAddressPages, err := servers.ListAddressesByNetwork(client, server.ID, choices.NetworkName).AllPages(context.TODO()) th.AssertNoErr(t, err) allNetworkAddresses, err := servers.ExtractNetworkAddresses(allNetworkAddressPages) @@ -103,7 +104,7 @@ func TestServersWithExtensionsCreateDestroy(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServer(t, client, server) - err = servers.Get(client, server.ID).ExtractInto(&extendedServer) + err = servers.Get(context.TODO(), client, server.ID).ExtractInto(&extendedServer) th.AssertNoErr(t, err) tools.PrintResource(t, extendedServer) @@ -150,13 +151,13 @@ func TestServersUpdate(t *testing.T) { Name: alternateName, } - updated, err := servers.Update(client, server.ID, updateOpts).Extract() + updated, err := servers.Update(context.TODO(), client, server.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, updated.ID, server.ID) err = tools.WaitFor(func() (bool, error) { - latest, err := servers.Get(client, updated.ID).Extract() + latest, err := servers.Get(context.TODO(), client, updated.ID).Extract() if err != nil { return false, err } @@ -177,14 +178,14 @@ func TestServersMetadata(t *testing.T) { tools.PrintResource(t, server) - metadata, err := servers.UpdateMetadata(client, server.ID, servers.MetadataOpts{ + metadata, err := servers.UpdateMetadata(context.TODO(), client, server.ID, servers.MetadataOpts{ "foo": "bar", "this": "that", }).Extract() th.AssertNoErr(t, err) t.Logf("UpdateMetadata result: %+v\n", metadata) - server, err = servers.Get(client, server.ID).Extract() + server, err = servers.Get(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, server) @@ -196,10 +197,10 @@ func TestServersMetadata(t *testing.T) { } th.AssertDeepEquals(t, expectedMetadata, server.Metadata) - err = servers.DeleteMetadatum(client, server.ID, "foo").ExtractErr() + err = servers.DeleteMetadatum(context.TODO(), client, server.ID, "foo").ExtractErr() th.AssertNoErr(t, err) - server, err = servers.Get(client, server.ID).Extract() + server, err = servers.Get(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, server) @@ -210,13 +211,13 @@ func TestServersMetadata(t *testing.T) { } th.AssertDeepEquals(t, expectedMetadata, server.Metadata) - metadata, err = servers.CreateMetadatum(client, server.ID, servers.MetadatumOpts{ + metadata, err = servers.CreateMetadatum(context.TODO(), client, server.ID, servers.MetadatumOpts{ "foo": "baz", }).Extract() th.AssertNoErr(t, err) t.Logf("CreateMetadatum result: %+v\n", metadata) - server, err = servers.Get(client, server.ID).Extract() + server, err = servers.Get(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, server) @@ -228,18 +229,18 @@ func TestServersMetadata(t *testing.T) { } th.AssertDeepEquals(t, expectedMetadata, server.Metadata) - metadata, err = servers.Metadatum(client, server.ID, "foo").Extract() + metadata, err = servers.Metadatum(context.TODO(), client, server.ID, "foo").Extract() th.AssertNoErr(t, err) t.Logf("Metadatum result: %+v\n", metadata) th.AssertEquals(t, "baz", metadata["foo"]) - metadata, err = servers.Metadata(client, server.ID).Extract() + metadata, err = servers.Metadata(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) t.Logf("Metadata result: %+v\n", metadata) th.AssertDeepEquals(t, expectedMetadata, metadata) - metadata, err = servers.ResetMetadata(client, server.ID, servers.MetadataOpts{}).Extract() + metadata, err = servers.ResetMetadata(context.TODO(), client, server.ID, servers.MetadataOpts{}).Extract() th.AssertNoErr(t, err) t.Logf("ResetMetadata result: %+v\n", metadata) th.AssertDeepEquals(t, map[string]string{}, metadata) @@ -257,7 +258,7 @@ func TestServersActionChangeAdminPassword(t *testing.T) { defer DeleteServer(t, client, server) randomPassword := tools.MakeNewPassword(server.AdminPass) - res := servers.ChangeAdminPassword(client, server.ID, randomPassword) + res := servers.ChangeAdminPassword(context.TODO(), client, server.ID, randomPassword) th.AssertNoErr(t, res.Err) if err = WaitForComputeStatus(client, server, "PASSWORD"); err != nil { @@ -284,7 +285,7 @@ func TestServersActionReboot(t *testing.T) { } t.Logf("Attempting reboot of server %s", server.ID) - res := servers.Reboot(client, server.ID, rebootOpts) + res := servers.Reboot(context.TODO(), client, server.ID, rebootOpts) th.AssertNoErr(t, res.Err) if err = WaitForComputeStatus(client, server, "REBOOT"); err != nil { @@ -317,7 +318,7 @@ func TestServersActionRebuild(t *testing.T) { ImageRef: choices.ImageID, } - rebuilt, err := servers.Rebuild(client, server.ID, rebuildOpts).Extract() + rebuilt, err := servers.Rebuild(context.TODO(), client, server.ID, rebuildOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, rebuilt.ID, server.ID) @@ -348,7 +349,7 @@ func TestServersActionResizeConfirm(t *testing.T) { ResizeServer(t, client, server) t.Logf("Attempting to confirm resize for server %s", server.ID) - if res := servers.ConfirmResize(client, server.ID); res.Err != nil { + if res := servers.ConfirmResize(context.TODO(), client, server.ID); res.Err != nil { t.Fatal(res.Err) } @@ -356,7 +357,7 @@ func TestServersActionResizeConfirm(t *testing.T) { t.Fatal(err) } - server, err = servers.Get(client, server.ID).Extract() + server, err = servers.Get(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, server.Flavor["id"], choices.FlavorIDResize) @@ -379,7 +380,7 @@ func TestServersActionResizeRevert(t *testing.T) { ResizeServer(t, client, server) t.Logf("Attempting to revert resize for server %s", server.ID) - if res := servers.RevertResize(client, server.ID); res.Err != nil { + if res := servers.RevertResize(context.TODO(), client, server.ID); res.Err != nil { t.Fatal(res.Err) } @@ -387,7 +388,7 @@ func TestServersActionResizeRevert(t *testing.T) { t.Fatal(err) } - server, err = servers.Get(client, server.ID).Extract() + server, err = servers.Get(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, server.Flavor["id"], choices.FlavorID) @@ -404,13 +405,13 @@ func TestServersActionPause(t *testing.T) { defer DeleteServer(t, client, server) t.Logf("Attempting to pause server %s", server.ID) - err = pauseunpause.Pause(client, server.ID).ExtractErr() + err = pauseunpause.Pause(context.TODO(), client, server.ID).ExtractErr() th.AssertNoErr(t, err) err = WaitForComputeStatus(client, server, "PAUSED") th.AssertNoErr(t, err) - err = pauseunpause.Unpause(client, server.ID).ExtractErr() + err = pauseunpause.Unpause(context.TODO(), client, server.ID).ExtractErr() th.AssertNoErr(t, err) err = WaitForComputeStatus(client, server, "ACTIVE") @@ -428,13 +429,13 @@ func TestServersActionSuspend(t *testing.T) { defer DeleteServer(t, client, server) t.Logf("Attempting to suspend server %s", server.ID) - err = suspendresume.Suspend(client, server.ID).ExtractErr() + err = suspendresume.Suspend(context.TODO(), client, server.ID).ExtractErr() th.AssertNoErr(t, err) err = WaitForComputeStatus(client, server, "SUSPENDED") th.AssertNoErr(t, err) - err = suspendresume.Resume(client, server.ID).ExtractErr() + err = suspendresume.Resume(context.TODO(), client, server.ID).ExtractErr() th.AssertNoErr(t, err) err = WaitForComputeStatus(client, server, "ACTIVE") @@ -453,15 +454,15 @@ func TestServersActionLock(t *testing.T) { defer DeleteServer(t, client, server) t.Logf("Attempting to Lock server %s", server.ID) - err = lockunlock.Lock(client, server.ID).ExtractErr() + err = lockunlock.Lock(context.TODO(), client, server.ID).ExtractErr() th.AssertNoErr(t, err) t.Logf("Attempting to delete locked server %s", server.ID) - err = servers.Delete(client, server.ID).ExtractErr() + err = servers.Delete(context.TODO(), client, server.ID).ExtractErr() th.AssertEquals(t, err != nil, true) t.Logf("Attempting to unlock server %s", server.ID) - err = lockunlock.Unlock(client, server.ID).ExtractErr() + err = lockunlock.Unlock(context.TODO(), client, server.ID).ExtractErr() th.AssertNoErr(t, err) err = WaitForComputeStatus(client, server, "ACTIVE") @@ -481,7 +482,7 @@ func TestServersConsoleOutput(t *testing.T) { outputOpts := &servers.ShowConsoleOutputOpts{ Length: 4, } - output, err := servers.ShowConsoleOutput(client, server.ID, outputOpts).Extract() + output, err := servers.ShowConsoleOutput(context.TODO(), client, server.ID, outputOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, output) @@ -512,49 +513,49 @@ func TestServersTags(t *testing.T) { client.Microversion = "2.26" // Check server tags in body. - serverWithTags, err := servers.Get(client, server.ID).Extract() + serverWithTags, err := servers.Get(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, []string{"tag1", "tag2"}, *serverWithTags.Tags) // Check all tags. - allTags, err := tags.List(client, server.ID).Extract() + allTags, err := tags.List(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, []string{"tag1", "tag2"}, allTags) // Check single tag. - exists, err := tags.Check(client, server.ID, "tag2").Extract() + exists, err := tags.Check(context.TODO(), client, server.ID, "tag2").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, true, exists) // Add new tag. - newTags, err := tags.ReplaceAll(client, server.ID, tags.ReplaceAllOpts{Tags: []string{"tag3", "tag4"}}).Extract() + newTags, err := tags.ReplaceAll(context.TODO(), client, server.ID, tags.ReplaceAllOpts{Tags: []string{"tag3", "tag4"}}).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, []string{"tag3", "tag4"}, newTags) // Add new single tag. - err = tags.Add(client, server.ID, "tag5").ExtractErr() + err = tags.Add(context.TODO(), client, server.ID, "tag5").ExtractErr() th.AssertNoErr(t, err) // Check current tags. - newAllTags, err := tags.List(client, server.ID).Extract() + newAllTags, err := tags.List(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, []string{"tag3", "tag4", "tag5"}, newAllTags) // Remove single tag. - err = tags.Delete(client, server.ID, "tag4").ExtractErr() + err = tags.Delete(context.TODO(), client, server.ID, "tag4").ExtractErr() th.AssertNoErr(t, err) // Check that tag doesn't exist anymore. - exists, err = tags.Check(client, server.ID, "tag4").Extract() + exists, err = tags.Check(context.TODO(), client, server.ID, "tag4").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, false, exists) // Remove all tags. - err = tags.DeleteAll(client, server.ID).ExtractErr() + err = tags.DeleteAll(context.TODO(), client, server.ID).ExtractErr() th.AssertNoErr(t, err) // Check that there are no more tags. - currentTags, err := tags.List(client, server.ID).Extract() + currentTags, err := tags.List(context.TODO(), client, server.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, 0, len(currentTags)) } @@ -577,7 +578,7 @@ func TestServersWithExtendedAttributesCreateDestroy(t *testing.T) { } var serverWithAttributesExt serverAttributesExt - err = servers.Get(client, server.ID).ExtractInto(&serverWithAttributesExt) + err = servers.Get(context.TODO(), client, server.ID).ExtractInto(&serverWithAttributesExt) th.AssertNoErr(t, err) t.Logf("Server With Extended Attributes: %#v", serverWithAttributesExt) @@ -606,7 +607,7 @@ func TestServerNoNetworkCreateDestroy(t *testing.T) { th.AssertNoErr(t, err) defer DeleteServer(t, client, server) - allPages, err := servers.List(client, servers.ListOpts{}).AllPages() + allPages, err := servers.List(client, servers.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allServers, err := servers.ExtractServers(allPages) @@ -623,7 +624,7 @@ func TestServerNoNetworkCreateDestroy(t *testing.T) { th.AssertEquals(t, found, true) - allAddressPages, err := servers.ListAddresses(client, server.ID).AllPages() + allAddressPages, err := servers.ListAddresses(client, server.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allAddresses, err := servers.ExtractAddresses(allAddressPages) @@ -633,7 +634,7 @@ func TestServerNoNetworkCreateDestroy(t *testing.T) { t.Logf("Addresses on %s: %+v", network, address) } - allInterfacePages, err := attachinterfaces.List(client, server.ID).AllPages() + allInterfacePages, err := attachinterfaces.List(client, server.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allInterfaces, err := attachinterfaces.ExtractInterfaces(allInterfacePages) @@ -643,7 +644,7 @@ func TestServerNoNetworkCreateDestroy(t *testing.T) { t.Logf("Interfaces: %+v", iface) } - _, err = servers.ListAddressesByNetwork(client, server.ID, choices.NetworkName).AllPages() + _, err = servers.ListAddressesByNetwork(client, server.ID, choices.NetworkName).AllPages(context.TODO()) if err == nil { t.Fatalf("Instance must not be a member of specified network") } diff --git a/internal/acceptance/openstack/compute/v2/services_test.go b/internal/acceptance/openstack/compute/v2/services_test.go index 3945f2029e..91f67e1792 100644 --- a/internal/acceptance/openstack/compute/v2/services_test.go +++ b/internal/acceptance/openstack/compute/v2/services_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestServicesList(t *testing.T) { client, err := clients.NewComputeV2Client() th.AssertNoErr(t, err) - allPages, err := services.List(client, nil).AllPages() + allPages, err := services.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allServices, err := services.ExtractServices(allPages) @@ -46,7 +47,7 @@ func TestServicesListWithOpts(t *testing.T) { Binary: "nova-scheduler", } - allPages, err := services.List(client, opts).AllPages() + allPages, err := services.List(client, opts).AllPages(context.TODO()) th.AssertNoErr(t, err) allServices, err := services.ExtractServices(allPages) @@ -76,7 +77,7 @@ func TestServicesUpdate(t *testing.T) { } client.Microversion = "2.53" - allPages, err := services.List(client, listOpts).AllPages() + allPages, err := services.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allServices, err := services.ExtractServices(allPages) @@ -87,14 +88,14 @@ func TestServicesUpdate(t *testing.T) { opts := services.UpdateOpts{ Status: services.ServiceDisabled, } - updated, err := services.Update(client, service.ID, opts).Extract() + updated, err := services.Update(context.TODO(), client, service.ID, opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, updated.ID, service.ID) } // verify all services are disabled - allPages, err = services.List(client, listOpts).AllPages() + allPages, err = services.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allServices, err = services.ExtractServices(allPages) @@ -105,7 +106,7 @@ func TestServicesUpdate(t *testing.T) { } // reenable all services - allPages, err = services.List(client, listOpts).AllPages() + allPages, err = services.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allServices, err = services.ExtractServices(allPages) @@ -115,7 +116,7 @@ func TestServicesUpdate(t *testing.T) { opts := services.UpdateOpts{ Status: services.ServiceEnabled, } - updated, err := services.Update(client, service.ID, opts).Extract() + updated, err := services.Update(context.TODO(), client, service.ID, opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, updated.ID, service.ID) diff --git a/internal/acceptance/openstack/compute/v2/tenantnetworks_test.go b/internal/acceptance/openstack/compute/v2/tenantnetworks_test.go index 70f1a7a0f8..61347506d0 100644 --- a/internal/acceptance/openstack/compute/v2/tenantnetworks_test.go +++ b/internal/acceptance/openstack/compute/v2/tenantnetworks_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestTenantNetworksList(t *testing.T) { client, err := clients.NewComputeV2Client() th.AssertNoErr(t, err) - allPages, err := tenantnetworks.List(client).AllPages() + allPages, err := tenantnetworks.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allTenantNetworks, err := tenantnetworks.ExtractNetworks(allPages) @@ -47,7 +48,7 @@ func TestTenantNetworksGet(t *testing.T) { networkID, err := GetNetworkIDFromTenantNetworks(t, client, choices.NetworkName) th.AssertNoErr(t, err) - network, err := tenantnetworks.Get(client, networkID).Extract() + network, err := tenantnetworks.Get(context.TODO(), client, networkID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, network) diff --git a/internal/acceptance/openstack/compute/v2/usage_test.go b/internal/acceptance/openstack/compute/v2/usage_test.go index 7d33e88ebb..65c85f87f8 100644 --- a/internal/acceptance/openstack/compute/v2/usage_test.go +++ b/internal/acceptance/openstack/compute/v2/usage_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "strings" "testing" "time" @@ -38,7 +39,7 @@ func TestUsageSingleTenant(t *testing.T) { End: &end, } - err = usage.SingleTenant(client, tenantID, opts).EachPage(func(page pagination.Page) (bool, error) { + err = usage.SingleTenant(client, tenantID, opts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { tenantUsage, err := usage.ExtractSingleTenant(page) th.AssertNoErr(t, err) @@ -73,7 +74,7 @@ func TestUsageAllTenants(t *testing.T) { End: &end, } - err = usage.AllTenants(client, opts).EachPage(func(page pagination.Page) (bool, error) { + err = usage.AllTenants(client, opts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { allUsage, err := usage.ExtractAllTenants(page) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/container/v1/capsules.go b/internal/acceptance/openstack/container/v1/capsules.go index a1819963da..f166400b5d 100644 --- a/internal/acceptance/openstack/container/v1/capsules.go +++ b/internal/acceptance/openstack/container/v1/capsules.go @@ -1,6 +1,7 @@ package v1 import ( + "context" "fmt" "github.com/gophercloud/gophercloud/v2" @@ -12,7 +13,7 @@ import ( // the specified status or the status becomes Failed. func WaitForCapsuleStatus(client *gophercloud.ServiceClient, uuid, status string) error { return tools.WaitFor(func() (bool, error) { - v, err := capsules.Get(client, uuid).Extract() + v, err := capsules.Get(context.TODO(), client, uuid).Extract() if err != nil { return false, err } diff --git a/internal/acceptance/openstack/container/v1/capsules_test.go b/internal/acceptance/openstack/container/v1/capsules_test.go index dfc6cd6c69..e61e3a36ae 100644 --- a/internal/acceptance/openstack/container/v1/capsules_test.go +++ b/internal/acceptance/openstack/container/v1/capsules_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -39,7 +40,7 @@ func TestCapsuleBase(t *testing.T) { th.AssertNoErr(t, err) pager := capsules.List(client, nil) - err = pager.EachPage(func(page pagination.Page) (bool, error) { + err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { v, err := capsules.ExtractCapsules(page) th.AssertNoErr(t, err) allCapsules := v.([]capsules.Capsule) @@ -93,7 +94,7 @@ func TestCapsuleV132(t *testing.T) { th.AssertNoErr(t, err) pager := capsules.List(client, nil) - err = pager.EachPage(func(page pagination.Page) (bool, error) { + err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { allCapsules, err := capsules.ExtractCapsulesV132(page) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/containerinfra/v1/certificates_test.go b/internal/acceptance/openstack/containerinfra/v1/certificates_test.go index 1cbd2528f6..3e26eea692 100644 --- a/internal/acceptance/openstack/containerinfra/v1/certificates_test.go +++ b/internal/acceptance/openstack/containerinfra/v1/certificates_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -35,14 +36,14 @@ func TestCertificatesCRUD(t *testing.T) { "-----END CERTIFICATE REQUEST-----", } - createResponse, err := certificates.Create(client, opts).Extract() + createResponse, err := certificates.Create(context.TODO(), client, opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, opts.CSR, createResponse.CSR) - certificate, err := certificates.Get(client, clusterUUID).Extract() + certificate, err := certificates.Get(context.TODO(), client, clusterUUID).Extract() th.AssertNoErr(t, err) t.Log(certificate.PEM) - err = certificates.Update(client, clusterUUID).ExtractErr() + err = certificates.Update(context.TODO(), client, clusterUUID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/internal/acceptance/openstack/containerinfra/v1/clusters_test.go b/internal/acceptance/openstack/containerinfra/v1/clusters_test.go index 6a273f1081..47b63f1288 100644 --- a/internal/acceptance/openstack/containerinfra/v1/clusters_test.go +++ b/internal/acceptance/openstack/containerinfra/v1/clusters_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "time" @@ -27,7 +28,7 @@ func TestClustersCRUD(t *testing.T) { tools.PrintResource(t, clusterID) defer DeleteCluster(t, client, clusterID) - allPages, err := clusters.List(client, nil).AllPages() + allPages, err := clusters.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allClusters, err := clusters.ExtractClusters(allPages) @@ -47,7 +48,7 @@ func TestClustersCRUD(t *testing.T) { Value: 2, }, } - updateResult := clusters.Update(client, clusterID, updateOpts) + updateResult := clusters.Update(context.TODO(), client, clusterID, updateOpts) th.AssertNoErr(t, updateResult.Err) if len(updateResult.Header["X-Openstack-Request-Id"]) > 0 { @@ -60,11 +61,11 @@ func TestClustersCRUD(t *testing.T) { err = WaitForCluster(client, clusterID, "UPDATE_COMPLETE", time.Second*300) th.AssertNoErr(t, err) - newCluster, err := clusters.Get(client, clusterID).Extract() + newCluster, err := clusters.Get(context.TODO(), client, clusterID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, newCluster.UUID, clusterID) - allPagesDetail, err := clusters.ListDetail(client, nil).AllPages() + allPagesDetail, err := clusters.ListDetail(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allClustersDetail, err := clusters.ExtractClusters(allPagesDetail) diff --git a/internal/acceptance/openstack/containerinfra/v1/clustertemplates_test.go b/internal/acceptance/openstack/containerinfra/v1/clustertemplates_test.go index 68b6379e2f..91e72ce569 100644 --- a/internal/acceptance/openstack/containerinfra/v1/clustertemplates_test.go +++ b/internal/acceptance/openstack/containerinfra/v1/clustertemplates_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -23,7 +24,7 @@ func TestClusterTemplatesCRUD(t *testing.T) { defer DeleteClusterTemplate(t, client, clusterTemplate.UUID) // Test clusters list - allPages, err := clustertemplates.List(client, nil).AllPages() + allPages, err := clustertemplates.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allClusterTemplates, err := clustertemplates.ExtractClusterTemplates(allPages) @@ -38,7 +39,7 @@ func TestClusterTemplatesCRUD(t *testing.T) { th.AssertEquals(t, found, true) - template, err := clustertemplates.Get(client, clusterTemplate.UUID).Extract() + template, err := clustertemplates.Get(context.TODO(), client, clusterTemplate.UUID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, clusterTemplate.UUID, template.UUID) @@ -61,7 +62,7 @@ func TestClusterTemplatesCRUD(t *testing.T) { }, } - updateClusterTemplate, err := clustertemplates.Update(client, clusterTemplate.UUID, updateOpts).Extract() + updateClusterTemplate, err := clustertemplates.Update(context.TODO(), client, clusterTemplate.UUID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, false, updateClusterTemplate.MasterLBEnabled) th.AssertEquals(t, false, updateClusterTemplate.RegistryEnabled) diff --git a/internal/acceptance/openstack/containerinfra/v1/containerinfra.go b/internal/acceptance/openstack/containerinfra/v1/containerinfra.go index 2b461a2c5c..8b36a47263 100644 --- a/internal/acceptance/openstack/containerinfra/v1/containerinfra.go +++ b/internal/acceptance/openstack/containerinfra/v1/containerinfra.go @@ -1,6 +1,7 @@ package v1 import ( + "context" "fmt" "math" "strings" @@ -45,7 +46,7 @@ func CreateClusterTemplateCOE(t *testing.T, client *gophercloud.ServiceClient, c ServerType: "vm", } - res := clustertemplates.Create(client, createOpts) + res := clustertemplates.Create(context.TODO(), client, createOpts) if res.Err != nil { return nil, res.Err } @@ -89,7 +90,7 @@ func CreateKubernetesClusterTemplate(t *testing.T, client *gophercloud.ServiceCl func DeleteClusterTemplate(t *testing.T, client *gophercloud.ServiceClient, id string) { t.Logf("Attempting to delete cluster-template: %s", id) - err := clustertemplates.Delete(client, id).ExtractErr() + err := clustertemplates.Delete(context.TODO(), client, id).ExtractErr() if err != nil { t.Fatalf("Error deleting cluster-template %s: %s:", id, err) } @@ -126,7 +127,7 @@ func CreateClusterTimeout(t *testing.T, client *gophercloud.ServiceClient, clust NodeCount: &nodeCount, } - createResult := clusters.Create(client, createOpts) + createResult := clusters.Create(context.TODO(), client, createOpts) th.AssertNoErr(t, createResult.Err) if len(createResult.Header["X-Openstack-Request-Id"]) > 0 { t.Logf("Cluster Create Request ID: %s", createResult.Header["X-Openstack-Request-Id"][0]) @@ -162,8 +163,8 @@ func CreateKubernetesCluster(t *testing.T, client *gophercloud.ServiceClient, cl func DeleteCluster(t *testing.T, client *gophercloud.ServiceClient, id string) { t.Logf("Attempting to delete cluster: %s", id) - r := clusters.Delete(client, id) - err := clusters.Delete(client, id).ExtractErr() + r := clusters.Delete(context.TODO(), client, id) + err := clusters.Delete(context.TODO(), client, id).ExtractErr() deleteRequestID := "" idKey := "X-Openstack-Request-Id" if len(r.Header[idKey]) > 0 { @@ -185,7 +186,7 @@ func DeleteCluster(t *testing.T, client *gophercloud.ServiceClient, id string) { func WaitForCluster(client *gophercloud.ServiceClient, clusterID string, status string, timeout time.Duration) error { return tools.WaitForTimeout(func() (bool, error) { - cluster, err := clusters.Get(client, clusterID).Extract() + cluster, err := clusters.Get(context.TODO(), client, clusterID).Extract() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok && status == "DELETE_COMPLETE" { return true, nil @@ -225,7 +226,7 @@ func CreateQuota(t *testing.T, client *gophercloud.ServiceClient) (*quotas.Quota HardLimit: 10, } - res := quotas.Create(client, createOpts) + res := quotas.Create(context.TODO(), client, createOpts) if res.Err != nil { return nil, res.Err } diff --git a/internal/acceptance/openstack/containerinfra/v1/nodegroups_test.go b/internal/acceptance/openstack/containerinfra/v1/nodegroups_test.go index 665451e58f..9bb5ea15d0 100644 --- a/internal/acceptance/openstack/containerinfra/v1/nodegroups_test.go +++ b/internal/acceptance/openstack/containerinfra/v1/nodegroups_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "fmt" "testing" "time" @@ -49,7 +50,7 @@ func TestNodeGroupsCRUD(t *testing.T) { // Wait for the node group to finish creating err = tools.WaitForTimeout(func() (bool, error) { - ng, err := nodegroups.Get(client, clusterID, nodeGroupID).Extract() + ng, err := nodegroups.Get(context.TODO(), client, clusterID, nodeGroupID).Extract() if err != nil { return false, fmt.Errorf("error waiting for node group to create: %v", err) } @@ -62,7 +63,7 @@ func TestNodeGroupsCRUD(t *testing.T) { } func testNodeGroupsList(t *testing.T, client *gophercloud.ServiceClient, clusterID string) { - allPages, err := nodegroups.List(client, clusterID, nil).AllPages() + allPages, err := nodegroups.List(client, clusterID, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allNodeGroups, err := nodegroups.ExtractNodeGroups(allPages) @@ -76,7 +77,7 @@ func testNodeGroupGet(t *testing.T, client *gophercloud.ServiceClient, clusterID listOpts := nodegroups.ListOpts{ Role: "worker", } - allPages, err := nodegroups.List(client, clusterID, listOpts).AllPages() + allPages, err := nodegroups.List(client, clusterID, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allNodeGroups, err := nodegroups.ExtractNodeGroups(allPages) @@ -87,7 +88,7 @@ func testNodeGroupGet(t *testing.T, client *gophercloud.ServiceClient, clusterID ngID := allNodeGroups[0].UUID - ng, err := nodegroups.Get(client, clusterID, ngID).Extract() + ng, err := nodegroups.Get(context.TODO(), client, clusterID, ngID).Extract() th.AssertNoErr(t, err) // Should have got the same node group as from the list @@ -105,7 +106,7 @@ func testNodeGroupCreate(t *testing.T, client *gophercloud.ServiceClient, cluste NodeCount: &two, } - ng, err := nodegroups.Create(client, clusterID, createOpts).Extract() + ng, err := nodegroups.Create(context.TODO(), client, clusterID, createOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, name, ng.Name) @@ -123,7 +124,7 @@ func testNodeGroupUpdate(t *testing.T, client *gophercloud.ServiceClient, cluste Value: 2, }, } - ng, err := nodegroups.Update(client, clusterID, nodeGroupID, updateOpts).Extract() + ng, err := nodegroups.Update(context.TODO(), client, clusterID, nodeGroupID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, 2, ng.MinNodeCount) @@ -134,7 +135,7 @@ func testNodeGroupUpdate(t *testing.T, client *gophercloud.ServiceClient, cluste Value: 5, }, } - ng, err = nodegroups.Update(client, clusterID, nodeGroupID, updateOpts).Extract() + ng, err = nodegroups.Update(context.TODO(), client, clusterID, nodeGroupID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, false, ng.MaxNodeCount == nil) th.AssertEquals(t, 5, *ng.MaxNodeCount) @@ -151,7 +152,7 @@ func testNodeGroupUpdate(t *testing.T, client *gophercloud.ServiceClient, cluste Value: 3, }, } - ng, err = nodegroups.Update(client, clusterID, nodeGroupID, updateOpts).Extract() + ng, err = nodegroups.Update(context.TODO(), client, clusterID, nodeGroupID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, false, ng.MaxNodeCount == nil) th.AssertEquals(t, 1, ng.MinNodeCount) @@ -159,12 +160,12 @@ func testNodeGroupUpdate(t *testing.T, client *gophercloud.ServiceClient, cluste } func testNodeGroupDelete(t *testing.T, client *gophercloud.ServiceClient, clusterID, nodeGroupID string) { - err := nodegroups.Delete(client, clusterID, nodeGroupID).ExtractErr() + err := nodegroups.Delete(context.TODO(), client, clusterID, nodeGroupID).ExtractErr() th.AssertNoErr(t, err) // Wait for the node group to be deleted err = tools.WaitFor(func() (bool, error) { - _, err := nodegroups.Get(client, clusterID, nodeGroupID).Extract() + _, err := nodegroups.Get(context.TODO(), client, clusterID, nodeGroupID).Extract() if _, ok := err.(gophercloud.ErrDefault404); ok { return true, nil } diff --git a/internal/acceptance/openstack/db/v1/databases_test.go b/internal/acceptance/openstack/db/v1/databases_test.go index 27690ae7b4..76cba92389 100644 --- a/internal/acceptance/openstack/db/v1/databases_test.go +++ b/internal/acceptance/openstack/db/v1/databases_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -37,7 +38,7 @@ func TestDatabases(t *testing.T) { } // List all databases. - allPages, err := databases.List(client, instance.ID).AllPages() + allPages, err := databases.List(client, instance.ID).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list databases: %v", err) } diff --git a/internal/acceptance/openstack/db/v1/db.go b/internal/acceptance/openstack/db/v1/db.go index 3a9e5c84e5..865b3fada0 100644 --- a/internal/acceptance/openstack/db/v1/db.go +++ b/internal/acceptance/openstack/db/v1/db.go @@ -3,6 +3,7 @@ package v1 import ( + "context" "fmt" "testing" @@ -26,7 +27,7 @@ func CreateDatabase(t *testing.T, client *gophercloud.ServiceClient, instanceID }, } - return databases.Create(client, instanceID, createOpts).ExtractErr() + return databases.Create(context.TODO(), client, instanceID, createOpts).ExtractErr() } // CreateInstance will create an instance with a randomly generated name. @@ -57,7 +58,7 @@ func CreateInstance(t *testing.T, client *gophercloud.ServiceClient) (*instances }, } - instance, err := instances.Create(client, createOpts).Extract() + instance, err := instances.Create(context.TODO(), client, createOpts).Extract() if err != nil { return instance, err } @@ -66,7 +67,7 @@ func CreateInstance(t *testing.T, client *gophercloud.ServiceClient) (*instances return instance, err } - return instances.Get(client, instance.ID).Extract() + return instances.Get(context.TODO(), client, instance.ID).Extract() } // CreateUser will create a user with a randomly generated name. @@ -83,14 +84,14 @@ func CreateUser(t *testing.T, client *gophercloud.ServiceClient, instanceID stri }, } - return users.Create(client, instanceID, createOpts).ExtractErr() + return users.Create(context.TODO(), client, instanceID, createOpts).ExtractErr() } // DeleteDatabase deletes a database. A fatal error will occur if the database // failed to delete. This works best when used as a deferred function. func DeleteDatabase(t *testing.T, client *gophercloud.ServiceClient, instanceID, name string) { t.Logf("Attempting to delete database: %s", name) - err := databases.Delete(client, instanceID, name).ExtractErr() + err := databases.Delete(context.TODO(), client, instanceID, name).ExtractErr() if err != nil { t.Fatalf("Unable to delete database %s: %s", name, err) } @@ -102,7 +103,7 @@ func DeleteDatabase(t *testing.T, client *gophercloud.ServiceClient, instanceID, // failed to delete. This works best when used as a deferred function. func DeleteInstance(t *testing.T, client *gophercloud.ServiceClient, id string) { t.Logf("Attempting to delete instance: %s", id) - err := instances.Delete(client, id).ExtractErr() + err := instances.Delete(context.TODO(), client, id).ExtractErr() if err != nil { t.Fatalf("Unable to delete instance %s: %s", id, err) } @@ -114,7 +115,7 @@ func DeleteInstance(t *testing.T, client *gophercloud.ServiceClient, id string) // failed to delete. This works best when used as a deferred function. func DeleteUser(t *testing.T, client *gophercloud.ServiceClient, instanceID, name string) { t.Logf("Attempting to delete user: %s", name) - err := users.Delete(client, instanceID, name).ExtractErr() + err := users.Delete(context.TODO(), client, instanceID, name).ExtractErr() if err != nil { t.Fatalf("Unable to delete users %s: %s", name, err) } @@ -127,7 +128,7 @@ func DeleteUser(t *testing.T, client *gophercloud.ServiceClient, instanceID, nam func WaitForInstanceStatus( client *gophercloud.ServiceClient, instance *instances.Instance, status string) error { return tools.WaitFor(func() (bool, error) { - latest, err := instances.Get(client, instance.ID).Extract() + latest, err := instances.Get(context.TODO(), client, instance.ID).Extract() if err != nil { return false, err } diff --git a/internal/acceptance/openstack/db/v1/flavors_test.go b/internal/acceptance/openstack/db/v1/flavors_test.go index ea61629463..7268d5ebd4 100644 --- a/internal/acceptance/openstack/db/v1/flavors_test.go +++ b/internal/acceptance/openstack/db/v1/flavors_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestFlavorsList(t *testing.T) { t.Fatalf("Unable to create a DB client: %v", err) } - allPages, err := flavors.List(client).AllPages() + allPages, err := flavors.List(client).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve flavors: %v", err) } @@ -38,7 +39,7 @@ func TestFlavorsGet(t *testing.T) { t.Fatalf("Unable to create a DB client: %v", err) } - allPages, err := flavors.List(client).AllPages() + allPages, err := flavors.List(client).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve flavors: %v", err) } diff --git a/internal/acceptance/openstack/db/v1/instances_test.go b/internal/acceptance/openstack/db/v1/instances_test.go index 9ee652f63a..3098b23241 100644 --- a/internal/acceptance/openstack/db/v1/instances_test.go +++ b/internal/acceptance/openstack/db/v1/instances_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -32,7 +33,7 @@ func TestInstances(t *testing.T) { tools.PrintResource(t, &instance) // List all instances. - allPages, err := instances.List(client).AllPages() + allPages, err := instances.List(client).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list instances: %v", err) } diff --git a/internal/acceptance/openstack/db/v1/users_test.go b/internal/acceptance/openstack/db/v1/users_test.go index 1ddce5b203..4530d63180 100644 --- a/internal/acceptance/openstack/db/v1/users_test.go +++ b/internal/acceptance/openstack/db/v1/users_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -37,7 +38,7 @@ func TestUsers(t *testing.T) { } // List all users. - allPages, err := users.List(client, instance.ID).AllPages() + allPages, err := users.List(client, instance.ID).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list users: %v", err) } diff --git a/internal/acceptance/openstack/dns/v2/dns.go b/internal/acceptance/openstack/dns/v2/dns.go index 9e083676ed..5e34637faf 100644 --- a/internal/acceptance/openstack/dns/v2/dns.go +++ b/internal/acceptance/openstack/dns/v2/dns.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -25,7 +26,7 @@ func CreateRecordSet(t *testing.T, client *gophercloud.ServiceClient, zone *zone Records: []string{"10.1.0.2"}, } - rs, err := recordsets.Create(client, zone.ID, createOpts).Extract() + rs, err := recordsets.Create(context.TODO(), client, zone.ID, createOpts).Extract() if err != nil { return rs, err } @@ -34,7 +35,7 @@ func CreateRecordSet(t *testing.T, client *gophercloud.ServiceClient, zone *zone return rs, err } - newRS, err := recordsets.Get(client, rs.ZoneID, rs.ID).Extract() + newRS, err := recordsets.Get(context.TODO(), client, rs.ZoneID, rs.ID).Extract() if err != nil { return newRS, err } @@ -60,7 +61,7 @@ func CreateZone(t *testing.T, client *gophercloud.ServiceClient) (*zones.Zone, e Description: "Test zone", } - zone, err := zones.Create(client, createOpts).Extract() + zone, err := zones.Create(context.TODO(), client, createOpts).Extract() if err != nil { return zone, err } @@ -69,7 +70,7 @@ func CreateZone(t *testing.T, client *gophercloud.ServiceClient) (*zones.Zone, e return zone, err } - newZone, err := zones.Get(client, zone.ID).Extract() + newZone, err := zones.Get(context.TODO(), client, zone.ID).Extract() if err != nil { return zone, err } @@ -96,7 +97,7 @@ func CreateSecondaryZone(t *testing.T, client *gophercloud.ServiceClient) (*zone Masters: []string{"10.0.0.1"}, } - zone, err := zones.Create(client, createOpts).Extract() + zone, err := zones.Create(context.TODO(), client, createOpts).Extract() if err != nil { return zone, err } @@ -105,7 +106,7 @@ func CreateSecondaryZone(t *testing.T, client *gophercloud.ServiceClient) (*zone return zone, err } - newZone, err := zones.Get(client, zone.ID).Extract() + newZone, err := zones.Get(context.TODO(), client, zone.ID).Extract() if err != nil { return zone, err } @@ -128,7 +129,7 @@ func CreateTransferRequest(t *testing.T, client *gophercloud.ServiceClient, zone Description: "Test transfer request", } - transferRequest, err := transferRequests.Create(client, zone.ID, createOpts).Extract() + transferRequest, err := transferRequests.Create(context.TODO(), client, zone.ID, createOpts).Extract() if err != nil { return transferRequest, err } @@ -137,7 +138,7 @@ func CreateTransferRequest(t *testing.T, client *gophercloud.ServiceClient, zone return transferRequest, err } - newTransferRequest, err := transferRequests.Get(client, transferRequest.ID).Extract() + newTransferRequest, err := transferRequests.Get(context.TODO(), client, transferRequest.ID).Extract() if err != nil { return transferRequest, err } @@ -158,14 +159,14 @@ func CreateTransferAccept(t *testing.T, client *gophercloud.ServiceClient, zoneT ZoneTransferRequestID: zoneTransferRequestID, Key: key, } - transferAccept, err := transferAccepts.Create(client, createOpts).Extract() + transferAccept, err := transferAccepts.Create(context.TODO(), client, createOpts).Extract() if err != nil { return transferAccept, err } if err := WaitForTransferAcceptStatus(client, transferAccept, "COMPLETE"); err != nil { return transferAccept, err } - newTransferAccept, err := transferAccepts.Get(client, transferAccept.ID).Extract() + newTransferAccept, err := transferAccepts.Get(context.TODO(), client, transferAccept.ID).Extract() if err != nil { return transferAccept, err } @@ -178,7 +179,7 @@ func CreateTransferAccept(t *testing.T, client *gophercloud.ServiceClient, zoneT // the transfer request failed to be deleted. This works best when used as a deferred // function. func DeleteTransferRequest(t *testing.T, client *gophercloud.ServiceClient, tr *transferRequests.TransferRequest) { - err := transferRequests.Delete(client, tr.ID).ExtractErr() + err := transferRequests.Delete(context.TODO(), client, tr.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete zone transfer request %s: %v", tr.ID, err) } @@ -189,7 +190,7 @@ func DeleteTransferRequest(t *testing.T, client *gophercloud.ServiceClient, tr * // the record set failed to be deleted. This works best when used as a deferred // function. func DeleteRecordSet(t *testing.T, client *gophercloud.ServiceClient, rs *recordsets.RecordSet) { - err := recordsets.Delete(client, rs.ZoneID, rs.ID).ExtractErr() + err := recordsets.Delete(context.TODO(), client, rs.ZoneID, rs.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete record set %s: %v", rs.ID, err) } @@ -201,7 +202,7 @@ func DeleteRecordSet(t *testing.T, client *gophercloud.ServiceClient, rs *record // the zone failed to be deleted. This works best when used as a deferred // function. func DeleteZone(t *testing.T, client *gophercloud.ServiceClient, zone *zones.Zone) { - _, err := zones.Delete(client, zone.ID).Extract() + _, err := zones.Delete(context.TODO(), client, zone.ID).Extract() if err != nil { t.Fatalf("Unable to delete zone %s: %v", zone.ID, err) } @@ -213,7 +214,7 @@ func DeleteZone(t *testing.T, client *gophercloud.ServiceClient, zone *zones.Zon // the specified status or the status becomes ERROR. func WaitForRecordSetStatus(client *gophercloud.ServiceClient, rs *recordsets.RecordSet, status string) error { return tools.WaitFor(func() (bool, error) { - current, err := recordsets.Get(client, rs.ZoneID, rs.ID).Extract() + current, err := recordsets.Get(context.TODO(), client, rs.ZoneID, rs.ID).Extract() if err != nil { return false, err } @@ -230,7 +231,7 @@ func WaitForRecordSetStatus(client *gophercloud.ServiceClient, rs *recordsets.Re // the specified status or the status becomes ERROR. func WaitForTransferRequestStatus(client *gophercloud.ServiceClient, tr *transferRequests.TransferRequest, status string) error { return tools.WaitFor(func() (bool, error) { - current, err := transferRequests.Get(client, tr.ID).Extract() + current, err := transferRequests.Get(context.TODO(), client, tr.ID).Extract() if err != nil { return false, err } @@ -245,7 +246,7 @@ func WaitForTransferRequestStatus(client *gophercloud.ServiceClient, tr *transfe // the specified status or the status becomes ERROR. func WaitForTransferAcceptStatus(client *gophercloud.ServiceClient, ta *transferAccepts.TransferAccept, status string) error { return tools.WaitFor(func() (bool, error) { - current, err := transferAccepts.Get(client, ta.ID).Extract() + current, err := transferAccepts.Get(context.TODO(), client, ta.ID).Extract() if err != nil { return false, err } @@ -260,7 +261,7 @@ func WaitForTransferAcceptStatus(client *gophercloud.ServiceClient, ta *transfer // the specified status or the status becomes ERROR. func WaitForZoneStatus(client *gophercloud.ServiceClient, zone *zones.Zone, status string) error { return tools.WaitFor(func() (bool, error) { - current, err := zones.Get(client, zone.ID).Extract() + current, err := zones.Get(context.TODO(), client, zone.ID).Extract() if err != nil { return false, err } diff --git a/internal/acceptance/openstack/dns/v2/recordsets_test.go b/internal/acceptance/openstack/dns/v2/recordsets_test.go index e5a705e3c7..e97719f3c3 100644 --- a/internal/acceptance/openstack/dns/v2/recordsets_test.go +++ b/internal/acceptance/openstack/dns/v2/recordsets_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -21,7 +22,7 @@ func TestRecordSetsListByZone(t *testing.T) { th.AssertNoErr(t, err) defer DeleteZone(t, client, zone) - allPages, err := recordsets.ListByZone(client, zone.ID, nil).AllPages() + allPages, err := recordsets.ListByZone(client, zone.ID, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allRecordSets, err := recordsets.ExtractRecordSets(allPages) diff --git a/internal/acceptance/openstack/dns/v2/transfers_test.go b/internal/acceptance/openstack/dns/v2/transfers_test.go index 2282cf64b0..0930355aa6 100644 --- a/internal/acceptance/openstack/dns/v2/transfers_test.go +++ b/internal/acceptance/openstack/dns/v2/transfers_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -28,7 +29,7 @@ func TestTransferRequestCRUD(t *testing.T) { th.AssertNoErr(t, err) defer DeleteTransferRequest(t, client, transferRequest) - allTransferRequestsPages, err := transferRequests.List(client, nil).AllPages() + allTransferRequestsPages, err := transferRequests.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allTransferRequests, err := transferRequests.ExtractTransferRequests(allTransferRequestsPages) @@ -78,7 +79,7 @@ func TestTransferRequestAccept(t *testing.T) { // Accept Zone Transfer Request transferAccept, err := CreateTransferAccept(t, client, transferRequest.ID, transferRequest.Key) - allTransferAcceptsPages, err := transferAccepts.List(client, nil).AllPages() + allTransferAcceptsPages, err := transferAccepts.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allTransferAccepts, err := transferAccepts.ExtractTransferAccepts(allTransferAcceptsPages) diff --git a/internal/acceptance/openstack/dns/v2/zones_test.go b/internal/acceptance/openstack/dns/v2/zones_test.go index 5806fb7c3c..c8b1d09864 100644 --- a/internal/acceptance/openstack/dns/v2/zones_test.go +++ b/internal/acceptance/openstack/dns/v2/zones_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,7 +23,7 @@ func TestZonesCRUD(t *testing.T) { tools.PrintResource(t, &zone) - allPages, err := zones.List(client, nil).AllPages() + allPages, err := zones.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allZones, err := zones.ExtractZones(allPages) diff --git a/internal/acceptance/openstack/identity/v2/extension_test.go b/internal/acceptance/openstack/identity/v2/extension_test.go index 7169e51e04..1b3538a12b 100644 --- a/internal/acceptance/openstack/identity/v2/extension_test.go +++ b/internal/acceptance/openstack/identity/v2/extension_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestExtensionsList(t *testing.T) { client, err := clients.NewIdentityV2Client() th.AssertNoErr(t, err) - allPages, err := extensions.List(client).AllPages() + allPages, err := extensions.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allExtensions, err := extensions.ExtractExtensions(allPages) @@ -43,7 +44,7 @@ func TestExtensionsGet(t *testing.T) { client, err := clients.NewIdentityV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(client, "OS-KSCRUD").Extract() + extension, err := extensions.Get(context.TODO(), client, "OS-KSCRUD").Extract() th.AssertNoErr(t, err) tools.PrintResource(t, extension) diff --git a/internal/acceptance/openstack/identity/v2/identity.go b/internal/acceptance/openstack/identity/v2/identity.go index 3500d06776..89e946fc3f 100644 --- a/internal/acceptance/openstack/identity/v2/identity.go +++ b/internal/acceptance/openstack/identity/v2/identity.go @@ -3,6 +3,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -18,7 +19,7 @@ import ( func AddUserRole(t *testing.T, client *gophercloud.ServiceClient, tenant *tenants.Tenant, user *users.User, role *roles.Role) error { t.Logf("Attempting to grant user %s role %s in tenant %s", user.ID, role.ID, tenant.ID) - err := roles.AddUser(client, tenant.ID, user.ID, role.ID).ExtractErr() + err := roles.AddUser(context.TODO(), client, tenant.ID, user.ID, role.ID).ExtractErr() if err != nil { return err } @@ -47,7 +48,7 @@ func CreateTenant(t *testing.T, client *gophercloud.ServiceClient, c *tenants.Cr createOpts.Name = name createOpts.Description = description - tenant, err := tenants.Create(client, createOpts).Extract() + tenant, err := tenants.Create(context.TODO(), client, createOpts).Extract() if err != nil { return tenant, err } @@ -74,7 +75,7 @@ func CreateUser(t *testing.T, client *gophercloud.ServiceClient, tenant *tenants Email: userEmail, } - user, err := users.Create(client, createOpts).Extract() + user, err := users.Create(context.TODO(), client, createOpts).Extract() if err != nil { return user, err } @@ -88,7 +89,7 @@ func CreateUser(t *testing.T, client *gophercloud.ServiceClient, tenant *tenants // the tenant ID failed to be deleted. This works best when using it as // a deferred function. func DeleteTenant(t *testing.T, client *gophercloud.ServiceClient, tenantID string) { - err := tenants.Delete(client, tenantID).ExtractErr() + err := tenants.Delete(context.TODO(), client, tenantID).ExtractErr() if err != nil { t.Fatalf("Unable to delete tenant %s: %v", tenantID, err) } @@ -101,7 +102,7 @@ func DeleteTenant(t *testing.T, client *gophercloud.ServiceClient, tenantID stri func DeleteUser(t *testing.T, client *gophercloud.ServiceClient, user *users.User) { t.Logf("Attempting to delete user: %s", user.Name) - result := users.Delete(client, user.ID) + result := users.Delete(context.TODO(), client, user.ID) if result.Err != nil { t.Fatalf("Unable to delete user") } @@ -115,7 +116,7 @@ func DeleteUser(t *testing.T, client *gophercloud.ServiceClient, user *users.Use func DeleteUserRole(t *testing.T, client *gophercloud.ServiceClient, tenant *tenants.Tenant, user *users.User, role *roles.Role) { t.Logf("Attempting to remove role %s from user %s in tenant %s", role.ID, user.ID, tenant.ID) - err := roles.DeleteUser(client, tenant.ID, user.ID, role.ID).ExtractErr() + err := roles.DeleteUser(context.TODO(), client, tenant.ID, user.ID, role.ID).ExtractErr() if err != nil { t.Fatalf("Unable to remove role") } @@ -129,7 +130,7 @@ func DeleteUserRole(t *testing.T, client *gophercloud.ServiceClient, tenant *ten func FindRole(t *testing.T, client *gophercloud.ServiceClient) (*roles.Role, error) { var role *roles.Role - allPages, err := roles.List(client).AllPages() + allPages, err := roles.List(client).AllPages(context.TODO()) if err != nil { return role, err } @@ -153,7 +154,7 @@ func FindRole(t *testing.T, client *gophercloud.ServiceClient) (*roles.Role, err func FindTenant(t *testing.T, client *gophercloud.ServiceClient) (*tenants.Tenant, error) { var tenant *tenants.Tenant - allPages, err := tenants.List(client, nil).AllPages() + allPages, err := tenants.List(client, nil).AllPages(context.TODO()) if err != nil { return tenant, err } @@ -184,7 +185,7 @@ func UpdateUser(t *testing.T, client *gophercloud.ServiceClient, user *users.Use Email: userEmail, } - newUser, err := users.Update(client, user.ID, updateOpts).Extract() + newUser, err := users.Update(context.TODO(), client, user.ID, updateOpts).Extract() if err != nil { return newUser, err } diff --git a/internal/acceptance/openstack/identity/v2/role_test.go b/internal/acceptance/openstack/identity/v2/role_test.go index bc47672b20..667c3addff 100644 --- a/internal/acceptance/openstack/identity/v2/role_test.go +++ b/internal/acceptance/openstack/identity/v2/role_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -34,7 +35,7 @@ func TestRolesAddToUser(t *testing.T) { th.AssertNoErr(t, err) defer DeleteUserRole(t, client, tenant, user, role) - allPages, err := users.ListRoles(client, tenant.ID, user.ID).AllPages() + allPages, err := users.ListRoles(client, tenant.ID, user.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoles, err := users.ExtractRoles(allPages) @@ -59,7 +60,7 @@ func TestRolesList(t *testing.T) { client, err := clients.NewIdentityV2AdminClient() th.AssertNoErr(t, err) - allPages, err := roles.List(client).AllPages() + allPages, err := roles.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoles, err := roles.ExtractRoles(allPages) diff --git a/internal/acceptance/openstack/identity/v2/tenant_test.go b/internal/acceptance/openstack/identity/v2/tenant_test.go index 697755b2ac..b8f35474d0 100644 --- a/internal/acceptance/openstack/identity/v2/tenant_test.go +++ b/internal/acceptance/openstack/identity/v2/tenant_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestTenantsList(t *testing.T) { client, err := clients.NewIdentityV2Client() th.AssertNoErr(t, err) - allPages, err := tenants.List(client, nil).AllPages() + allPages, err := tenants.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allTenants, err := tenants.ExtractTenants(allPages) @@ -48,7 +49,7 @@ func TestTenantsCRUD(t *testing.T) { th.AssertNoErr(t, err) defer DeleteTenant(t, client, tenant.ID) - tenant, err = tenants.Get(client, tenant.ID).Extract() + tenant, err = tenants.Get(context.TODO(), client, tenant.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, tenant) @@ -58,7 +59,7 @@ func TestTenantsCRUD(t *testing.T) { Description: &description, } - newTenant, err := tenants.Update(client, tenant.ID, updateOpts).Extract() + newTenant, err := tenants.Update(context.TODO(), client, tenant.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newTenant) diff --git a/internal/acceptance/openstack/identity/v2/token_test.go b/internal/acceptance/openstack/identity/v2/token_test.go index c858546588..9b3234d33c 100644 --- a/internal/acceptance/openstack/identity/v2/token_test.go +++ b/internal/acceptance/openstack/identity/v2/token_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -23,7 +24,7 @@ func TestTokenAuthenticate(t *testing.T) { authOptions, err := openstack.AuthOptionsFromEnv() th.AssertNoErr(t, err) - result := tokens.Create(client, authOptions) + result := tokens.Create(context.TODO(), client, authOptions) token, err := result.ExtractToken() th.AssertNoErr(t, err) @@ -47,13 +48,13 @@ func TestTokenValidate(t *testing.T) { authOptions, err := openstack.AuthOptionsFromEnv() th.AssertNoErr(t, err) - result := tokens.Create(client, authOptions) + result := tokens.Create(context.TODO(), client, authOptions) token, err := result.ExtractToken() th.AssertNoErr(t, err) tools.PrintResource(t, token) - getResult := tokens.Get(client, token.ID) + getResult := tokens.Get(context.TODO(), client, token.ID) user, err := getResult.ExtractUser() th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/identity/v2/user_test.go b/internal/acceptance/openstack/identity/v2/user_test.go index 549b6611e3..1fd8c2bed4 100644 --- a/internal/acceptance/openstack/identity/v2/user_test.go +++ b/internal/acceptance/openstack/identity/v2/user_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestUsersList(t *testing.T) { client, err := clients.NewIdentityV2AdminClient() th.AssertNoErr(t, err) - allPages, err := users.List(client).AllPages() + allPages, err := users.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allUsers, err := users.ExtractUsers(allPages) diff --git a/internal/acceptance/openstack/identity/v3/applicationcredentials_test.go b/internal/acceptance/openstack/identity/v3/applicationcredentials_test.go index 1ed0a3beeb..0f1f754529 100644 --- a/internal/acceptance/openstack/identity/v3/applicationcredentials_test.go +++ b/internal/acceptance/openstack/identity/v3/applicationcredentials_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "time" @@ -46,19 +47,19 @@ func TestApplicationCredentialsCRD(t *testing.T) { }, } - token, err := tokens.Create(client, &authOptions).Extract() + token, err := tokens.Create(context.TODO(), client, &authOptions).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, token) - user, err := tokens.Get(client, token.ID).ExtractUser() + user, err := tokens.Get(context.TODO(), client, token.ID).ExtractUser() th.AssertNoErr(t, err) tools.PrintResource(t, user) - roles, err := tokens.Get(client, token.ID).ExtractRoles() + roles, err := tokens.Get(context.TODO(), client, token.ID).ExtractRoles() th.AssertNoErr(t, err) tools.PrintResource(t, roles) - project, err := tokens.Get(client, token.ID).ExtractProject() + project, err := tokens.Get(context.TODO(), client, token.ID).ExtractProject() th.AssertNoErr(t, err) tools.PrintResource(t, project) @@ -85,9 +86,9 @@ func TestApplicationCredentialsCRD(t *testing.T) { ExpiresAt: &expiresAt, } - applicationCredential, err := applicationcredentials.Create(client, user.ID, createOpts).Extract() + applicationCredential, err := applicationcredentials.Create(context.TODO(), client, user.ID, createOpts).Extract() th.AssertNoErr(t, err) - defer applicationcredentials.Delete(client, user.ID, applicationCredential.ID) + defer applicationcredentials.Delete(context.TODO(), client, user.ID, applicationCredential.ID) tools.PrintResource(t, applicationCredential) if applicationCredential.Secret == "" { @@ -113,7 +114,7 @@ func TestApplicationCredentialsCRD(t *testing.T) { } // Get an application credential - getApplicationCredential, err := applicationcredentials.Get(client, user.ID, applicationCredential.ID).Extract() + getApplicationCredential, err := applicationcredentials.Get(context.TODO(), client, user.ID, applicationCredential.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, getApplicationCredential) @@ -147,9 +148,9 @@ func TestApplicationCredentialsCRD(t *testing.T) { Secret: "myprecious", } - newApplicationCredential, err := applicationcredentials.Create(client, user.ID, createOpts).Extract() + newApplicationCredential, err := applicationcredentials.Create(context.TODO(), client, user.ID, createOpts).Extract() th.AssertNoErr(t, err) - defer applicationcredentials.Delete(client, user.ID, newApplicationCredential.ID) + defer applicationcredentials.Delete(context.TODO(), client, user.ID, newApplicationCredential.ID) tools.PrintResource(t, newApplicationCredential) th.AssertEquals(t, newApplicationCredential.ExpiresAt, time.Time{}) @@ -190,11 +191,11 @@ func TestApplicationCredentialsAccessRules(t *testing.T) { }, } - token, err := tokens.Create(client, &authOptions).Extract() + token, err := tokens.Create(context.TODO(), client, &authOptions).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, token) - user, err := tokens.Get(client, token.ID).ExtractUser() + user, err := tokens.Get(context.TODO(), client, token.ID).ExtractUser() th.AssertNoErr(t, err) tools.PrintResource(t, user) @@ -223,9 +224,9 @@ func TestApplicationCredentialsAccessRules(t *testing.T) { ExpiresAt: &expiresAt, } - applicationCredential, err := applicationcredentials.Create(client, user.ID, createOpts).Extract() + applicationCredential, err := applicationcredentials.Create(context.TODO(), client, user.ID, createOpts).Extract() th.AssertNoErr(t, err) - defer applicationcredentials.Delete(client, user.ID, applicationCredential.ID) + defer applicationcredentials.Delete(context.TODO(), client, user.ID, applicationCredential.ID) tools.PrintResource(t, applicationCredential) if applicationCredential.Secret == "" { @@ -244,7 +245,7 @@ func TestApplicationCredentialsAccessRules(t *testing.T) { } // Get an application credential - getApplicationCredential, err := applicationcredentials.Get(client, user.ID, applicationCredential.ID).Extract() + getApplicationCredential, err := applicationcredentials.Get(context.TODO(), client, user.ID, applicationCredential.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, getApplicationCredential) @@ -264,7 +265,7 @@ func TestApplicationCredentialsAccessRules(t *testing.T) { } // test list - allPages, err := applicationcredentials.ListAccessRules(client, user.ID).AllPages() + allPages, err := applicationcredentials.ListAccessRules(client, user.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := applicationcredentials.ExtractAccessRules(allPages) th.AssertNoErr(t, err) @@ -272,21 +273,21 @@ func TestApplicationCredentialsAccessRules(t *testing.T) { // test individual get for i, rule := range actual { - getRule, err := applicationcredentials.GetAccessRule(client, user.ID, rule.ID).Extract() + getRule, err := applicationcredentials.GetAccessRule(context.TODO(), client, user.ID, rule.ID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, actual[i], *getRule) } - res := applicationcredentials.Delete(client, user.ID, applicationCredential.ID) + res := applicationcredentials.Delete(context.TODO(), client, user.ID, applicationCredential.ID) th.AssertNoErr(t, res.Err) // test delete for _, rule := range actual { - res := applicationcredentials.DeleteAccessRule(client, user.ID, rule.ID) + res := applicationcredentials.DeleteAccessRule(context.TODO(), client, user.ID, rule.ID) th.AssertNoErr(t, res.Err) } - allPages, err = applicationcredentials.ListAccessRules(client, user.ID).AllPages() + allPages, err = applicationcredentials.ListAccessRules(client, user.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err = applicationcredentials.ExtractAccessRules(allPages) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/identity/v3/catalog_test.go b/internal/acceptance/openstack/identity/v3/catalog_test.go index c263bad8a4..6d15b1054b 100644 --- a/internal/acceptance/openstack/identity/v3/catalog_test.go +++ b/internal/acceptance/openstack/identity/v3/catalog_test.go @@ -1,6 +1,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -13,7 +14,7 @@ func TestCatalogList(t *testing.T) { client, err := clients.NewIdentityV3Client() th.AssertNoErr(t, err) - allPages, err := catalog.List(client).AllPages() + allPages, err := catalog.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allEntities, err := catalog.ExtractServiceCatalog(allPages) diff --git a/internal/acceptance/openstack/identity/v3/credentials_test.go b/internal/acceptance/openstack/identity/v3/credentials_test.go index 5a0fc9f1a0..00bc2052e8 100644 --- a/internal/acceptance/openstack/identity/v3/credentials_test.go +++ b/internal/acceptance/openstack/identity/v3/credentials_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -35,15 +36,15 @@ func TestCredentialsCRUD(t *testing.T) { DomainName: ao.DomainName, }, } - token, err := tokens.Create(client, &authOptions).Extract() + token, err := tokens.Create(context.TODO(), client, &authOptions).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, token) - user, err := tokens.Get(client, token.ID).ExtractUser() + user, err := tokens.Get(context.TODO(), client, token.ID).ExtractUser() th.AssertNoErr(t, err) tools.PrintResource(t, user) - project, err := tokens.Get(client, token.ID).ExtractProject() + project, err := tokens.Get(context.TODO(), client, token.ID).ExtractProject() th.AssertNoErr(t, err) tools.PrintResource(t, project) @@ -55,11 +56,11 @@ func TestCredentialsCRUD(t *testing.T) { } // Create a credential - credential, err := credentials.Create(client, createOpts).Extract() + credential, err := credentials.Create(context.TODO(), client, createOpts).Extract() th.AssertNoErr(t, err) // Delete a credential - defer credentials.Delete(client, credential.ID) + defer credentials.Delete(context.TODO(), client, credential.ID) tools.PrintResource(t, credential) th.AssertEquals(t, credential.Blob, createOpts.Blob) @@ -68,7 +69,7 @@ func TestCredentialsCRUD(t *testing.T) { th.AssertEquals(t, credential.ProjectID, createOpts.ProjectID) // Get a credential - getCredential, err := credentials.Get(client, credential.ID).Extract() + getCredential, err := credentials.Get(context.TODO(), client, credential.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, getCredential) @@ -85,7 +86,7 @@ func TestCredentialsCRUD(t *testing.T) { } // Update a credential - updateCredential, err := credentials.Update(client, credential.ID, updateOpts).Extract() + updateCredential, err := credentials.Update(context.TODO(), client, credential.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updateCredential) @@ -112,15 +113,15 @@ func TestCredentialsValidateS3(t *testing.T) { DomainName: ao.DomainName, }, } - token, err := tokens.Create(client, &authOptions).Extract() + token, err := tokens.Create(context.TODO(), client, &authOptions).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, token) - user, err := tokens.Get(client, token.ID).ExtractUser() + user, err := tokens.Get(context.TODO(), client, token.ID).ExtractUser() th.AssertNoErr(t, err) tools.PrintResource(t, user) - project, err := tokens.Get(client, token.ID).ExtractProject() + project, err := tokens.Get(context.TODO(), client, token.ID).ExtractProject() th.AssertNoErr(t, err) tools.PrintResource(t, project) @@ -132,11 +133,11 @@ func TestCredentialsValidateS3(t *testing.T) { } // Create a credential - credential, err := credentials.Create(client, createOpts).Extract() + credential, err := credentials.Create(context.TODO(), client, createOpts).Extract() th.AssertNoErr(t, err) // Delete a credential - defer credentials.Delete(client, credential.ID) + defer credentials.Delete(context.TODO(), client, credential.ID) tools.PrintResource(t, credential) th.AssertEquals(t, credential.Blob, createOpts.Blob) @@ -152,7 +153,7 @@ func TestCredentialsValidateS3(t *testing.T) { } // Validate a credential - token, err = ec2tokens.ValidateS3Token(client, &opts).Extract() + token, err = ec2tokens.ValidateS3Token(context.TODO(), client, &opts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, token) } diff --git a/internal/acceptance/openstack/identity/v3/domains_test.go b/internal/acceptance/openstack/identity/v3/domains_test.go index ee09dcad3e..c0864fffe1 100644 --- a/internal/acceptance/openstack/identity/v3/domains_test.go +++ b/internal/acceptance/openstack/identity/v3/domains_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestDomainsListAvailable(t *testing.T) { client, err := clients.NewIdentityV3Client() th.AssertNoErr(t, err) - allPages, err := domains.ListAvailable(client).AllPages() + allPages, err := domains.ListAvailable(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allDomains, err := domains.ExtractDomains(allPages) @@ -40,7 +41,7 @@ func TestDomainsList(t *testing.T) { Enabled: &iTrue, } - allPages, err := domains.List(client, listOpts).AllPages() + allPages, err := domains.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allDomains, err := domains.ExtractDomains(allPages) @@ -64,7 +65,7 @@ func TestDomainsGet(t *testing.T) { client, err := clients.NewIdentityV3Client() th.AssertNoErr(t, err) - p, err := domains.Get(client, "default").Extract() + p, err := domains.Get(context.TODO(), client, "default").Extract() th.AssertNoErr(t, err) tools.PrintResource(t, p) @@ -100,7 +101,7 @@ func TestDomainsCRUD(t *testing.T) { Enabled: &iFalse, } - newDomain, err := domains.Update(client, domain.ID, updateOpts).Extract() + newDomain, err := domains.Update(context.TODO(), client, domain.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newDomain) diff --git a/internal/acceptance/openstack/identity/v3/ec2credentials_test.go b/internal/acceptance/openstack/identity/v3/ec2credentials_test.go index f28e487035..69c3877374 100644 --- a/internal/acceptance/openstack/identity/v3/ec2credentials_test.go +++ b/internal/acceptance/openstack/identity/v3/ec2credentials_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -35,7 +36,7 @@ func TestEC2CredentialsCRD(t *testing.T) { }, } - res := tokens.Create(client, &authOptions) + res := tokens.Create(context.TODO(), client, &authOptions) th.AssertNoErr(t, res.Err) token, err := res.Extract() th.AssertNoErr(t, err) @@ -53,9 +54,9 @@ func TestEC2CredentialsCRD(t *testing.T) { TenantID: project.ID, } - ec2credential, err := ec2credentials.Create(client, user.ID, createOpts).Extract() + ec2credential, err := ec2credentials.Create(context.TODO(), client, user.ID, createOpts).Extract() th.AssertNoErr(t, err) - defer ec2credentials.Delete(client, user.ID, ec2credential.Access) + defer ec2credentials.Delete(context.TODO(), client, user.ID, ec2credential.Access) tools.PrintResource(t, ec2credential) access := ec2credential.Access @@ -72,7 +73,7 @@ func TestEC2CredentialsCRD(t *testing.T) { th.AssertEquals(t, ec2credential.TenantID, project.ID) // Get an ec2 credential - getEC2Credential, err := ec2credentials.Get(client, user.ID, ec2credential.Access).Extract() + getEC2Credential, err := ec2credentials.Get(context.TODO(), client, user.ID, ec2credential.Access).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, getEC2Credential) @@ -81,7 +82,7 @@ func TestEC2CredentialsCRD(t *testing.T) { th.AssertEquals(t, getEC2Credential.Access, access) th.AssertEquals(t, getEC2Credential.Secret, secret) - allPages, err := ec2credentials.List(client, user.ID).AllPages() + allPages, err := ec2credentials.List(client, user.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) credentials, err := ec2credentials.ExtractCredentials(allPages) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/identity/v3/endpoint_test.go b/internal/acceptance/openstack/identity/v3/endpoint_test.go index c32c62cba2..7e1e37b5d0 100644 --- a/internal/acceptance/openstack/identity/v3/endpoint_test.go +++ b/internal/acceptance/openstack/identity/v3/endpoint_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "strings" "testing" @@ -21,7 +22,7 @@ func TestEndpointsList(t *testing.T) { client, err := clients.NewIdentityV3Client() th.AssertNoErr(t, err) - allPages, err := endpoints.List(client, nil).AllPages() + allPages, err := endpoints.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allEndpoints, err := endpoints.ExtractEndpoints(allPages) @@ -50,7 +51,7 @@ func TestEndpointsNavigateCatalog(t *testing.T) { ServiceType: "compute", } - allPages, err := services.List(client, serviceListOpts).AllPages() + allPages, err := services.List(client, serviceListOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allServices, err := services.ExtractServices(allPages) @@ -67,7 +68,7 @@ func TestEndpointsNavigateCatalog(t *testing.T) { ServiceID: computeService.ID, } - allPages, err = endpoints.List(client, endpointListOpts).AllPages() + allPages, err = endpoints.List(client, endpointListOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allEndpoints, err := endpoints.ExtractEndpoints(allPages) diff --git a/internal/acceptance/openstack/identity/v3/federation_test.go b/internal/acceptance/openstack/identity/v3/federation_test.go index 19aa7d169a..cc964c20c0 100644 --- a/internal/acceptance/openstack/identity/v3/federation_test.go +++ b/internal/acceptance/openstack/identity/v3/federation_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -17,7 +18,7 @@ func TestListMappings(t *testing.T) { client, err := clients.NewIdentityV3Client() th.AssertNoErr(t, err) - allPages, err := federation.ListMappings(client).AllPages() + allPages, err := federation.ListMappings(client).AllPages(context.TODO()) th.AssertNoErr(t, err) mappings, err := federation.ExtractMappings(allPages) @@ -65,12 +66,12 @@ func TestMappingsCRUD(t *testing.T) { }, } - createdMapping, err := federation.CreateMapping(client, mappingName, createOpts).Extract() + createdMapping, err := federation.CreateMapping(context.TODO(), client, mappingName, createOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, len(createOpts.Rules), len(createdMapping.Rules)) th.CheckDeepEquals(t, createOpts.Rules[0], createdMapping.Rules[0]) - mapping, err := federation.GetMapping(client, mappingName).Extract() + mapping, err := federation.GetMapping(context.TODO(), client, mappingName).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, len(createOpts.Rules), len(mapping.Rules)) th.CheckDeepEquals(t, createOpts.Rules[0], mapping.Rules[0]) @@ -106,15 +107,15 @@ func TestMappingsCRUD(t *testing.T) { }, } - updatedMapping, err := federation.UpdateMapping(client, mappingName, updateOpts).Extract() + updatedMapping, err := federation.UpdateMapping(context.TODO(), client, mappingName, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, len(updateOpts.Rules), len(updatedMapping.Rules)) th.CheckDeepEquals(t, updateOpts.Rules[0], updatedMapping.Rules[0]) - err = federation.DeleteMapping(client, mappingName).ExtractErr() + err = federation.DeleteMapping(context.TODO(), client, mappingName).ExtractErr() th.AssertNoErr(t, err) - resp := federation.GetMapping(client, mappingName) + resp := federation.GetMapping(context.TODO(), client, mappingName) th.AssertErr(t, resp.Err) _, ok := resp.Err.(gophercloud.ErrDefault404) th.AssertEquals(t, true, ok) diff --git a/internal/acceptance/openstack/identity/v3/groups_test.go b/internal/acceptance/openstack/identity/v3/groups_test.go index 30bec02620..3fc21a946c 100644 --- a/internal/acceptance/openstack/identity/v3/groups_test.go +++ b/internal/acceptance/openstack/identity/v3/groups_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -48,7 +49,7 @@ func TestGroupCRUD(t *testing.T) { }, } - newGroup, err := groups.Update(client, group.ID, updateOpts).Extract() + newGroup, err := groups.Update(context.TODO(), client, group.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newGroup) @@ -62,7 +63,7 @@ func TestGroupCRUD(t *testing.T) { } // List all Groups in default domain - allPages, err := groups.List(client, listOpts).AllPages() + allPages, err := groups.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allGroups, err := groups.ExtractGroups(allPages) @@ -89,7 +90,7 @@ func TestGroupCRUD(t *testing.T) { "name__contains": "TEST", } - allPages, err = groups.List(client, listOpts).AllPages() + allPages, err = groups.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allGroups, err = groups.ExtractGroups(allPages) @@ -111,7 +112,7 @@ func TestGroupCRUD(t *testing.T) { "name__contains": "foo", } - allPages, err = groups.List(client, listOpts).AllPages() + allPages, err = groups.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allGroups, err = groups.ExtractGroups(allPages) @@ -130,7 +131,7 @@ func TestGroupCRUD(t *testing.T) { th.AssertEquals(t, found, false) // Get the recently created group by ID - p, err := groups.Get(client, group.ID).Extract() + p, err := groups.Get(context.TODO(), client, group.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, p) diff --git a/internal/acceptance/openstack/identity/v3/identity.go b/internal/acceptance/openstack/identity/v3/identity.go index 78b1f87664..bd5d2470ef 100644 --- a/internal/acceptance/openstack/identity/v3/identity.go +++ b/internal/acceptance/openstack/identity/v3/identity.go @@ -1,6 +1,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -35,7 +36,7 @@ func CreateProject(t *testing.T, client *gophercloud.ServiceClient, c *projects. createOpts.Name = name createOpts.Description = description - project, err := projects.Create(client, createOpts).Extract() + project, err := projects.Create(context.TODO(), client, createOpts).Extract() if err != nil { return project, err } @@ -65,7 +66,7 @@ func CreateUser(t *testing.T, client *gophercloud.ServiceClient, c *users.Create createOpts.Name = name - user, err := users.Create(client, createOpts).Extract() + user, err := users.Create(context.TODO(), client, createOpts).Extract() if err != nil { return user, err } @@ -94,7 +95,7 @@ func CreateGroup(t *testing.T, client *gophercloud.ServiceClient, c *groups.Crea createOpts.Name = name - group, err := groups.Create(client, createOpts).Extract() + group, err := groups.Create(context.TODO(), client, createOpts).Extract() if err != nil { return group, err } @@ -123,7 +124,7 @@ func CreateDomain(t *testing.T, client *gophercloud.ServiceClient, c *domains.Cr createOpts.Name = name - domain, err := domains.Create(client, createOpts).Extract() + domain, err := domains.Create(context.TODO(), client, createOpts).Extract() if err != nil { return domain, err } @@ -157,7 +158,7 @@ func CreateRole(t *testing.T, client *gophercloud.ServiceClient, c *roles.Create } createOpts.Name = name - role, err := roles.Create(client, createOpts).Extract() + role, err := roles.Create(context.TODO(), client, createOpts).Extract() if err != nil { return role, err } @@ -186,7 +187,7 @@ func CreateRegion(t *testing.T, client *gophercloud.ServiceClient, c *regions.Cr createOpts.ID = id - region, err := regions.Create(client, createOpts).Extract() + region, err := regions.Create(context.TODO(), client, createOpts).Extract() if err != nil { return region, err } @@ -215,7 +216,7 @@ func CreateService(t *testing.T, client *gophercloud.ServiceClient, c *services. createOpts.Extra["name"] = name - service, err := services.Create(client, createOpts).Extract() + service, err := services.Create(context.TODO(), client, createOpts).Extract() if err != nil { return service, err } @@ -231,7 +232,7 @@ func CreateService(t *testing.T, client *gophercloud.ServiceClient, c *services. // the project ID failed to be deleted. This works best when using it as // a deferred function. func DeleteProject(t *testing.T, client *gophercloud.ServiceClient, projectID string) { - err := projects.Delete(client, projectID).ExtractErr() + err := projects.Delete(context.TODO(), client, projectID).ExtractErr() if err != nil { t.Fatalf("Unable to delete project %s: %v", projectID, err) } @@ -243,7 +244,7 @@ func DeleteProject(t *testing.T, client *gophercloud.ServiceClient, projectID st // the user failed to be deleted. This works best when using it as // a deferred function. func DeleteUser(t *testing.T, client *gophercloud.ServiceClient, userID string) { - err := users.Delete(client, userID).ExtractErr() + err := users.Delete(context.TODO(), client, userID).ExtractErr() if err != nil { t.Fatalf("Unable to delete user with ID %s: %v", userID, err) } @@ -255,7 +256,7 @@ func DeleteUser(t *testing.T, client *gophercloud.ServiceClient, userID string) // the group failed to be deleted. This works best when using it as // a deferred function. func DeleteGroup(t *testing.T, client *gophercloud.ServiceClient, groupID string) { - err := groups.Delete(client, groupID).ExtractErr() + err := groups.Delete(context.TODO(), client, groupID).ExtractErr() if err != nil { t.Fatalf("Unable to delete group %s: %v", groupID, err) } @@ -267,7 +268,7 @@ func DeleteGroup(t *testing.T, client *gophercloud.ServiceClient, groupID string // the project ID failed to be deleted. This works best when using it as // a deferred function. func DeleteDomain(t *testing.T, client *gophercloud.ServiceClient, domainID string) { - err := domains.Delete(client, domainID).ExtractErr() + err := domains.Delete(context.TODO(), client, domainID).ExtractErr() if err != nil { t.Fatalf("Unable to delete domain %s: %v", domainID, err) } @@ -279,7 +280,7 @@ func DeleteDomain(t *testing.T, client *gophercloud.ServiceClient, domainID stri // the role failed to be deleted. This works best when using it as // a deferred function. func DeleteRole(t *testing.T, client *gophercloud.ServiceClient, roleID string) { - err := roles.Delete(client, roleID).ExtractErr() + err := roles.Delete(context.TODO(), client, roleID).ExtractErr() if err != nil { t.Fatalf("Unable to delete role %s: %v", roleID, err) } @@ -291,7 +292,7 @@ func DeleteRole(t *testing.T, client *gophercloud.ServiceClient, roleID string) // the region failed to be deleted. This works best when using it as // a deferred function. func DeleteRegion(t *testing.T, client *gophercloud.ServiceClient, regionID string) { - err := regions.Delete(client, regionID).ExtractErr() + err := regions.Delete(context.TODO(), client, regionID).ExtractErr() if err != nil { t.Fatalf("Unable to delete region %s: %v", regionID, err) } @@ -303,7 +304,7 @@ func DeleteRegion(t *testing.T, client *gophercloud.ServiceClient, regionID stri // the service failed to be deleted. This works best when using it as // a deferred function. func DeleteService(t *testing.T, client *gophercloud.ServiceClient, serviceID string) { - err := services.Delete(client, serviceID).ExtractErr() + err := services.Delete(context.TODO(), client, serviceID).ExtractErr() if err != nil { t.Fatalf("Unable to delete service %s: %v", serviceID, err) } @@ -315,7 +316,7 @@ func DeleteService(t *testing.T, client *gophercloud.ServiceClient, serviceID st // A fatal error will occur if it fails to delete the assignment. // This works best when using it as a deferred function. func UnassignRole(t *testing.T, client *gophercloud.ServiceClient, roleID string, opts *roles.UnassignOpts) { - err := roles.Unassign(client, roleID, *opts).ExtractErr() + err := roles.Unassign(context.TODO(), client, roleID, *opts).ExtractErr() if err != nil { t.Fatalf("Unable to unassign a role %v on context %+v: %v", roleID, *opts, err) } @@ -329,7 +330,7 @@ func FindRole(t *testing.T, client *gophercloud.ServiceClient) (*roles.Role, err t.Log("Attempting to find a role") var role *roles.Role - allPages, err := roles.List(client, nil).AllPages() + allPages, err := roles.List(client, nil).AllPages(context.TODO()) if err != nil { return nil, err } @@ -352,7 +353,7 @@ func FindRole(t *testing.T, client *gophercloud.ServiceClient) (*roles.Role, err // CreateTrust will create a trust with the provided options. // An error will be returned if the trust was unable to be created. func CreateTrust(t *testing.T, client *gophercloud.ServiceClient, createOpts trusts.CreateOpts) (*trusts.Trust, error) { - trust, err := trusts.Create(client, createOpts).Extract() + trust, err := trusts.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -366,7 +367,7 @@ func CreateTrust(t *testing.T, client *gophercloud.ServiceClient, createOpts tru // the trust failed to be deleted. This works best when using it as // a deferred function. func DeleteTrust(t *testing.T, client *gophercloud.ServiceClient, trustID string) { - err := trusts.Delete(client, trustID).ExtractErr() + err := trusts.Delete(context.TODO(), client, trustID).ExtractErr() if err != nil { t.Fatalf("Unable to delete trust %s: %v", trustID, err) } @@ -381,7 +382,7 @@ func FindTrust(t *testing.T, client *gophercloud.ServiceClient) (*trusts.Trust, t.Log("Attempting to find a trust") var trust *trusts.Trust - allPages, err := trusts.List(client, nil).AllPages() + allPages, err := trusts.List(client, nil).AllPages(context.TODO()) if err != nil { return nil, err } diff --git a/internal/acceptance/openstack/identity/v3/limits_test.go b/internal/acceptance/openstack/identity/v3/limits_test.go index 7dfa9c22aa..8b2f42f642 100644 --- a/internal/acceptance/openstack/identity/v3/limits_test.go +++ b/internal/acceptance/openstack/identity/v3/limits_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "os" "testing" @@ -21,7 +22,7 @@ func TestGetEnforcementModel(t *testing.T) { client, err := clients.NewIdentityV3Client() th.AssertNoErr(t, err) - model, err := limits.GetEnforcementModel(client).Extract() + model, err := limits.GetEnforcementModel(context.TODO(), client).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, model) @@ -35,7 +36,7 @@ func TestLimitsList(t *testing.T) { listOpts := limits.ListOpts{} - allPages, err := limits.List(client, listOpts).AllPages() + allPages, err := limits.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) _, err = limits.ExtractLimits(allPages) @@ -56,7 +57,7 @@ func TestLimitsCRUD(t *testing.T) { th.AssertNoErr(t, err) // Get the service to register the limit against. - allPages, err := services.List(client, nil).AllPages() + allPages, err := services.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) svList, err := services.ExtractServices(allPages) @@ -82,7 +83,7 @@ func TestLimitsCRUD(t *testing.T) { }, } - createdRegisteredLimits, err := registeredlimits.BatchCreate(client, createRegisteredLimitsOpts).Extract() + createdRegisteredLimits, err := registeredlimits.BatchCreate(context.TODO(), client, createRegisteredLimitsOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, createdRegisteredLimits[0]) th.AssertIntGreaterOrEqual(t, 1, len(createdRegisteredLimits)) @@ -102,7 +103,7 @@ func TestLimitsCRUD(t *testing.T) { }, } - createdLimits, err := limits.BatchCreate(client, createOpts).Extract() + createdLimits, err := limits.BatchCreate(context.TODO(), client, createOpts).Extract() th.AssertNoErr(t, err) th.AssertIntGreaterOrEqual(t, 1, len(createdLimits)) th.AssertEquals(t, limitDescription, createdLimits[0].Description) @@ -113,7 +114,7 @@ func TestLimitsCRUD(t *testing.T) { limitID := createdLimits[0].ID - limit, err := limits.Get(client, limitID).Extract() + limit, err := limits.Get(context.TODO(), client, limitID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, createdLimits[0], *limit) @@ -124,23 +125,23 @@ func TestLimitsCRUD(t *testing.T) { ResourceLimit: &newResourceLimit, } - updatedLimit, err := limits.Update(client, limitID, updateOpts).Extract() + updatedLimit, err := limits.Update(context.TODO(), client, limitID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, newLimitDescription, updatedLimit.Description) th.AssertEquals(t, newResourceLimit, updatedLimit.ResourceLimit) // Verify Deleting registered limit fails as it has project specific limit associated with it - del_err := registeredlimits.Delete(client, createdRegisteredLimits[0].ID).ExtractErr() + del_err := registeredlimits.Delete(context.TODO(), client, createdRegisteredLimits[0].ID).ExtractErr() th.AssertErr(t, del_err) // Delete project specific limit - err = limits.Delete(client, limitID).ExtractErr() + err = limits.Delete(context.TODO(), client, limitID).ExtractErr() th.AssertNoErr(t, err) - _, err = limits.Get(client, limitID).Extract() + _, err = limits.Get(context.TODO(), client, limitID).Extract() th.AssertErr(t, err) // Delete registered limit - err = registeredlimits.Delete(client, createdRegisteredLimits[0].ID).ExtractErr() + err = registeredlimits.Delete(context.TODO(), client, createdRegisteredLimits[0].ID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/internal/acceptance/openstack/identity/v3/oauth1_test.go b/internal/acceptance/openstack/identity/v3/oauth1_test.go index efac3d778c..a88ac39cc0 100644 --- a/internal/acceptance/openstack/identity/v3/oauth1_test.go +++ b/internal/acceptance/openstack/identity/v3/oauth1_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -35,7 +36,7 @@ func TestOAuth1CRUD(t *testing.T) { DomainName: ao.DomainName, }, } - tokenRes := tokens.Create(client, &authOptions) + tokenRes := tokens.Create(context.TODO(), client, &authOptions) token, err := tokenRes.Extract() th.AssertNoErr(t, err) tools.PrintResource(t, token) @@ -57,11 +58,11 @@ func TestOAuth1CRUD(t *testing.T) { Description: "My test consumer", } // NOTE: secret is available only in create response - consumer, err := oauth1.CreateConsumer(client, createConsumerOpts).Extract() + consumer, err := oauth1.CreateConsumer(context.TODO(), client, createConsumerOpts).Extract() th.AssertNoErr(t, err) // Delete a consumer - defer oauth1.DeleteConsumer(client, consumer.ID) + defer oauth1.DeleteConsumer(context.TODO(), client, consumer.ID) tools.PrintResource(t, consumer) th.AssertEquals(t, consumer.Description, createConsumerOpts.Description) @@ -70,21 +71,21 @@ func TestOAuth1CRUD(t *testing.T) { updateConsumerOpts := oauth1.UpdateConsumerOpts{ Description: "", } - updatedConsumer, err := oauth1.UpdateConsumer(client, consumer.ID, updateConsumerOpts).Extract() + updatedConsumer, err := oauth1.UpdateConsumer(context.TODO(), client, consumer.ID, updateConsumerOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedConsumer) th.AssertEquals(t, updatedConsumer.ID, consumer.ID) th.AssertEquals(t, updatedConsumer.Description, updateConsumerOpts.Description) // Get a consumer - getConsumer, err := oauth1.GetConsumer(client, consumer.ID).Extract() + getConsumer, err := oauth1.GetConsumer(context.TODO(), client, consumer.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, getConsumer) th.AssertEquals(t, getConsumer.ID, consumer.ID) th.AssertEquals(t, getConsumer.Description, updateConsumerOpts.Description) // List consumers - consumersPages, err := oauth1.ListConsumers(client).AllPages() + consumersPages, err := oauth1.ListConsumers(client).AllPages(context.TODO()) th.AssertNoErr(t, err) consumers, err := oauth1.ExtractConsumers(consumersPages) th.AssertNoErr(t, err) @@ -105,7 +106,7 @@ func oauth1MethodTest(t *testing.T, client *gophercloud.ServiceClient, consumer OAuthSignatureMethod: method, RequestedProjectID: project.ID, } - requestToken, err := oauth1.RequestToken(client, requestTokenOpts).Extract() + requestToken, err := oauth1.RequestToken(context.TODO(), client, requestTokenOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, requestToken) @@ -120,7 +121,7 @@ func oauth1MethodTest(t *testing.T, client *gophercloud.ServiceClient, consumer // test role by name authorizeTokenOpts.Roles = append(authorizeTokenOpts.Roles, oauth1.Role{Name: roles[1].Name}) } - authToken, err := oauth1.AuthorizeToken(client, requestToken.OAuthToken, authorizeTokenOpts).Extract() + authToken, err := oauth1.AuthorizeToken(context.TODO(), client, requestToken.OAuthToken, authorizeTokenOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, authToken) @@ -134,14 +135,14 @@ func oauth1MethodTest(t *testing.T, client *gophercloud.ServiceClient, consumer OAuthSignatureMethod: method, } - accessToken, err := oauth1.CreateAccessToken(client, accessTokenOpts).Extract() + accessToken, err := oauth1.CreateAccessToken(context.TODO(), client, accessTokenOpts).Extract() th.AssertNoErr(t, err) - defer oauth1.RevokeAccessToken(client, user.ID, accessToken.OAuthToken) + defer oauth1.RevokeAccessToken(context.TODO(), client, user.ID, accessToken.OAuthToken) tools.PrintResource(t, accessToken) // Get access token - getAccessToken, err := oauth1.GetAccessToken(client, user.ID, accessToken.OAuthToken).Extract() + getAccessToken, err := oauth1.GetAccessToken(context.TODO(), client, user.ID, accessToken.OAuthToken).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, getAccessToken) @@ -152,7 +153,7 @@ func oauth1MethodTest(t *testing.T, client *gophercloud.ServiceClient, consumer th.AssertEquals(t, getAccessToken.ProjectID, project.ID) // List access tokens - accessTokensPages, err := oauth1.ListAccessTokens(client, user.ID).AllPages() + accessTokensPages, err := oauth1.ListAccessTokens(client, user.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) accessTokens, err := oauth1.ExtractAccessTokens(accessTokensPages) @@ -162,7 +163,7 @@ func oauth1MethodTest(t *testing.T, client *gophercloud.ServiceClient, consumer th.AssertDeepEquals(t, accessTokens[0], *getAccessToken) // List access token roles - accessTokenRolesPages, err := oauth1.ListAccessTokenRoles(client, user.ID, accessToken.OAuthToken).AllPages() + accessTokenRolesPages, err := oauth1.ListAccessTokenRoles(client, user.ID, accessToken.OAuthToken).AllPages(context.TODO()) th.AssertNoErr(t, err) accessTokenRoles, err := oauth1.ExtractAccessTokenRoles(accessTokenRolesPages) @@ -181,7 +182,7 @@ func oauth1MethodTest(t *testing.T, client *gophercloud.ServiceClient, consumer } // Get access token role - getAccessTokenRole, err := oauth1.GetAccessTokenRole(client, user.ID, accessToken.OAuthToken, roles[0].ID).Extract() + getAccessTokenRole, err := oauth1.GetAccessTokenRole(context.TODO(), client, user.ID, accessToken.OAuthToken, roles[0].ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, getAccessTokenRole) @@ -205,7 +206,7 @@ func oauth1MethodTest(t *testing.T, client *gophercloud.ServiceClient, consumer OAuthTokenSecret: accessToken.OAuthTokenSecret, OAuthSignatureMethod: method, } - err = openstack.AuthenticateV3(newClient.ProviderClient, authOptions, gophercloud.EndpointOpts{}) + err = openstack.AuthenticateV3(context.TODO(), newClient.ProviderClient, authOptions, gophercloud.EndpointOpts{}) th.AssertNoErr(t, err) // Test OAuth1 token extract @@ -213,7 +214,7 @@ func oauth1MethodTest(t *testing.T, client *gophercloud.ServiceClient, consumer tokens.Token oauth1.TokenExt } - tokenRes := tokens.Get(newClient, newClient.ProviderClient.TokenID) + tokenRes := tokens.Get(context.TODO(), newClient, newClient.ProviderClient.TokenID) err = tokenRes.ExtractInto(&token) th.AssertNoErr(t, err) oauth1Roles, err := tokenRes.ExtractRoles() diff --git a/internal/acceptance/openstack/identity/v3/osinherit_test.go b/internal/acceptance/openstack/identity/v3/osinherit_test.go index bed18b8f74..9d0e6d004f 100644 --- a/internal/acceptance/openstack/identity/v3/osinherit_test.go +++ b/internal/acceptance/openstack/identity/v3/osinherit_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -43,7 +44,7 @@ func TestInheritRolesAssignToUserOnProject(t *testing.T) { UserID: user.ID, ProjectID: project.ID, } - err = osinherit.Assign(client, role.ID, assignOpts).ExtractErr() + err = osinherit.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a user %s on a project %s", @@ -53,7 +54,7 @@ func TestInheritRolesAssignToUserOnProject(t *testing.T) { UserID: user.ID, ProjectID: project.ID, } - err = osinherit.Validate(client, role.ID, validateOpts).ExtractErr() + err = osinherit.Validate(context.TODO(), client, role.ID, validateOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully validated inherited role %s to a user %s on a project %s", @@ -63,7 +64,7 @@ func TestInheritRolesAssignToUserOnProject(t *testing.T) { UserID: user.ID, ProjectID: project.ID, } - err = osinherit.Unassign(client, role.ID, unassignOpts).ExtractErr() + err = osinherit.Unassign(context.TODO(), client, role.ID, unassignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully unassigned inherited role %s to a user %s on a project %s", @@ -102,7 +103,7 @@ func TestInheritRolesAssignToUserOnDomain(t *testing.T) { DomainID: domain.ID, } - err = osinherit.Assign(client, role.ID, assignOpts).ExtractErr() + err = osinherit.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a user %s on a domain %s", @@ -113,7 +114,7 @@ func TestInheritRolesAssignToUserOnDomain(t *testing.T) { DomainID: domain.ID, } - err = osinherit.Validate(client, role.ID, validateOpts).ExtractErr() + err = osinherit.Validate(context.TODO(), client, role.ID, validateOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully validated inherited role %s to a user %s on a domain %s", @@ -124,7 +125,7 @@ func TestInheritRolesAssignToUserOnDomain(t *testing.T) { DomainID: domain.ID, } - err = osinherit.Unassign(client, role.ID, unassignOpts).ExtractErr() + err = osinherit.Unassign(context.TODO(), client, role.ID, unassignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully unassigned inherited role %s to a user %s on a domain %s", @@ -166,7 +167,7 @@ func TestInheritRolesAssignToGroupOnDomain(t *testing.T) { DomainID: domain.ID, } - err = osinherit.Assign(client, role.ID, assignOpts).ExtractErr() + err = osinherit.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a group %s on a domain %s", @@ -177,7 +178,7 @@ func TestInheritRolesAssignToGroupOnDomain(t *testing.T) { DomainID: domain.ID, } - err = osinherit.Validate(client, role.ID, validateOpts).ExtractErr() + err = osinherit.Validate(context.TODO(), client, role.ID, validateOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully validated inherited role %s to a group %s on a domain %s", @@ -188,7 +189,7 @@ func TestInheritRolesAssignToGroupOnDomain(t *testing.T) { DomainID: domain.ID, } - err = osinherit.Unassign(client, role.ID, unassignOpts).ExtractErr() + err = osinherit.Unassign(context.TODO(), client, role.ID, unassignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully unassigned inherited role %s to a group %s on a domain %s", @@ -227,7 +228,7 @@ func TestInheritRolesAssignToGroupOnProject(t *testing.T) { GroupID: group.ID, ProjectID: project.ID, } - err = osinherit.Assign(client, role.ID, assignOpts).ExtractErr() + err = osinherit.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a group %s on a project %s", @@ -237,7 +238,7 @@ func TestInheritRolesAssignToGroupOnProject(t *testing.T) { GroupID: group.ID, ProjectID: project.ID, } - err = osinherit.Validate(client, role.ID, validateOpts).ExtractErr() + err = osinherit.Validate(context.TODO(), client, role.ID, validateOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully validated inherited role %s to a group %s on a project %s", @@ -247,7 +248,7 @@ func TestInheritRolesAssignToGroupOnProject(t *testing.T) { GroupID: group.ID, ProjectID: project.ID, } - err = osinherit.Unassign(client, role.ID, unassignOpts).ExtractErr() + err = osinherit.Unassign(context.TODO(), client, role.ID, unassignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully unassigned inherited role %s to a group %s on a project %s", diff --git a/internal/acceptance/openstack/identity/v3/policies_test.go b/internal/acceptance/openstack/identity/v3/policies_test.go index 5a62a8269b..eb21878370 100644 --- a/internal/acceptance/openstack/identity/v3/policies_test.go +++ b/internal/acceptance/openstack/identity/v3/policies_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestPoliciesList(t *testing.T) { client, err := clients.NewIdentityV3Client() th.AssertNoErr(t, err) - allPages, err := policies.List(client, policies.ListOpts{}).AllPages() + allPages, err := policies.List(client, policies.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicies, err := policies.ExtractPolicies(allPages) @@ -43,7 +44,7 @@ func TestPoliciesCRUD(t *testing.T) { }, } - policy, err := policies.Create(client, &createOpts).Extract() + policy, err := policies.Create(context.TODO(), client, &createOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, policy) @@ -55,7 +56,7 @@ func TestPoliciesCRUD(t *testing.T) { var listOpts policies.ListOpts - allPages, err := policies.List(client, listOpts).AllPages() + allPages, err := policies.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicies, err := policies.ExtractPolicies(allPages) @@ -77,7 +78,7 @@ func TestPoliciesCRUD(t *testing.T) { "type__contains": "json", } - allPages, err = policies.List(client, listOpts).AllPages() + allPages, err = policies.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicies, err = policies.ExtractPolicies(allPages) @@ -99,7 +100,7 @@ func TestPoliciesCRUD(t *testing.T) { "type__contains": "foobar", } - allPages, err = policies.List(client, listOpts).AllPages() + allPages, err = policies.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicies, err = policies.ExtractPolicies(allPages) @@ -117,7 +118,7 @@ func TestPoliciesCRUD(t *testing.T) { th.AssertEquals(t, false, found) - gotPolicy, err := policies.Get(client, policy.ID).Extract() + gotPolicy, err := policies.Get(context.TODO(), client, policy.ID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, policy, gotPolicy) @@ -129,7 +130,7 @@ func TestPoliciesCRUD(t *testing.T) { }, } - updatedPolicy, err := policies.Update(client, policy.ID, updateOpts).Extract() + updatedPolicy, err := policies.Update(context.TODO(), client, policy.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedPolicy) @@ -139,6 +140,6 @@ func TestPoliciesCRUD(t *testing.T) { th.AssertEquals(t, updatedPolicy.Blob, string(updateOpts.Blob)) th.AssertEquals(t, updatedPolicy.Extra["description"], updateOpts.Extra["description"]) - err = policies.Delete(client, policy.ID).ExtractErr() + err = policies.Delete(context.TODO(), client, policy.ID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/internal/acceptance/openstack/identity/v3/projectendpoint_test.go b/internal/acceptance/openstack/identity/v3/projectendpoint_test.go index 1de418da8a..1da742cc8b 100644 --- a/internal/acceptance/openstack/identity/v3/projectendpoint_test.go +++ b/internal/acceptance/openstack/identity/v3/projectendpoint_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -27,7 +28,7 @@ func TestProjectEndpoints(t *testing.T) { tools.PrintResource(t, project) // Get an endpoint - allEndpointsPages, err := endpoints.List(client, nil).AllPages() + allEndpointsPages, err := endpoints.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allEndpoints, err := endpoints.ExtractEndpoints(allEndpointsPages) @@ -36,11 +37,11 @@ func TestProjectEndpoints(t *testing.T) { endpoint := allEndpoints[0] // Attach endpoint - err = projectendpoints.Create(client, project.ID, endpoint.ID).Err + err = projectendpoints.Create(context.TODO(), client, project.ID, endpoint.ID).Err th.AssertNoErr(t, err) // List endpoints - allProjectEndpointsPages, err := projectendpoints.List(client, project.ID).AllPages() + allProjectEndpointsPages, err := projectendpoints.List(client, project.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjectEndpoints, err := projectendpoints.ExtractEndpoints(allProjectEndpointsPages) @@ -50,7 +51,7 @@ func TestProjectEndpoints(t *testing.T) { tools.PrintResource(t, allProjectEndpoints[0]) // Detach endpoint - err = projectendpoints.Delete(client, project.ID, endpoint.ID).Err + err = projectendpoints.Delete(context.TODO(), client, project.ID, endpoint.ID).Err th.AssertNoErr(t, err) } diff --git a/internal/acceptance/openstack/identity/v3/projects_test.go b/internal/acceptance/openstack/identity/v3/projects_test.go index cf1d535451..95fff1aebd 100644 --- a/internal/acceptance/openstack/identity/v3/projects_test.go +++ b/internal/acceptance/openstack/identity/v3/projects_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestProjectsListAvailable(t *testing.T) { client, err := clients.NewIdentityV3Client() th.AssertNoErr(t, err) - allPages, err := projects.ListAvailable(client).AllPages() + allPages, err := projects.ListAvailable(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err := projects.ExtractProjects(allPages) @@ -40,7 +41,7 @@ func TestProjectsList(t *testing.T) { Enabled: &iTrue, } - allPages, err := projects.List(client, listOpts).AllPages() + allPages, err := projects.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err := projects.ExtractProjects(allPages) @@ -61,7 +62,7 @@ func TestProjectsList(t *testing.T) { "name__contains": "dmi", } - allPages, err = projects.List(client, listOpts).AllPages() + allPages, err = projects.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err = projects.ExtractProjects(allPages) @@ -82,7 +83,7 @@ func TestProjectsList(t *testing.T) { "name__contains": "foo", } - allPages, err = projects.List(client, listOpts).AllPages() + allPages, err = projects.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err = projects.ExtractProjects(allPages) @@ -106,14 +107,14 @@ func TestProjectsGet(t *testing.T) { client, err := clients.NewIdentityV3Client() th.AssertNoErr(t, err) - allPages, err := projects.List(client, nil).AllPages() + allPages, err := projects.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err := projects.ExtractProjects(allPages) th.AssertNoErr(t, err) project := allProjects[0] - p, err := projects.Get(client, project.ID).Extract() + p, err := projects.Get(context.TODO(), client, project.ID).Extract() if err != nil { t.Fatalf("Unable to get project: %v", err) } @@ -142,7 +143,7 @@ func TestProjectsCRUD(t *testing.T) { Enabled: &iFalse, } - updatedProject, err := projects.Update(client, project.ID, updateOpts).Extract() + updatedProject, err := projects.Update(context.TODO(), client, project.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedProject) @@ -184,7 +185,7 @@ func TestProjectsDomain(t *testing.T) { Enabled: &iFalse, } - _, err = projects.Update(client, projectDomain.ID, updateOpts).Extract() + _, err = projects.Update(context.TODO(), client, projectDomain.ID, updateOpts).Extract() th.AssertNoErr(t, err) } @@ -232,7 +233,7 @@ func TestProjectsTags(t *testing.T) { Tags: "Tag1,Tag2", } - allPages, err := projects.List(client, listOpts).AllPages() + allPages, err := projects.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err := projects.ExtractProjects(allPages) @@ -254,7 +255,7 @@ func TestProjectsTags(t *testing.T) { Tags: "Tag1,Tag2,Tag3", } - allPages, err = projects.List(client, listOpts).AllPages() + allPages, err = projects.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err = projects.ExtractProjects(allPages) @@ -267,7 +268,7 @@ func TestProjectsTags(t *testing.T) { TagsAny: "Tag1,Tag2,Tag3", } - allPages, err = projects.List(client, listOpts).AllPages() + allPages, err = projects.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err = projects.ExtractProjects(allPages) @@ -289,7 +290,7 @@ func TestProjectsTags(t *testing.T) { NotTagsAny: "Tag1", } - allPages, err = projects.List(client, listOpts).AllPages() + allPages, err = projects.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err = projects.ExtractProjects(allPages) @@ -311,7 +312,7 @@ func TestProjectsTags(t *testing.T) { NotTags: "Tag1,Tag2,Tag3", } - allPages, err = projects.List(client, listOpts).AllPages() + allPages, err = projects.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err = projects.ExtractProjects(allPages) @@ -333,7 +334,7 @@ func TestProjectsTags(t *testing.T) { Tags: &[]string{"Tag1"}, } - updatedProject, err := projects.Update(client, projectMain.ID, updateOpts).Extract() + updatedProject, err := projects.Update(context.TODO(), client, projectMain.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedProject) @@ -346,7 +347,7 @@ func TestProjectsTags(t *testing.T) { Description: &description, } - updatedProject, err = projects.Update(client, projectMain.ID, updateOpts).Extract() + updatedProject, err = projects.Update(context.TODO(), client, projectMain.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedProject) @@ -358,7 +359,7 @@ func TestProjectsTags(t *testing.T) { Tags: &[]string{}, } - updatedProject, err = projects.Update(client, projectMain.ID, updateOpts).Extract() + updatedProject, err = projects.Update(context.TODO(), client, projectMain.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedProject) diff --git a/internal/acceptance/openstack/identity/v3/reauth_test.go b/internal/acceptance/openstack/identity/v3/reauth_test.go index ea8a13f72b..4b1611ea3d 100644 --- a/internal/acceptance/openstack/identity/v3/reauth_test.go +++ b/internal/acceptance/openstack/identity/v3/reauth_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,13 +23,13 @@ func TestReauthAuthResultDeadlock(t *testing.T) { ao.AllowReauth = true - provider, err := openstack.AuthenticatedClient(ao) + provider, err := openstack.AuthenticatedClient(context.TODO(), ao) th.AssertNoErr(t, err) provider.SetToken("this is not a valid token") client, err := openstack.NewIdentityV3(provider, gophercloud.EndpointOpts{}) - pages, err := projects.List(client, nil).AllPages() + pages, err := projects.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) _, err = projects.ExtractProjects(pages) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/identity/v3/regions_test.go b/internal/acceptance/openstack/identity/v3/regions_test.go index 711629bf39..62d27de7ba 100644 --- a/internal/acceptance/openstack/identity/v3/regions_test.go +++ b/internal/acceptance/openstack/identity/v3/regions_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,7 +23,7 @@ func TestRegionsList(t *testing.T) { ParentRegionID: "RegionOne", } - allPages, err := regions.List(client, listOpts).AllPages() + allPages, err := regions.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allRegions, err := regions.ExtractRegions(allPages) @@ -39,14 +40,14 @@ func TestRegionsGet(t *testing.T) { client, err := clients.NewIdentityV3Client() th.AssertNoErr(t, err) - allPages, err := regions.List(client, nil).AllPages() + allPages, err := regions.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allRegions, err := regions.ExtractRegions(allPages) th.AssertNoErr(t, err) region := allRegions[0] - p, err := regions.Get(client, region.ID).Extract() + p, err := regions.Get(context.TODO(), client, region.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, p) @@ -90,7 +91,7 @@ func TestRegionsCRUD(t *testing.T) { */ } - newRegion, err := regions.Update(client, region.ID, updateOpts).Extract() + newRegion, err := regions.Update(context.TODO(), client, region.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newRegion) diff --git a/internal/acceptance/openstack/identity/v3/registeredlimits_test.go b/internal/acceptance/openstack/identity/v3/registeredlimits_test.go index b14a0fcd79..d94efe7b9f 100644 --- a/internal/acceptance/openstack/identity/v3/registeredlimits_test.go +++ b/internal/acceptance/openstack/identity/v3/registeredlimits_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "os" "testing" @@ -25,7 +26,7 @@ func TestRegisteredLimitsCRUD(t *testing.T) { th.AssertNoErr(t, err) // Get glance service to register the limit - allServicePages, err := services.List(client, nil).AllPages() + allServicePages, err := services.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) svList, err := services.ExtractServices(allServicePages) @@ -51,7 +52,7 @@ func TestRegisteredLimitsCRUD(t *testing.T) { }, } - createdRegisteredLimits, err := registeredlimits.BatchCreate(client, createOpts).Extract() + createdRegisteredLimits, err := registeredlimits.BatchCreate(context.TODO(), client, createOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, createdRegisteredLimits[0]) th.AssertIntGreaterOrEqual(t, 1, len(createdRegisteredLimits)) @@ -63,14 +64,14 @@ func TestRegisteredLimitsCRUD(t *testing.T) { // List the registered limits listOpts := registeredlimits.ListOpts{} - allPages, err := registeredlimits.List(client, listOpts).AllPages() + allPages, err := registeredlimits.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) _, err = registeredlimits.ExtractRegisteredLimits(allPages) th.AssertNoErr(t, err) // Get RegisteredLimit by ID - registered_limit, err := registeredlimits.Get(client, createdRegisteredLimits[0].ID).Extract() + registered_limit, err := registeredlimits.Get(context.TODO(), client, createdRegisteredLimits[0].ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, registered_limit) @@ -85,7 +86,7 @@ func TestRegisteredLimitsCRUD(t *testing.T) { ResourceName: updatedResourceName, } - updated_registered_limit, err := registeredlimits.Update(client, createdRegisteredLimits[0].ID, updatedOpts).Extract() + updated_registered_limit, err := registeredlimits.Update(context.TODO(), client, createdRegisteredLimits[0].ID, updatedOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updated_registered_limit) @@ -94,9 +95,9 @@ func TestRegisteredLimitsCRUD(t *testing.T) { th.AssertEquals(t, updated_registered_limit.ResourceName, updatedResourceName) // Delete the registered limit - del_err := registeredlimits.Delete(client, createdRegisteredLimits[0].ID).ExtractErr() + del_err := registeredlimits.Delete(context.TODO(), client, createdRegisteredLimits[0].ID).ExtractErr() th.AssertNoErr(t, del_err) - _, err = registeredlimits.Get(client, createdRegisteredLimits[0].ID).Extract() + _, err = registeredlimits.Get(context.TODO(), client, createdRegisteredLimits[0].ID).Extract() th.AssertErr(t, err) } diff --git a/internal/acceptance/openstack/identity/v3/roles_test.go b/internal/acceptance/openstack/identity/v3/roles_test.go index 1bf4fe868c..9b8508b422 100644 --- a/internal/acceptance/openstack/identity/v3/roles_test.go +++ b/internal/acceptance/openstack/identity/v3/roles_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -25,7 +26,7 @@ func TestRolesList(t *testing.T) { DomainID: "default", } - allPages, err := roles.List(client, listOpts).AllPages() + allPages, err := roles.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoles, err := roles.ExtractRoles(allPages) @@ -45,7 +46,7 @@ func TestRolesGet(t *testing.T) { role, err := FindRole(t, client) th.AssertNoErr(t, err) - p, err := roles.Get(client, role.ID).Extract() + p, err := roles.Get(context.TODO(), client, role.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, p) @@ -73,7 +74,7 @@ func TestRolesCRUD(t *testing.T) { tools.PrintResource(t, role.Extra) listOpts := roles.ListOpts{} - allPages, err := roles.List(client, listOpts).AllPages() + allPages, err := roles.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoles, err := roles.ExtractRoles(allPages) @@ -97,7 +98,7 @@ func TestRolesCRUD(t *testing.T) { }, } - newRole, err := roles.Update(client, role.ID, updateOpts).Extract() + newRole, err := roles.Update(context.TODO(), client, role.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newRole) @@ -129,7 +130,7 @@ func TestRolesFilterList(t *testing.T) { "name__contains": "test", } - allPages, err := roles.List(client, listOpts).AllPages() + allPages, err := roles.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoles, err := roles.ExtractRoles(allPages) @@ -151,7 +152,7 @@ func TestRolesFilterList(t *testing.T) { "name__contains": "reader", } - allPages, err = roles.List(client, listOpts).AllPages() + allPages, err = roles.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoles, err = roles.ExtractRoles(allPages) @@ -199,7 +200,7 @@ func TestRoleListAssignmentIncludeNamesAndSubtree(t *testing.T) { UserID: user.ID, ProjectID: project.ID, } - err = roles.Assign(client, role.ID, assignOpts).ExtractErr() + err = roles.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a user %s on a project %s", @@ -217,7 +218,7 @@ func TestRoleListAssignmentIncludeNamesAndSubtree(t *testing.T) { IncludeSubtree: &iTrue, IncludeNames: &iTrue, } - allPages, err := roles.ListAssignments(client, listAssignmentsOpts).AllPages() + allPages, err := roles.ListAssignments(client, listAssignmentsOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoles, err := roles.ExtractRoleAssignments(allPages) @@ -266,7 +267,7 @@ func TestRoleListAssignmentForUserOnProject(t *testing.T) { UserID: user.ID, ProjectID: project.ID, } - err = roles.Assign(client, role.ID, assignOpts).ExtractErr() + err = roles.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a user %s on a project %s", @@ -281,7 +282,7 @@ func TestRoleListAssignmentForUserOnProject(t *testing.T) { UserID: user.ID, ProjectID: project.ID, } - allPages, err := roles.ListAssignmentsOnResource(client, listAssignmentsOnResourceOpts).AllPages() + allPages, err := roles.ListAssignmentsOnResource(client, listAssignmentsOnResourceOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoles, err := roles.ExtractRoles(allPages) @@ -331,7 +332,7 @@ func TestRoleListAssignmentForUserOnDomain(t *testing.T) { DomainID: domain.ID, } - err = roles.Assign(client, role.ID, assignOpts).ExtractErr() + err = roles.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a user %s on a domain %s", @@ -346,7 +347,7 @@ func TestRoleListAssignmentForUserOnDomain(t *testing.T) { UserID: user.ID, DomainID: domain.ID, } - allPages, err := roles.ListAssignmentsOnResource(client, listAssignmentsOnResourceOpts).AllPages() + allPages, err := roles.ListAssignmentsOnResource(client, listAssignmentsOnResourceOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoles, err := roles.ExtractRoles(allPages) @@ -396,7 +397,7 @@ func TestRoleListAssignmentForGroupOnProject(t *testing.T) { GroupID: group.ID, ProjectID: project.ID, } - err = roles.Assign(client, role.ID, assignOpts).ExtractErr() + err = roles.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a group %s on a project %s", @@ -411,7 +412,7 @@ func TestRoleListAssignmentForGroupOnProject(t *testing.T) { GroupID: group.ID, ProjectID: project.ID, } - allPages, err := roles.ListAssignmentsOnResource(client, listAssignmentsOnResourceOpts).AllPages() + allPages, err := roles.ListAssignmentsOnResource(client, listAssignmentsOnResourceOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoles, err := roles.ExtractRoles(allPages) @@ -464,7 +465,7 @@ func TestRoleListAssignmentForGroupOnDomain(t *testing.T) { DomainID: domain.ID, } - err = roles.Assign(client, role.ID, assignOpts).ExtractErr() + err = roles.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a group %s on a domain %s", @@ -479,7 +480,7 @@ func TestRoleListAssignmentForGroupOnDomain(t *testing.T) { GroupID: group.ID, DomainID: domain.ID, } - allPages, err := roles.ListAssignmentsOnResource(client, listAssignmentsOnResourceOpts).AllPages() + allPages, err := roles.ListAssignmentsOnResource(client, listAssignmentsOnResourceOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoles, err := roles.ExtractRoles(allPages) @@ -526,7 +527,7 @@ func TestRolesAssignToUserOnProject(t *testing.T) { UserID: user.ID, ProjectID: project.ID, } - err = roles.Assign(client, role.ID, assignOpts).ExtractErr() + err = roles.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a user %s on a project %s", @@ -545,7 +546,7 @@ func TestRolesAssignToUserOnProject(t *testing.T) { IncludeNames: &iTrue, } - allPages, err := roles.ListAssignments(client, lao).AllPages() + allPages, err := roles.ListAssignments(client, lao).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoleAssignments, err := roles.ExtractRoleAssignments(allPages) @@ -599,7 +600,7 @@ func TestRolesAssignToUserOnDomain(t *testing.T) { DomainID: domain.ID, } - err = roles.Assign(client, role.ID, assignOpts).ExtractErr() + err = roles.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a user %s on a domain %s", @@ -618,7 +619,7 @@ func TestRolesAssignToUserOnDomain(t *testing.T) { IncludeNames: &iTrue, } - allPages, err := roles.ListAssignments(client, lao).AllPages() + allPages, err := roles.ListAssignments(client, lao).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoleAssignments, err := roles.ExtractRoleAssignments(allPages) @@ -675,7 +676,7 @@ func TestRolesAssignToGroupOnDomain(t *testing.T) { DomainID: domain.ID, } - err = roles.Assign(client, role.ID, assignOpts).ExtractErr() + err = roles.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a group %s on a domain %s", @@ -694,7 +695,7 @@ func TestRolesAssignToGroupOnDomain(t *testing.T) { IncludeNames: &iTrue, } - allPages, err := roles.ListAssignments(client, lao).AllPages() + allPages, err := roles.ListAssignments(client, lao).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoleAssignments, err := roles.ExtractRoleAssignments(allPages) @@ -748,7 +749,7 @@ func TestRolesAssignToGroupOnProject(t *testing.T) { GroupID: group.ID, ProjectID: project.ID, } - err = roles.Assign(client, role.ID, assignOpts).ExtractErr() + err = roles.Assign(context.TODO(), client, role.ID, assignOpts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully assigned a role %s to a group %s on a project %s", @@ -767,7 +768,7 @@ func TestRolesAssignToGroupOnProject(t *testing.T) { IncludeNames: &iTrue, } - allPages, err := roles.ListAssignments(client, lao).AllPages() + allPages, err := roles.ListAssignments(client, lao).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoleAssignments, err := roles.ExtractRoleAssignments(allPages) diff --git a/internal/acceptance/openstack/identity/v3/service_test.go b/internal/acceptance/openstack/identity/v3/service_test.go index 43e9351428..be249c18fd 100644 --- a/internal/acceptance/openstack/identity/v3/service_test.go +++ b/internal/acceptance/openstack/identity/v3/service_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,7 +23,7 @@ func TestServicesList(t *testing.T) { ServiceType: "identity", } - allPages, err := services.List(client, listOpts).AllPages() + allPages, err := services.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allServices, err := services.ExtractServices(allPages) @@ -69,7 +70,7 @@ func TestServicesCRUD(t *testing.T) { }, } - newService, err := services.Update(client, service.ID, updateOpts).Extract() + newService, err := services.Update(context.TODO(), client, service.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newService) diff --git a/internal/acceptance/openstack/identity/v3/token_test.go b/internal/acceptance/openstack/identity/v3/token_test.go index db480d2a4f..cd5aeb6d30 100644 --- a/internal/acceptance/openstack/identity/v3/token_test.go +++ b/internal/acceptance/openstack/identity/v3/token_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -28,23 +29,23 @@ func TestTokensGet(t *testing.T) { DomainName: "default", } - token, err := tokens.Create(client, &authOptions).Extract() + token, err := tokens.Create(context.TODO(), client, &authOptions).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, token) - catalog, err := tokens.Get(client, token.ID).ExtractServiceCatalog() + catalog, err := tokens.Get(context.TODO(), client, token.ID).ExtractServiceCatalog() th.AssertNoErr(t, err) tools.PrintResource(t, catalog) - user, err := tokens.Get(client, token.ID).ExtractUser() + user, err := tokens.Get(context.TODO(), client, token.ID).ExtractUser() th.AssertNoErr(t, err) tools.PrintResource(t, user) - roles, err := tokens.Get(client, token.ID).ExtractRoles() + roles, err := tokens.Get(context.TODO(), client, token.ID).ExtractRoles() th.AssertNoErr(t, err) tools.PrintResource(t, roles) - project, err := tokens.Get(client, token.ID).ExtractProject() + project, err := tokens.Get(context.TODO(), client, token.ID).ExtractProject() th.AssertNoErr(t, err) tools.PrintResource(t, project) } diff --git a/internal/acceptance/openstack/identity/v3/trusts_test.go b/internal/acceptance/openstack/identity/v3/trusts_test.go index 749b4a8679..0d848496ce 100644 --- a/internal/acceptance/openstack/identity/v3/trusts_test.go +++ b/internal/acceptance/openstack/identity/v3/trusts_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "time" @@ -34,15 +35,15 @@ func TestTrustCRUD(t *testing.T) { DomainID: ao.DomainID, } - token, err := tokens.Create(client, &authOptions).Extract() + token, err := tokens.Create(context.TODO(), client, &authOptions).Extract() th.AssertNoErr(t, err) - adminUser, err := tokens.Get(client, token.ID).ExtractUser() + adminUser, err := tokens.Get(context.TODO(), client, token.ID).ExtractUser() th.AssertNoErr(t, err) // Get the admin and member role IDs. adminRoleID := "" memberRoleID := "" - allPages, err := roles.List(client, nil).AllPages() + allPages, err := roles.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allRoles, err := roles.ExtractRoles(allPages) th.AssertNoErr(t, err) @@ -70,7 +71,7 @@ func TestTrustCRUD(t *testing.T) { ProjectID: trusteeProject.ID, } - err = roles.Assign(client, adminRoleID, assignOpts).ExtractErr() + err = roles.Assign(context.TODO(), client, adminRoleID, assignOpts).ExtractErr() th.AssertNoErr(t, err) // Create a user as the trustee. @@ -102,7 +103,7 @@ func TestTrustCRUD(t *testing.T) { th.AssertNoErr(t, err) // Get trust - p, err := trusts.Get(client, trust.ID).Extract() + p, err := trusts.Get(context.TODO(), client, trust.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, p.ExpiresAt, expiresAt) th.AssertEquals(t, p.DeletedAt.IsZero(), true) @@ -110,7 +111,7 @@ func TestTrustCRUD(t *testing.T) { tools.PrintResource(t, p) // List trust roles - rolesPages, err := trusts.ListRoles(client, p.ID).AllPages() + rolesPages, err := trusts.ListRoles(client, p.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allTrustRoles, err := trusts.ExtractRoles(rolesPages) th.AssertNoErr(t, err) @@ -118,11 +119,11 @@ func TestTrustCRUD(t *testing.T) { th.AssertEquals(t, allTrustRoles[0].ID, memberRoleID) // Get trust role - role, err := trusts.GetRole(client, p.ID, memberRoleID).Extract() + role, err := trusts.GetRole(context.TODO(), client, p.ID, memberRoleID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, role.ID, memberRoleID) // Check trust role - err = trusts.CheckRole(client, p.ID, memberRoleID).ExtractErr() + err = trusts.CheckRole(context.TODO(), client, p.ID, memberRoleID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/internal/acceptance/openstack/identity/v3/users_test.go b/internal/acceptance/openstack/identity/v3/users_test.go index 02f9740dec..ac67b98c72 100644 --- a/internal/acceptance/openstack/identity/v3/users_test.go +++ b/internal/acceptance/openstack/identity/v3/users_test.go @@ -4,6 +4,7 @@ package v3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -25,7 +26,7 @@ func TestUsersList(t *testing.T) { Enabled: &iTrue, } - allPages, err := users.List(client, listOpts).AllPages() + allPages, err := users.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allUsers, err := users.ExtractUsers(allPages) @@ -47,7 +48,7 @@ func TestUsersList(t *testing.T) { "name__contains": "dmi", } - allPages, err = users.List(client, listOpts).AllPages() + allPages, err = users.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allUsers, err = users.ExtractUsers(allPages) @@ -69,7 +70,7 @@ func TestUsersList(t *testing.T) { "name__contains": "foo", } - allPages, err = users.List(client, listOpts).AllPages() + allPages, err = users.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allUsers, err = users.ExtractUsers(allPages) @@ -94,14 +95,14 @@ func TestUsersGet(t *testing.T) { client, err := clients.NewIdentityV3Client() th.AssertNoErr(t, err) - allPages, err := users.List(client, nil).AllPages() + allPages, err := users.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allUsers, err := users.ExtractUsers(allPages) th.AssertNoErr(t, err) user := allUsers[0] - p, err := users.Get(client, user.ID).Extract() + p, err := users.Get(context.TODO(), client, user.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, p) @@ -163,7 +164,7 @@ func TestUserCRUD(t *testing.T) { }, } - newUser, err := users.Update(client, user.ID, updateOpts).Extract() + newUser, err := users.Update(context.TODO(), client, user.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newUser) @@ -197,7 +198,7 @@ func TestUserChangePassword(t *testing.T) { OriginalPassword: "secretsecret", Password: "new_secretsecret", } - err = users.ChangePassword(client, user.ID, changePasswordOpts).ExtractErr() + err = users.ChangePassword(context.TODO(), client, user.ID, changePasswordOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -232,10 +233,10 @@ func TestUsersGroups(t *testing.T) { tools.PrintResource(t, group) tools.PrintResource(t, group.Extra) - err = users.AddToGroup(client, group.ID, user.ID).ExtractErr() + err = users.AddToGroup(context.TODO(), client, group.ID, user.ID).ExtractErr() th.AssertNoErr(t, err) - allGroupPages, err := users.ListGroups(client, user.ID).AllPages() + allGroupPages, err := users.ListGroups(client, user.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allGroups, err := groups.ExtractGroups(allGroupPages) @@ -254,7 +255,7 @@ func TestUsersGroups(t *testing.T) { th.AssertEquals(t, found, true) found = false - allUserPages, err := users.ListInGroup(client, group.ID, nil).AllPages() + allUserPages, err := users.ListInGroup(client, group.ID, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allUsers, err := users.ExtractUsers(allUserPages) @@ -271,7 +272,7 @@ func TestUsersGroups(t *testing.T) { th.AssertEquals(t, found, true) - ok, err := users.IsMemberOfGroup(client, group.ID, user.ID).Extract() + ok, err := users.IsMemberOfGroup(context.TODO(), client, group.ID, user.ID).Extract() if err != nil { t.Fatalf("Unable to check whether user belongs to group: %v", err) } @@ -279,10 +280,10 @@ func TestUsersGroups(t *testing.T) { t.Fatalf("User %s is expected to be a member of group %s", user.ID, group.ID) } - err = users.RemoveFromGroup(client, group.ID, user.ID).ExtractErr() + err = users.RemoveFromGroup(context.TODO(), client, group.ID, user.ID).ExtractErr() th.AssertNoErr(t, err) - allGroupPages, err = users.ListGroups(client, user.ID).AllPages() + allGroupPages, err = users.ListGroups(client, user.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allGroups, err = groups.ExtractGroups(allGroupPages) @@ -301,7 +302,7 @@ func TestUsersGroups(t *testing.T) { th.AssertEquals(t, found, false) found = false - allUserPages, err = users.ListInGroup(client, group.ID, nil).AllPages() + allUserPages, err = users.ListInGroup(client, group.ID, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allUsers, err = users.ExtractUsers(allUserPages) @@ -326,7 +327,7 @@ func TestUsersListProjects(t *testing.T) { client, err := clients.NewIdentityV3Client() th.AssertNoErr(t, err) - allUserPages, err := users.List(client, nil).AllPages() + allUserPages, err := users.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allUsers, err := users.ExtractUsers(allUserPages) @@ -334,7 +335,7 @@ func TestUsersListProjects(t *testing.T) { user := allUsers[0] - allProjectPages, err := users.ListProjects(client, user.ID).AllPages() + allProjectPages, err := users.ListProjects(client, user.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allProjects, err := projects.ExtractProjects(allProjectPages) diff --git a/internal/acceptance/openstack/imageservice/v2/images_test.go b/internal/acceptance/openstack/imageservice/v2/images_test.go index d3c57407fd..1013d66d3d 100644 --- a/internal/acceptance/openstack/imageservice/v2/images_test.go +++ b/internal/acceptance/openstack/imageservice/v2/images_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "sort" "testing" "time" @@ -24,7 +25,7 @@ func TestImagesListEachPage(t *testing.T) { } pager := images.List(client, listOpts) - err = pager.EachPage(func(page pagination.Page) (bool, error) { + err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { images, err := images.ExtractImages(page) if err != nil { t.Fatalf("Unable to extract images: %v", err) @@ -49,7 +50,7 @@ func TestImagesListAllPages(t *testing.T) { listOpts := images.ListOpts{} - allPages, err := images.List(client, listOpts).AllPages() + allPages, err := images.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allImages, err := images.ExtractImages(allPages) @@ -81,7 +82,7 @@ func TestImagesListByDate(t *testing.T) { }, } - allPages, err := images.List(client, listOpts).AllPages() + allPages, err := images.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allImages, err := images.ExtractImages(allPages) @@ -105,7 +106,7 @@ func TestImagesListByDate(t *testing.T) { }, } - allPages, err = images.List(client, listOpts).AllPages() + allPages, err = images.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allImages, err = images.ExtractImages(allPages) @@ -130,7 +131,7 @@ func TestImagesFilter(t *testing.T) { DiskFormat: "qcow2", } - allPages, err := images.List(client, listOpts).AllPages() + allPages, err := images.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allImages, err := images.ExtractImages(allPages) @@ -167,7 +168,7 @@ func TestImagesUpdate(t *testing.T) { }, } - newImage, err := images.Update(client, image.ID, updateOpts).Extract() + newImage, err := images.Update(context.TODO(), client, image.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newImage) @@ -192,6 +193,6 @@ func TestImagesUpdate(t *testing.T) { updateOpts = images.UpdateOpts{ images.ReplaceImageProtected{NewProtected: false}, } - _, err = images.Update(client, image.ID, updateOpts).Extract() + _, err = images.Update(context.TODO(), client, image.ID, updateOpts).Extract() th.AssertNoErr(t, err) } diff --git a/internal/acceptance/openstack/imageservice/v2/imageservice.go b/internal/acceptance/openstack/imageservice/v2/imageservice.go index 37c21321bd..b44526e26e 100644 --- a/internal/acceptance/openstack/imageservice/v2/imageservice.go +++ b/internal/acceptance/openstack/imageservice/v2/imageservice.go @@ -3,6 +3,7 @@ package v2 import ( + "context" "io" "net/http" "os" @@ -41,12 +42,12 @@ func CreateEmptyImage(t *testing.T, client *gophercloud.ServiceClient) (*images. Tags: []string{"foo", "bar", "baz"}, } - image, err := images.Create(client, createOpts).Extract() + image, err := images.Create(context.TODO(), client, createOpts).Extract() if err != nil { return image, err } - newImage, err := images.Get(client, image.ID).Extract() + newImage, err := images.Get(context.TODO(), client, image.ID).Extract() if err != nil { return image, err } @@ -62,7 +63,7 @@ func CreateEmptyImage(t *testing.T, client *gophercloud.ServiceClient) (*images. // A fatal error will occur if the image failed to delete. This works best when // used as a deferred function. func DeleteImage(t *testing.T, client *gophercloud.ServiceClient, image *images.Image) { - err := images.Delete(client, image.ID).ExtractErr() + err := images.Delete(context.TODO(), client, image.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete image %s: %v", image.ID, err) } @@ -88,12 +89,12 @@ func CreateTask(t *testing.T, client *gophercloud.ServiceClient, imageURL string "import_from": imageURL, }, } - task, err := tasks.Create(client, opts).Extract() + task, err := tasks.Create(context.TODO(), client, opts).Extract() if err != nil { return nil, err } - newTask, err := tasks.Get(client, task.ID).Extract() + newTask, err := tasks.Get(context.TODO(), client, task.ID).Extract() if err != nil { return nil, err } @@ -104,7 +105,7 @@ func CreateTask(t *testing.T, client *gophercloud.ServiceClient, imageURL string // GetImportInfo will retrieve Import API information. func GetImportInfo(t *testing.T, client *gophercloud.ServiceClient) (*imageimport.ImportInfo, error) { t.Log("Attempting to get the Imageservice Import API information") - importInfo, err := imageimport.Get(client).Extract() + importInfo, err := imageimport.Get(context.TODO(), client).Extract() if err != nil { return nil, err } @@ -120,7 +121,7 @@ func StageImage(t *testing.T, client *gophercloud.ServiceClient, filepath, image } defer imageData.Close() - return imagedata.Stage(client, imageID, imageData).ExtractErr() + return imagedata.Stage(context.TODO(), client, imageID, imageData).ExtractErr() } // DownloadImageFileFromURL will download an image from the specified URL and @@ -166,5 +167,5 @@ func ImportImage(t *testing.T, client *gophercloud.ServiceClient, imageID string } t.Logf("Attempting to import image data for %s from %s", imageID, importOpts.URI) - return imageimport.Create(client, imageID, importOpts).ExtractErr() + return imageimport.Create(context.TODO(), client, imageID, importOpts).ExtractErr() } diff --git a/internal/acceptance/openstack/imageservice/v2/tasks_test.go b/internal/acceptance/openstack/imageservice/v2/tasks_test.go index c53b37f094..1a722f19bc 100644 --- a/internal/acceptance/openstack/imageservice/v2/tasks_test.go +++ b/internal/acceptance/openstack/imageservice/v2/tasks_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,7 +23,7 @@ func TestTasksListEachPage(t *testing.T) { } pager := tasks.List(client, listOpts) - err = pager.EachPage(func(page pagination.Page) (bool, error) { + err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { tasks, err := tasks.ExtractTasks(page) th.AssertNoErr(t, err) @@ -40,7 +41,7 @@ func TestTasksListAllPages(t *testing.T) { listOpts := tasks.ListOpts{} - allPages, err := tasks.List(client, listOpts).AllPages() + allPages, err := tasks.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allTasks, err := tasks.ExtractTasks(allPages) diff --git a/internal/acceptance/openstack/keymanager/v1/acls_test.go b/internal/acceptance/openstack/keymanager/v1/acls_test.go index 5ba18a707b..e8b0b6db28 100644 --- a/internal/acceptance/openstack/keymanager/v1/acls_test.go +++ b/internal/acceptance/openstack/keymanager/v1/acls_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -34,18 +35,18 @@ func TestACLCRUD(t *testing.T) { }, } - aclRef, err := acls.SetSecretACL(client, secretID, setOpts).Extract() + aclRef, err := acls.SetSecretACL(context.TODO(), client, secretID, setOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, aclRef) defer func() { - err := acls.DeleteSecretACL(client, secretID).ExtractErr() + err := acls.DeleteSecretACL(context.TODO(), client, secretID).ExtractErr() th.AssertNoErr(t, err) - acl, err := acls.GetSecretACL(client, secretID).Extract() + acl, err := acls.GetSecretACL(context.TODO(), client, secretID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, acl) }() - acl, err := acls.GetSecretACL(client, secretID).Extract() + acl, err := acls.GetSecretACL(context.TODO(), client, secretID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, acl) tools.PrintResource(t, (*acl)["read"].Created) @@ -60,11 +61,11 @@ func TestACLCRUD(t *testing.T) { }, } - aclRef, err = acls.UpdateSecretACL(client, secretID, updateOpts).Extract() + aclRef, err = acls.UpdateSecretACL(context.TODO(), client, secretID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, aclRef) - acl, err = acls.GetSecretACL(client, secretID).Extract() + acl, err = acls.GetSecretACL(context.TODO(), client, secretID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, acl) tools.PrintResource(t, (*acl)["read"].Created) @@ -77,29 +78,29 @@ func TestACLCRUD(t *testing.T) { th.AssertNoErr(t, err) defer DeleteContainer(t, client, containerID) - aclRef, err = acls.SetContainerACL(client, containerID, setOpts).Extract() + aclRef, err = acls.SetContainerACL(context.TODO(), client, containerID, setOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, aclRef) defer func() { - err := acls.DeleteContainerACL(client, containerID).ExtractErr() + err := acls.DeleteContainerACL(context.TODO(), client, containerID).ExtractErr() th.AssertNoErr(t, err) - acl, err := acls.GetContainerACL(client, containerID).Extract() + acl, err := acls.GetContainerACL(context.TODO(), client, containerID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, acl) }() - acl, err = acls.GetContainerACL(client, containerID).Extract() + acl, err = acls.GetContainerACL(context.TODO(), client, containerID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, acl) tools.PrintResource(t, (*acl)["read"].Created) th.AssertEquals(t, len((*acl)["read"].Users), 1) th.AssertEquals(t, (*acl)["read"].ProjectAccess, false) - aclRef, err = acls.UpdateContainerACL(client, containerID, updateOpts).Extract() + aclRef, err = acls.UpdateContainerACL(context.TODO(), client, containerID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, aclRef) - acl, err = acls.GetContainerACL(client, containerID).Extract() + acl, err = acls.GetContainerACL(context.TODO(), client, containerID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, acl) tools.PrintResource(t, (*acl)["read"].Created) diff --git a/internal/acceptance/openstack/keymanager/v1/containers_test.go b/internal/acceptance/openstack/keymanager/v1/containers_test.go index 7b6395e9f6..50795a2678 100644 --- a/internal/acceptance/openstack/keymanager/v1/containers_test.go +++ b/internal/acceptance/openstack/keymanager/v1/containers_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -40,7 +41,7 @@ func TestGenericContainersCRUD(t *testing.T) { err = ReplaceGenericContainerSecretRef(t, client, container, secret, secret1) th.AssertNoErr(t, err) - allPages, err := containers.List(client, nil).AllPages() + allPages, err := containers.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allContainers, err := containers.ExtractContainers(allPages) @@ -70,7 +71,7 @@ func TestCertificateContainer(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSecret(t, client, secretID) - payload, err := secrets.GetPayload(client, secretID, nil).Extract() + payload, err := secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) t.Logf("Private Payload: %s", string(payload)) @@ -80,7 +81,7 @@ func TestCertificateContainer(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSecret(t, client, secretID) - payload, err = secrets.GetPayload(client, secretID, nil).Extract() + payload, err = secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) t.Logf("Certificate Payload: %s", string(payload)) @@ -90,7 +91,7 @@ func TestCertificateContainer(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSecret(t, client, secretID) - payload, err = secrets.GetPayload(client, secretID, nil).Extract() + payload, err = secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) t.Logf("Passphrase Payload: %s", string(payload)) @@ -114,7 +115,7 @@ func TestRSAContainer(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSecret(t, client, secretID) - payload, err := secrets.GetPayload(client, secretID, nil).Extract() + payload, err := secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) t.Logf("Private Payload: %s", string(payload)) @@ -124,7 +125,7 @@ func TestRSAContainer(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSecret(t, client, secretID) - payload, err = secrets.GetPayload(client, secretID, nil).Extract() + payload, err = secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) t.Logf("Public Payload: %s", string(payload)) @@ -134,7 +135,7 @@ func TestRSAContainer(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSecret(t, client, secretID) - payload, err = secrets.GetPayload(client, secretID, nil).Extract() + payload, err = secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) t.Logf("Passphrase Payload: %s", string(payload)) @@ -167,7 +168,7 @@ func TestContainerConsumersCRUD(t *testing.T) { URL: "http://example.com", } - container, err = containers.CreateConsumer(client, containerID, consumerCreateOpts).Extract() + container, err = containers.CreateConsumer(context.TODO(), client, containerID, consumerCreateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, container.Consumers) th.AssertEquals(t, len(container.Consumers), 1) @@ -177,12 +178,12 @@ func TestContainerConsumersCRUD(t *testing.T) { URL: "http://example.com", } - container, err := containers.DeleteConsumer(client, containerID, deleteOpts).Extract() + container, err := containers.DeleteConsumer(context.TODO(), client, containerID, deleteOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, len(container.Consumers), 0) }() - allPages, err := containers.ListConsumers(client, containerID, nil).AllPages() + allPages, err := containers.ListConsumers(client, containerID, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allConsumers, err := containers.ExtractConsumers(allPages) diff --git a/internal/acceptance/openstack/keymanager/v1/keymanager.go b/internal/acceptance/openstack/keymanager/v1/keymanager.go index a0bf19db66..cb84db8cd1 100644 --- a/internal/acceptance/openstack/keymanager/v1/keymanager.go +++ b/internal/acceptance/openstack/keymanager/v1/keymanager.go @@ -1,6 +1,7 @@ package v1 import ( + "context" "crypto/rand" "crypto/rsa" "crypto/x509" @@ -40,7 +41,7 @@ func CreateAsymmetricOrder(t *testing.T, client *gophercloud.ServiceClient) (*or }, } - order, err := orders.Create(client, createOpts).Extract() + order, err := orders.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -53,7 +54,7 @@ func CreateAsymmetricOrder(t *testing.T, client *gophercloud.ServiceClient) (*or err = WaitForOrder(client, orderID) th.AssertNoErr(t, err) - order, err = orders.Get(client, orderID).Extract() + order, err = orders.Get(context.TODO(), client, orderID).Extract() if err != nil { return nil, err } @@ -93,7 +94,7 @@ func CreateCertificateContainer(t *testing.T, client *gophercloud.ServiceClient, }, } - container, err := containers.Create(client, createOpts).Extract() + container, err := containers.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -105,7 +106,7 @@ func CreateCertificateContainer(t *testing.T, client *gophercloud.ServiceClient, return nil, err } - container, err = containers.Get(client, containerID).Extract() + container, err = containers.Get(context.TODO(), client, containerID).Extract() if err != nil { return nil, err } @@ -136,7 +137,7 @@ func CreateKeyOrder(t *testing.T, client *gophercloud.ServiceClient) (*orders.Or }, } - order, err := orders.Create(client, createOpts).Extract() + order, err := orders.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -146,7 +147,7 @@ func CreateKeyOrder(t *testing.T, client *gophercloud.ServiceClient) (*orders.Or return nil, err } - order, err = orders.Get(client, orderID).Extract() + order, err = orders.Get(context.TODO(), client, orderID).Extract() if err != nil { return nil, err } @@ -186,7 +187,7 @@ func CreateRSAContainer(t *testing.T, client *gophercloud.ServiceClient, passphr }, } - container, err := containers.Create(client, createOpts).Extract() + container, err := containers.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -198,7 +199,7 @@ func CreateRSAContainer(t *testing.T, client *gophercloud.ServiceClient, passphr return nil, err } - container, err = containers.Get(client, containerID).Extract() + container, err = containers.Get(context.TODO(), client, containerID).Extract() if err != nil { return nil, err } @@ -228,7 +229,7 @@ func CreateCertificateSecret(t *testing.T, client *gophercloud.ServiceClient, ce Algorithm: "rsa", } - secret, err := secrets.Create(client, createOpts).Extract() + secret, err := secrets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -240,7 +241,7 @@ func CreateCertificateSecret(t *testing.T, client *gophercloud.ServiceClient, ce return nil, err } - secret, err = secrets.Get(client, secretID).Extract() + secret, err = secrets.Get(context.TODO(), client, secretID).Extract() if err != nil { return nil, err } @@ -268,7 +269,7 @@ func CreateEmptySecret(t *testing.T, client *gophercloud.ServiceClient) (*secret SecretType: secrets.OpaqueSecret, } - secret, err := secrets.Create(client, createOpts).Extract() + secret, err := secrets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -280,7 +281,7 @@ func CreateEmptySecret(t *testing.T, client *gophercloud.ServiceClient) (*secret return nil, err } - secret, err = secrets.Get(client, secretID).Extract() + secret, err = secrets.Get(context.TODO(), client, secretID).Extract() if err != nil { return nil, err } @@ -312,7 +313,7 @@ func CreateGenericContainer(t *testing.T, client *gophercloud.ServiceClient, sec }, } - container, err := containers.Create(client, createOpts).Extract() + container, err := containers.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -324,7 +325,7 @@ func CreateGenericContainer(t *testing.T, client *gophercloud.ServiceClient, sec return nil, err } - container, err = containers.Get(client, containerID).Extract() + container, err = containers.Get(context.TODO(), client, containerID).Extract() if err != nil { return nil, err } @@ -348,7 +349,7 @@ func ReplaceGenericContainerSecretRef(t *testing.T, client *gophercloud.ServiceC t.Logf("Attempting to remove an old secret reference %s", secretOld.SecretRef) - res1 := containers.DeleteSecretRef(client, containerID, containers.SecretRef{Name: secretOld.Name, SecretRef: secretOld.SecretRef}) + res1 := containers.DeleteSecretRef(context.TODO(), client, containerID, containers.SecretRef{Name: secretOld.Name, SecretRef: secretOld.SecretRef}) if res1.Err != nil { return res1.Err } @@ -358,7 +359,7 @@ func ReplaceGenericContainerSecretRef(t *testing.T, client *gophercloud.ServiceC t.Logf("Attempting to remove a new secret reference %s", secretNew.SecretRef) newRef := containers.SecretRef{Name: secretNew.Name, SecretRef: secretNew.SecretRef} - res2 := containers.CreateSecretRef(client, containerID, newRef) + res2 := containers.CreateSecretRef(context.TODO(), client, containerID, newRef) if res2.Err != nil { return res2.Err } @@ -371,7 +372,7 @@ func ReplaceGenericContainerSecretRef(t *testing.T, client *gophercloud.ServiceC t.Logf("Successfully created new secret reference: %s", secretNew.SecretRef) - updatedContainer, err := containers.Get(client, containerID).Extract() + updatedContainer, err := containers.Get(context.TODO(), client, containerID).Extract() if err != nil { return err } @@ -402,7 +403,7 @@ func CreatePassphraseSecret(t *testing.T, client *gophercloud.ServiceClient, pas SecretType: secrets.PassphraseSecret, } - secret, err := secrets.Create(client, createOpts).Extract() + secret, err := secrets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -414,7 +415,7 @@ func CreatePassphraseSecret(t *testing.T, client *gophercloud.ServiceClient, pas return nil, err } - secret, err = secrets.Get(client, secretID).Extract() + secret, err = secrets.Get(context.TODO(), client, secretID).Extract() if err != nil { return nil, err } @@ -444,7 +445,7 @@ func CreatePublicSecret(t *testing.T, client *gophercloud.ServiceClient, pub []b Algorithm: "rsa", } - secret, err := secrets.Create(client, createOpts).Extract() + secret, err := secrets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -456,7 +457,7 @@ func CreatePublicSecret(t *testing.T, client *gophercloud.ServiceClient, pub []b return nil, err } - secret, err = secrets.Get(client, secretID).Extract() + secret, err = secrets.Get(context.TODO(), client, secretID).Extract() if err != nil { return nil, err } @@ -486,7 +487,7 @@ func CreatePrivateSecret(t *testing.T, client *gophercloud.ServiceClient, priv [ Algorithm: "rsa", } - secret, err := secrets.Create(client, createOpts).Extract() + secret, err := secrets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -498,7 +499,7 @@ func CreatePrivateSecret(t *testing.T, client *gophercloud.ServiceClient, priv [ return nil, err } - secret, err = secrets.Get(client, secretID).Extract() + secret, err = secrets.Get(context.TODO(), client, secretID).Extract() if err != nil { return nil, err } @@ -530,7 +531,7 @@ func CreateSecretWithPayload(t *testing.T, client *gophercloud.ServiceClient, pa Expiration: &expiration, } - secret, err := secrets.Create(client, createOpts).Extract() + secret, err := secrets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -542,7 +543,7 @@ func CreateSecretWithPayload(t *testing.T, client *gophercloud.ServiceClient, pa return nil, err } - secret, err = secrets.Get(client, secretID).Extract() + secret, err = secrets.Get(context.TODO(), client, secretID).Extract() if err != nil { return nil, err } @@ -576,7 +577,7 @@ func CreateSymmetricSecret(t *testing.T, client *gophercloud.ServiceClient) (*se Mode: "cbc", } - secret, err := secrets.Create(client, createOpts).Extract() + secret, err := secrets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -588,7 +589,7 @@ func CreateSymmetricSecret(t *testing.T, client *gophercloud.ServiceClient) (*se return nil, err } - secret, err = secrets.Get(client, secretID).Extract() + secret, err = secrets.Get(context.TODO(), client, secretID).Extract() if err != nil { return nil, err } @@ -607,7 +608,7 @@ func CreateSymmetricSecret(t *testing.T, client *gophercloud.ServiceClient) (*se func DeleteContainer(t *testing.T, client *gophercloud.ServiceClient, id string) { t.Logf("Attempting to delete container %s", id) - err := containers.Delete(client, id).ExtractErr() + err := containers.Delete(context.TODO(), client, id).ExtractErr() if err != nil { t.Fatalf("Could not delete container: %s", err) } @@ -621,7 +622,7 @@ func DeleteContainer(t *testing.T, client *gophercloud.ServiceClient, id string) func DeleteOrder(t *testing.T, client *gophercloud.ServiceClient, id string) { t.Logf("Attempting to delete order %s", id) - err := orders.Delete(client, id).ExtractErr() + err := orders.Delete(context.TODO(), client, id).ExtractErr() if err != nil { t.Fatalf("Could not delete order: %s", err) } @@ -634,7 +635,7 @@ func DeleteOrder(t *testing.T, client *gophercloud.ServiceClient, id string) { func DeleteSecret(t *testing.T, client *gophercloud.ServiceClient, id string) { t.Logf("Attempting to delete secret %s", id) - err := secrets.Delete(client, id).ExtractErr() + err := secrets.Delete(context.TODO(), client, id).ExtractErr() if err != nil { t.Fatalf("Could not delete secret: %s", err) } @@ -742,7 +743,7 @@ func CreateRSAKeyPair(t *testing.T, passphrase string) ([]byte, []byte, error) { func WaitForOrder(client *gophercloud.ServiceClient, orderID string) error { return tools.WaitFor(func() (bool, error) { - order, err := orders.Get(client, orderID).Extract() + order, err := orders.Get(context.TODO(), client, orderID).Extract() if err != nil { return false, err } diff --git a/internal/acceptance/openstack/keymanager/v1/orders_test.go b/internal/acceptance/openstack/keymanager/v1/orders_test.go index 29dc94efcd..73fd4ea851 100644 --- a/internal/acceptance/openstack/keymanager/v1/orders_test.go +++ b/internal/acceptance/openstack/keymanager/v1/orders_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -32,11 +33,11 @@ func TestOrdersCRUD(t *testing.T) { payloadOpts := secrets.GetPayloadOpts{ PayloadContentType: "application/octet-stream", } - payload, err := secrets.GetPayload(client, secretID, payloadOpts).Extract() + payload, err := secrets.GetPayload(context.TODO(), client, secretID, payloadOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, payload) - allPages, err := orders.List(client, nil).AllPages() + allPages, err := orders.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allOrders, err := orders.ExtractOrders(allPages) @@ -67,7 +68,7 @@ func TestOrdersAsymmetric(t *testing.T) { containerID, err := ParseID(order.ContainerRef) th.AssertNoErr(t, err) - container, err := containers.Get(client, containerID).Extract() + container, err := containers.Get(context.TODO(), client, containerID).Extract() th.AssertNoErr(t, err) for _, v := range container.SecretRefs { @@ -78,7 +79,7 @@ func TestOrdersAsymmetric(t *testing.T) { PayloadContentType: "application/octet-stream", } - payload, err := secrets.GetPayload(client, secretID, payloadOpts).Extract() + payload, err := secrets.GetPayload(context.TODO(), client, secretID, payloadOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, string(payload)) } diff --git a/internal/acceptance/openstack/keymanager/v1/secrets_test.go b/internal/acceptance/openstack/keymanager/v1/secrets_test.go index 99355b6ad6..a6133dc320 100644 --- a/internal/acceptance/openstack/keymanager/v1/secrets_test.go +++ b/internal/acceptance/openstack/keymanager/v1/secrets_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "time" @@ -25,7 +26,7 @@ func TestSecretsCRUD(t *testing.T) { defer DeleteSecret(t, client, secretID) // Test payload retrieval - actual, err := secrets.GetPayload(client, secretID, nil).Extract() + actual, err := secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, payload, string(actual)) @@ -39,7 +40,7 @@ func TestSecretsCRUD(t *testing.T) { CreatedQuery: createdQuery, } - allPages, err := secrets.List(client, listOpts).AllPages() + allPages, err := secrets.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allSecrets, err := secrets.ExtractSecrets(allPages) @@ -71,11 +72,11 @@ func TestSecretsDelayedPayload(t *testing.T) { Payload: payload, } - err = secrets.Update(client, secretID, updateOpts).ExtractErr() + err = secrets.Update(context.TODO(), client, secretID, updateOpts).ExtractErr() th.AssertNoErr(t, err) // Test payload retrieval - actual, err := secrets.GetPayload(client, secretID, nil).Extract() + actual, err := secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, payload, string(actual)) } @@ -97,12 +98,12 @@ func TestSecretsMetadataCRUD(t *testing.T) { "something": "something else", } - ref, err := secrets.CreateMetadata(client, secretID, createOpts).Extract() + ref, err := secrets.CreateMetadata(context.TODO(), client, secretID, createOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ref["metadata_ref"], secret.SecretRef+"/metadata") // Get the metadata - metadata, err := secrets.GetMetadata(client, secretID).Extract() + metadata, err := secrets.GetMetadata(context.TODO(), client, secretID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, metadata) th.AssertEquals(t, metadata["foo"], "bar") @@ -114,10 +115,10 @@ func TestSecretsMetadataCRUD(t *testing.T) { Value: "baz", } - err = secrets.CreateMetadatum(client, secretID, metadatumOpts).ExtractErr() + err = secrets.CreateMetadatum(context.TODO(), client, secretID, metadatumOpts).ExtractErr() th.AssertNoErr(t, err) - metadata, err = secrets.GetMetadata(client, secretID).Extract() + metadata, err = secrets.GetMetadata(context.TODO(), client, secretID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, metadata) th.AssertEquals(t, len(metadata), 3) @@ -129,13 +130,13 @@ func TestSecretsMetadataCRUD(t *testing.T) { metadatumOpts.Key = "foo" metadatumOpts.Value = "foo" - metadatum, err := secrets.UpdateMetadatum(client, secretID, metadatumOpts).Extract() + metadatum, err := secrets.UpdateMetadatum(context.TODO(), client, secretID, metadatumOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, metadatum) th.AssertDeepEquals(t, metadatum.Key, "foo") th.AssertDeepEquals(t, metadatum.Value, "foo") - metadata, err = secrets.GetMetadata(client, secretID).Extract() + metadata, err = secrets.GetMetadata(context.TODO(), client, secretID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, metadata) th.AssertEquals(t, len(metadata), 3) @@ -144,10 +145,10 @@ func TestSecretsMetadataCRUD(t *testing.T) { th.AssertEquals(t, metadata["bar"], "baz") // Delete a metadatum - err = secrets.DeleteMetadatum(client, secretID, "foo").ExtractErr() + err = secrets.DeleteMetadatum(context.TODO(), client, secretID, "foo").ExtractErr() th.AssertNoErr(t, err) - metadata, err = secrets.GetMetadata(client, secretID).Extract() + metadata, err = secrets.GetMetadata(context.TODO(), client, secretID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, metadata) th.AssertEquals(t, len(metadata), 2) @@ -165,7 +166,7 @@ func TestSymmetricSecret(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSecret(t, client, secretID) - payload, err := secrets.GetPayload(client, secretID, nil).Extract() + payload, err := secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, string(payload)) } @@ -184,7 +185,7 @@ func TestCertificateSecret(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSecret(t, client, secretID) - payload, err := secrets.GetPayload(client, secretID, nil).Extract() + payload, err := secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, string(payload)) } @@ -203,7 +204,7 @@ func TestPrivateSecret(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSecret(t, client, secretID) - payload, err := secrets.GetPayload(client, secretID, nil).Extract() + payload, err := secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, string(payload)) } @@ -221,7 +222,7 @@ func TestPublicSecret(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSecret(t, client, secretID) - payload, err := secrets.GetPayload(client, secretID, nil).Extract() + payload, err := secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, string(payload)) } @@ -237,7 +238,7 @@ func TestPassphraseSecret(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSecret(t, client, secretID) - payload, err := secrets.GetPayload(client, secretID, nil).Extract() + payload, err := secrets.GetPayload(context.TODO(), client, secretID, nil).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, string(payload)) } diff --git a/internal/acceptance/openstack/loadbalancer/v2/amphorae_test.go b/internal/acceptance/openstack/loadbalancer/v2/amphorae_test.go index 4fa8cff9c3..9fa07addc1 100644 --- a/internal/acceptance/openstack/loadbalancer/v2/amphorae_test.go +++ b/internal/acceptance/openstack/loadbalancer/v2/amphorae_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestAmphoraeList(t *testing.T) { t.Fatalf("Unable to create a loadbalancer client: %v", err) } - allPages, err := amphorae.List(client, nil).AllPages() + allPages, err := amphorae.List(client, nil).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list amphorae: %v", err) } diff --git a/internal/acceptance/openstack/loadbalancer/v2/flavorprofiles_test.go b/internal/acceptance/openstack/loadbalancer/v2/flavorprofiles_test.go index a3c934cc94..bdd930d3c0 100644 --- a/internal/acceptance/openstack/loadbalancer/v2/flavorprofiles_test.go +++ b/internal/acceptance/openstack/loadbalancer/v2/flavorprofiles_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestFlavorProfilesList(t *testing.T) { client, err := clients.NewLoadBalancerV2Client() th.AssertNoErr(t, err) - allPages, err := flavorprofiles.List(client, nil).AllPages() + allPages, err := flavorprofiles.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allFlavorProfiles, err := flavorprofiles.ExtractFlavorProfiles(allPages) @@ -44,7 +45,7 @@ func TestFlavorProfilesCRUD(t *testing.T) { Name: tools.RandomString("TESTACCTUP-", 8), } - flavorProfileUpdated, err := flavorprofiles.Update(lbClient, flavorProfile.ID, flavorProfileUpdateOpts).Extract() + flavorProfileUpdated, err := flavorprofiles.Update(context.TODO(), lbClient, flavorProfile.ID, flavorProfileUpdateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, flavorProfileUpdateOpts.Name, flavorProfileUpdated.Name) diff --git a/internal/acceptance/openstack/loadbalancer/v2/flavors_test.go b/internal/acceptance/openstack/loadbalancer/v2/flavors_test.go index 4597e107ce..7681809841 100644 --- a/internal/acceptance/openstack/loadbalancer/v2/flavors_test.go +++ b/internal/acceptance/openstack/loadbalancer/v2/flavors_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestFlavorsList(t *testing.T) { t.Fatalf("Unable to create a loadbalancer client: %v", err) } - allPages, err := flavors.List(client, nil).AllPages() + allPages, err := flavors.List(client, nil).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list flavors: %v", err) } @@ -57,7 +58,7 @@ func TestFlavorsCRUD(t *testing.T) { Name: tools.RandomString("TESTACCTUP-", 8), } - flavorUpdated, err := flavors.Update(lbClient, flavor.ID, flavorUpdateOpts).Extract() + flavorUpdated, err := flavors.Update(context.TODO(), lbClient, flavor.ID, flavorUpdateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, flavorUpdateOpts.Name, flavorUpdated.Name) diff --git a/internal/acceptance/openstack/loadbalancer/v2/l7policies_test.go b/internal/acceptance/openstack/loadbalancer/v2/l7policies_test.go index ac61897e43..30f26b3e14 100644 --- a/internal/acceptance/openstack/loadbalancer/v2/l7policies_test.go +++ b/internal/acceptance/openstack/loadbalancer/v2/l7policies_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestL7PoliciesList(t *testing.T) { t.Fatalf("Unable to create a loadbalancer client: %v", err) } - allPages, err := l7policies.List(client, nil).AllPages() + allPages, err := l7policies.List(client, nil).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list l7policies: %v", err) } diff --git a/internal/acceptance/openstack/loadbalancer/v2/listeners_test.go b/internal/acceptance/openstack/loadbalancer/v2/listeners_test.go index bbabc35059..a172695638 100644 --- a/internal/acceptance/openstack/loadbalancer/v2/listeners_test.go +++ b/internal/acceptance/openstack/loadbalancer/v2/listeners_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestListenersList(t *testing.T) { t.Fatalf("Unable to create a loadbalancer client: %v", err) } - allPages, err := listeners.List(client, nil).AllPages() + allPages, err := listeners.List(client, nil).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list listeners: %v", err) } diff --git a/internal/acceptance/openstack/loadbalancer/v2/loadbalancer.go b/internal/acceptance/openstack/loadbalancer/v2/loadbalancer.go index 3be3c10f8b..a214f4626c 100644 --- a/internal/acceptance/openstack/loadbalancer/v2/loadbalancer.go +++ b/internal/acceptance/openstack/loadbalancer/v2/loadbalancer.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "fmt" "strings" "testing" @@ -36,7 +37,7 @@ func CreateListener(t *testing.T, client *gophercloud.ServiceClient, lb *loadbal ProtocolPort: listenerPort, } - listener, err := listeners.Create(client, createOpts).Extract() + listener, err := listeners.Create(context.TODO(), client, createOpts).Extract() if err != nil { return listener, err } @@ -88,7 +89,7 @@ func CreateListenerHTTP(t *testing.T, client *gophercloud.ServiceClient, lb *loa TLSVersions: tlsVersions, } - listener, err := listeners.Create(client, createOpts).Extract() + listener, err := listeners.Create(context.TODO(), client, createOpts).Extract() if err != nil { return listener, err } @@ -133,7 +134,7 @@ func CreateLoadBalancer(t *testing.T, client *gophercloud.ServiceClient, subnetI createOpts.VipQosPolicyID = policyID } - lb, err := loadbalancers.Create(client, createOpts).Extract() + lb, err := loadbalancers.Create(context.TODO(), client, createOpts).Extract() if err != nil { return lb, err } @@ -230,7 +231,7 @@ func CreateLoadBalancerFullyPopulated(t *testing.T, client *gophercloud.ServiceC createOpts.Tags = tags } - lb, err := loadbalancers.Create(client, createOpts).Extract() + lb, err := loadbalancers.Create(context.TODO(), client, createOpts).Extract() if err != nil { return lb, err } @@ -299,7 +300,7 @@ func CreateMember(t *testing.T, client *gophercloud.ServiceClient, lb *loadbalan t.Logf("Member create opts: %#v", createOpts) - member, err := pools.CreateMember(client, pool.ID, createOpts).Extract() + member, err := pools.CreateMember(context.TODO(), client, pool.ID, createOpts).Extract() if err != nil { return member, err } @@ -332,7 +333,7 @@ func CreateMonitor(t *testing.T, client *gophercloud.ServiceClient, lb *loadbala Type: monitors.TypePING, } - monitor, err := monitors.Create(client, createOpts).Extract() + monitor, err := monitors.Create(context.TODO(), client, createOpts).Extract() if err != nil { return monitor, err } @@ -370,7 +371,7 @@ func CreatePool(t *testing.T, client *gophercloud.ServiceClient, lb *loadbalance LBMethod: pools.LBMethodLeastConnections, } - pool, err := pools.Create(client, createOpts).Extract() + pool, err := pools.Create(context.TODO(), client, createOpts).Extract() if err != nil { return pool, err } @@ -407,7 +408,7 @@ func CreatePoolHTTP(t *testing.T, client *gophercloud.ServiceClient, lb *loadbal LBMethod: pools.LBMethodLeastConnections, } - pool, err := pools.Create(client, createOpts).Extract() + pool, err := pools.Create(context.TODO(), client, createOpts).Extract() if err != nil { return pool, err } @@ -445,7 +446,7 @@ func CreateL7Policy(t *testing.T, client *gophercloud.ServiceClient, listener *l Tags: tags, } - policy, err := l7policies.Create(client, createOpts).Extract() + policy, err := l7policies.Create(context.TODO(), client, createOpts).Extract() if err != nil { return policy, err } @@ -477,7 +478,7 @@ func CreateL7Rule(t *testing.T, client *gophercloud.ServiceClient, policyID stri Tags: tags, } - rule, err := l7policies.CreateRule(client, policyID, createOpts).Extract() + rule, err := l7policies.CreateRule(context.TODO(), client, policyID, createOpts).Extract() if err != nil { return rule, err } @@ -502,7 +503,7 @@ func CreateL7Rule(t *testing.T, client *gophercloud.ServiceClient, policyID stri func DeleteL7Policy(t *testing.T, client *gophercloud.ServiceClient, lbID, policyID string) { t.Logf("Attempting to delete l7 policy %s", policyID) - if err := l7policies.Delete(client, policyID).ExtractErr(); err != nil { + if err := l7policies.Delete(context.TODO(), client, policyID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete l7 policy: %v", err) } @@ -521,7 +522,7 @@ func DeleteL7Policy(t *testing.T, client *gophercloud.ServiceClient, lbID, polic func DeleteL7Rule(t *testing.T, client *gophercloud.ServiceClient, lbID, policyID, ruleID string) { t.Logf("Attempting to delete l7 rule %s", ruleID) - if err := l7policies.DeleteRule(client, policyID, ruleID).ExtractErr(); err != nil { + if err := l7policies.DeleteRule(context.TODO(), client, policyID, ruleID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete l7 rule: %v", err) } @@ -540,7 +541,7 @@ func DeleteL7Rule(t *testing.T, client *gophercloud.ServiceClient, lbID, policyI func DeleteListener(t *testing.T, client *gophercloud.ServiceClient, lbID, listenerID string) { t.Logf("Attempting to delete listener %s", listenerID) - if err := listeners.Delete(client, listenerID).ExtractErr(); err != nil { + if err := listeners.Delete(context.TODO(), client, listenerID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete listener: %v", err) } @@ -559,7 +560,7 @@ func DeleteListener(t *testing.T, client *gophercloud.ServiceClient, lbID, liste func DeleteMember(t *testing.T, client *gophercloud.ServiceClient, lbID, poolID, memberID string) { t.Logf("Attempting to delete member %s", memberID) - if err := pools.DeleteMember(client, poolID, memberID).ExtractErr(); err != nil { + if err := pools.DeleteMember(context.TODO(), client, poolID, memberID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete member: %s", memberID) } @@ -582,7 +583,7 @@ func DeleteLoadBalancer(t *testing.T, client *gophercloud.ServiceClient, lbID st Cascade: false, } - if err := loadbalancers.Delete(client, lbID, deleteOpts).ExtractErr(); err != nil { + if err := loadbalancers.Delete(context.TODO(), client, lbID, deleteOpts).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete loadbalancer: %v", err) } @@ -607,7 +608,7 @@ func CascadeDeleteLoadBalancer(t *testing.T, client *gophercloud.ServiceClient, Cascade: true, } - if err := loadbalancers.Delete(client, lbID, deleteOpts).ExtractErr(); err != nil { + if err := loadbalancers.Delete(context.TODO(), client, lbID, deleteOpts).ExtractErr(); err != nil { t.Fatalf("Unable to cascade delete loadbalancer: %v", err) } @@ -626,7 +627,7 @@ func CascadeDeleteLoadBalancer(t *testing.T, client *gophercloud.ServiceClient, func DeleteMonitor(t *testing.T, client *gophercloud.ServiceClient, lbID, monitorID string) { t.Logf("Attempting to delete monitor %s", monitorID) - if err := monitors.Delete(client, monitorID).ExtractErr(); err != nil { + if err := monitors.Delete(context.TODO(), client, monitorID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete monitor: %v", err) } @@ -644,7 +645,7 @@ func DeleteMonitor(t *testing.T, client *gophercloud.ServiceClient, lbID, monito func DeletePool(t *testing.T, client *gophercloud.ServiceClient, lbID, poolID string) { t.Logf("Attempting to delete pool %s", poolID) - if err := pools.Delete(client, poolID).ExtractErr(); err != nil { + if err := pools.Delete(context.TODO(), client, poolID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete pool: %v", err) } @@ -660,7 +661,7 @@ func DeletePool(t *testing.T, client *gophercloud.ServiceClient, lbID, poolID st // WaitForLoadBalancerState will wait until a loadbalancer reaches a given state. func WaitForLoadBalancerState(client *gophercloud.ServiceClient, lbID, status string) error { return tools.WaitFor(func() (bool, error) { - current, err := loadbalancers.Get(client, lbID).Extract() + current, err := loadbalancers.Get(context.TODO(), client, lbID).Extract() if err != nil { if httpStatus, ok := err.(gophercloud.ErrDefault404); ok { if httpStatus.Actual == 404 { @@ -695,7 +696,7 @@ func CreateFlavorProfile(t *testing.T, client *gophercloud.ServiceClient) (*flav FlavorData: flavorProfileData, } - flavorProfile, err := flavorprofiles.Create(client, createOpts).Extract() + flavorProfile, err := flavorprofiles.Create(context.TODO(), client, createOpts).Extract() if err != nil { return flavorProfile, err } @@ -710,7 +711,7 @@ func CreateFlavorProfile(t *testing.T, client *gophercloud.ServiceClient) (*flav } func DeleteFlavorProfile(t *testing.T, client *gophercloud.ServiceClient, flavorProfile *flavorprofiles.FlavorProfile) { - err := flavorprofiles.Delete(client, flavorProfile.ID).ExtractErr() + err := flavorprofiles.Delete(context.TODO(), client, flavorProfile.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete flavorprofile: %v", err) } @@ -729,7 +730,7 @@ func CreateFlavor(t *testing.T, client *gophercloud.ServiceClient, flavorProfile Enabled: true, } - flavor, err := flavors.Create(client, createOpts).Extract() + flavor, err := flavors.Create(context.TODO(), client, createOpts).Extract() if err != nil { return flavor, err } @@ -745,7 +746,7 @@ func CreateFlavor(t *testing.T, client *gophercloud.ServiceClient, flavorProfile } func DeleteFlavor(t *testing.T, client *gophercloud.ServiceClient, flavor *flavors.Flavor) { - err := flavors.Delete(client, flavor.ID).ExtractErr() + err := flavors.Delete(context.TODO(), client, flavor.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete flavor: %v", err) } diff --git a/internal/acceptance/openstack/loadbalancer/v2/loadbalancers_test.go b/internal/acceptance/openstack/loadbalancer/v2/loadbalancers_test.go index 3c16c52783..4334adbb14 100644 --- a/internal/acceptance/openstack/loadbalancer/v2/loadbalancers_test.go +++ b/internal/acceptance/openstack/loadbalancer/v2/loadbalancers_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,7 +23,7 @@ func TestLoadbalancersList(t *testing.T) { client, err := clients.NewLoadBalancerV2Client() th.AssertNoErr(t, err) - allPages, err := loadbalancers.List(client, nil).AllPages() + allPages, err := loadbalancers.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allLoadbalancers, err := loadbalancers.ExtractLoadBalancers(allPages) @@ -59,7 +60,7 @@ func TestLoadbalancersListByTags(t *testing.T) { listOpts := loadbalancers.ListOpts{ Tags: tags, } - allPages, err := loadbalancers.List(lbClient, listOpts).AllPages() + allPages, err := loadbalancers.List(lbClient, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allLoadbalancers, err := loadbalancers.ExtractLoadBalancers(allPages) th.AssertNoErr(t, err) @@ -69,7 +70,7 @@ func TestLoadbalancersListByTags(t *testing.T) { listOpts = loadbalancers.ListOpts{ TagsNot: tags, } - allPages, err = loadbalancers.List(lbClient, listOpts).AllPages() + allPages, err = loadbalancers.List(lbClient, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allLoadbalancers, err = loadbalancers.ExtractLoadBalancers(allPages) th.AssertNoErr(t, err) @@ -79,7 +80,7 @@ func TestLoadbalancersListByTags(t *testing.T) { listOpts = loadbalancers.ListOpts{ TagsAny: tags, } - allPages, err = loadbalancers.List(lbClient, listOpts).AllPages() + allPages, err = loadbalancers.List(lbClient, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allLoadbalancers, err = loadbalancers.ExtractLoadBalancers(allPages) th.AssertNoErr(t, err) @@ -89,7 +90,7 @@ func TestLoadbalancersListByTags(t *testing.T) { listOpts = loadbalancers.ListOpts{ TagsNotAny: tags, } - allPages, err = loadbalancers.List(lbClient, listOpts).AllPages() + allPages, err = loadbalancers.List(lbClient, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allLoadbalancers, err = loadbalancers.ExtractLoadBalancers(allPages) th.AssertNoErr(t, err) @@ -132,14 +133,14 @@ func TestLoadbalancerHTTPCRUD(t *testing.T) { Description: &newDescription, Tags: &tags, } - _, err = l7policies.Update(lbClient, policy.ID, updateL7policyOpts).Extract() + _, err = l7policies.Update(context.TODO(), lbClient, policy.ID, updateL7policyOpts).Extract() th.AssertNoErr(t, err) if err = WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newPolicy, err := l7policies.Get(lbClient, policy.ID).Extract() + newPolicy, err := l7policies.Get(context.TODO(), lbClient, policy.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPolicy) @@ -153,7 +154,7 @@ func TestLoadbalancerHTTPCRUD(t *testing.T) { th.AssertNoErr(t, err) defer DeleteL7Rule(t, lbClient, lb.ID, policy.ID, rule.ID) - allPages, err := l7policies.ListRules(lbClient, policy.ID, l7policies.ListRulesOpts{}).AllPages() + allPages, err := l7policies.ListRules(lbClient, policy.ID, l7policies.ListRulesOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allRules, err := l7policies.ExtractRules(allPages) th.AssertNoErr(t, err) @@ -168,14 +169,14 @@ func TestLoadbalancerHTTPCRUD(t *testing.T) { Value: "/images/special*", Tags: &tags, } - _, err = l7policies.UpdateRule(lbClient, policy.ID, rule.ID, updateL7ruleOpts).Extract() + _, err = l7policies.UpdateRule(context.TODO(), lbClient, policy.ID, rule.ID, updateL7ruleOpts).Extract() th.AssertNoErr(t, err) if err = WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newRule, err := l7policies.GetRule(lbClient, newPolicy.ID, rule.ID).Extract() + newRule, err := l7policies.GetRule(context.TODO(), lbClient, newPolicy.ID, rule.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newRule) @@ -193,14 +194,14 @@ func TestLoadbalancerHTTPCRUD(t *testing.T) { Name: &poolName, Description: &poolDescription, } - _, err = pools.Update(lbClient, pool.ID, updatePoolOpts).Extract() + _, err = pools.Update(context.TODO(), lbClient, pool.ID, updatePoolOpts).Extract() th.AssertNoErr(t, err) if err = WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newPool, err := pools.Get(lbClient, pool.ID).Extract() + newPool, err := pools.Get(context.TODO(), lbClient, pool.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPool) @@ -214,14 +215,14 @@ func TestLoadbalancerHTTPCRUD(t *testing.T) { RedirectPoolID: &newPool.ID, RedirectURL: &newRedirectURL, } - _, err = l7policies.Update(lbClient, policy.ID, updateL7policyOpts).Extract() + _, err = l7policies.Update(context.TODO(), lbClient, policy.ID, updateL7policyOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newPolicy, err = l7policies.Get(lbClient, policy.ID).Extract() + newPolicy, err = l7policies.Get(context.TODO(), lbClient, policy.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPolicy) @@ -312,14 +313,14 @@ func TestLoadbalancersCRUD(t *testing.T) { Description: &lbDescription, VipQosPolicyID: &policy2.ID, } - _, err = loadbalancers.Update(lbClient, lb.ID, updateLoadBalancerOpts).Extract() + _, err = loadbalancers.Update(context.TODO(), lbClient, lb.ID, updateLoadBalancerOpts).Extract() th.AssertNoErr(t, err) if err = WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newLB, err := loadbalancers.Get(lbClient, lb.ID).Extract() + newLB, err := loadbalancers.Get(context.TODO(), lbClient, lb.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newLB) @@ -327,7 +328,7 @@ func TestLoadbalancersCRUD(t *testing.T) { th.AssertEquals(t, newLB.Description, lbDescription) th.AssertEquals(t, newLB.VipQosPolicyID, policy2.ID) - lbStats, err := loadbalancers.GetStats(lbClient, lb.ID).Extract() + lbStats, err := loadbalancers.GetStats(context.TODO(), lbClient, lb.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, lbStats) @@ -346,14 +347,14 @@ func TestLoadbalancersCRUD(t *testing.T) { Name: &listenerName, Description: &listenerDescription, } - _, err = listeners.Update(lbClient, listener.ID, updateListenerOpts).Extract() + _, err = listeners.Update(context.TODO(), lbClient, listener.ID, updateListenerOpts).Extract() th.AssertNoErr(t, err) if err = WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newListener, err := listeners.Get(lbClient, listener.ID).Extract() + newListener, err := listeners.Get(context.TODO(), lbClient, listener.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newListener) @@ -361,7 +362,7 @@ func TestLoadbalancersCRUD(t *testing.T) { th.AssertEquals(t, newListener.Name, listenerName) th.AssertEquals(t, newListener.Description, listenerDescription) - listenerStats, err := listeners.GetStats(lbClient, listener.ID).Extract() + listenerStats, err := listeners.GetStats(context.TODO(), lbClient, listener.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, listenerStats) @@ -375,14 +376,14 @@ func TestLoadbalancersCRUD(t *testing.T) { updateListenerOpts = listeners.UpdateOpts{ DefaultPoolID: &pool.ID, } - _, err = listeners.Update(lbClient, listener.ID, updateListenerOpts).Extract() + _, err = listeners.Update(context.TODO(), lbClient, listener.ID, updateListenerOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newListener, err = listeners.Get(lbClient, listener.ID).Extract() + newListener, err = listeners.Get(context.TODO(), lbClient, listener.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newListener) @@ -394,14 +395,14 @@ func TestLoadbalancersCRUD(t *testing.T) { updateListenerOpts = listeners.UpdateOpts{ DefaultPoolID: &emptyPoolID, } - _, err = listeners.Update(lbClient, listener.ID, updateListenerOpts).Extract() + _, err = listeners.Update(context.TODO(), lbClient, listener.ID, updateListenerOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newListener, err = listeners.Get(lbClient, listener.ID).Extract() + newListener, err = listeners.Get(context.TODO(), lbClient, listener.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newListener) @@ -419,14 +420,14 @@ func TestLoadbalancersCRUD(t *testing.T) { Name: &memberName, Weight: &newWeight, } - _, err = pools.UpdateMember(lbClient, pool.ID, member.ID, updateMemberOpts).Extract() + _, err = pools.UpdateMember(context.TODO(), lbClient, pool.ID, member.ID, updateMemberOpts).Extract() th.AssertNoErr(t, err) if err = WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newMember, err := pools.GetMember(lbClient, pool.ID, member.ID).Extract() + newMember, err := pools.GetMember(context.TODO(), lbClient, pool.ID, member.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newMember) @@ -439,7 +440,7 @@ func TestLoadbalancersCRUD(t *testing.T) { Weight: &newWeight, } batchMembers := []pools.BatchUpdateMemberOpts{memberOpts} - if err = pools.BatchUpdateMembers(lbClient, pool.ID, batchMembers).ExtractErr(); err != nil { + if err = pools.BatchUpdateMembers(context.TODO(), lbClient, pool.ID, batchMembers).ExtractErr(); err != nil { t.Fatalf("Unable to batch update members") } @@ -447,12 +448,12 @@ func TestLoadbalancersCRUD(t *testing.T) { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newMember, err = pools.GetMember(lbClient, pool.ID, member.ID).Extract() + newMember, err = pools.GetMember(context.TODO(), lbClient, pool.ID, member.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newMember) - pool, err = pools.Get(lbClient, pool.ID).Extract() + pool, err = pools.Get(context.TODO(), lbClient, pool.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, pool) @@ -470,14 +471,14 @@ func TestLoadbalancersCRUD(t *testing.T) { Delay: newDelay, MaxRetriesDown: newMaxRetriesDown, } - _, err = monitors.Update(lbClient, monitor.ID, updateMonitorOpts).Extract() + _, err = monitors.Update(context.TODO(), lbClient, monitor.ID, updateMonitorOpts).Extract() th.AssertNoErr(t, err) if err = WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newMonitor, err := monitors.Get(lbClient, monitor.ID).Extract() + newMonitor, err := monitors.Get(context.TODO(), lbClient, monitor.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newMonitor) @@ -507,7 +508,7 @@ func TestLoadbalancersCascadeCRUD(t *testing.T) { th.AssertNoErr(t, err) defer CascadeDeleteLoadBalancer(t, lbClient, lb.ID) - newLB, err := loadbalancers.Get(lbClient, lb.ID).Extract() + newLB, err := loadbalancers.Get(context.TODO(), lbClient, lb.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newLB) @@ -523,14 +524,14 @@ func TestLoadbalancersCascadeCRUD(t *testing.T) { updateListenerOpts := listeners.UpdateOpts{ Description: &listenerDescription, } - _, err = listeners.Update(lbClient, listener.ID, updateListenerOpts).Extract() + _, err = listeners.Update(context.TODO(), lbClient, listener.ID, updateListenerOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newListener, err := listeners.Get(lbClient, listener.ID).Extract() + newListener, err := listeners.Get(context.TODO(), lbClient, listener.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newListener) @@ -543,14 +544,14 @@ func TestLoadbalancersCascadeCRUD(t *testing.T) { updatePoolOpts := pools.UpdateOpts{ Description: &poolDescription, } - _, err = pools.Update(lbClient, pool.ID, updatePoolOpts).Extract() + _, err = pools.Update(context.TODO(), lbClient, pool.ID, updatePoolOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newPool, err := pools.Get(lbClient, pool.ID).Extract() + newPool, err := pools.Get(context.TODO(), lbClient, pool.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPool) @@ -563,14 +564,14 @@ func TestLoadbalancersCascadeCRUD(t *testing.T) { updateMemberOpts := pools.UpdateMemberOpts{ Weight: &newWeight, } - _, err = pools.UpdateMember(lbClient, pool.ID, member.ID, updateMemberOpts).Extract() + _, err = pools.UpdateMember(context.TODO(), lbClient, pool.ID, member.ID, updateMemberOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newMember, err := pools.GetMember(lbClient, pool.ID, member.ID).Extract() + newMember, err := pools.GetMember(context.TODO(), lbClient, pool.ID, member.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newMember) @@ -585,14 +586,14 @@ func TestLoadbalancersCascadeCRUD(t *testing.T) { Delay: newDelay, MaxRetriesDown: newMaxRetriesDown, } - _, err = monitors.Update(lbClient, monitor.ID, updateMonitorOpts).Extract() + _, err = monitors.Update(context.TODO(), lbClient, monitor.ID, updateMonitorOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(lbClient, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newMonitor, err := monitors.Get(lbClient, monitor.ID).Extract() + newMonitor, err := monitors.Get(context.TODO(), lbClient, monitor.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newMonitor) @@ -621,7 +622,7 @@ func TestLoadbalancersFullyPopulatedCRUD(t *testing.T) { th.AssertNoErr(t, err) defer CascadeDeleteLoadBalancer(t, lbClient, lb.ID) - newLB, err := loadbalancers.Get(lbClient, lb.ID).Extract() + newLB, err := loadbalancers.Get(context.TODO(), lbClient, lb.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newLB) diff --git a/internal/acceptance/openstack/loadbalancer/v2/monitors_test.go b/internal/acceptance/openstack/loadbalancer/v2/monitors_test.go index 352b7e7cca..63e36c35ea 100644 --- a/internal/acceptance/openstack/loadbalancer/v2/monitors_test.go +++ b/internal/acceptance/openstack/loadbalancer/v2/monitors_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestMonitorsList(t *testing.T) { t.Fatalf("Unable to create a loadbalancer client: %v", err) } - allPages, err := monitors.List(client, nil).AllPages() + allPages, err := monitors.List(client, nil).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list monitors: %v", err) } diff --git a/internal/acceptance/openstack/loadbalancer/v2/pools_test.go b/internal/acceptance/openstack/loadbalancer/v2/pools_test.go index 62469b63de..7ac60041c5 100644 --- a/internal/acceptance/openstack/loadbalancer/v2/pools_test.go +++ b/internal/acceptance/openstack/loadbalancer/v2/pools_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestPoolsList(t *testing.T) { t.Fatalf("Unable to create a loadbalancer client: %v", err) } - allPages, err := pools.List(client, nil).AllPages() + allPages, err := pools.List(client, nil).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list pools: %v", err) } diff --git a/internal/acceptance/openstack/loadbalancer/v2/providers_test.go b/internal/acceptance/openstack/loadbalancer/v2/providers_test.go index 6326aa9ff6..987864ee36 100644 --- a/internal/acceptance/openstack/loadbalancer/v2/providers_test.go +++ b/internal/acceptance/openstack/loadbalancer/v2/providers_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestProvidersList(t *testing.T) { t.Fatalf("Unable to create a loadbalancer client: %v", err) } - allPages, err := providers.List(client, nil).AllPages() + allPages, err := providers.List(client, nil).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list providers: %v", err) } diff --git a/internal/acceptance/openstack/loadbalancer/v2/quotas_test.go b/internal/acceptance/openstack/loadbalancer/v2/quotas_test.go index 30e53974a7..2f722c51aa 100644 --- a/internal/acceptance/openstack/loadbalancer/v2/quotas_test.go +++ b/internal/acceptance/openstack/loadbalancer/v2/quotas_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "log" "os" "reflect" @@ -22,7 +23,7 @@ func TestQuotasGet(t *testing.T) { client, err := clients.NewLoadBalancerV2Client() th.AssertNoErr(t, err) - quotasInfo, err := quotas.Get(client, os.Getenv("OS_PROJECT_NAME")).Extract() + quotasInfo, err := quotas.Get(context.TODO(), client, os.Getenv("OS_PROJECT_NAME")).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, quotasInfo) @@ -34,7 +35,7 @@ func TestQuotasUpdate(t *testing.T) { client, err := clients.NewLoadBalancerV2Client() th.AssertNoErr(t, err) - originalQuotas, err := quotas.Get(client, os.Getenv("OS_PROJECT_NAME")).Extract() + originalQuotas, err := quotas.Get(context.TODO(), client, os.Getenv("OS_PROJECT_NAME")).Extract() th.AssertNoErr(t, err) var quotaUpdateOpts = quotas.UpdateOpts{ @@ -50,7 +51,7 @@ func TestQuotasUpdate(t *testing.T) { quotaUpdateOpts.L7Rule = gophercloud.IntToPointer(105) } - newQuotas, err := quotas.Update(client, os.Getenv("OS_PROJECT_NAME"), quotaUpdateOpts).Extract() + newQuotas, err := quotas.Update(context.TODO(), client, os.Getenv("OS_PROJECT_NAME"), quotaUpdateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newQuotas) @@ -73,7 +74,7 @@ func TestQuotasUpdate(t *testing.T) { } // Restore original quotas. - restoredQuotas, err := quotas.Update(client, os.Getenv("OS_PROJECT_NAME"), restoredQuotaUpdate).Extract() + restoredQuotas, err := quotas.Update(context.TODO(), client, os.Getenv("OS_PROJECT_NAME"), restoredQuotaUpdate).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, originalQuotas, restoredQuotas) diff --git a/internal/acceptance/openstack/messaging/v2/claims_test.go b/internal/acceptance/openstack/messaging/v2/claims_test.go index 0c2f5aeaa5..54f32f19f0 100644 --- a/internal/acceptance/openstack/messaging/v2/claims_test.go +++ b/internal/acceptance/openstack/messaging/v2/claims_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -45,7 +46,7 @@ func TestCRUDClaim(t *testing.T) { for _, claimID := range claimIDs { t.Logf("Attempting to update claim: %s", claimID) - updateErr := claims.Update(client, createdQueueName, claimID, updateOpts).ExtractErr() + updateErr := claims.Update(context.TODO(), client, createdQueueName, claimID, updateOpts).ExtractErr() if updateErr != nil { t.Fatalf("Unable to update claim %s: %v", claimID, err) diff --git a/internal/acceptance/openstack/messaging/v2/message_test.go b/internal/acceptance/openstack/messaging/v2/message_test.go index f3b67f9098..88ebb416d9 100644 --- a/internal/acceptance/openstack/messaging/v2/message_test.go +++ b/internal/acceptance/openstack/messaging/v2/message_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -38,7 +39,7 @@ func TestListMessages(t *testing.T) { listOpts := messages.ListOpts{} pager := messages.List(client, createdQueueName, listOpts) - err = pager.EachPage(func(page pagination.Page) (bool, error) { + err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { allMessages, err := messages.ExtractMessages(page) if err != nil { t.Fatalf("Unable to extract messages: %v", err) @@ -91,7 +92,7 @@ func TestGetMessages(t *testing.T) { var messageIDs []string pager := messages.List(client, createdQueueName, listOpts) - err = pager.EachPage(func(page pagination.Page) (bool, error) { + err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { allMessages, err := messages.ExtractMessages(page) if err != nil { t.Fatalf("Unable to extract messages: %v", err) @@ -108,7 +109,7 @@ func TestGetMessages(t *testing.T) { IDs: messageIDs, } t.Logf("Attempting to get messages from queue %s with ids: %v", createdQueueName, messageIDs) - messagesList, err := messages.GetMessages(client, createdQueueName, getMessageOpts).Extract() + messagesList, err := messages.GetMessages(context.TODO(), client, createdQueueName, getMessageOpts).Extract() if err != nil { t.Fatalf("Unable to get messages from queue: %s", createdQueueName) } @@ -138,7 +139,7 @@ func TestGetMessage(t *testing.T) { var messageIDs []string pager := messages.List(client, createdQueueName, listOpts) - err = pager.EachPage(func(page pagination.Page) (bool, error) { + err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { allMessages, err := messages.ExtractMessages(page) if err != nil { t.Fatalf("Unable to extract messages: %v", err) @@ -153,7 +154,7 @@ func TestGetMessage(t *testing.T) { for _, messageID := range messageIDs { t.Logf("Attempting to get message from queue %s: %s", createdQueueName, messageID) - message, getErr := messages.Get(client, createdQueueName, messageID).Extract() + message, getErr := messages.Get(context.TODO(), client, createdQueueName, messageID).Extract() if getErr != nil { t.Fatalf("Unable to get message from queue %s: %s", createdQueueName, messageID) } @@ -185,7 +186,7 @@ func TestDeleteMessagesIDs(t *testing.T) { var messageIDs []string pager := messages.List(client, createdQueueName, listOpts) - err = pager.EachPage(func(page pagination.Page) (bool, error) { + err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { allMessages, err := messages.ExtractMessages(page) if err != nil { t.Fatalf("Unable to extract messages: %v", err) @@ -204,7 +205,7 @@ func TestDeleteMessagesIDs(t *testing.T) { } t.Logf("Attempting to delete messages: %v", messageIDs) - deleteErr := messages.DeleteMessages(client, createdQueueName, deleteOpts).ExtractErr() + deleteErr := messages.DeleteMessages(context.TODO(), client, createdQueueName, deleteOpts).ExtractErr() if deleteErr != nil { t.Fatalf("Unable to delete messages: %v", deleteErr) } @@ -247,7 +248,7 @@ func TestDeleteMessagesPop(t *testing.T) { } t.Logf("Attempting to Pop last %v messages.", popNumber) - popMessages, deleteErr := messages.PopMessages(client, createdQueueName, PopOpts).Extract() + popMessages, deleteErr := messages.PopMessages(context.TODO(), client, createdQueueName, PopOpts).Extract() if deleteErr != nil { t.Fatalf("Unable to Pop messages: %v", deleteErr) } @@ -282,7 +283,7 @@ func TestDeleteMessage(t *testing.T) { var messageIDs []string pager := messages.List(client, createdQueueName, listOpts) - err = pager.EachPage(func(page pagination.Page) (bool, error) { + err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { allMessages, err := messages.ExtractMessages(page) if err != nil { t.Fatalf("Unable to extract messages: %v", err) @@ -298,7 +299,7 @@ func TestDeleteMessage(t *testing.T) { for _, messageID := range messageIDs { t.Logf("Attempting to delete message from queue %s: %s", createdQueueName, messageID) deleteOpts := messages.DeleteOpts{} - deleteErr := messages.Delete(client, createdQueueName, messageID, deleteOpts).ExtractErr() + deleteErr := messages.Delete(context.TODO(), client, createdQueueName, messageID, deleteOpts).ExtractErr() if deleteErr != nil { t.Fatalf("Unable to delete message from queue %s: %s", createdQueueName, messageID) } else { diff --git a/internal/acceptance/openstack/messaging/v2/messaging.go b/internal/acceptance/openstack/messaging/v2/messaging.go index afb7dbb147..5f0f1231bb 100644 --- a/internal/acceptance/openstack/messaging/v2/messaging.go +++ b/internal/acceptance/openstack/messaging/v2/messaging.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "strings" "testing" @@ -26,7 +27,7 @@ func CreateQueue(t *testing.T, client *gophercloud.ServiceClient) (string, error Extra: map[string]interface{}{"description": "Test Queue for Gophercloud acceptance tests."}, } - createErr := queues.Create(client, createOpts).ExtractErr() + createErr := queues.Create(context.TODO(), client, createOpts).ExtractErr() if createErr != nil { t.Fatalf("Unable to create Queue: %v", createErr) } @@ -39,7 +40,7 @@ func CreateQueue(t *testing.T, client *gophercloud.ServiceClient) (string, error func DeleteQueue(t *testing.T, client *gophercloud.ServiceClient, queueName string) { t.Logf("Attempting to delete Queue: %s", queueName) - err := queues.Delete(client, queueName).ExtractErr() + err := queues.Delete(context.TODO(), client, queueName).ExtractErr() if err != nil { t.Fatalf("Unable to delete Queue %s: %v", queueName, err) } @@ -49,7 +50,7 @@ func DeleteQueue(t *testing.T, client *gophercloud.ServiceClient, queueName stri func GetQueue(t *testing.T, client *gophercloud.ServiceClient, queueName string) (queues.QueueDetails, error) { t.Logf("Attempting to get Queue: %s", queueName) - queue, err := queues.Get(client, queueName).Extract() + queue, err := queues.Get(context.TODO(), client, queueName).Extract() if err != nil { t.Fatalf("Unable to get Queue %s: %v", queueName, err) } @@ -64,7 +65,7 @@ func CreateShare(t *testing.T, client *gophercloud.ServiceClient, queueName stri Methods: []queues.ShareMethod{queues.MethodPost}, } - share, err := queues.Share(client, queueName, shareOpts).Extract() + share, err := queues.Share(context.TODO(), client, queueName, shareOpts).Extract() return share, err } @@ -78,7 +79,7 @@ func CreateMessage(t *testing.T, client *gophercloud.ServiceClient, queueName st }, } - resource, err := messages.Create(client, queueName, createOpts).Extract() + resource, err := messages.Create(context.TODO(), client, queueName, createOpts).Extract() if err != nil { t.Fatalf("Unable to add message to queue %s: %v", queueName, err) } else { @@ -95,7 +96,7 @@ func ListMessages(t *testing.T, client *gophercloud.ServiceClient, queueName str t.Logf("Attempting to list messages on queue: %s", queueName) pager := messages.List(client, queueName, listOpts) - err := pager.EachPage(func(page pagination.Page) (bool, error) { + err := pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { allMessages, listErr = messages.ExtractMessages(page) if listErr != nil { t.Fatalf("Unable to extract messages: %v", listErr) @@ -114,7 +115,7 @@ func CreateClaim(t *testing.T, client *gophercloud.ServiceClient, queueName stri createOpts := claims.CreateOpts{} t.Logf("Attempting to create claim on queue: %s", queueName) - claimedMessages, err := claims.Create(client, queueName, createOpts).Extract() + claimedMessages, err := claims.Create(context.TODO(), client, queueName, createOpts).Extract() tools.PrintResource(t, claimedMessages) if err != nil { t.Fatalf("Unable to create claim: %v", err) @@ -125,7 +126,7 @@ func CreateClaim(t *testing.T, client *gophercloud.ServiceClient, queueName stri func GetClaim(t *testing.T, client *gophercloud.ServiceClient, queueName string, claimID string) (*claims.Claim, error) { t.Logf("Attempting to get claim: %s", claimID) - claim, err := claims.Get(client, queueName, claimID).Extract() + claim, err := claims.Get(context.TODO(), client, queueName, claimID).Extract() if err != nil { t.Fatalf("Unable to get claim: %s", claimID) } @@ -135,7 +136,7 @@ func GetClaim(t *testing.T, client *gophercloud.ServiceClient, queueName string, func DeleteClaim(t *testing.T, client *gophercloud.ServiceClient, queueName string, claimID string) error { t.Logf("Attempting to delete claim: %s", claimID) - err := claims.Delete(client, queueName, claimID).ExtractErr() + err := claims.Delete(context.TODO(), client, queueName, claimID).ExtractErr() if err != nil { t.Fatalf("Unable to delete claim: %s", claimID) } diff --git a/internal/acceptance/openstack/messaging/v2/queue_test.go b/internal/acceptance/openstack/messaging/v2/queue_test.go index 478573f936..b8eaaa0cf6 100644 --- a/internal/acceptance/openstack/messaging/v2/queue_test.go +++ b/internal/acceptance/openstack/messaging/v2/queue_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -23,7 +24,7 @@ func TestCRUDQueues(t *testing.T) { createdQueueName, err := CreateQueue(t, client) defer DeleteQueue(t, client, createdQueueName) - createdQueue, err := queues.Get(client, createdQueueName).Extract() + createdQueue, err := queues.Get(context.TODO(), client, createdQueueName).Extract() tools.PrintResource(t, createdQueue) tools.PrintResource(t, createdQueue.Extra) @@ -42,7 +43,7 @@ func TestCRUDQueues(t *testing.T) { } t.Logf("Attempting to update Queue: %s", createdQueueName) - updateResult, updateErr := queues.Update(client, createdQueueName, updateOpts).Extract() + updateResult, updateErr := queues.Update(context.TODO(), client, createdQueueName, updateOpts).Extract() if updateErr != nil { t.Fatalf("Unable to update Queue %s: %v", createdQueueName, updateErr) } @@ -74,7 +75,7 @@ func TestListQueues(t *testing.T) { } pager := queues.List(client, listOpts) - err = pager.EachPage(func(page pagination.Page) (bool, error) { + err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { allQueues, err := queues.ExtractQueues(page) if err != nil { t.Fatalf("Unable to extract Queues: %v", err) @@ -99,7 +100,7 @@ func TestStatQueue(t *testing.T) { createdQueueName, err := CreateQueue(t, client) defer DeleteQueue(t, client, createdQueueName) - queueStats, err := queues.GetStats(client, createdQueueName).Extract() + queueStats, err := queues.GetStats(context.TODO(), client, createdQueueName).Extract() if err != nil { t.Fatalf("Unable to stat queue: %v", err) } @@ -148,7 +149,7 @@ func TestPurge(t *testing.T) { } t.Logf("Attempting to purge queue: %s", queueName) - purgeErr := queues.Purge(client, queueName, purgeOpts).ExtractErr() + purgeErr := queues.Purge(context.TODO(), client, queueName, purgeOpts).ExtractErr() if purgeErr != nil { t.Fatalf("Unable to purge queue %s: %v", queueName, purgeErr) } diff --git a/internal/acceptance/openstack/networking/v2/apiversion_test.go b/internal/acceptance/openstack/networking/v2/apiversion_test.go index ce28c3c606..6237210ea9 100644 --- a/internal/acceptance/openstack/networking/v2/apiversion_test.go +++ b/internal/acceptance/openstack/networking/v2/apiversion_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestAPIVersionsList(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - allPages, err := apiversions.ListVersions(client).AllPages() + allPages, err := apiversions.ListVersions(client).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list api versions: %v", err) } @@ -38,7 +39,7 @@ func TestAPIResourcesList(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - allPages, err := apiversions.ListVersionResources(client, "v2.0").AllPages() + allPages, err := apiversions.ListVersionResources(client, "v2.0").AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list api version resources: %v", err) } diff --git a/internal/acceptance/openstack/networking/v2/extension_test.go b/internal/acceptance/openstack/networking/v2/extension_test.go index d6d0212812..dd8f563135 100644 --- a/internal/acceptance/openstack/networking/v2/extension_test.go +++ b/internal/acceptance/openstack/networking/v2/extension_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestExtensionsList(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - allPages, err := extensions.List(client).AllPages() + allPages, err := extensions.List(client).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list extensions: %v", err) } @@ -38,7 +39,7 @@ func TestExtensionGet(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - extension, err := extensions.Get(client, "router").Extract() + extension, err := extensions.Get(context.TODO(), client, "router").Extract() if err != nil { t.Fatalf("Unable to get extension port-security: %v", err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/agents/agents_test.go b/internal/acceptance/openstack/networking/v2/extensions/agents/agents_test.go index 878a85e2d5..c68facb7ac 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/agents/agents_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/agents/agents_test.go @@ -4,6 +4,7 @@ package agents import ( + "context" "testing" "time" @@ -23,7 +24,7 @@ func TestAgentsRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - allPages, err := agents.List(client, agents.ListOpts{}).AllPages() + allPages, err := agents.List(client, agents.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allAgents, err := agents.ExtractAgents(allPages) @@ -36,7 +37,7 @@ func TestAgentsRUD(t *testing.T) { listOpts := &agents.ListOpts{ AgentType: "DHCP agent", } - allPages, err = agents.List(client, listOpts).AllPages() + allPages, err = agents.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allAgents, err = agents.ExtractAgents(allPages) @@ -48,7 +49,7 @@ func TestAgentsRUD(t *testing.T) { // List DHCP agent networks for _, agent := range allAgents { t.Logf("Retrieving DHCP networks from the agent: %s", agent.ID) - networks, err := agents.ListDHCPNetworks(client, agent.ID).Extract() + networks, err := agents.ListDHCPNetworks(context.TODO(), client, agent.ID).Extract() th.AssertNoErr(t, err) for _, network := range networks { t.Logf("Retrieved %q network, assigned to a %q DHCP agent", network.ID, agent.ID) @@ -56,7 +57,7 @@ func TestAgentsRUD(t *testing.T) { } // Get a single agent - agent, err := agents.Get(client, allAgents[0].ID).Extract() + agent, err := agents.Get(context.TODO(), client, allAgents[0].ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, agent) @@ -65,12 +66,12 @@ func TestAgentsRUD(t *testing.T) { updateOpts := &agents.UpdateOpts{ Description: &description, } - agent, err = agents.Update(client, allAgents[0].ID, updateOpts).Extract() + agent, err = agents.Update(context.TODO(), client, allAgents[0].ID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, agent.Description, description) // Restore original description - agent, err = agents.Update(client, allAgents[0].ID, &agents.UpdateOpts{Description: &allAgents[0].Description}).Extract() + agent, err = agents.Update(context.TODO(), client, allAgents[0].ID, &agents.UpdateOpts{Description: &allAgents[0].Description}).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, agent.Description, allAgents[0].Description) @@ -82,17 +83,17 @@ func TestAgentsRUD(t *testing.T) { opts := &agents.ScheduleDHCPNetworkOpts{ NetworkID: network.ID, } - err = agents.ScheduleDHCPNetwork(client, allAgents[0].ID, opts).ExtractErr() + err = agents.ScheduleDHCPNetwork(context.TODO(), client, allAgents[0].ID, opts).ExtractErr() th.AssertNoErr(t, err) - err = agents.RemoveDHCPNetwork(client, allAgents[0].ID, network.ID).ExtractErr() + err = agents.RemoveDHCPNetwork(context.TODO(), client, allAgents[0].ID, network.ID).ExtractErr() th.AssertNoErr(t, err) // skip this part t.Skip("Skip DHCP agent deletion") // Delete a DHCP agent - err = agents.Delete(client, allAgents[0].ID).ExtractErr() + err = agents.Delete(context.TODO(), client, allAgents[0].ID).ExtractErr() th.AssertNoErr(t, err) } @@ -107,7 +108,7 @@ func TestBGPAgentRUD(t *testing.T) { listOpts := &agents.ListOpts{ AgentType: "BGP Dynamic Routing Agent", } - allPages, err := agents.List(client, listOpts).AllPages() + allPages, err := agents.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allAgents, err := agents.ExtractAgents(allPages) @@ -119,7 +120,7 @@ func TestBGPAgentRUD(t *testing.T) { // Create a BGP Speaker bgpSpeaker, err := spk.CreateBGPSpeaker(t, client) th.AssertNoErr(t, err) - pages, err := agents.ListDRAgentHostingBGPSpeakers(client, bgpSpeaker.ID).AllPages() + pages, err := agents.ListDRAgentHostingBGPSpeakers(client, bgpSpeaker.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) bgpAgents, err := agents.ExtractAgents(pages) th.AssertNoErr(t, err) @@ -131,7 +132,7 @@ func TestBGPAgentRUD(t *testing.T) { flag := true for _, agt := range bgpAgents { t.Logf("BGP Speaker %s has been scheduled to agent %s", bgpSpeaker.ID, agt.ID) - bgpAgent, err := agents.Get(client, agt.ID).Extract() + bgpAgent, err := agents.Get(context.TODO(), client, agt.ID).Extract() th.AssertNoErr(t, err) numOfSpeakers := int(bgpAgent.Configurations["bgp_speakers"].(float64)) flag = flag && (numOfSpeakers == 1) @@ -141,12 +142,12 @@ func TestBGPAgentRUD(t *testing.T) { th.AssertNoErr(t, err) // Remove the BGP Speaker from the first agent - err = agents.RemoveBGPSpeaker(client, bgpAgents[0].ID, bgpSpeaker.ID).ExtractErr() + err = agents.RemoveBGPSpeaker(context.TODO(), client, bgpAgents[0].ID, bgpSpeaker.ID).ExtractErr() th.AssertNoErr(t, err) t.Logf("BGP Speaker %s has been removed from agent %s", bgpSpeaker.ID, bgpAgents[0].ID) err = tools.WaitForTimeout( func() (bool, error) { - bgpAgent, err := agents.Get(client, bgpAgents[0].ID).Extract() + bgpAgent, err := agents.Get(context.TODO(), client, bgpAgents[0].ID).Extract() th.AssertNoErr(t, err) agentConf := bgpAgent.Configurations numOfSpeakers := int(agentConf["bgp_speakers"].(float64)) @@ -156,25 +157,25 @@ func TestBGPAgentRUD(t *testing.T) { th.AssertNoErr(t, err) // Remove all BGP Speakers from the agent - pages, err = agents.ListBGPSpeakers(client, bgpAgents[0].ID).AllPages() + pages, err = agents.ListBGPSpeakers(client, bgpAgents[0].ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allSpeakers, err := agents.ExtractBGPSpeakers(pages) th.AssertNoErr(t, err) for _, speaker := range allSpeakers { - th.AssertNoErr(t, agents.RemoveBGPSpeaker(client, bgpAgents[0].ID, speaker.ID).ExtractErr()) + th.AssertNoErr(t, agents.RemoveBGPSpeaker(context.TODO(), client, bgpAgents[0].ID, speaker.ID).ExtractErr()) } // Schedule a BGP Speaker to an agent opts := agents.ScheduleBGPSpeakerOpts{ SpeakerID: bgpSpeaker.ID, } - err = agents.ScheduleBGPSpeaker(client, bgpAgents[0].ID, opts).ExtractErr() + err = agents.ScheduleBGPSpeaker(context.TODO(), client, bgpAgents[0].ID, opts).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully scheduled speaker %s to agent %s", bgpSpeaker.ID, bgpAgents[0].ID) err = tools.WaitForTimeout( func() (bool, error) { - bgpAgent, err := agents.Get(client, bgpAgents[0].ID).Extract() + bgpAgent, err := agents.Get(context.TODO(), client, bgpAgents[0].ID).Extract() th.AssertNoErr(t, err) agentConf := bgpAgent.Configurations numOfSpeakers := int(agentConf["bgp_speakers"].(float64)) @@ -184,12 +185,12 @@ func TestBGPAgentRUD(t *testing.T) { th.AssertNoErr(t, err) // Delete the BGP Speaker - speakers.Delete(client, bgpSpeaker.ID).ExtractErr() + speakers.Delete(context.TODO(), client, bgpSpeaker.ID).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully deleted the BGP Speaker, %s", bgpSpeaker.ID) err = tools.WaitForTimeout( func() (bool, error) { - bgpAgent, err := agents.Get(client, bgpAgents[0].ID).Extract() + bgpAgent, err := agents.Get(context.TODO(), client, bgpAgents[0].ID).Extract() th.AssertNoErr(t, err) agentConf := bgpAgent.Configurations numOfSpeakers := int(agentConf["bgp_speakers"].(float64)) diff --git a/internal/acceptance/openstack/networking/v2/extensions/attributestags_test.go b/internal/acceptance/openstack/networking/v2/extensions/attributestags_test.go index f9890fba93..8f029269b0 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/attributestags_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/attributestags_test.go @@ -4,6 +4,7 @@ package extensions import ( + "context" "fmt" "sort" "testing" @@ -26,13 +27,13 @@ func createNetworkWithTags(t *testing.T, client *gophercloud.ServiceClient, tags // docs say list of tags, but it's a set e.g no duplicates Tags: tags, } - rtags, err := attributestags.ReplaceAll(client, "networks", network.ID, tagReplaceAllOpts).Extract() + rtags, err := attributestags.ReplaceAll(context.TODO(), client, "networks", network.ID, tagReplaceAllOpts).Extract() th.AssertNoErr(t, err) sort.Strings(rtags) // Ensure ordering, older OpenStack versions aren't sorted... th.AssertDeepEquals(t, rtags, tags) // Verify the tags are also set in the object Get response - gnetwork, err := networks.Get(client, network.ID).Extract() + gnetwork, err := networks.Get(context.TODO(), client, network.ID).Extract() th.AssertNoErr(t, err) rtags = gnetwork.Tags sort.Strings(rtags) @@ -49,36 +50,36 @@ func TestTags(t *testing.T) { defer networking.DeleteNetwork(t, client, network.ID) // Add a tag - err = attributestags.Add(client, "networks", network.ID, "d").ExtractErr() + err = attributestags.Add(context.TODO(), client, "networks", network.ID, "d").ExtractErr() th.AssertNoErr(t, err) // Delete a tag - err = attributestags.Delete(client, "networks", network.ID, "a").ExtractErr() + err = attributestags.Delete(context.TODO(), client, "networks", network.ID, "a").ExtractErr() th.AssertNoErr(t, err) // Verify expected tags are set in the List response - tags, err := attributestags.List(client, "networks", network.ID).Extract() + tags, err := attributestags.List(context.TODO(), client, "networks", network.ID).Extract() th.AssertNoErr(t, err) sort.Strings(tags) th.AssertDeepEquals(t, []string{"b", "c", "d"}, tags) // Confirm tags exist/don't exist - exists, err := attributestags.Confirm(client, "networks", network.ID, "d").Extract() + exists, err := attributestags.Confirm(context.TODO(), client, "networks", network.ID, "d").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, true, exists) - noexists, err := attributestags.Confirm(client, "networks", network.ID, "a").Extract() + noexists, err := attributestags.Confirm(context.TODO(), client, "networks", network.ID, "a").Extract() th.AssertEquals(t, false, noexists) // Delete all tags - err = attributestags.DeleteAll(client, "networks", network.ID).ExtractErr() + err = attributestags.DeleteAll(context.TODO(), client, "networks", network.ID).ExtractErr() th.AssertNoErr(t, err) - tags, err = attributestags.List(client, "networks", network.ID).Extract() + tags, err = attributestags.List(context.TODO(), client, "networks", network.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, 0, len(tags)) } func listNetworkWithTagOpts(t *testing.T, client *gophercloud.ServiceClient, listOpts networks.ListOpts) (ids []string) { - allPages, err := networks.List(client, listOpts).AllPages() + allPages, err := networks.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allNetworks, err := networks.ExtractNetworks(allPages) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/networking/v2/extensions/bgp/peers/bgppeers_test.go b/internal/acceptance/openstack/networking/v2/extensions/bgp/peers/bgppeers_test.go index caf750a954..5cd0959765 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/bgp/peers/bgppeers_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/bgp/peers/bgppeers_test.go @@ -1,6 +1,7 @@ package peers import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -20,7 +21,7 @@ func TestBGPPeerCRUD(t *testing.T) { th.AssertNoErr(t, err) // Get a BGP Peer - bgpPeerGot, err := peers.Get(client, bgpPeerCreated.ID).Extract() + bgpPeerGot, err := peers.Get(context.TODO(), client, bgpPeerCreated.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, bgpPeerCreated.ID, bgpPeerGot.ID) th.AssertEquals(t, bgpPeerCreated.Name, bgpPeerGot.Name) @@ -31,13 +32,13 @@ func TestBGPPeerCRUD(t *testing.T) { Name: newBGPPeerName, Password: tools.MakeNewPassword(""), } - bgpPeerUpdated, err := peers.Update(client, bgpPeerGot.ID, updateBGPOpts).Extract() + bgpPeerUpdated, err := peers.Update(context.TODO(), client, bgpPeerGot.ID, updateBGPOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, bgpPeerUpdated.Name, newBGPPeerName) t.Logf("Update BGP Peer, renamed from %s to %s", bgpPeerGot.Name, bgpPeerUpdated.Name) // List all BGP Peers - allPages, err := peers.List(client).AllPages() + allPages, err := peers.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allPeers, err := peers.ExtractBGPPeers(allPages) th.AssertNoErr(t, err) @@ -48,10 +49,10 @@ func TestBGPPeerCRUD(t *testing.T) { // Delete a BGP Peer t.Logf("Attempting to delete BGP Peer: %s", bgpPeerUpdated.Name) - err = peers.Delete(client, bgpPeerGot.ID).ExtractErr() + err = peers.Delete(context.TODO(), client, bgpPeerGot.ID).ExtractErr() th.AssertNoErr(t, err) - bgpPeerGot, err = peers.Get(client, bgpPeerGot.ID).Extract() + bgpPeerGot, err = peers.Get(context.TODO(), client, bgpPeerGot.ID).Extract() th.AssertErr(t, err) t.Logf("BGP Peer %s deleted", bgpPeerUpdated.Name) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/bgp/peers/peers.go b/internal/acceptance/openstack/networking/v2/extensions/bgp/peers/peers.go index 5dc21c3ebb..198673498b 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/bgp/peers/peers.go +++ b/internal/acceptance/openstack/networking/v2/extensions/bgp/peers/peers.go @@ -1,6 +1,7 @@ package peers import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -18,7 +19,7 @@ func CreateBGPPeer(t *testing.T, client *gophercloud.ServiceClient) (*peers.BGPP opts.PeerIP = "192.168.0.1" t.Logf("Attempting to create BGP Peer: %s", opts.Name) - bgpPeer, err := peers.Create(client, opts).Extract() + bgpPeer, err := peers.Create(context.TODO(), client, opts).Extract() if err != nil { return bgpPeer, err } diff --git a/internal/acceptance/openstack/networking/v2/extensions/bgp/speakers/bgpspeakers_test.go b/internal/acceptance/openstack/networking/v2/extensions/bgp/speakers/bgpspeakers_test.go index bd51df0cc2..ed0a381b15 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/bgp/speakers/bgpspeakers_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/bgp/speakers/bgpspeakers_test.go @@ -1,6 +1,7 @@ package speakers import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -26,7 +27,7 @@ func TestBGPSpeakerCRUD(t *testing.T) { th.AssertNoErr(t, err) // List BGP Speakers - allPages, err := speakers.List(client).AllPages() + allPages, err := speakers.List(client).AllPages(context.TODO()) th.AssertNoErr(t, err) allSpeakers, err := speakers.ExtractBGPSpeakers(allPages) th.AssertNoErr(t, err) @@ -46,37 +47,37 @@ func TestBGPSpeakerCRUD(t *testing.T) { AdvertiseTenantNetworks: false, AdvertiseFloatingIPHostRoutes: true, } - speakerUpdated, err := speakers.Update(client, bgpSpeaker.ID, opts).Extract() + speakerUpdated, err := speakers.Update(context.TODO(), client, bgpSpeaker.ID, opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, speakerUpdated.Name, opts.Name) t.Logf("Updated the BGP Speaker, name set from %s to %s", bgpSpeaker.Name, speakerUpdated.Name) // Get a BGP Speaker - bgpSpeakerGot, err := speakers.Get(client, bgpSpeaker.ID).Extract() + bgpSpeakerGot, err := speakers.Get(context.TODO(), client, bgpSpeaker.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, bgpSpeaker.ID, bgpSpeakerGot.ID) th.AssertEquals(t, opts.Name, bgpSpeakerGot.Name) // AddBGPPeer addBGPPeerOpts := speakers.AddBGPPeerOpts{BGPPeerID: bgpPeer.ID} - _, err = speakers.AddBGPPeer(client, bgpSpeaker.ID, addBGPPeerOpts).Extract() + _, err = speakers.AddBGPPeer(context.TODO(), client, bgpSpeaker.ID, addBGPPeerOpts).Extract() th.AssertNoErr(t, err) - speakerGot, err := speakers.Get(client, bgpSpeaker.ID).Extract() + speakerGot, err := speakers.Get(context.TODO(), client, bgpSpeaker.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, bgpPeer.ID, speakerGot.Peers[0]) t.Logf("Successfully added BGP Peer %s to BGP Speaker %s", bgpPeer.Name, speakerUpdated.Name) // RemoveBGPPeer removeBGPPeerOpts := speakers.RemoveBGPPeerOpts{BGPPeerID: bgpPeer.ID} - err = speakers.RemoveBGPPeer(client, bgpSpeaker.ID, removeBGPPeerOpts).ExtractErr() + err = speakers.RemoveBGPPeer(context.TODO(), client, bgpSpeaker.ID, removeBGPPeerOpts).ExtractErr() th.AssertNoErr(t, err) - speakerGot, err = speakers.Get(client, bgpSpeaker.ID).Extract() + speakerGot, err = speakers.Get(context.TODO(), client, bgpSpeaker.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, len(speakerGot.Networks), 0) t.Logf("Successfully removed BGP Peer %s to BGP Speaker %s", bgpPeer.Name, speakerUpdated.Name) // GetAdvertisedRoutes - pages, err := speakers.GetAdvertisedRoutes(client, bgpSpeaker.ID).AllPages() + pages, err := speakers.GetAdvertisedRoutes(client, bgpSpeaker.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) routes, err := speakers.ExtractAdvertisedRoutes(pages) th.AssertNoErr(t, err) @@ -85,24 +86,24 @@ func TestBGPSpeakerCRUD(t *testing.T) { // AddGatewayNetwork optsAddGatewayNetwork := speakers.AddGatewayNetworkOpts{NetworkID: network.ID} - r, err := speakers.AddGatewayNetwork(client, bgpSpeaker.ID, optsAddGatewayNetwork).Extract() + r, err := speakers.AddGatewayNetwork(context.TODO(), client, bgpSpeaker.ID, optsAddGatewayNetwork).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, r.NetworkID, network.ID) t.Logf("Successfully added gateway network %s to BGP Speaker", network.ID) // RemoveGatewayNetwork optsRemoveGatewayNetwork := speakers.RemoveGatewayNetworkOpts{NetworkID: network.ID} - err = speakers.RemoveGatewayNetwork(client, bgpSpeaker.ID, optsRemoveGatewayNetwork).ExtractErr() + err = speakers.RemoveGatewayNetwork(context.TODO(), client, bgpSpeaker.ID, optsRemoveGatewayNetwork).ExtractErr() th.AssertNoErr(t, err) t.Logf("Successfully removed gateway network %s to BGP Speaker", network.ID) // Delete a BGP Peer t.Logf("Delete the BGP Peer %s", bgpPeer.Name) - err = peers.Delete(client, bgpPeer.ID).ExtractErr() + err = peers.Delete(context.TODO(), client, bgpPeer.ID).ExtractErr() th.AssertNoErr(t, err) // Delete a BGP Speaker t.Logf("Delete the BGP Speaker %s", speakerUpdated.Name) - err = speakers.Delete(client, bgpSpeaker.ID).ExtractErr() + err = speakers.Delete(context.TODO(), client, bgpSpeaker.ID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/bgp/speakers/speakers.go b/internal/acceptance/openstack/networking/v2/extensions/bgp/speakers/speakers.go index 4bb3750eb1..d9e620144d 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/bgp/speakers/speakers.go +++ b/internal/acceptance/openstack/networking/v2/extensions/bgp/speakers/speakers.go @@ -1,6 +1,7 @@ package speakers import ( + "context" "strconv" "testing" @@ -21,7 +22,7 @@ func CreateBGPSpeaker(t *testing.T, client *gophercloud.ServiceClient) (*speaker } t.Logf("Attempting to create BGP Speaker: %s", opts.Name) - bgpSpeaker, err := speakers.Create(client, opts).Extract() + bgpSpeaker, err := speakers.Create(context.TODO(), client, opts).Extract() if err != nil { return bgpSpeaker, err } diff --git a/internal/acceptance/openstack/networking/v2/extensions/dns/dns.go b/internal/acceptance/openstack/networking/v2/extensions/dns/dns.go index 29ebcdf71e..7c1c513d12 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/dns/dns.go +++ b/internal/acceptance/openstack/networking/v2/extensions/dns/dns.go @@ -1,6 +1,7 @@ package dns import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -54,7 +55,7 @@ func CreatePortDNS(t *testing.T, client *gophercloud.ServiceClient, networkID, s var port PortWithDNSExt - err := ports.Create(client, createOpts).ExtractInto(&port) + err := ports.Create(context.TODO(), client, createOpts).ExtractInto(&port) if err != nil { return &port, err } @@ -87,7 +88,7 @@ func CreateFloatingIPDNS(t *testing.T, client *gophercloud.ServiceClient, networ } var floatingIP FloatingIPWithDNSExt - err := floatingips.Create(client, createOpts).ExtractInto(&floatingIP) + err := floatingips.Create(context.TODO(), client, createOpts).ExtractInto(&floatingIP) if err != nil { return &floatingIP, err } @@ -121,7 +122,7 @@ func CreateNetworkDNS(t *testing.T, client *gophercloud.ServiceClient, dnsDomain var network NetworkWithDNSExt - err := networks.Create(client, createOpts).ExtractInto(&network) + err := networks.Create(context.TODO(), client, createOpts).ExtractInto(&network) if err != nil { return &network, err } diff --git a/internal/acceptance/openstack/networking/v2/extensions/dns/dns_test.go b/internal/acceptance/openstack/networking/v2/extensions/dns/dns_test.go index 134b951b17..bdd9e9d7d8 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/dns/dns_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/dns/dns_test.go @@ -4,6 +4,7 @@ package dns import ( + "context" "os" "testing" @@ -26,7 +27,7 @@ func TestDNSPortCRUDL(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(client, "dns-integration").Extract() + extension, err := extensions.Get(context.TODO(), client, "dns-integration").Extract() if err != nil { t.Skip("This test requires dns-integration Neutron extension") } @@ -60,7 +61,7 @@ func TestDNSPortCRUDL(t *testing.T) { } var listedPorts []PortWithDNSExt i := 0 - err = ports.List(client, listOpts).EachPage(func(page pagination.Page) (bool, error) { + err = ports.List(client, listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { i++ err := ports.ExtractPortsInto(page, &listedPorts) if err != nil { @@ -84,7 +85,7 @@ func TestDNSPortCRUDL(t *testing.T) { DNSName: "foo", } i = 0 - err = ports.List(client, listOpts).EachPage(func(page pagination.Page) (bool, error) { + err = ports.List(client, listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { i++ err := ports.ExtractPortsInto(page, &listedPorts) if err != nil { @@ -105,7 +106,7 @@ func TestDNSPortCRUDL(t *testing.T) { // Get port var getPort PortWithDNSExt - err = ports.Get(client, port.ID).ExtractInto(&getPort) + err = ports.Get(context.TODO(), client, port.ID).ExtractInto(&getPort) th.AssertNoErr(t, err) tools.PrintResource(t, getPort) @@ -126,7 +127,7 @@ func TestDNSPortCRUDL(t *testing.T) { } var newPort PortWithDNSExt - err = ports.Update(client, port.ID, updateOpts).ExtractInto(&newPort) + err = ports.Update(context.TODO(), client, port.ID, updateOpts).ExtractInto(&newPort) th.AssertNoErr(t, err) tools.PrintResource(t, newPort) @@ -136,7 +137,7 @@ func TestDNSPortCRUDL(t *testing.T) { // Get updated port var getNewPort PortWithDNSExt - err = ports.Get(client, port.ID).ExtractInto(&getNewPort) + err = ports.Get(context.TODO(), client, port.ID).ExtractInto(&getNewPort) th.AssertNoErr(t, err) tools.PrintResource(t, getNewPort) @@ -153,7 +154,7 @@ func TestDNSFloatingIPCRDL(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(client, "dns-integration").Extract() + extension, err := extensions.Get(context.TODO(), client, "dns-integration").Extract() if err != nil { t.Skip("This test requires dns-integration Neutron extension") } @@ -202,7 +203,7 @@ func TestDNSFloatingIPCRDL(t *testing.T) { // Get floating IP var getFip FloatingIPWithDNSExt - err = floatingips.Get(client, fip.ID).ExtractInto(&getFip) + err = floatingips.Get(context.TODO(), client, fip.ID).ExtractInto(&getFip) th.AssertNoErr(t, err) tools.PrintResource(t, getFip) @@ -215,7 +216,7 @@ func TestDNSNetwork(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(client, "dns-integration").Extract() + extension, err := extensions.Get(context.TODO(), client, "dns-integration").Extract() if err != nil { t.Skip("This test requires dns-integration Neutron extension") } @@ -229,7 +230,7 @@ func TestDNSNetwork(t *testing.T) { // Get network var getNetwork NetworkWithDNSExt - err = networks.Get(client, network.ID).ExtractInto(&getNetwork) + err = networks.Get(context.TODO(), client, network.ID).ExtractInto(&getNetwork) th.AssertNoErr(t, err) tools.PrintResource(t, getNetwork) @@ -250,7 +251,7 @@ func TestDNSNetwork(t *testing.T) { } var newNetwork NetworkWithDNSExt - err = networks.Update(client, network.ID, updateOpts).ExtractInto(&newNetwork) + err = networks.Update(context.TODO(), client, network.ID, updateOpts).ExtractInto(&newNetwork) th.AssertNoErr(t, err) tools.PrintResource(t, newNetwork) @@ -260,7 +261,7 @@ func TestDNSNetwork(t *testing.T) { // Get updated network var getNewNetwork NetworkWithDNSExt - err = networks.Get(client, network.ID).ExtractInto(&getNewNetwork) + err = networks.Get(context.TODO(), client, network.ID).ExtractInto(&getNewNetwork) th.AssertNoErr(t, err) tools.PrintResource(t, getNewNetwork) diff --git a/internal/acceptance/openstack/networking/v2/extensions/extensions.go b/internal/acceptance/openstack/networking/v2/extensions/extensions.go index 9554888f99..4de1401f4d 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/extensions.go +++ b/internal/acceptance/openstack/networking/v2/extensions/extensions.go @@ -1,6 +1,7 @@ package extensions import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -35,7 +36,7 @@ func CreateExternalNetwork(t *testing.T, client *gophercloud.ServiceClient) (*ne External: &isExternal, } - network, err := networks.Create(client, createOpts).Extract() + network, err := networks.Create(context.TODO(), client, createOpts).Extract() if err != nil { return network, err } @@ -66,7 +67,7 @@ func CreatePortWithSecurityGroup(t *testing.T, client *gophercloud.ServiceClient SecurityGroups: &[]string{secGroupID}, } - port, err := ports.Create(client, createOpts).Extract() + port, err := ports.Create(context.TODO(), client, createOpts).Extract() if err != nil { return port, err } @@ -93,7 +94,7 @@ func CreateSecurityGroup(t *testing.T, client *gophercloud.ServiceClient) (*grou Description: secGroupDescription, } - secGroup, err := groups.Create(client, createOpts).Extract() + secGroup, err := groups.Create(context.TODO(), client, createOpts).Extract() if err != nil { return secGroup, err } @@ -126,7 +127,7 @@ func CreateSecurityGroupRule(t *testing.T, client *gophercloud.ServiceClient, se Protocol: rules.ProtocolTCP, } - rule, err := rules.Create(client, createOpts).Extract() + rule, err := rules.Create(context.TODO(), client, createOpts).Extract() if err != nil { return rule, err } @@ -145,7 +146,7 @@ func CreateSecurityGroupRule(t *testing.T, client *gophercloud.ServiceClient, se func DeleteSecurityGroup(t *testing.T, client *gophercloud.ServiceClient, secGroupID string) { t.Logf("Attempting to delete security group: %s", secGroupID) - err := groups.Delete(client, secGroupID).ExtractErr() + err := groups.Delete(context.TODO(), client, secGroupID).ExtractErr() if err != nil { t.Fatalf("Unable to delete security group: %v", err) } @@ -157,7 +158,7 @@ func DeleteSecurityGroup(t *testing.T, client *gophercloud.ServiceClient, secGro func DeleteSecurityGroupRule(t *testing.T, client *gophercloud.ServiceClient, ruleID string) { t.Logf("Attempting to delete security group rule: %s", ruleID) - err := rules.Delete(client, ruleID).ExtractErr() + err := rules.Delete(context.TODO(), client, ruleID).ExtractErr() if err != nil { t.Fatalf("Unable to delete security group rule: %v", err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/fwaas/firewall_test.go b/internal/acceptance/openstack/networking/v2/extensions/fwaas/firewall_test.go index 74b7392813..69706ddef3 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/fwaas/firewall_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/fwaas/firewall_test.go @@ -4,6 +4,7 @@ package fwaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -49,10 +50,10 @@ func TestFirewallCRUD(t *testing.T) { PolicyID: policy.ID, } - _, err = firewalls.Update(client, firewall.ID, fwUpdateOpts).Extract() + _, err = firewalls.Update(context.TODO(), client, firewall.ID, fwUpdateOpts).Extract() th.AssertNoErr(t, err) - newFirewall, err := firewalls.Get(client, firewall.ID).Extract() + newFirewall, err := firewalls.Get(context.TODO(), client, firewall.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newFirewall) @@ -60,7 +61,7 @@ func TestFirewallCRUD(t *testing.T) { th.AssertEquals(t, newFirewall.Description, fwDescription) th.AssertEquals(t, newFirewall.PolicyID, policy.ID) - allPages, err := firewalls.List(client, nil).AllPages() + allPages, err := firewalls.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allFirewalls, err := firewalls.ExtractFirewalls(allPages) @@ -118,10 +119,10 @@ func TestFirewallCRUDRouter(t *testing.T) { []string{router2.ID}, } - _, err = firewalls.Update(client, firewall.ID, updateOpts).Extract() + _, err = firewalls.Update(context.TODO(), client, firewall.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newFirewall, err := firewalls.Get(client, firewall.ID).Extract() + newFirewall, err := firewalls.Get(context.TODO(), client, firewall.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newFirewall) @@ -165,10 +166,10 @@ func TestFirewallCRUDRemoveRouter(t *testing.T) { []string{}, } - _, err = firewalls.Update(client, firewall.ID, updateOpts).Extract() + _, err = firewalls.Update(context.TODO(), client, firewall.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newFirewall, err := firewalls.Get(client, firewall.ID).Extract() + newFirewall, err := firewalls.Get(context.TODO(), client, firewall.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newFirewall) diff --git a/internal/acceptance/openstack/networking/v2/extensions/fwaas/fwaas.go b/internal/acceptance/openstack/networking/v2/extensions/fwaas/fwaas.go index 7c0a3abea4..616eef4288 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/fwaas/fwaas.go +++ b/internal/acceptance/openstack/networking/v2/extensions/fwaas/fwaas.go @@ -1,6 +1,7 @@ package fwaas import ( + "context" "fmt" "strconv" "testing" @@ -30,7 +31,7 @@ func CreateFirewall(t *testing.T, client *gophercloud.ServiceClient, policyID st AdminStateUp: &iTrue, } - firewall, err := firewalls.Create(client, createOpts).Extract() + firewall, err := firewalls.Create(context.TODO(), client, createOpts).Extract() if err != nil { return firewall, err } @@ -68,7 +69,7 @@ func CreateFirewallOnRouter(t *testing.T, client *gophercloud.ServiceClient, pol RouterIDs: []string{routerID}, } - firewall, err := firewalls.Create(client, createOpts).Extract() + firewall, err := firewalls.Create(context.TODO(), client, createOpts).Extract() if err != nil { return firewall, err } @@ -102,7 +103,7 @@ func CreatePolicy(t *testing.T, client *gophercloud.ServiceClient, ruleID string }, } - policy, err := policies.Create(client, createOpts).Extract() + policy, err := policies.Create(context.TODO(), client, createOpts).Extract() if err != nil { return policy, err } @@ -139,7 +140,7 @@ func CreateRule(t *testing.T, client *gophercloud.ServiceClient) (*rules.Rule, e DestinationPort: destinationPort, } - rule, err := rules.Create(client, createOpts).Extract() + rule, err := rules.Create(context.TODO(), client, createOpts).Extract() if err != nil { return rule, err } @@ -162,7 +163,7 @@ func CreateRule(t *testing.T, client *gophercloud.ServiceClient) (*rules.Rule, e func DeleteFirewall(t *testing.T, client *gophercloud.ServiceClient, firewallID string) { t.Logf("Attempting to delete firewall: %s", firewallID) - err := firewalls.Delete(client, firewallID).ExtractErr() + err := firewalls.Delete(context.TODO(), client, firewallID).ExtractErr() if err != nil { t.Fatalf("Unable to delete firewall %s: %v", firewallID, err) } @@ -181,7 +182,7 @@ func DeleteFirewall(t *testing.T, client *gophercloud.ServiceClient, firewallID func DeletePolicy(t *testing.T, client *gophercloud.ServiceClient, policyID string) { t.Logf("Attempting to delete policy: %s", policyID) - err := policies.Delete(client, policyID).ExtractErr() + err := policies.Delete(context.TODO(), client, policyID).ExtractErr() if err != nil { t.Fatalf("Unable to delete policy %s: %v", policyID, err) } @@ -195,7 +196,7 @@ func DeletePolicy(t *testing.T, client *gophercloud.ServiceClient, policyID stri func DeleteRule(t *testing.T, client *gophercloud.ServiceClient, ruleID string) { t.Logf("Attempting to delete rule: %s", ruleID) - err := rules.Delete(client, ruleID).ExtractErr() + err := rules.Delete(context.TODO(), client, ruleID).ExtractErr() if err != nil { t.Fatalf("Unable to delete rule %s: %v", ruleID, err) } @@ -206,7 +207,7 @@ func DeleteRule(t *testing.T, client *gophercloud.ServiceClient, ruleID string) // WaitForFirewallState will wait until a firewall reaches a given state. func WaitForFirewallState(client *gophercloud.ServiceClient, firewallID, status string) error { return tools.WaitFor(func() (bool, error) { - current, err := firewalls.Get(client, firewallID).Extract() + current, err := firewalls.Get(context.TODO(), client, firewallID).Extract() if err != nil { if httpStatus, ok := err.(gophercloud.ErrDefault404); ok { if httpStatus.Actual == 404 { diff --git a/internal/acceptance/openstack/networking/v2/extensions/fwaas/policy_test.go b/internal/acceptance/openstack/networking/v2/extensions/fwaas/policy_test.go index 04b016ec2c..06375f01db 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/fwaas/policy_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/fwaas/policy_test.go @@ -4,6 +4,7 @@ package fwaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -36,17 +37,17 @@ func TestPolicyCRUD(t *testing.T) { Description: &description, } - _, err = policies.Update(client, policy.ID, updateOpts).Extract() + _, err = policies.Update(context.TODO(), client, policy.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newPolicy, err := policies.Get(client, policy.ID).Extract() + newPolicy, err := policies.Get(context.TODO(), client, policy.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPolicy) th.AssertEquals(t, newPolicy.Name, name) th.AssertEquals(t, newPolicy.Description, description) - allPages, err := policies.List(client, nil).AllPages() + allPages, err := policies.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicies, err := policies.ExtractPolicies(allPages) diff --git a/internal/acceptance/openstack/networking/v2/extensions/fwaas/rule_test.go b/internal/acceptance/openstack/networking/v2/extensions/fwaas/rule_test.go index 6d0b693ee1..15254dc35a 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/fwaas/rule_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/fwaas/rule_test.go @@ -4,6 +4,7 @@ package fwaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -28,15 +29,15 @@ func TestRuleCRUD(t *testing.T) { Description: &ruleDescription, } - _, err = rules.Update(client, rule.ID, updateOpts).Extract() + _, err = rules.Update(context.TODO(), client, rule.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newRule, err := rules.Get(client, rule.ID).Extract() + newRule, err := rules.Get(context.TODO(), client, rule.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newRule) - allPages, err := rules.List(client, nil).AllPages() + allPages, err := rules.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allRules, err := rules.ExtractRules(allPages) diff --git a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/fwaas_v2.go b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/fwaas_v2.go index 580d64cb9a..805b2265be 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/fwaas_v2.go +++ b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/fwaas_v2.go @@ -1,6 +1,7 @@ package fwaas_v2 import ( + "context" "fmt" "strconv" "testing" @@ -17,7 +18,7 @@ import ( func RemoveRule(t *testing.T, client *gophercloud.ServiceClient, policyID string, ruleID string) { t.Logf("Attempting to remove rule %s from policy %s", ruleID, policyID) - _, err := policies.RemoveRule(client, policyID, ruleID).Extract() + _, err := policies.RemoveRule(context.TODO(), client, policyID, ruleID).Extract() if err != nil { t.Fatalf("Unable to remove rule %s from policy %s: %v", ruleID, policyID, err) } @@ -32,7 +33,7 @@ func AddRule(t *testing.T, client *gophercloud.ServiceClient, policyID string, r InsertBefore: beforeRuleID, } - _, err := policies.InsertRule(client, policyID, addOpts).Extract() + _, err := policies.InsertRule(context.TODO(), client, policyID, addOpts).Extract() if err != nil { t.Fatalf("Unable to insert rule %s before rule %s in policy %s: %v", ruleID, beforeRuleID, policyID, err) } @@ -54,7 +55,7 @@ func CreatePolicy(t *testing.T, client *gophercloud.ServiceClient, ruleID string }, } - policy, err := policies.Create(client, createOpts).Extract() + policy, err := policies.Create(context.TODO(), client, createOpts).Extract() if err != nil { return policy, err } @@ -93,7 +94,7 @@ func CreateRule(t *testing.T, client *gophercloud.ServiceClient) (*rules.Rule, e DestinationPort: destinationPort, } - rule, err := rules.Create(client, createOpts).Extract() + rule, err := rules.Create(context.TODO(), client, createOpts).Extract() if err != nil { return rule, err } @@ -117,7 +118,7 @@ func CreateRule(t *testing.T, client *gophercloud.ServiceClient) (*rules.Rule, e func DeletePolicy(t *testing.T, client *gophercloud.ServiceClient, policyID string) { t.Logf("Attempting to delete policy: %s", policyID) - err := policies.Delete(client, policyID).ExtractErr() + err := policies.Delete(context.TODO(), client, policyID).ExtractErr() if err != nil { t.Fatalf("Unable to delete policy %s: %v", policyID, err) } @@ -131,7 +132,7 @@ func DeletePolicy(t *testing.T, client *gophercloud.ServiceClient, policyID stri func DeleteRule(t *testing.T, client *gophercloud.ServiceClient, ruleID string) { t.Logf("Attempting to delete rule: %s", ruleID) - err := rules.Delete(client, ruleID).ExtractErr() + err := rules.Delete(context.TODO(), client, ruleID).ExtractErr() if err != nil { t.Fatalf("Unable to delete rule %s: %v", ruleID, err) } @@ -158,7 +159,7 @@ func CreateGroup(t *testing.T, client *gophercloud.ServiceClient) (*groups.Group t.Logf("Attempting to create firewall group %s", groupName) - group, err := groups.Create(client, createOpts).Extract() + group, err := groups.Create(context.TODO(), client, createOpts).Extract() if err != nil { return group, err } @@ -175,7 +176,7 @@ func CreateGroup(t *testing.T, client *gophercloud.ServiceClient) (*groups.Group func DeleteGroup(t *testing.T, client *gophercloud.ServiceClient, groupId string) { t.Logf("Attempting to delete firewall group %s", groupId) - err := groups.Delete(client, groupId).ExtractErr() + err := groups.Delete(context.TODO(), client, groupId).ExtractErr() if err != nil { t.Fatalf("Unable to delete firewall group %s: %v", groupId, err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/groups_test.go b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/groups_test.go index 0480252a5a..a948a0da5d 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/groups_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/groups_test.go @@ -4,6 +4,7 @@ package fwaas_v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -83,7 +84,7 @@ func TestGroupCRUD(t *testing.T) { t.Logf("Egress policy removed from firewall group %s", updatedGroup.ID) - allPages, err := groups.List(client, nil).AllPages() + allPages, err := groups.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allGroups, err := groups.ExtractGroups(allPages) diff --git a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/policy_test.go b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/policy_test.go index b058d79ffc..5c683a65b6 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/policy_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/policy_test.go @@ -4,6 +4,7 @@ package fwaas_v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -55,10 +56,10 @@ func TestPolicyCRUD(t *testing.T) { FirewallRules: &[]string{}, } - _, err = policies.Update(client, policy.ID, updateOpts).Extract() + _, err = policies.Update(context.TODO(), client, policy.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newPolicy, err := policies.Get(client, policy.ID).Extract() + newPolicy, err := policies.Get(context.TODO(), client, policy.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPolicy) @@ -66,7 +67,7 @@ func TestPolicyCRUD(t *testing.T) { th.AssertEquals(t, newPolicy.Description, description) th.AssertEquals(t, len(newPolicy.Rules), 0) - allPages, err := policies.List(client, nil).AllPages() + allPages, err := policies.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicies, err := policies.ExtractPolicies(allPages) diff --git a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/rule_test.go b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/rule_test.go index 2e854eea56..fc1ea944e0 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/rule_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/rule_test.go @@ -4,6 +4,7 @@ package fwaas_v2 import ( + "context" "fmt" "strconv" "testing" @@ -38,18 +39,18 @@ func TestRuleCRUD(t *testing.T) { SourcePort: &ruleSourcePort, } - ruleUpdated, err := rules.Update(client, rule.ID, updateOpts).Extract() + ruleUpdated, err := rules.Update(context.TODO(), client, rule.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ruleUpdated.Description, ruleDescription) th.AssertEquals(t, ruleUpdated.SourcePort, ruleSourcePortInt) th.AssertEquals(t, ruleUpdated.Protocol, string(ruleProtocol)) - newRule, err := rules.Get(client, rule.ID).Extract() + newRule, err := rules.Get(context.TODO(), client, rule.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newRule) - allPages, err := rules.List(client, nil).AllPages() + allPages, err := rules.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allRules, err := rules.ExtractRules(allPages) diff --git a/internal/acceptance/openstack/networking/v2/extensions/layer3/addressscopes_test.go b/internal/acceptance/openstack/networking/v2/extensions/layer3/addressscopes_test.go index 885e2b4995..194bcfd336 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/layer3/addressscopes_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/layer3/addressscopes_test.go @@ -4,6 +4,7 @@ package layer3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -28,16 +29,16 @@ func TestAddressScopesCRUD(t *testing.T) { Name: &newName, } - _, err = addressscopes.Update(client, addressScope.ID, updateOpts).Extract() + _, err = addressscopes.Update(context.TODO(), client, addressScope.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newAddressScope, err := addressscopes.Get(client, addressScope.ID).Extract() + newAddressScope, err := addressscopes.Get(context.TODO(), client, addressScope.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newAddressScope) th.AssertEquals(t, newAddressScope.Name, newName) - allPages, err := addressscopes.List(client, nil).AllPages() + allPages, err := addressscopes.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allAddressScopes, err := addressscopes.ExtractAddressScopes(allPages) diff --git a/internal/acceptance/openstack/networking/v2/extensions/layer3/extraroutes_test.go b/internal/acceptance/openstack/networking/v2/extensions/layer3/extraroutes_test.go index ef1eea42ac..5a8469ddc3 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/layer3/extraroutes_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/layer3/extraroutes_test.go @@ -4,6 +4,7 @@ package layer3 import ( + "context" "fmt" "net" "testing" @@ -43,7 +44,7 @@ func TestLayer3ExtraRoutesAddRemove(t *testing.T) { aiOpts := routers.AddInterfaceOpts{ SubnetID: subnet.ID, } - iface, err := routers.AddInterface(client, router.ID, aiOpts).Extract() + iface, err := routers.AddInterface(context.TODO(), client, router.ID, aiOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, iface) @@ -53,7 +54,7 @@ func TestLayer3ExtraRoutesAddRemove(t *testing.T) { riOpts := routers.RemoveInterfaceOpts{ SubnetID: subnet.ID, } - _, err = routers.RemoveInterface(client, router.ID, riOpts).Extract() + _, err = routers.RemoveInterface(context.TODO(), client, router.ID, riOpts).Extract() th.AssertNoErr(t, err) }() @@ -63,7 +64,7 @@ func TestLayer3ExtraRoutesAddRemove(t *testing.T) { opts := routers.UpdateOpts{ Routes: &routes, } - _, err = routers.Update(client, router.ID, opts).Extract() + _, err = routers.Update(context.TODO(), client, router.ID, opts).Extract() th.AssertNoErr(t, err) }() @@ -80,7 +81,7 @@ func TestLayer3ExtraRoutesAddRemove(t *testing.T) { updateOpts := routers.UpdateOpts{ Routes: &routes, } - _, err = routers.Update(client, router.ID, updateOpts).Extract() + _, err = routers.Update(context.TODO(), client, router.ID, updateOpts).Extract() th.AssertNoErr(t, err) newRoutes := []routers.Route{ @@ -97,12 +98,12 @@ func TestLayer3ExtraRoutesAddRemove(t *testing.T) { Routes: &newRoutes, } // add new routes - rt, err := extraroutes.Add(client, router.ID, opts).Extract() + rt, err := extraroutes.Add(context.TODO(), client, router.ID, opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, append(routes, newRoutes...), rt.Routes) // remove new routes - rt, err = extraroutes.Remove(client, router.ID, opts).Extract() + rt, err = extraroutes.Remove(context.TODO(), client, router.ID, opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, routes, rt.Routes) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/layer3/floatingips_test.go b/internal/acceptance/openstack/networking/v2/extensions/layer3/floatingips_test.go index f4b0fdfb22..f258bec4ea 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/layer3/floatingips_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/layer3/floatingips_test.go @@ -4,6 +4,7 @@ package layer3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -25,12 +26,12 @@ func TestLayer3FloatingIPsCreateDelete(t *testing.T) { th.AssertNoErr(t, err) defer DeleteFloatingIP(t, client, fip.ID) - newFip, err := floatingips.Get(client, fip.ID).Extract() + newFip, err := floatingips.Get(context.TODO(), client, fip.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newFip) - allPages, err := floatingips.List(client, floatingips.ListOpts{}).AllPages() + allPages, err := floatingips.List(client, floatingips.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allFIPs, err := floatingips.ExtractFloatingIPs(allPages) @@ -81,7 +82,7 @@ func TestLayer3FloatingIPsExternalCreateDelete(t *testing.T) { th.AssertNoErr(t, err) defer DeleteFloatingIP(t, client, fip.ID) - newFip, err := floatingips.Get(client, fip.ID).Extract() + newFip, err := floatingips.Get(context.TODO(), client, fip.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newFip) @@ -91,10 +92,10 @@ func TestLayer3FloatingIPsExternalCreateDelete(t *testing.T) { PortID: new(string), } - _, err = floatingips.Update(client, fip.ID, updateOpts).Extract() + _, err = floatingips.Update(context.TODO(), client, fip.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newFip, err = floatingips.Get(client, fip.ID).Extract() + newFip, err = floatingips.Get(context.TODO(), client, fip.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newFip) @@ -141,7 +142,7 @@ func TestLayer3FloatingIPsWithFixedIPsExternalCreateDelete(t *testing.T) { th.AssertNoErr(t, err) defer DeleteFloatingIP(t, client, fip.ID) - newFip, err := floatingips.Get(client, fip.ID).Extract() + newFip, err := floatingips.Get(context.TODO(), client, fip.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newFip) @@ -152,10 +153,10 @@ func TestLayer3FloatingIPsWithFixedIPsExternalCreateDelete(t *testing.T) { FixedIP: fixedIPs[1], } - _, err = floatingips.Update(client, fip.ID, updateOpts).Extract() + _, err = floatingips.Update(context.TODO(), client, fip.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newFip, err = floatingips.Get(client, fip.ID).Extract() + newFip, err = floatingips.Get(context.TODO(), client, fip.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newFip) @@ -167,7 +168,7 @@ func TestLayer3FloatingIPsWithFixedIPsExternalCreateDelete(t *testing.T) { PortID: new(string), } - _, err = floatingips.Update(client, fip.ID, updateOpts).Extract() + _, err = floatingips.Update(context.TODO(), client, fip.ID, updateOpts).Extract() th.AssertNoErr(t, err) } @@ -185,7 +186,7 @@ func TestLayer3FloatingIPsCreateDeleteBySubnetID(t *testing.T) { IPVersion: 4, } - subnetPages, err := subnets.List(client, listOpts).AllPages() + subnetPages, err := subnets.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allSubnets, err := subnets.ExtractSubnets(subnetPages) @@ -196,7 +197,7 @@ func TestLayer3FloatingIPsCreateDeleteBySubnetID(t *testing.T) { SubnetID: allSubnets[0].ID, } - fip, err := floatingips.Create(client, createOpts).Extract() + fip, err := floatingips.Create(context.TODO(), client, createOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, fip) diff --git a/internal/acceptance/openstack/networking/v2/extensions/layer3/l3_scheduling_test.go b/internal/acceptance/openstack/networking/v2/extensions/layer3/l3_scheduling_test.go index 62c41ff30a..57818c160d 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/layer3/l3_scheduling_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/layer3/l3_scheduling_test.go @@ -4,6 +4,7 @@ package layer3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestLayer3RouterScheduling(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - _, err = extensions.Get(client, "l3_agent_scheduler").Extract() + _, err = extensions.Get(context.TODO(), client, "l3_agent_scheduler").Extract() if err != nil { t.Skip("Extension l3_agent_scheduler not present") } @@ -43,7 +44,7 @@ func TestLayer3RouterScheduling(t *testing.T) { defer DeleteRouterInterface(t, client, routerInterface.PortID, router.ID) // List hosting agent - allPages, err := routers.ListL3Agents(client, router.ID).AllPages() + allPages, err := routers.ListL3Agents(client, router.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) hostingAgents, err := routers.ExtractL3Agents(allPages) th.AssertNoErr(t, err) @@ -52,7 +53,7 @@ func TestLayer3RouterScheduling(t *testing.T) { t.Logf("Router %s is scheduled on %s", router.ID, hostingAgent.ID) // remove from hosting agent - err = agents.RemoveL3Router(client, hostingAgent.ID, router.ID).ExtractErr() + err = agents.RemoveL3Router(context.TODO(), client, hostingAgent.ID, router.ID).ExtractErr() th.AssertNoErr(t, err) containsRouterFunc := func(rs []routers.Router, routerID string) bool { @@ -65,17 +66,17 @@ func TestLayer3RouterScheduling(t *testing.T) { } // List routers on hosting agent - routersOnHostingAgent, err := agents.ListL3Routers(client, hostingAgent.ID).Extract() + routersOnHostingAgent, err := agents.ListL3Routers(context.TODO(), client, hostingAgent.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, containsRouterFunc(routersOnHostingAgent, router.ID), false) t.Logf("Router %s is not scheduled on %s", router.ID, hostingAgent.ID) // schedule back - err = agents.ScheduleL3Router(client, hostingAgents[0].ID, agents.ScheduleL3RouterOpts{RouterID: router.ID}).ExtractErr() + err = agents.ScheduleL3Router(context.TODO(), client, hostingAgents[0].ID, agents.ScheduleL3RouterOpts{RouterID: router.ID}).ExtractErr() th.AssertNoErr(t, err) // List hosting agent after readding - routersOnHostingAgent, err = agents.ListL3Routers(client, hostingAgent.ID).Extract() + routersOnHostingAgent, err = agents.ListL3Routers(context.TODO(), client, hostingAgent.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, containsRouterFunc(routersOnHostingAgent, router.ID), true) t.Logf("Router %s is scheduled on %s", router.ID, hostingAgent.ID) diff --git a/internal/acceptance/openstack/networking/v2/extensions/layer3/layer3.go b/internal/acceptance/openstack/networking/v2/extensions/layer3/layer3.go index c7ab126607..54f93a3e2f 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/layer3/layer3.go +++ b/internal/acceptance/openstack/networking/v2/extensions/layer3/layer3.go @@ -1,6 +1,7 @@ package layer3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/layer3/addressscopes" @@ -28,7 +29,7 @@ func CreateFloatingIP(t *testing.T, client *gophercloud.ServiceClient, networkID PortID: portID, } - floatingIP, err := floatingips.Create(client, createOpts).Extract() + floatingIP, err := floatingips.Create(context.TODO(), client, createOpts).Extract() if err != nil { return floatingIP, err } @@ -53,7 +54,7 @@ func CreateFloatingIPWithFixedIP(t *testing.T, client *gophercloud.ServiceClient FixedIP: fixedIP, } - floatingIP, err := floatingips.Create(client, createOpts).Extract() + floatingIP, err := floatingips.Create(context.TODO(), client, createOpts).Extract() if err != nil { return floatingIP, err } @@ -81,7 +82,7 @@ func CreatePortForwarding(t *testing.T, client *gophercloud.ServiceClient, fipID InternalPortID: portID, } - pf, err := portforwarding.Create(client, fipID, createOpts).Extract() + pf, err := portforwarding.Create(context.TODO(), client, fipID, createOpts).Extract() if err != nil { return pf, err } @@ -98,7 +99,7 @@ func CreatePortForwarding(t *testing.T, client *gophercloud.ServiceClient, fipID func DeletePortForwarding(t *testing.T, client *gophercloud.ServiceClient, fipID string, pfID string) { t.Logf("Attempting to delete the port forwarding with ID %s for floating IP with ID %s", pfID, fipID) - err := portforwarding.Delete(client, fipID, pfID).ExtractErr() + err := portforwarding.Delete(context.TODO(), client, fipID, pfID).ExtractErr() if err != nil { t.Fatalf("Failed to delete Port forwarding with ID %s for floating IP with ID %s", pfID, fipID) } @@ -133,7 +134,7 @@ func CreateExternalRouter(t *testing.T, client *gophercloud.ServiceClient) (*rou GatewayInfo: &gatewayInfo, } - router, err = routers.Create(client, createOpts).Extract() + router, err = routers.Create(context.TODO(), client, createOpts).Extract() if err != nil { return router, err } @@ -165,7 +166,7 @@ func CreateRouter(t *testing.T, client *gophercloud.ServiceClient, networkID str AdminStateUp: &adminStateUp, } - router, err := routers.Create(client, createOpts).Extract() + router, err := routers.Create(context.TODO(), client, createOpts).Extract() if err != nil { return router, err } @@ -191,7 +192,7 @@ func CreateRouterInterface(t *testing.T, client *gophercloud.ServiceClient, port PortID: portID, } - iface, err := routers.AddInterface(client, routerID, aiOpts).Extract() + iface, err := routers.AddInterface(context.TODO(), client, routerID, aiOpts).Extract() if err != nil { return iface, err } @@ -213,7 +214,7 @@ func CreateRouterInterfaceOnSubnet(t *testing.T, client *gophercloud.ServiceClie SubnetID: subnetID, } - iface, err := routers.AddInterface(client, routerID, aiOpts).Extract() + iface, err := routers.AddInterface(context.TODO(), client, routerID, aiOpts).Extract() if err != nil { return iface, err } @@ -231,7 +232,7 @@ func CreateRouterInterfaceOnSubnet(t *testing.T, client *gophercloud.ServiceClie func DeleteRouter(t *testing.T, client *gophercloud.ServiceClient, routerID string) { t.Logf("Attempting to delete router: %s", routerID) - err := routers.Delete(client, routerID).ExtractErr() + err := routers.Delete(context.TODO(), client, routerID).ExtractErr() if err != nil { t.Fatalf("Error deleting router: %v", err) } @@ -253,7 +254,7 @@ func DeleteRouterInterface(t *testing.T, client *gophercloud.ServiceClient, port PortID: portID, } - _, err := routers.RemoveInterface(client, routerID, riOpts).Extract() + _, err := routers.RemoveInterface(context.TODO(), client, routerID, riOpts).Extract() if err != nil { t.Fatalf("Failed to detach port %s from router %s", portID, routerID) } @@ -271,7 +272,7 @@ func DeleteRouterInterface(t *testing.T, client *gophercloud.ServiceClient, port func DeleteFloatingIP(t *testing.T, client *gophercloud.ServiceClient, floatingIPID string) { t.Logf("Attempting to delete floating IP: %s", floatingIPID) - err := floatingips.Delete(client, floatingIPID).ExtractErr() + err := floatingips.Delete(context.TODO(), client, floatingIPID).ExtractErr() if err != nil { t.Fatalf("Failed to delete floating IP: %v", err) } @@ -281,7 +282,7 @@ func DeleteFloatingIP(t *testing.T, client *gophercloud.ServiceClient, floatingI func WaitForRouterToCreate(client *gophercloud.ServiceClient, routerID string) error { return tools.WaitFor(func() (bool, error) { - r, err := routers.Get(client, routerID).Extract() + r, err := routers.Get(context.TODO(), client, routerID).Extract() if err != nil { return false, err } @@ -296,7 +297,7 @@ func WaitForRouterToCreate(client *gophercloud.ServiceClient, routerID string) e func WaitForRouterToDelete(client *gophercloud.ServiceClient, routerID string) error { return tools.WaitFor(func() (bool, error) { - _, err := routers.Get(client, routerID).Extract() + _, err := routers.Get(context.TODO(), client, routerID).Extract() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { return true, nil @@ -311,7 +312,7 @@ func WaitForRouterToDelete(client *gophercloud.ServiceClient, routerID string) e func WaitForRouterInterfaceToAttach(client *gophercloud.ServiceClient, routerInterfaceID string) error { return tools.WaitFor(func() (bool, error) { - r, err := ports.Get(client, routerInterfaceID).Extract() + r, err := ports.Get(context.TODO(), client, routerInterfaceID).Extract() if err != nil { return false, err } @@ -326,7 +327,7 @@ func WaitForRouterInterfaceToAttach(client *gophercloud.ServiceClient, routerInt func WaitForRouterInterfaceToDetach(client *gophercloud.ServiceClient, routerInterfaceID string) error { return tools.WaitFor(func() (bool, error) { - r, err := ports.Get(client, routerInterfaceID).Extract() + r, err := ports.Get(context.TODO(), client, routerInterfaceID).Extract() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { return true, nil @@ -360,7 +361,7 @@ func CreateAddressScope(t *testing.T, client *gophercloud.ServiceClient) (*addre t.Logf("Attempting to create an address-scope: %s", addressScopeName) - addressScope, err := addressscopes.Create(client, createOpts).Extract() + addressScope, err := addressscopes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -378,7 +379,7 @@ func CreateAddressScope(t *testing.T, client *gophercloud.ServiceClient) (*addre func DeleteAddressScope(t *testing.T, client *gophercloud.ServiceClient, addressScopeID string) { t.Logf("Attempting to delete the address-scope: %s", addressScopeID) - err := addressscopes.Delete(client, addressScopeID).ExtractErr() + err := addressscopes.Delete(context.TODO(), client, addressScopeID).ExtractErr() if err != nil { t.Fatalf("Unable to delete address-scope %s: %v", addressScopeID, err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/layer3/portforwardings_test.go b/internal/acceptance/openstack/networking/v2/extensions/layer3/portforwardings_test.go index a857adedb8..216a997d5b 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/layer3/portforwardings_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/layer3/portforwardings_test.go @@ -1,6 +1,7 @@ package layer3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -46,7 +47,7 @@ func TestLayer3PortForwardingsCreateDelete(t *testing.T) { th.AssertNoErr(t, err) defer DeleteFloatingIP(t, client, fip.ID) - newFip, err := floatingips.Get(client, fip.ID).Extract() + newFip, err := floatingips.Get(context.TODO(), client, fip.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newFip) @@ -56,7 +57,7 @@ func TestLayer3PortForwardingsCreateDelete(t *testing.T) { defer DeletePortForwarding(t, client, fip.ID, pf.ID) tools.PrintResource(t, pf) - newPf, err := portforwarding.Get(client, fip.ID, pf.ID).Extract() + newPf, err := portforwarding.Get(context.TODO(), client, fip.ID, pf.ID).Extract() th.AssertNoErr(t, err) updateOpts := portforwarding.UpdateOpts{ @@ -65,13 +66,13 @@ func TestLayer3PortForwardingsCreateDelete(t *testing.T) { ExternalPort: 678, } - _, err = portforwarding.Update(client, fip.ID, newPf.ID, updateOpts).Extract() + _, err = portforwarding.Update(context.TODO(), client, fip.ID, newPf.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newPf, err = portforwarding.Get(client, fip.ID, pf.ID).Extract() + newPf, err = portforwarding.Get(context.TODO(), client, fip.ID, pf.ID).Extract() th.AssertNoErr(t, err) - allPages, err := portforwarding.List(client, portforwarding.ListOpts{}, fip.ID).AllPages() + allPages, err := portforwarding.List(client, portforwarding.ListOpts{}, fip.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) allPFs, err := portforwarding.ExtractPortForwardings(allPages) diff --git a/internal/acceptance/openstack/networking/v2/extensions/layer3/routers_test.go b/internal/acceptance/openstack/networking/v2/extensions/layer3/routers_test.go index c832b0ac7e..e94ab3488e 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/layer3/routers_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/layer3/routers_test.go @@ -4,6 +4,7 @@ package layer3 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -34,10 +35,10 @@ func TestLayer3RouterCreateDelete(t *testing.T) { Description: &newDescription, } - _, err = routers.Update(client, router.ID, updateOpts).Extract() + _, err = routers.Update(context.TODO(), client, router.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newRouter, err := routers.Get(client, router.ID).Extract() + newRouter, err := routers.Get(context.TODO(), client, router.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newRouter) @@ -45,7 +46,7 @@ func TestLayer3RouterCreateDelete(t *testing.T) { th.AssertEquals(t, newRouter.Description, newDescription) listOpts := routers.ListOpts{} - allPages, err := routers.List(client, listOpts).AllPages() + allPages, err := routers.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allRouters, err := routers.ExtractRouters(allPages) @@ -104,10 +105,10 @@ func TestLayer3ExternalRouterCreateDelete(t *testing.T) { GatewayInfo: &gatewayInfo, } - _, err = routers.Update(client, router.ID, updateOpts).Extract() + _, err = routers.Update(context.TODO(), client, router.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newRouter, err := routers.Get(client, router.ID).Extract() + newRouter, err := routers.Get(context.TODO(), client, router.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newRouter) @@ -121,7 +122,7 @@ func TestLayer3ExternalRouterCreateDelete(t *testing.T) { GatewayInfo: &routers.GatewayInfo{}, } - newRouter, err = routers.Update(client, router.ID, updateOpts).Extract() + newRouter, err = routers.Update(context.TODO(), client, router.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, newRouter.GatewayInfo, routers.GatewayInfo{}) @@ -152,7 +153,7 @@ func TestLayer3RouterInterface(t *testing.T) { SubnetID: subnet.ID, } - iface, err := routers.AddInterface(client, router.ID, aiOpts).Extract() + iface, err := routers.AddInterface(context.TODO(), client, router.ID, aiOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, router) @@ -162,7 +163,7 @@ func TestLayer3RouterInterface(t *testing.T) { SubnetID: subnet.ID, } - _, err = routers.RemoveInterface(client, router.ID, riOpts).Extract() + _, err = routers.RemoveInterface(context.TODO(), client, router.ID, riOpts).Extract() th.AssertNoErr(t, err) } @@ -190,14 +191,14 @@ func TestLayer3RouterAgents(t *testing.T) { Description: &newDescription, } - _, err = routers.Update(client, router.ID, updateOpts).Extract() + _, err = routers.Update(context.TODO(), client, router.ID, updateOpts).Extract() th.AssertNoErr(t, err) - _, err = routers.Get(client, router.ID).Extract() + _, err = routers.Get(context.TODO(), client, router.ID).Extract() th.AssertNoErr(t, err) // Test ListL3Agents for HA or not HA router - l3AgentsPages, err := routers.ListL3Agents(client, router.ID).AllPages() + l3AgentsPages, err := routers.ListL3Agents(client, router.ID).AllPages(context.TODO()) th.AssertNoErr(t, err) l3Agents, err := routers.ExtractL3Agents(l3AgentsPages) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/networking/v2/extensions/lbaas/lbaas.go b/internal/acceptance/openstack/networking/v2/extensions/lbaas/lbaas.go index b68ab01f77..50d07baada 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/lbaas/lbaas.go +++ b/internal/acceptance/openstack/networking/v2/extensions/lbaas/lbaas.go @@ -1,6 +1,7 @@ package lbaas import ( + "context" "fmt" "testing" @@ -25,7 +26,7 @@ func CreateMember(t *testing.T, client *gophercloud.ServiceClient, poolID string Address: fmt.Sprintf("192.168.1.%d", address), } - member, err := members.Create(client, createOpts).Extract() + member, err := members.Create(context.TODO(), client, createOpts).Extract() if err != nil { return member, err } @@ -48,7 +49,7 @@ func CreateMonitor(t *testing.T, client *gophercloud.ServiceClient) (*monitors.M AdminStateUp: gophercloud.Enabled, } - monitor, err := monitors.Create(client, createOpts).Extract() + monitor, err := monitors.Create(context.TODO(), client, createOpts).Extract() if err != nil { return monitor, err } @@ -72,7 +73,7 @@ func CreatePool(t *testing.T, client *gophercloud.ServiceClient, subnetID string LBMethod: pools.LBMethodRoundRobin, } - pool, err := pools.Create(client, createOpts).Extract() + pool, err := pools.Create(context.TODO(), client, createOpts).Extract() if err != nil { return pool, err } @@ -99,7 +100,7 @@ func CreateVIP(t *testing.T, client *gophercloud.ServiceClient, subnetID, poolID ProtocolPort: vipPort, } - vip, err := vips.Create(client, createOpts).Extract() + vip, err := vips.Create(context.TODO(), client, createOpts).Extract() if err != nil { return vip, err } @@ -115,7 +116,7 @@ func CreateVIP(t *testing.T, client *gophercloud.ServiceClient, subnetID, poolID func DeleteMember(t *testing.T, client *gophercloud.ServiceClient, memberID string) { t.Logf("Attempting to delete member %s", memberID) - if err := members.Delete(client, memberID).ExtractErr(); err != nil { + if err := members.Delete(context.TODO(), client, memberID).ExtractErr(); err != nil { t.Fatalf("Unable to delete member: %v", err) } @@ -128,7 +129,7 @@ func DeleteMember(t *testing.T, client *gophercloud.ServiceClient, memberID stri func DeleteMonitor(t *testing.T, client *gophercloud.ServiceClient, monitorID string) { t.Logf("Attempting to delete monitor %s", monitorID) - if err := monitors.Delete(client, monitorID).ExtractErr(); err != nil { + if err := monitors.Delete(context.TODO(), client, monitorID).ExtractErr(); err != nil { t.Fatalf("Unable to delete monitor: %v", err) } @@ -140,7 +141,7 @@ func DeleteMonitor(t *testing.T, client *gophercloud.ServiceClient, monitorID st func DeletePool(t *testing.T, client *gophercloud.ServiceClient, poolID string) { t.Logf("Attempting to delete pool %s", poolID) - if err := pools.Delete(client, poolID).ExtractErr(); err != nil { + if err := pools.Delete(context.TODO(), client, poolID).ExtractErr(); err != nil { t.Fatalf("Unable to delete pool: %v", err) } @@ -152,7 +153,7 @@ func DeletePool(t *testing.T, client *gophercloud.ServiceClient, poolID string) func DeleteVIP(t *testing.T, client *gophercloud.ServiceClient, vipID string) { t.Logf("Attempting to delete vip %s", vipID) - if err := vips.Delete(client, vipID).ExtractErr(); err != nil { + if err := vips.Delete(context.TODO(), client, vipID).ExtractErr(); err != nil { t.Fatalf("Unable to delete vip: %v", err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/lbaas/members_test.go b/internal/acceptance/openstack/networking/v2/extensions/lbaas/members_test.go index 6f1caf5169..f4f677d5e8 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/lbaas/members_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/lbaas/members_test.go @@ -4,6 +4,7 @@ package lbaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -20,7 +21,7 @@ func TestMembersList(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - allPages, err := members.List(client, members.ListOpts{}).AllPages() + allPages, err := members.List(client, members.ListOpts{}).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list members: %v", err) } @@ -72,12 +73,12 @@ func TestMembersCRUD(t *testing.T) { AdminStateUp: gophercloud.Enabled, } - _, err = members.Update(client, member.ID, updateOpts).Extract() + _, err = members.Update(context.TODO(), client, member.ID, updateOpts).Extract() if err != nil { t.Fatalf("Unable to update member: %v", err) } - newMember, err := members.Get(client, member.ID).Extract() + newMember, err := members.Get(context.TODO(), client, member.ID).Extract() if err != nil { t.Fatalf("Unable to get member: %v", err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/lbaas/monitors_test.go b/internal/acceptance/openstack/networking/v2/extensions/lbaas/monitors_test.go index 280e9bfbea..8adb4fc1bb 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/lbaas/monitors_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/lbaas/monitors_test.go @@ -4,6 +4,7 @@ package lbaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestMonitorsList(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - allPages, err := monitors.List(client, monitors.ListOpts{}).AllPages() + allPages, err := monitors.List(client, monitors.ListOpts{}).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list monitors: %v", err) } @@ -52,12 +53,12 @@ func TestMonitorsCRUD(t *testing.T) { Delay: 999, } - _, err = monitors.Update(client, monitor.ID, updateOpts).Extract() + _, err = monitors.Update(context.TODO(), client, monitor.ID, updateOpts).Extract() if err != nil { t.Fatalf("Unable to update monitor: %v", err) } - newMonitor, err := monitors.Get(client, monitor.ID).Extract() + newMonitor, err := monitors.Get(context.TODO(), client, monitor.ID).Extract() if err != nil { t.Fatalf("Unable to get monitor: %v", err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/lbaas/pools_test.go b/internal/acceptance/openstack/networking/v2/extensions/lbaas/pools_test.go index 30a7c43505..61fecc36a2 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/lbaas/pools_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/lbaas/pools_test.go @@ -4,6 +4,7 @@ package lbaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestPoolsList(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - allPages, err := pools.List(client, pools.ListOpts{}).AllPages() + allPages, err := pools.List(client, pools.ListOpts{}).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list pools: %v", err) } @@ -65,12 +66,12 @@ func TestPoolsCRUD(t *testing.T) { LBMethod: pools.LBMethodLeastConnections, } - _, err = pools.Update(client, pool.ID, updateOpts).Extract() + _, err = pools.Update(context.TODO(), client, pool.ID, updateOpts).Extract() if err != nil { t.Fatalf("Unable to update pool: %v", err) } - newPool, err := pools.Get(client, pool.ID).Extract() + newPool, err := pools.Get(context.TODO(), client, pool.ID).Extract() if err != nil { t.Fatalf("Unable to get pool: %v", err) } @@ -110,12 +111,12 @@ func TestPoolsMonitors(t *testing.T) { defer DeleteMonitor(t, client, monitor.ID) t.Logf("Associating monitor %s with pool %s", monitor.ID, pool.ID) - if res := pools.AssociateMonitor(client, pool.ID, monitor.ID); res.Err != nil { + if res := pools.AssociateMonitor(context.TODO(), client, pool.ID, monitor.ID); res.Err != nil { t.Fatalf("Unable to associate monitor to pool") } t.Logf("Disassociating monitor %s with pool %s", monitor.ID, pool.ID) - if res := pools.DisassociateMonitor(client, pool.ID, monitor.ID); res.Err != nil { + if res := pools.DisassociateMonitor(context.TODO(), client, pool.ID, monitor.ID); res.Err != nil { t.Fatalf("Unable to disassociate monitor from pool") } diff --git a/internal/acceptance/openstack/networking/v2/extensions/lbaas/vips_test.go b/internal/acceptance/openstack/networking/v2/extensions/lbaas/vips_test.go index b07d6d7a59..05f1840a4c 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/lbaas/vips_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/lbaas/vips_test.go @@ -4,6 +4,7 @@ package lbaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestVIPsList(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - allPages, err := vips.List(client, vips.ListOpts{}).AllPages() + allPages, err := vips.List(client, vips.ListOpts{}).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list vips: %v", err) } @@ -72,12 +73,12 @@ func TestVIPsCRUD(t *testing.T) { ConnLimit: &connLimit, } - _, err = vips.Update(client, vip.ID, updateOpts).Extract() + _, err = vips.Update(context.TODO(), client, vip.ID, updateOpts).Extract() if err != nil { t.Fatalf("Unable to update vip: %v", err) } - newVIP, err := vips.Get(client, vip.ID).Extract() + newVIP, err := vips.Get(context.TODO(), client, vip.ID).Extract() if err != nil { t.Fatalf("Unable to get vip: %v", err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/l7policies_test.go b/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/l7policies_test.go index 9ca2b83155..f279cdbb3d 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/l7policies_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/l7policies_test.go @@ -4,6 +4,7 @@ package lbaas_v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestL7PoliciesList(t *testing.T) { t.Fatalf("Unable to create a loadbalancer client: %v", err) } - allPages, err := l7policies.List(client, nil).AllPages() + allPages, err := l7policies.List(client, nil).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list l7policies: %v", err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/lbaas_v2.go b/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/lbaas_v2.go index f2d0d27573..0e3c6a5003 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/lbaas_v2.go +++ b/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/lbaas_v2.go @@ -1,6 +1,7 @@ package lbaas_v2 import ( + "context" "fmt" "strings" "testing" @@ -33,7 +34,7 @@ func CreateListener(t *testing.T, client *gophercloud.ServiceClient, lb *loadbal ProtocolPort: listenerPort, } - listener, err := listeners.Create(client, createOpts).Extract() + listener, err := listeners.Create(context.TODO(), client, createOpts).Extract() if err != nil { return listener, err } @@ -68,7 +69,7 @@ func CreateLoadBalancer(t *testing.T, client *gophercloud.ServiceClient, subnetI AdminStateUp: gophercloud.Enabled, } - lb, err := loadbalancers.Create(client, createOpts).Extract() + lb, err := loadbalancers.Create(context.TODO(), client, createOpts).Extract() if err != nil { return lb, err } @@ -113,7 +114,7 @@ func CreateMember(t *testing.T, client *gophercloud.ServiceClient, lb *loadbalan t.Logf("Member create opts: %#v", createOpts) - member, err := pools.CreateMember(client, pool.ID, createOpts).Extract() + member, err := pools.CreateMember(context.TODO(), client, pool.ID, createOpts).Extract() if err != nil { return member, err } @@ -145,7 +146,7 @@ func CreateMonitor(t *testing.T, client *gophercloud.ServiceClient, lb *loadbala Type: monitors.TypePING, } - monitor, err := monitors.Create(client, createOpts).Extract() + monitor, err := monitors.Create(context.TODO(), client, createOpts).Extract() if err != nil { return monitor, err } @@ -179,7 +180,7 @@ func CreatePool(t *testing.T, client *gophercloud.ServiceClient, lb *loadbalance LBMethod: pools.LBMethodLeastConnections, } - pool, err := pools.Create(client, createOpts).Extract() + pool, err := pools.Create(context.TODO(), client, createOpts).Extract() if err != nil { return pool, err } @@ -216,7 +217,7 @@ func CreateL7Policy(t *testing.T, client *gophercloud.ServiceClient, listener *l RedirectURL: "http://www.example.com", } - policy, err := l7policies.Create(client, createOpts).Extract() + policy, err := l7policies.Create(context.TODO(), client, createOpts).Extract() if err != nil { return policy, err } @@ -246,7 +247,7 @@ func CreateL7Rule(t *testing.T, client *gophercloud.ServiceClient, policyID stri Value: "/api", } - rule, err := l7policies.CreateRule(client, policyID, createOpts).Extract() + rule, err := l7policies.CreateRule(context.TODO(), client, policyID, createOpts).Extract() if err != nil { return rule, err } @@ -270,7 +271,7 @@ func CreateL7Rule(t *testing.T, client *gophercloud.ServiceClient, policyID stri func DeleteL7Policy(t *testing.T, client *gophercloud.ServiceClient, lbID, policyID string) { t.Logf("Attempting to delete l7 policy %s", policyID) - if err := l7policies.Delete(client, policyID).ExtractErr(); err != nil { + if err := l7policies.Delete(context.TODO(), client, policyID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete l7 policy: %v", err) } @@ -289,7 +290,7 @@ func DeleteL7Policy(t *testing.T, client *gophercloud.ServiceClient, lbID, polic func DeleteL7Rule(t *testing.T, client *gophercloud.ServiceClient, lbID, policyID, ruleID string) { t.Logf("Attempting to delete l7 rule %s", ruleID) - if err := l7policies.DeleteRule(client, policyID, ruleID).ExtractErr(); err != nil { + if err := l7policies.DeleteRule(context.TODO(), client, policyID, ruleID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete l7 rule: %v", err) } @@ -308,7 +309,7 @@ func DeleteL7Rule(t *testing.T, client *gophercloud.ServiceClient, lbID, policyI func DeleteListener(t *testing.T, client *gophercloud.ServiceClient, lbID, listenerID string) { t.Logf("Attempting to delete listener %s", listenerID) - if err := listeners.Delete(client, listenerID).ExtractErr(); err != nil { + if err := listeners.Delete(context.TODO(), client, listenerID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete listener: %v", err) } @@ -327,7 +328,7 @@ func DeleteListener(t *testing.T, client *gophercloud.ServiceClient, lbID, liste func DeleteMember(t *testing.T, client *gophercloud.ServiceClient, lbID, poolID, memberID string) { t.Logf("Attempting to delete member %s", memberID) - if err := pools.DeleteMember(client, poolID, memberID).ExtractErr(); err != nil { + if err := pools.DeleteMember(context.TODO(), client, poolID, memberID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete member: %s", memberID) } @@ -346,7 +347,7 @@ func DeleteMember(t *testing.T, client *gophercloud.ServiceClient, lbID, poolID, func DeleteLoadBalancer(t *testing.T, client *gophercloud.ServiceClient, lbID string) { t.Logf("Attempting to delete loadbalancer %s", lbID) - if err := loadbalancers.Delete(client, lbID).ExtractErr(); err != nil { + if err := loadbalancers.Delete(context.TODO(), client, lbID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete loadbalancer: %v", err) } @@ -367,7 +368,7 @@ func DeleteLoadBalancer(t *testing.T, client *gophercloud.ServiceClient, lbID st func DeleteMonitor(t *testing.T, client *gophercloud.ServiceClient, lbID, monitorID string) { t.Logf("Attempting to delete monitor %s", monitorID) - if err := monitors.Delete(client, monitorID).ExtractErr(); err != nil { + if err := monitors.Delete(context.TODO(), client, monitorID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete monitor: %v", err) } @@ -385,7 +386,7 @@ func DeleteMonitor(t *testing.T, client *gophercloud.ServiceClient, lbID, monito func DeletePool(t *testing.T, client *gophercloud.ServiceClient, lbID, poolID string) { t.Logf("Attempting to delete pool %s", poolID) - if err := pools.Delete(client, poolID).ExtractErr(); err != nil { + if err := pools.Delete(context.TODO(), client, poolID).ExtractErr(); err != nil { if _, ok := err.(gophercloud.ErrDefault404); !ok { t.Fatalf("Unable to delete pool: %v", err) } @@ -401,7 +402,7 @@ func DeletePool(t *testing.T, client *gophercloud.ServiceClient, lbID, poolID st // WaitForLoadBalancerState will wait until a loadbalancer reaches a given state. func WaitForLoadBalancerState(client *gophercloud.ServiceClient, lbID, status string) error { return tools.WaitFor(func() (bool, error) { - current, err := loadbalancers.Get(client, lbID).Extract() + current, err := loadbalancers.Get(context.TODO(), client, lbID).Extract() if err != nil { if httpStatus, ok := err.(gophercloud.ErrDefault404); ok { if httpStatus.Actual == 404 { diff --git a/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/listeners_test.go b/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/listeners_test.go index 902bc1b41c..5d1b6fb1f2 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/listeners_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/listeners_test.go @@ -4,6 +4,7 @@ package lbaas_v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestListenersList(t *testing.T) { t.Fatalf("Unable to create a loadbalancer client: %v", err) } - allPages, err := listeners.List(client, nil).AllPages() + allPages, err := listeners.List(client, nil).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list listeners: %v", err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/loadbalancers_test.go b/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/loadbalancers_test.go index a65b392ca9..45e2bd4647 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/loadbalancers_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/loadbalancers_test.go @@ -4,6 +4,7 @@ package lbaas_v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,7 +23,7 @@ func TestLoadbalancersList(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - allPages, err := loadbalancers.List(client, nil).AllPages() + allPages, err := loadbalancers.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allLoadbalancers, err := loadbalancers.ExtractLoadBalancers(allPages) @@ -54,21 +55,21 @@ func TestLoadbalancersCRUD(t *testing.T) { updateLoadBalancerOpts := loadbalancers.UpdateOpts{ Description: &lbDescription, } - _, err = loadbalancers.Update(client, lb.ID, updateLoadBalancerOpts).Extract() + _, err = loadbalancers.Update(context.TODO(), client, lb.ID, updateLoadBalancerOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(client, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newLB, err := loadbalancers.Get(client, lb.ID).Extract() + newLB, err := loadbalancers.Get(context.TODO(), client, lb.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newLB) th.AssertEquals(t, newLB.Description, lbDescription) - lbStats, err := loadbalancers.GetStats(client, lb.ID).Extract() + lbStats, err := loadbalancers.GetStats(context.TODO(), client, lb.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, lbStats) @@ -87,14 +88,14 @@ func TestLoadbalancersCRUD(t *testing.T) { Name: &listenerName, Description: &listenerDescription, } - _, err = listeners.Update(client, listener.ID, updateListenerOpts).Extract() + _, err = listeners.Update(context.TODO(), client, listener.ID, updateListenerOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(client, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newListener, err := listeners.Get(client, listener.ID).Extract() + newListener, err := listeners.Get(context.TODO(), client, listener.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newListener) @@ -111,14 +112,14 @@ func TestLoadbalancersCRUD(t *testing.T) { updateL7policyOpts := l7policies.UpdateOpts{ Description: &newDescription, } - _, err = l7policies.Update(client, policy.ID, updateL7policyOpts).Extract() + _, err = l7policies.Update(context.TODO(), client, policy.ID, updateL7policyOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(client, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newPolicy, err := l7policies.Get(client, policy.ID).Extract() + newPolicy, err := l7policies.Get(context.TODO(), client, policy.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPolicy) @@ -130,7 +131,7 @@ func TestLoadbalancersCRUD(t *testing.T) { th.AssertNoErr(t, err) defer DeleteL7Rule(t, client, lb.ID, policy.ID, rule.ID) - allPages, err := l7policies.ListRules(client, policy.ID, l7policies.ListRulesOpts{}).AllPages() + allPages, err := l7policies.ListRules(client, policy.ID, l7policies.ListRulesOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allRules, err := l7policies.ExtractRules(allPages) th.AssertNoErr(t, err) @@ -144,14 +145,14 @@ func TestLoadbalancersCRUD(t *testing.T) { CompareType: l7policies.CompareTypeRegex, Value: "/images/special*", } - _, err = l7policies.UpdateRule(client, policy.ID, rule.ID, updateL7ruleOpts).Extract() + _, err = l7policies.UpdateRule(context.TODO(), client, policy.ID, rule.ID, updateL7ruleOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(client, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newRule, err := l7policies.GetRule(client, newPolicy.ID, rule.ID).Extract() + newRule, err := l7policies.GetRule(context.TODO(), client, newPolicy.ID, rule.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newRule) @@ -167,14 +168,14 @@ func TestLoadbalancersCRUD(t *testing.T) { Name: &poolName, Description: &poolDescription, } - _, err = pools.Update(client, pool.ID, updatePoolOpts).Extract() + _, err = pools.Update(context.TODO(), client, pool.ID, updatePoolOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(client, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newPool, err := pools.Get(client, pool.ID).Extract() + newPool, err := pools.Get(context.TODO(), client, pool.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPool) @@ -188,14 +189,14 @@ func TestLoadbalancersCRUD(t *testing.T) { RedirectPoolID: &newPool.ID, RedirectURL: &newRedirectURL, } - _, err = l7policies.Update(client, policy.ID, updateL7policyOpts).Extract() + _, err = l7policies.Update(context.TODO(), client, policy.ID, updateL7policyOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(client, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newPolicy, err = l7policies.Get(client, policy.ID).Extract() + newPolicy, err = l7policies.Get(context.TODO(), client, policy.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPolicy) @@ -213,14 +214,14 @@ func TestLoadbalancersCRUD(t *testing.T) { updateListenerOpts = listeners.UpdateOpts{ DefaultPoolID: &pool.ID, } - _, err = listeners.Update(client, listener.ID, updateListenerOpts).Extract() + _, err = listeners.Update(context.TODO(), client, listener.ID, updateListenerOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(client, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newListener, err = listeners.Get(client, listener.ID).Extract() + newListener, err = listeners.Get(context.TODO(), client, listener.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newListener) @@ -232,14 +233,14 @@ func TestLoadbalancersCRUD(t *testing.T) { updateListenerOpts = listeners.UpdateOpts{ DefaultPoolID: &emptyPoolID, } - _, err = listeners.Update(client, listener.ID, updateListenerOpts).Extract() + _, err = listeners.Update(context.TODO(), client, listener.ID, updateListenerOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(client, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newListener, err = listeners.Get(client, listener.ID).Extract() + newListener, err = listeners.Get(context.TODO(), client, listener.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newListener) @@ -257,14 +258,14 @@ func TestLoadbalancersCRUD(t *testing.T) { Name: &memberName, Weight: &newWeight, } - _, err = pools.UpdateMember(client, pool.ID, member.ID, updateMemberOpts).Extract() + _, err = pools.UpdateMember(context.TODO(), client, pool.ID, member.ID, updateMemberOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(client, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newMember, err := pools.GetMember(client, pool.ID, member.ID).Extract() + newMember, err := pools.GetMember(context.TODO(), client, pool.ID, member.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newMember) @@ -282,14 +283,14 @@ func TestLoadbalancersCRUD(t *testing.T) { Name: &monName, Delay: newDelay, } - _, err = monitors.Update(client, monitor.ID, updateMonitorOpts).Extract() + _, err = monitors.Update(context.TODO(), client, monitor.ID, updateMonitorOpts).Extract() th.AssertNoErr(t, err) if err := WaitForLoadBalancerState(client, lb.ID, "ACTIVE"); err != nil { t.Fatalf("Timed out waiting for loadbalancer to become active") } - newMonitor, err := monitors.Get(client, monitor.ID).Extract() + newMonitor, err := monitors.Get(context.TODO(), client, monitor.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newMonitor) diff --git a/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/monitors_test.go b/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/monitors_test.go index ede7794a4a..3523f487e5 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/monitors_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/monitors_test.go @@ -4,6 +4,7 @@ package lbaas_v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestMonitorsList(t *testing.T) { t.Fatalf("Unable to create a loadbalancer client: %v", err) } - allPages, err := monitors.List(client, nil).AllPages() + allPages, err := monitors.List(client, nil).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list monitors: %v", err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/pools_test.go b/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/pools_test.go index ef8c8f0427..7dfc1ef3f9 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/pools_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/lbaas_v2/pools_test.go @@ -4,6 +4,7 @@ package lbaas_v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestPoolsList(t *testing.T) { t.Fatalf("Unable to create a loadbalancer client: %v", err) } - allPages, err := pools.List(client, nil).AllPages() + allPages, err := pools.List(client, nil).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list pools: %v", err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu.go b/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu.go index 3ae7daa2b3..1747ad2181 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu.go +++ b/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu.go @@ -1,6 +1,7 @@ package mtu import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -41,7 +42,7 @@ func CreateNetworkWithMTU(t *testing.T, client *gophercloud.ServiceClient, netwo var network NetworkMTU - err := networks.Create(client, createOpts).ExtractInto(&network) + err := networks.Create(context.TODO(), client, createOpts).ExtractInto(&network) if err != nil { return &network, err } diff --git a/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu_test.go b/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu_test.go index 76d26c8ee3..6e07ab2be9 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/mtu/mtu_test.go @@ -4,6 +4,7 @@ package mtu import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,13 +23,13 @@ func TestMTUNetworkCRUDL(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(client, "net-mtu").Extract() + extension, err := extensions.Get(context.TODO(), client, "net-mtu").Extract() if err != nil { t.Skip("This test requires net-mtu Neutron extension") } tools.PrintResource(t, extension) - mtuWritable, _ := extensions.Get(client, "net-mtu-writable").Extract() + mtuWritable, _ := extensions.Get(context.TODO(), client, "net-mtu-writable").Extract() tools.PrintResource(t, mtuWritable) // Create Network @@ -51,7 +52,7 @@ func TestMTUNetworkCRUDL(t *testing.T) { } var listedNetworks []NetworkMTU i := 0 - err = networks.List(client, listOpts).EachPage(func(page pagination.Page) (bool, error) { + err = networks.List(client, listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { i++ err := networks.ExtractNetworksInto(page, &listedNetworks) if err != nil { @@ -75,7 +76,7 @@ func TestMTUNetworkCRUDL(t *testing.T) { MTU: 1, } i = 0 - err = networks.List(client, listOpts).EachPage(func(page pagination.Page) (bool, error) { + err = networks.List(client, listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { i++ err := networks.ExtractNetworksInto(page, &listedNetworks) if err != nil { @@ -96,7 +97,7 @@ func TestMTUNetworkCRUDL(t *testing.T) { // Get network var getNetwork NetworkMTU - err = networks.Get(client, network.ID).ExtractInto(&getNetwork) + err = networks.Get(context.TODO(), client, network.ID).ExtractInto(&getNetwork) th.AssertNoErr(t, err) tools.PrintResource(t, getNetwork) @@ -116,7 +117,7 @@ func TestMTUNetworkCRUDL(t *testing.T) { } var newNetwork NetworkMTU - err = networks.Update(client, network.ID, updateOpts).ExtractInto(&newNetwork) + err = networks.Update(context.TODO(), client, network.ID, updateOpts).ExtractInto(&newNetwork) th.AssertNoErr(t, err) tools.PrintResource(t, newNetwork) @@ -125,7 +126,7 @@ func TestMTUNetworkCRUDL(t *testing.T) { // Get updated network var getNewNetwork NetworkMTU - err = networks.Get(client, network.ID).ExtractInto(&getNewNetwork) + err = networks.Get(context.TODO(), client, network.ID).ExtractInto(&getNewNetwork) th.AssertNoErr(t, err) tools.PrintResource(t, getNewNetwork) diff --git a/internal/acceptance/openstack/networking/v2/extensions/networkipavailabilities/networkipavailabilities_test.go b/internal/acceptance/openstack/networking/v2/extensions/networkipavailabilities/networkipavailabilities_test.go index f5237e5c6d..73e46a379e 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/networkipavailabilities/networkipavailabilities_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/networkipavailabilities/networkipavailabilities_test.go @@ -4,6 +4,7 @@ package networkipavailabilities import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -16,7 +17,7 @@ func TestNetworkIPAvailabilityList(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - allPages, err := networkipavailabilities.List(client, nil).AllPages() + allPages, err := networkipavailabilities.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allAvailabilities, err := networkipavailabilities.ExtractNetworkIPAvailabilities(allPages) diff --git a/internal/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding.go b/internal/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding.go index 0f48dbcdb0..bbeaa17818 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding.go +++ b/internal/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding.go @@ -1,6 +1,7 @@ package portsbinding import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -41,7 +42,7 @@ func CreatePortsbinding(t *testing.T, client *gophercloud.ServiceClient, network var s PortWithBindingExt - err := ports.Create(client, createOpts).ExtractInto(&s) + err := ports.Create(context.TODO(), client, createOpts).ExtractInto(&s) if err != nil { return s, err } diff --git a/internal/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding_test.go b/internal/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding_test.go index f3f9563b7f..c1e328277b 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/portsbinding/portsbinding_test.go @@ -4,6 +4,7 @@ package portsbinding import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -64,11 +65,11 @@ func TestPortsbindingCRUD(t *testing.T) { var newPort PortWithBindingExt - _, err = ports.Update(client, port.ID, finalUpdateOpts).Extract() + _, err = ports.Update(context.TODO(), client, port.ID, finalUpdateOpts).Extract() th.AssertNoErr(t, err) // Read the updated port - err = ports.Get(client, port.ID).ExtractInto(&newPort) + err = ports.Get(context.TODO(), client, port.ID).ExtractInto(&newPort) th.AssertNoErr(t, err) tools.PrintResource(t, newPort) diff --git a/internal/acceptance/openstack/networking/v2/extensions/provider_test.go b/internal/acceptance/openstack/networking/v2/extensions/provider_test.go index 7abe50fc26..e4046a38b7 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/provider_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/provider_test.go @@ -4,6 +4,7 @@ package extensions import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,7 +23,7 @@ func TestNetworksProviderCRUD(t *testing.T) { th.AssertNoErr(t, err) defer networking.DeleteNetwork(t, client, network.ID) - getResult := networks.Get(client, network.ID) + getResult := networks.Get(context.TODO(), client, network.ID) newNetwork, err := getResult.Extract() th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies.go b/internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies.go index 854a70816a..520d7a33e7 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies.go +++ b/internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies.go @@ -1,6 +1,7 @@ package policies import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -22,7 +23,7 @@ func CreateQoSPolicy(t *testing.T, client *gophercloud.ServiceClient) (*policies t.Logf("Attempting to create a QoS policy: %s", policyName) - policy, err := policies.Create(client, createOpts).Extract() + policy, err := policies.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -40,7 +41,7 @@ func CreateQoSPolicy(t *testing.T, client *gophercloud.ServiceClient) (*policies func DeleteQoSPolicy(t *testing.T, client *gophercloud.ServiceClient, policyID string) { t.Logf("Attempting to delete the QoS policy: %s", policyID) - err := policies.Delete(client, policyID).ExtractErr() + err := policies.Delete(context.TODO(), client, policyID).ExtractErr() if err != nil { t.Fatalf("Unable to delete QoS policy %s: %v", policyID, err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies_test.go b/internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies_test.go index e994f2a567..cbc20c4b6f 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies_test.go @@ -4,6 +4,7 @@ package policies import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestPoliciesCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(client, "qos").Extract() + extension, err := extensions.Get(context.TODO(), client, "qos").Extract() if err != nil { t.Skip("This test requires qos Neutron extension") } @@ -37,17 +38,17 @@ func TestPoliciesCRUD(t *testing.T) { Description: &newDescription, } - _, err = policies.Update(client, policy.ID, updateOpts).Extract() + _, err = policies.Update(context.TODO(), client, policy.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newPolicy, err := policies.Get(client, policy.ID).Extract() + newPolicy, err := policies.Get(context.TODO(), client, policy.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPolicy) th.AssertEquals(t, newPolicy.Name, newName) th.AssertEquals(t, newPolicy.Description, newDescription) - allPages, err := policies.List(client, nil).AllPages() + allPages, err := policies.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicies, err := policies.ExtractPolicies(allPages) diff --git a/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules.go b/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules.go index 78fec261ad..7502386df6 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules.go +++ b/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules.go @@ -1,6 +1,7 @@ package rules import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -21,7 +22,7 @@ func CreateBandwidthLimitRule(t *testing.T, client *gophercloud.ServiceClient, p t.Logf("Attempting to create a QoS bandwidth limit rule with max_kbps: %d, max_burst_kbps: %d", maxKBps, maxBurstKBps) - rule, err := rules.CreateBandwidthLimitRule(client, policyID, createOpts).ExtractBandwidthLimitRule() + rule, err := rules.CreateBandwidthLimitRule(context.TODO(), client, policyID, createOpts).ExtractBandwidthLimitRule() if err != nil { return nil, err } @@ -45,7 +46,7 @@ func CreateDSCPMarkingRule(t *testing.T, client *gophercloud.ServiceClient, poli t.Logf("Attempting to create a QoS DSCP marking rule with dscp_mark: %d", dscpMark) - rule, err := rules.CreateDSCPMarkingRule(client, policyID, createOpts).ExtractDSCPMarkingRule() + rule, err := rules.CreateDSCPMarkingRule(context.TODO(), client, policyID, createOpts).ExtractDSCPMarkingRule() if err != nil { return nil, err } @@ -68,7 +69,7 @@ func CreateMinimumBandwidthRule(t *testing.T, client *gophercloud.ServiceClient, t.Logf("Attempting to create a QoS minimum bandwidth rule with min_kbps: %d", minKBps) - rule, err := rules.CreateMinimumBandwidthRule(client, policyID, createOpts).ExtractMinimumBandwidthRule() + rule, err := rules.CreateMinimumBandwidthRule(context.TODO(), client, policyID, createOpts).ExtractMinimumBandwidthRule() if err != nil { return nil, err } diff --git a/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules_test.go b/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules_test.go index c8e9f496dd..82e15899b3 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules_test.go @@ -1,6 +1,7 @@ package rules import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -16,7 +17,7 @@ func TestBandwidthLimitRulesCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(client, "qos").Extract() + extension, err := extensions.Get(context.TODO(), client, "qos").Extract() if err != nil { t.Skip("This test requires qos Neutron extension") } @@ -25,27 +26,27 @@ func TestBandwidthLimitRulesCRUD(t *testing.T) { // Create a QoS policy policy, err := accpolicies.CreateQoSPolicy(t, client) th.AssertNoErr(t, err) - defer policies.Delete(client, policy.ID) + defer policies.Delete(context.TODO(), client, policy.ID) tools.PrintResource(t, policy) // Create a QoS policy rule. rule, err := CreateBandwidthLimitRule(t, client, policy.ID) th.AssertNoErr(t, err) - defer rules.DeleteBandwidthLimitRule(client, policy.ID, rule.ID) + defer rules.DeleteBandwidthLimitRule(context.TODO(), client, policy.ID, rule.ID) // Update the QoS policy rule. newMaxBurstKBps := 0 updateOpts := rules.UpdateBandwidthLimitRuleOpts{ MaxBurstKBps: &newMaxBurstKBps, } - newRule, err := rules.UpdateBandwidthLimitRule(client, policy.ID, rule.ID, updateOpts).ExtractBandwidthLimitRule() + newRule, err := rules.UpdateBandwidthLimitRule(context.TODO(), client, policy.ID, rule.ID, updateOpts).ExtractBandwidthLimitRule() th.AssertNoErr(t, err) tools.PrintResource(t, newRule) th.AssertEquals(t, newRule.MaxBurstKBps, 0) - allPages, err := rules.ListBandwidthLimitRules(client, policy.ID, rules.BandwidthLimitRulesListOpts{}).AllPages() + allPages, err := rules.ListBandwidthLimitRules(client, policy.ID, rules.BandwidthLimitRulesListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allRules, err := rules.ExtractBandwidthLimitRules(allPages) @@ -65,7 +66,7 @@ func TestDSCPMarkingRulesCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(client, "qos").Extract() + extension, err := extensions.Get(context.TODO(), client, "qos").Extract() if err != nil { t.Skip("This test requires qos Neutron extension") } @@ -74,27 +75,27 @@ func TestDSCPMarkingRulesCRUD(t *testing.T) { // Create a QoS policy policy, err := accpolicies.CreateQoSPolicy(t, client) th.AssertNoErr(t, err) - defer policies.Delete(client, policy.ID) + defer policies.Delete(context.TODO(), client, policy.ID) tools.PrintResource(t, policy) // Create a QoS policy rule. rule, err := CreateDSCPMarkingRule(t, client, policy.ID) th.AssertNoErr(t, err) - defer rules.DeleteDSCPMarkingRule(client, policy.ID, rule.ID) + defer rules.DeleteDSCPMarkingRule(context.TODO(), client, policy.ID, rule.ID) // Update the QoS policy rule. dscpMark := 20 updateOpts := rules.UpdateDSCPMarkingRuleOpts{ DSCPMark: &dscpMark, } - newRule, err := rules.UpdateDSCPMarkingRule(client, policy.ID, rule.ID, updateOpts).ExtractDSCPMarkingRule() + newRule, err := rules.UpdateDSCPMarkingRule(context.TODO(), client, policy.ID, rule.ID, updateOpts).ExtractDSCPMarkingRule() th.AssertNoErr(t, err) tools.PrintResource(t, newRule) th.AssertEquals(t, newRule.DSCPMark, 20) - allPages, err := rules.ListDSCPMarkingRules(client, policy.ID, rules.DSCPMarkingRulesListOpts{}).AllPages() + allPages, err := rules.ListDSCPMarkingRules(client, policy.ID, rules.DSCPMarkingRulesListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allRules, err := rules.ExtractDSCPMarkingRules(allPages) @@ -114,7 +115,7 @@ func TestMinimumBandwidthRulesCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(client, "qos").Extract() + extension, err := extensions.Get(context.TODO(), client, "qos").Extract() if err != nil { t.Skip("This test requires qos Neutron extension") } @@ -123,27 +124,27 @@ func TestMinimumBandwidthRulesCRUD(t *testing.T) { // Create a QoS policy policy, err := accpolicies.CreateQoSPolicy(t, client) th.AssertNoErr(t, err) - defer policies.Delete(client, policy.ID) + defer policies.Delete(context.TODO(), client, policy.ID) tools.PrintResource(t, policy) // Create a QoS policy rule. rule, err := CreateMinimumBandwidthRule(t, client, policy.ID) th.AssertNoErr(t, err) - defer rules.DeleteMinimumBandwidthRule(client, policy.ID, rule.ID) + defer rules.DeleteMinimumBandwidthRule(context.TODO(), client, policy.ID, rule.ID) // Update the QoS policy rule. minKBps := 500 updateOpts := rules.UpdateMinimumBandwidthRuleOpts{ MinKBps: &minKBps, } - newRule, err := rules.UpdateMinimumBandwidthRule(client, policy.ID, rule.ID, updateOpts).ExtractMinimumBandwidthRule() + newRule, err := rules.UpdateMinimumBandwidthRule(context.TODO(), client, policy.ID, rule.ID, updateOpts).ExtractMinimumBandwidthRule() th.AssertNoErr(t, err) tools.PrintResource(t, newRule) th.AssertEquals(t, newRule.MinKBps, 500) - allPages, err := rules.ListMinimumBandwidthRules(client, policy.ID, rules.MinimumBandwidthRulesListOpts{}).AllPages() + allPages, err := rules.ListMinimumBandwidthRules(client, policy.ID, rules.MinimumBandwidthRulesListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allRules, err := rules.ExtractMinimumBandwidthRules(allPages) diff --git a/internal/acceptance/openstack/networking/v2/extensions/qos/ruletypes/ruletypes_test.go b/internal/acceptance/openstack/networking/v2/extensions/qos/ruletypes/ruletypes_test.go index 505fec6fa4..223f3ea7ac 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/qos/ruletypes/ruletypes_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/qos/ruletypes/ruletypes_test.go @@ -1,6 +1,7 @@ package ruletypes import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -16,13 +17,13 @@ func TestRuleTypes(t *testing.T) { return } - extension, err := extensions.Get(client, "qos").Extract() + extension, err := extensions.Get(context.TODO(), client, "qos").Extract() if err != nil { t.Skip("This test requires qos Neutron extension") } tools.PrintResource(t, extension) - page, err := ruletypes.ListRuleTypes(client).AllPages() + page, err := ruletypes.ListRuleTypes(client).AllPages(context.TODO()) if err != nil { t.Fatalf("Failed to list rule types pages: %v", err) return @@ -39,7 +40,7 @@ func TestRuleTypes(t *testing.T) { if len(ruleTypes) > 0 { t.Logf("Trying to get rule type: %s", ruleTypes[0].Type) - ruleType, err := ruletypes.GetRuleType(client, ruleTypes[0].Type).Extract() + ruleType, err := ruletypes.GetRuleType(context.TODO(), client, ruleTypes[0].Type).Extract() if err != nil { t.Fatalf("Failed to get rule type %s: %s", ruleTypes[0].Type, err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/quotas/quotas_test.go b/internal/acceptance/openstack/networking/v2/extensions/quotas/quotas_test.go index 878bbedb47..cda108f213 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/quotas/quotas_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/quotas/quotas_test.go @@ -4,6 +4,7 @@ package quotas import ( + "context" "log" "os" "reflect" @@ -21,7 +22,7 @@ func TestQuotasGet(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - quotasInfo, err := quotas.Get(client, os.Getenv("OS_PROJECT_NAME")).Extract() + quotasInfo, err := quotas.Get(context.TODO(), client, os.Getenv("OS_PROJECT_NAME")).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, quotasInfo) @@ -33,10 +34,10 @@ func TestQuotasUpdate(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - originalQuotas, err := quotas.Get(client, os.Getenv("OS_PROJECT_NAME")).Extract() + originalQuotas, err := quotas.Get(context.TODO(), client, os.Getenv("OS_PROJECT_NAME")).Extract() th.AssertNoErr(t, err) - newQuotas, err := quotas.Update(client, os.Getenv("OS_PROJECT_NAME"), updateOpts).Extract() + newQuotas, err := quotas.Update(context.TODO(), client, os.Getenv("OS_PROJECT_NAME"), updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newQuotas) @@ -46,7 +47,7 @@ func TestQuotasUpdate(t *testing.T) { } // Restore original quotas. - restoredQuotas, err := quotas.Update(client, os.Getenv("OS_PROJECT_NAME"), quotas.UpdateOpts{ + restoredQuotas, err := quotas.Update(context.TODO(), client, os.Getenv("OS_PROJECT_NAME"), quotas.UpdateOpts{ FloatingIP: &originalQuotas.FloatingIP, Network: &originalQuotas.Network, Port: &originalQuotas.Port, diff --git a/internal/acceptance/openstack/networking/v2/extensions/rbacpolicies/rbacpolicies.go b/internal/acceptance/openstack/networking/v2/extensions/rbacpolicies/rbacpolicies.go index 6acd09547a..864e8fecb7 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/rbacpolicies/rbacpolicies.go +++ b/internal/acceptance/openstack/networking/v2/extensions/rbacpolicies/rbacpolicies.go @@ -1,6 +1,7 @@ package rbacpolicies import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -20,7 +21,7 @@ func CreateRBACPolicy(t *testing.T, client *gophercloud.ServiceClient, tenantID, t.Logf("Trying to create rbac_policy") - rbacPolicy, err := rbacpolicies.Create(client, createOpts).Extract() + rbacPolicy, err := rbacpolicies.Create(context.TODO(), client, createOpts).Extract() if err != nil { return rbacPolicy, err } @@ -38,7 +39,7 @@ func CreateRBACPolicy(t *testing.T, client *gophercloud.ServiceClient, tenantID, func DeleteRBACPolicy(t *testing.T, client *gophercloud.ServiceClient, rbacPolicyID string) { t.Logf("Trying to delete rbac_policy: %s", rbacPolicyID) - err := rbacpolicies.Delete(client, rbacPolicyID).ExtractErr() + err := rbacpolicies.Delete(context.TODO(), client, rbacPolicyID).ExtractErr() if err != nil { t.Fatalf("Unable to delete rbac_policy %s: %v", rbacPolicyID, err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/rbacpolicies/rbacpolicies_test.go b/internal/acceptance/openstack/networking/v2/extensions/rbacpolicies/rbacpolicies_test.go index 5ea473fe2d..bd749f2294 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/rbacpolicies/rbacpolicies_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/rbacpolicies/rbacpolicies_test.go @@ -4,6 +4,7 @@ package rbacpolicies import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -56,12 +57,12 @@ func TestRBACPolicyCRUD(t *testing.T) { TargetTenant: project2.ID, } - _, err = rbacpolicies.Update(client, rbacPolicy.ID, updateOpts).Extract() + _, err = rbacpolicies.Update(context.TODO(), client, rbacPolicy.ID, updateOpts).Extract() th.AssertNoErr(t, err) // Get the rbac-policy by ID t.Logf("Get rbac_policy by ID") - newrbacPolicy, err := rbacpolicies.Get(client, rbacPolicy.ID).Extract() + newrbacPolicy, err := rbacpolicies.Get(context.TODO(), client, rbacPolicy.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newrbacPolicy) @@ -79,7 +80,7 @@ func TestRBACPolicyList(t *testing.T) { var allRBACPolicies []rbacPolicy - allPages, err := rbacpolicies.List(client, nil).AllPages() + allPages, err := rbacpolicies.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) err = rbacpolicies.ExtractRBACPolicesInto(allPages, &allRBACPolicies) diff --git a/internal/acceptance/openstack/networking/v2/extensions/security_test.go b/internal/acceptance/openstack/networking/v2/extensions/security_test.go index 6393761a85..b5b424a634 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/security_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/security_test.go @@ -4,6 +4,7 @@ package extensions import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -34,7 +35,7 @@ func TestSecurityGroupsCreateUpdateDelete(t *testing.T) { Description: &description, } - newGroup, err := groups.Update(client, group.ID, updateOpts).Extract() + newGroup, err := groups.Update(context.TODO(), client, group.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newGroup) @@ -42,7 +43,7 @@ func TestSecurityGroupsCreateUpdateDelete(t *testing.T) { th.AssertEquals(t, newGroup.Description, description) listOpts := groups.ListOpts{} - allPages, err := groups.List(client, listOpts).AllPages() + allPages, err := groups.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allGroups, err := groups.ExtractGroups(allPages) diff --git a/internal/acceptance/openstack/networking/v2/extensions/subnetpools/subnetpools.go b/internal/acceptance/openstack/networking/v2/extensions/subnetpools/subnetpools.go index 7f2332b325..3594e94ad4 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/subnetpools/subnetpools.go +++ b/internal/acceptance/openstack/networking/v2/extensions/subnetpools/subnetpools.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -26,7 +27,7 @@ func CreateSubnetPool(t *testing.T, client *gophercloud.ServiceClient) (*subnetp t.Logf("Attempting to create a subnetpool: %s", subnetPoolName) - subnetPool, err := subnetpools.Create(client, createOpts).Extract() + subnetPool, err := subnetpools.Create(context.TODO(), client, createOpts).Extract() if err != nil { return nil, err } @@ -44,7 +45,7 @@ func CreateSubnetPool(t *testing.T, client *gophercloud.ServiceClient) (*subnetp func DeleteSubnetPool(t *testing.T, client *gophercloud.ServiceClient, subnetPoolID string) { t.Logf("Attempting to delete the subnetpool: %s", subnetPoolID) - err := subnetpools.Delete(client, subnetPoolID).ExtractErr() + err := subnetpools.Delete(context.TODO(), client, subnetPoolID).ExtractErr() if err != nil { t.Fatalf("Unable to delete subnetpool %s: %v", subnetPoolID, err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/subnetpools/subnetpools_test.go b/internal/acceptance/openstack/networking/v2/extensions/subnetpools/subnetpools_test.go index 3f434a1ed8..2e714d8ab0 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/subnetpools/subnetpools_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/subnetpools/subnetpools_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -30,17 +31,17 @@ func TestSubnetPoolsCRUD(t *testing.T) { Description: &newDescription, } - _, err = subnetpools.Update(client, subnetPool.ID, updateOpts).Extract() + _, err = subnetpools.Update(context.TODO(), client, subnetPool.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newSubnetPool, err := subnetpools.Get(client, subnetPool.ID).Extract() + newSubnetPool, err := subnetpools.Get(context.TODO(), client, subnetPool.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newSubnetPool) th.AssertEquals(t, newSubnetPool.Name, newName) th.AssertEquals(t, newSubnetPool.Description, newDescription) - allPages, err := subnetpools.List(client, nil).AllPages() + allPages, err := subnetpools.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allSubnetPools, err := subnetpools.ExtractSubnetPools(allPages) diff --git a/internal/acceptance/openstack/networking/v2/extensions/trunk_details/trunks_test.go b/internal/acceptance/openstack/networking/v2/extensions/trunk_details/trunks_test.go index e6726ad7f1..42cfb737da 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/trunk_details/trunks_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/trunk_details/trunks_test.go @@ -4,6 +4,7 @@ package trunk_details import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -27,7 +28,7 @@ func TestListPortWithSubports(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - _, err = extensions.Get(client, "trunk-details").Extract() + _, err = extensions.Get(context.TODO(), client, "trunk-details").Extract() if err != nil { t.Skip("This test requires trunk-details Neutron extension") } @@ -72,7 +73,7 @@ func TestListPortWithSubports(t *testing.T) { defer v2Trunks.DeleteTrunk(t, client, trunk.ID) // Test LIST ports with trunk details - allPages, err := ports.List(client, ports.ListOpts{ID: parentPort.ID}).AllPages() + allPages, err := ports.List(client, ports.ListOpts{ID: parentPort.ID}).AllPages(context.TODO()) th.AssertNoErr(t, err) var allPorts []portWithTrunkDetails @@ -103,7 +104,7 @@ func TestListPortWithSubports(t *testing.T) { }, port.TrunkDetails.SubPorts[1].Subport) // Test GET port with trunk details - err = ports.Get(client, parentPort.ID).ExtractInto(&port) + err = ports.Get(context.TODO(), client, parentPort.ID).ExtractInto(&port) th.AssertEquals(t, trunk.ID, port.TrunkDetails.TrunkID) th.AssertEquals(t, 2, len(port.TrunkDetails.SubPorts)) th.AssertDeepEquals(t, trunk_details.Subport{ diff --git a/internal/acceptance/openstack/networking/v2/extensions/trunks/trunks.go b/internal/acceptance/openstack/networking/v2/extensions/trunks/trunks.go index f35940631c..29f18dab62 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/trunks/trunks.go +++ b/internal/acceptance/openstack/networking/v2/extensions/trunks/trunks.go @@ -1,6 +1,7 @@ package trunks import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -28,7 +29,7 @@ func CreateTrunk(t *testing.T, client *gophercloud.ServiceClient, parentPortID s } t.Logf("Attempting to create trunk: %s", opts.Name) - trunk, err = trunks.Create(client, opts).Extract() + trunk, err = trunks.Create(context.TODO(), client, opts).Extract() if err == nil { t.Logf("Successfully created trunk") } @@ -37,7 +38,7 @@ func CreateTrunk(t *testing.T, client *gophercloud.ServiceClient, parentPortID s func DeleteTrunk(t *testing.T, client *gophercloud.ServiceClient, trunkID string) { t.Logf("Attempting to delete trunk: %s", trunkID) - err := trunks.Delete(client, trunkID).ExtractErr() + err := trunks.Delete(context.TODO(), client, trunkID).ExtractErr() if err != nil { t.Fatalf("Unable to delete trunk %s: %v", trunkID, err) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/trunks/trunks_test.go b/internal/acceptance/openstack/networking/v2/extensions/trunks/trunks_test.go index 5e2a7eeec2..8bd5a265d4 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/trunks/trunks_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/trunks/trunks_test.go @@ -4,6 +4,7 @@ package trunks import ( + "context" "sort" "testing" @@ -22,7 +23,7 @@ func TestTrunkCRUD(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - extension, err := extensions.Get(client, "trunk").Extract() + extension, err := extensions.Get(context.TODO(), client, "trunk").Extract() if err != nil { t.Skip("This test requires trunk Neutron extension") } @@ -67,7 +68,7 @@ func TestTrunkCRUD(t *testing.T) { } defer DeleteTrunk(t, client, trunk.ID) - _, err = trunks.Get(client, trunk.ID).Extract() + _, err = trunks.Get(context.TODO(), client, trunk.ID).Extract() if err != nil { t.Fatalf("Unable to get trunk: %v", err) } @@ -79,7 +80,7 @@ func TestTrunkCRUD(t *testing.T) { Name: &name, Description: &description, } - updatedTrunk, err := trunks.Update(client, trunk.ID, updateOpts).Extract() + updatedTrunk, err := trunks.Update(context.TODO(), client, trunk.ID, updateOpts).Extract() if err != nil { t.Fatalf("Unable to update trunk: %v", err) } @@ -96,7 +97,7 @@ func TestTrunkCRUD(t *testing.T) { th.AssertDeepEquals(t, updatedTrunk.Description, description) // Get subports - subports, err := trunks.GetSubports(client, trunk.ID).Extract() + subports, err := trunks.GetSubports(context.TODO(), client, trunk.ID).Extract() if err != nil { t.Fatalf("Unable to get subports from the Trunk: %v", err) } @@ -112,13 +113,13 @@ func TestTrunkList(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - extension, err := extensions.Get(client, "trunk").Extract() + extension, err := extensions.Get(context.TODO(), client, "trunk").Extract() if err != nil { t.Skip("This test requires trunk Neutron extension") } tools.PrintResource(t, extension) - allPages, err := trunks.List(client, nil).AllPages() + allPages, err := trunks.List(client, nil).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list trunks: %v", err) } @@ -139,7 +140,7 @@ func TestTrunkSubportOperation(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - extension, err := extensions.Get(client, "trunk").Extract() + extension, err := extensions.Get(context.TODO(), client, "trunk").Extract() if err != nil { t.Skip("This test requires trunk Neutron extension") } @@ -199,7 +200,7 @@ func TestTrunkSubportOperation(t *testing.T) { }, }, } - updatedTrunk, err := trunks.AddSubports(client, trunk.ID, addSubportsOpts).Extract() + updatedTrunk, err := trunks.AddSubports(context.TODO(), client, trunk.ID, addSubportsOpts).Extract() if err != nil { t.Fatalf("Unable to add subports to the Trunk: %v", err) } @@ -214,7 +215,7 @@ func TestTrunkSubportOperation(t *testing.T) { {PortID: subport2.ID}, }, } - updatedAgainTrunk, err := trunks.RemoveSubports(client, trunk.ID, subRemoveOpts).Extract() + updatedAgainTrunk, err := trunks.RemoveSubports(context.TODO(), client, trunk.ID, subRemoveOpts).Extract() if err != nil { t.Fatalf("Unable to remove subports from the Trunk: %v", err) } @@ -227,7 +228,7 @@ func TestTrunkTags(t *testing.T) { t.Fatalf("Unable to create a network client: %v", err) } - extension, err := extensions.Get(client, "trunk").Extract() + extension, err := extensions.Get(context.TODO(), client, "trunk").Extract() if err != nil { t.Skip("This test requires trunk Neutron extension") } @@ -276,12 +277,12 @@ func TestTrunkTags(t *testing.T) { // docs say list of tags, but it's a set e.g no duplicates Tags: []string{"a", "b", "c"}, } - tags, err := attributestags.ReplaceAll(client, "trunks", trunk.ID, tagReplaceAllOpts).Extract() + tags, err := attributestags.ReplaceAll(context.TODO(), client, "trunks", trunk.ID, tagReplaceAllOpts).Extract() if err != nil { t.Fatalf("Unable to set trunk tags: %v", err) } - gtrunk, err := trunks.Get(client, trunk.ID).Extract() + gtrunk, err := trunks.Get(context.TODO(), client, trunk.ID).Extract() if err != nil { t.Fatalf("Unable to get trunk: %v", err) } @@ -290,23 +291,23 @@ func TestTrunkTags(t *testing.T) { th.AssertDeepEquals(t, []string{"a", "b", "c"}, tags) // Add a tag - err = attributestags.Add(client, "trunks", trunk.ID, "d").ExtractErr() + err = attributestags.Add(context.TODO(), client, "trunks", trunk.ID, "d").ExtractErr() th.AssertNoErr(t, err) // Delete a tag - err = attributestags.Delete(client, "trunks", trunk.ID, "a").ExtractErr() + err = attributestags.Delete(context.TODO(), client, "trunks", trunk.ID, "a").ExtractErr() th.AssertNoErr(t, err) // Verify expected tags are set in the List response - tags, err = attributestags.List(client, "trunks", trunk.ID).Extract() + tags, err = attributestags.List(context.TODO(), client, "trunks", trunk.ID).Extract() th.AssertNoErr(t, err) sort.Strings(tags) th.AssertDeepEquals(t, []string{"b", "c", "d"}, tags) // Delete all tags - err = attributestags.DeleteAll(client, "trunks", trunk.ID).ExtractErr() + err = attributestags.DeleteAll(context.TODO(), client, "trunks", trunk.ID).ExtractErr() th.AssertNoErr(t, err) - tags, err = attributestags.List(client, "trunks", trunk.ID).Extract() + tags, err = attributestags.List(context.TODO(), client, "trunks", trunk.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, 0, len(tags)) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/vlantransparent/vlantransparent.go b/internal/acceptance/openstack/networking/v2/extensions/vlantransparent/vlantransparent.go index 603a790a89..87aa2d4e8d 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/vlantransparent/vlantransparent.go +++ b/internal/acceptance/openstack/networking/v2/extensions/vlantransparent/vlantransparent.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -31,7 +32,7 @@ func ListVLANTransparentNetworks(t *testing.T, client *gophercloud.ServiceClient t.Log("Attempting to list VLAN-transparent networks") - allPages, err := networks.List(client, listOpts).AllPages() + allPages, err := networks.List(client, listOpts).AllPages(context.TODO()) if err != nil { return nil, err } @@ -63,7 +64,7 @@ func CreateVLANTransparentNetwork(t *testing.T, client *gophercloud.ServiceClien t.Logf("Attempting to create a VLAN-transparent network: %s", networkName) var network VLANTransparentNetwork - err := networks.Create(client, createOpts).ExtractInto(&network) + err := networks.Create(context.TODO(), client, createOpts).ExtractInto(&network) if err != nil { return nil, err } @@ -93,7 +94,7 @@ func UpdateVLANTransparentNetwork(t *testing.T, client *gophercloud.ServiceClien t.Logf("Attempting to update a VLAN-transparent network: %s", networkID) var network VLANTransparentNetwork - err := networks.Update(client, networkID, updateOpts).ExtractInto(&network) + err := networks.Update(context.TODO(), client, networkID, updateOpts).ExtractInto(&network) if err != nil { return nil, err } diff --git a/internal/acceptance/openstack/networking/v2/extensions/vlantransparent/vlantransparent_test.go b/internal/acceptance/openstack/networking/v2/extensions/vlantransparent/vlantransparent_test.go index 892ecd8dd7..c21c9c69de 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/vlantransparent/vlantransparent_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/vlantransparent/vlantransparent_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestVLANTransparentCRUD(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - extension, err := extensions.Get(client, "vlan-transparent").Extract() + extension, err := extensions.Get(context.TODO(), client, "vlan-transparent").Extract() if err != nil { t.Skip("This test requires vlan-transparent Neutron extension") } diff --git a/internal/acceptance/openstack/networking/v2/extensions/vpnaas/group_test.go b/internal/acceptance/openstack/networking/v2/extensions/vpnaas/group_test.go index fd5b8e5e48..bfb16ef898 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/vpnaas/group_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/vpnaas/group_test.go @@ -4,6 +4,7 @@ package vpnaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -16,7 +17,7 @@ func TestGroupList(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - allPages, err := endpointgroups.List(client, nil).AllPages() + allPages, err := endpointgroups.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allGroups, err := endpointgroups.ExtractEndpointGroups(allPages) @@ -36,7 +37,7 @@ func TestGroupCRUD(t *testing.T) { defer DeleteEndpointGroup(t, client, group.ID) tools.PrintResource(t, group) - newGroup, err := endpointgroups.Get(client, group.ID).Extract() + newGroup, err := endpointgroups.Get(context.TODO(), client, group.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newGroup) @@ -46,7 +47,7 @@ func TestGroupCRUD(t *testing.T) { Name: &updatedName, Description: &updatedDescription, } - updatedGroup, err := endpointgroups.Update(client, group.ID, updateOpts).Extract() + updatedGroup, err := endpointgroups.Update(context.TODO(), client, group.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedGroup) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/vpnaas/ikepolicy_test.go b/internal/acceptance/openstack/networking/v2/extensions/vpnaas/ikepolicy_test.go index 14d2032e1b..d8a233b8c4 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/vpnaas/ikepolicy_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/vpnaas/ikepolicy_test.go @@ -4,6 +4,7 @@ package vpnaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -16,7 +17,7 @@ func TestIKEPolicyList(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - allPages, err := ikepolicies.List(client, nil).AllPages() + allPages, err := ikepolicies.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicies, err := ikepolicies.ExtractPolicies(allPages) @@ -37,7 +38,7 @@ func TestIKEPolicyCRUD(t *testing.T) { tools.PrintResource(t, policy) - newPolicy, err := ikepolicies.Get(client, policy.ID).Extract() + newPolicy, err := ikepolicies.Get(context.TODO(), client, policy.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPolicy) @@ -50,7 +51,7 @@ func TestIKEPolicyCRUD(t *testing.T) { Value: 7000, }, } - updatedPolicy, err := ikepolicies.Update(client, policy.ID, updateOpts).Extract() + updatedPolicy, err := ikepolicies.Update(context.TODO(), client, policy.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, updatedPolicy) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/vpnaas/ipsecpolicy_test.go b/internal/acceptance/openstack/networking/v2/extensions/vpnaas/ipsecpolicy_test.go index d5deb7f738..fbed901888 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/vpnaas/ipsecpolicy_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/vpnaas/ipsecpolicy_test.go @@ -4,6 +4,7 @@ package vpnaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -16,7 +17,7 @@ func TestIPSecPolicyList(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - allPages, err := ipsecpolicies.List(client, nil).AllPages() + allPages, err := ipsecpolicies.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicies, err := ipsecpolicies.ExtractPolicies(allPages) @@ -41,11 +42,11 @@ func TestIPSecPolicyCRUD(t *testing.T) { Description: &updatedDescription, } - policy, err = ipsecpolicies.Update(client, policy.ID, updateOpts).Extract() + policy, err = ipsecpolicies.Update(context.TODO(), client, policy.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, policy) - newPolicy, err := ipsecpolicies.Get(client, policy.ID).Extract() + newPolicy, err := ipsecpolicies.Get(context.TODO(), client, policy.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPolicy) } diff --git a/internal/acceptance/openstack/networking/v2/extensions/vpnaas/service_test.go b/internal/acceptance/openstack/networking/v2/extensions/vpnaas/service_test.go index 92cff63b6c..872e5e8a3e 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/vpnaas/service_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/vpnaas/service_test.go @@ -4,6 +4,7 @@ package vpnaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestServiceList(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - allPages, err := services.List(client, nil).AllPages() + allPages, err := services.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allServices, err := services.ExtractServices(allPages) @@ -41,7 +42,7 @@ func TestServiceCRUD(t *testing.T) { th.AssertNoErr(t, err) defer DeleteService(t, client, service.ID) - newService, err := services.Get(client, service.ID).Extract() + newService, err := services.Get(context.TODO(), client, service.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, service) diff --git a/internal/acceptance/openstack/networking/v2/extensions/vpnaas/siteconnection_test.go b/internal/acceptance/openstack/networking/v2/extensions/vpnaas/siteconnection_test.go index 5a4b8358e2..c201483295 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/vpnaas/siteconnection_test.go +++ b/internal/acceptance/openstack/networking/v2/extensions/vpnaas/siteconnection_test.go @@ -4,6 +4,7 @@ package vpnaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestConnectionList(t *testing.T) { client, err := clients.NewNetworkV2Client() th.AssertNoErr(t, err) - allPages, err := siteconnections.List(client, nil).AllPages() + allPages, err := siteconnections.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allConnections, err := siteconnections.ExtractConnections(allPages) @@ -54,13 +55,13 @@ func TestConnectionCRUD(t *testing.T) { SubnetID: subnet.ID, } - _, err = routers.AddInterface(client, router.ID, aiOpts).Extract() + _, err = routers.AddInterface(context.TODO(), client, router.ID, aiOpts).Extract() th.AssertNoErr(t, err) defer func() { riOpts := routers.RemoveInterfaceOpts{ SubnetID: subnet.ID, } - routers.RemoveInterface(client, router.ID, riOpts) + routers.RemoveInterface(context.TODO(), client, router.ID, riOpts) }() // Create all needed resources for the connection @@ -88,7 +89,7 @@ func TestConnectionCRUD(t *testing.T) { th.AssertNoErr(t, err) defer DeleteSiteConnection(t, client, conn.ID) - newConnection, err := siteconnections.Get(client, conn.ID).Extract() + newConnection, err := siteconnections.Get(context.TODO(), client, conn.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, conn) diff --git a/internal/acceptance/openstack/networking/v2/extensions/vpnaas/vpnaas.go b/internal/acceptance/openstack/networking/v2/extensions/vpnaas/vpnaas.go index c6db6ac425..07b9e38839 100644 --- a/internal/acceptance/openstack/networking/v2/extensions/vpnaas/vpnaas.go +++ b/internal/acceptance/openstack/networking/v2/extensions/vpnaas/vpnaas.go @@ -1,6 +1,7 @@ package vpnaas import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -26,7 +27,7 @@ func CreateService(t *testing.T, client *gophercloud.ServiceClient, routerID str AdminStateUp: &iTrue, RouterID: routerID, } - service, err := services.Create(client, createOpts).Extract() + service, err := services.Create(context.TODO(), client, createOpts).Extract() if err != nil { return service, err } @@ -44,7 +45,7 @@ func CreateService(t *testing.T, client *gophercloud.ServiceClient, routerID str func DeleteService(t *testing.T, client *gophercloud.ServiceClient, serviceID string) { t.Logf("Attempting to delete service: %s", serviceID) - err := services.Delete(client, serviceID).ExtractErr() + err := services.Delete(context.TODO(), client, serviceID).ExtractErr() if err != nil { t.Fatalf("Unable to delete service %s: %v", serviceID, err) } @@ -63,7 +64,7 @@ func CreateIPSecPolicy(t *testing.T, client *gophercloud.ServiceClient) (*ipsecp Name: policyName, } - policy, err := ipsecpolicies.Create(client, createOpts).Extract() + policy, err := ipsecpolicies.Create(context.TODO(), client, createOpts).Extract() if err != nil { return policy, err } @@ -88,7 +89,7 @@ func CreateIKEPolicy(t *testing.T, client *gophercloud.ServiceClient) (*ikepolic PFS: ikepolicies.PFSGroup5, } - policy, err := ikepolicies.Create(client, createOpts).Extract() + policy, err := ikepolicies.Create(context.TODO(), client, createOpts).Extract() if err != nil { return policy, err } @@ -106,7 +107,7 @@ func CreateIKEPolicy(t *testing.T, client *gophercloud.ServiceClient) (*ikepolic func DeleteIPSecPolicy(t *testing.T, client *gophercloud.ServiceClient, policyID string) { t.Logf("Attempting to delete IPSec policy: %s", policyID) - err := ipsecpolicies.Delete(client, policyID).ExtractErr() + err := ipsecpolicies.Delete(context.TODO(), client, policyID).ExtractErr() if err != nil { t.Fatalf("Unable to delete IPSec policy %s: %v", policyID, err) } @@ -120,7 +121,7 @@ func DeleteIPSecPolicy(t *testing.T, client *gophercloud.ServiceClient, policyID func DeleteIKEPolicy(t *testing.T, client *gophercloud.ServiceClient, policyID string) { t.Logf("Attempting to delete policy: %s", policyID) - err := ikepolicies.Delete(client, policyID).ExtractErr() + err := ikepolicies.Delete(context.TODO(), client, policyID).ExtractErr() if err != nil { t.Fatalf("Unable to delete IKE policy %s: %v", policyID, err) } @@ -143,7 +144,7 @@ func CreateEndpointGroup(t *testing.T, client *gophercloud.ServiceClient) (*endp "10.3.0.0/24", }, } - group, err := endpointgroups.Create(client, createOpts).Extract() + group, err := endpointgroups.Create(context.TODO(), client, createOpts).Extract() if err != nil { return group, err } @@ -169,7 +170,7 @@ func CreateEndpointGroupWithCIDR(t *testing.T, client *gophercloud.ServiceClient cidr, }, } - group, err := endpointgroups.Create(client, createOpts).Extract() + group, err := endpointgroups.Create(context.TODO(), client, createOpts).Extract() if err != nil { return group, err } @@ -188,7 +189,7 @@ func CreateEndpointGroupWithCIDR(t *testing.T, client *gophercloud.ServiceClient func DeleteEndpointGroup(t *testing.T, client *gophercloud.ServiceClient, epGroupID string) { t.Logf("Attempting to delete endpoint group: %s", epGroupID) - err := endpointgroups.Delete(client, epGroupID).ExtractErr() + err := endpointgroups.Delete(context.TODO(), client, epGroupID).ExtractErr() if err != nil { t.Fatalf("Unable to delete endpoint group %s: %v", epGroupID, err) } @@ -211,7 +212,7 @@ func CreateEndpointGroupWithSubnet(t *testing.T, client *gophercloud.ServiceClie subnetID, }, } - group, err := endpointgroups.Create(client, createOpts).Extract() + group, err := endpointgroups.Create(context.TODO(), client, createOpts).Extract() if err != nil { return group, err } @@ -245,7 +246,7 @@ func CreateSiteConnection(t *testing.T, client *gophercloud.ServiceClient, ikepo PeerID: "172.24.4.233", MTU: 1500, } - connection, err := siteconnections.Create(client, createOpts).Extract() + connection, err := siteconnections.Create(context.TODO(), client, createOpts).Extract() if err != nil { return connection, err } @@ -263,7 +264,7 @@ func CreateSiteConnection(t *testing.T, client *gophercloud.ServiceClient, ikepo func DeleteSiteConnection(t *testing.T, client *gophercloud.ServiceClient, siteConnectionID string) { t.Logf("Attempting to delete site connection: %s", siteConnectionID) - err := siteconnections.Delete(client, siteConnectionID).ExtractErr() + err := siteconnections.Delete(context.TODO(), client, siteConnectionID).ExtractErr() if err != nil { t.Fatalf("Unable to delete site connection %s: %v", siteConnectionID, err) } diff --git a/internal/acceptance/openstack/networking/v2/networking.go b/internal/acceptance/openstack/networking/v2/networking.go index 8501b70fb0..34057cbeb8 100644 --- a/internal/acceptance/openstack/networking/v2/networking.go +++ b/internal/acceptance/openstack/networking/v2/networking.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "fmt" "testing" @@ -33,7 +34,7 @@ func CreateNetwork(t *testing.T, client *gophercloud.ServiceClient) (*networks.N t.Logf("Attempting to create network: %s", networkName) - network, err := networks.Create(client, createOpts).Extract() + network, err := networks.Create(context.TODO(), client, createOpts).Extract() if err != nil { return network, err } @@ -63,7 +64,7 @@ func CreateNetworkWithoutPortSecurity(t *testing.T, client *gophercloud.ServiceC t.Logf("Attempting to create network: %s", networkName) - network, err := networks.Create(client, createOpts).Extract() + network, err := networks.Create(context.TODO(), client, createOpts).Extract() if err != nil { return network, err } @@ -91,7 +92,7 @@ func CreatePort(t *testing.T, client *gophercloud.ServiceClient, networkID, subn FixedIPs: []ports.IP{{SubnetID: subnetID}}, } - port, err := ports.Create(client, createOpts).Extract() + port, err := ports.Create(context.TODO(), client, createOpts).Extract() if err != nil { return port, err } @@ -100,7 +101,7 @@ func CreatePort(t *testing.T, client *gophercloud.ServiceClient, networkID, subn return port, err } - newPort, err := ports.Get(client, port.ID).Extract() + newPort, err := ports.Get(context.TODO(), client, port.ID).Extract() if err != nil { return newPort, err } @@ -129,7 +130,7 @@ func CreatePortWithNoSecurityGroup(t *testing.T, client *gophercloud.ServiceClie SecurityGroups: &[]string{}, } - port, err := ports.Create(client, createOpts).Extract() + port, err := ports.Create(context.TODO(), client, createOpts).Extract() if err != nil { return port, err } @@ -138,7 +139,7 @@ func CreatePortWithNoSecurityGroup(t *testing.T, client *gophercloud.ServiceClie return port, err } - newPort, err := ports.Get(client, port.ID).Extract() + newPort, err := ports.Get(context.TODO(), client, port.ID).Extract() if err != nil { return newPort, err } @@ -170,7 +171,7 @@ func CreatePortWithoutPortSecurity(t *testing.T, client *gophercloud.ServiceClie PortSecurityEnabled: &iFalse, } - port, err := ports.Create(client, createOpts).Extract() + port, err := ports.Create(context.TODO(), client, createOpts).Extract() if err != nil { return port, err } @@ -179,7 +180,7 @@ func CreatePortWithoutPortSecurity(t *testing.T, client *gophercloud.ServiceClie return port, err } - newPort, err := ports.Get(client, port.ID).Extract() + newPort, err := ports.Get(context.TODO(), client, port.ID).Extract() if err != nil { return newPort, err } @@ -216,7 +217,7 @@ func CreatePortWithExtraDHCPOpts(t *testing.T, client *gophercloud.ServiceClient } port := &PortWithExtraDHCPOpts{} - err := ports.Create(client, createOpts).ExtractInto(port) + err := ports.Create(context.TODO(), client, createOpts).ExtractInto(port) if err != nil { return nil, err } @@ -225,7 +226,7 @@ func CreatePortWithExtraDHCPOpts(t *testing.T, client *gophercloud.ServiceClient return nil, err } - err = ports.Get(client, port.ID).ExtractInto(port) + err = ports.Get(context.TODO(), client, port.ID).ExtractInto(port) if err != nil { return port, err } @@ -251,7 +252,7 @@ func CreatePortWithMultipleFixedIPs(t *testing.T, client *gophercloud.ServiceCli FixedIPs: []ports.IP{{SubnetID: subnetID}, {SubnetID: subnetID}}, } - port, err := ports.Create(client, createOpts).Extract() + port, err := ports.Create(context.TODO(), client, createOpts).Extract() if err != nil { return port, err } @@ -260,7 +261,7 @@ func CreatePortWithMultipleFixedIPs(t *testing.T, client *gophercloud.ServiceCli return port, err } - newPort, err := ports.Get(client, port.ID).Extract() + newPort, err := ports.Get(context.TODO(), client, port.ID).Extract() if err != nil { return newPort, err } @@ -303,7 +304,7 @@ func CreateSubnetWithCIDR(t *testing.T, client *gophercloud.ServiceClient, netwo t.Logf("Attempting to create subnet: %s", subnetName) - subnet, err := subnets.Create(client, createOpts).Extract() + subnet, err := subnets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return subnet, err } @@ -341,7 +342,7 @@ func CreateSubnetWithServiceTypes(t *testing.T, client *gophercloud.ServiceClien t.Logf("Attempting to create subnet: %s", subnetName) - subnet, err := subnets.Create(client, createOpts).Extract() + subnet, err := subnets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return subnet, err } @@ -376,7 +377,7 @@ func CreateSubnetWithDefaultGateway(t *testing.T, client *gophercloud.ServiceCli t.Logf("Attempting to create subnet: %s", subnetName) - subnet, err := subnets.Create(client, createOpts).Extract() + subnet, err := subnets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return subnet, err } @@ -417,7 +418,7 @@ func CreateSubnetWithNoGateway(t *testing.T, client *gophercloud.ServiceClient, t.Logf("Attempting to create subnet: %s", subnetName) - subnet, err := subnets.Create(client, createOpts).Extract() + subnet, err := subnets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return subnet, err } @@ -448,7 +449,7 @@ func CreateSubnetWithSubnetPool(t *testing.T, client *gophercloud.ServiceClient, t.Logf("Attempting to create subnet: %s", subnetName) - subnet, err := subnets.Create(client, createOpts).Extract() + subnet, err := subnets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return subnet, err } @@ -476,7 +477,7 @@ func CreateSubnetWithSubnetPoolNoCIDR(t *testing.T, client *gophercloud.ServiceC t.Logf("Attempting to create subnet: %s", subnetName) - subnet, err := subnets.Create(client, createOpts).Extract() + subnet, err := subnets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return subnet, err } @@ -505,7 +506,7 @@ func CreateSubnetWithSubnetPoolPrefixlen(t *testing.T, client *gophercloud.Servi t.Logf("Attempting to create subnet: %s", subnetName) - subnet, err := subnets.Create(client, createOpts).Extract() + subnet, err := subnets.Create(context.TODO(), client, createOpts).Extract() if err != nil { return subnet, err } @@ -523,7 +524,7 @@ func CreateSubnetWithSubnetPoolPrefixlen(t *testing.T, client *gophercloud.Servi func DeleteNetwork(t *testing.T, client *gophercloud.ServiceClient, networkID string) { t.Logf("Attempting to delete network: %s", networkID) - err := networks.Delete(client, networkID).ExtractErr() + err := networks.Delete(context.TODO(), client, networkID).ExtractErr() if err != nil { t.Fatalf("Unable to delete network %s: %v", networkID, err) } @@ -537,7 +538,7 @@ func DeleteNetwork(t *testing.T, client *gophercloud.ServiceClient, networkID st func DeletePort(t *testing.T, client *gophercloud.ServiceClient, portID string) { t.Logf("Attempting to delete port: %s", portID) - err := ports.Delete(client, portID).ExtractErr() + err := ports.Delete(context.TODO(), client, portID).ExtractErr() if err != nil { t.Fatalf("Unable to delete port %s: %v", portID, err) } @@ -551,7 +552,7 @@ func DeletePort(t *testing.T, client *gophercloud.ServiceClient, portID string) func DeleteSubnet(t *testing.T, client *gophercloud.ServiceClient, subnetID string) { t.Logf("Attempting to delete subnet: %s", subnetID) - err := subnets.Delete(client, subnetID).ExtractErr() + err := subnets.Delete(context.TODO(), client, subnetID).ExtractErr() if err != nil { t.Fatalf("Unable to delete subnet %s: %v", subnetID, err) } @@ -561,7 +562,7 @@ func DeleteSubnet(t *testing.T, client *gophercloud.ServiceClient, subnetID stri func WaitForPortToCreate(client *gophercloud.ServiceClient, portID string) error { return tools.WaitFor(func() (bool, error) { - p, err := ports.Get(client, portID).Extract() + p, err := ports.Get(context.TODO(), client, portID).Extract() if err != nil { return false, err } @@ -585,7 +586,7 @@ func IDFromName(client *gophercloud.ServiceClient, name string) (string, error) Name: name, } - pages, err := networks.List(client, listOpts).AllPages() + pages, err := networks.List(client, listOpts).AllPages(context.TODO()) if err != nil { return "", err } diff --git a/internal/acceptance/openstack/networking/v2/networks_test.go b/internal/acceptance/openstack/networking/v2/networks_test.go index a1e70c3b08..b9b7b10352 100644 --- a/internal/acceptance/openstack/networking/v2/networks_test.go +++ b/internal/acceptance/openstack/networking/v2/networks_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "strings" "testing" @@ -38,7 +39,7 @@ func TestNetworksExternalList(t *testing.T) { External: &iTrue, } - allPages, err := networks.List(client, listOpts).AllPages() + allPages, err := networks.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) err = networks.ExtractNetworksInto(allPages, &allNetworks) @@ -62,7 +63,7 @@ func TestNetworksExternalList(t *testing.T) { External: &iFalse, } - allPages, err = networks.List(client, listOpts).AllPages() + allPages, err = networks.List(client, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) v, err := networks.ExtractNetworks(allPages) @@ -87,10 +88,10 @@ func TestNetworksCRUD(t *testing.T) { Description: &newDescription, } - _, err = networks.Update(client, network.ID, updateOpts).Extract() + _, err = networks.Update(context.TODO(), client, network.ID, updateOpts).Extract() th.AssertNoErr(t, err) - newNetwork, err := networks.Get(client, network.ID).Extract() + newNetwork, err := networks.Get(context.TODO(), client, network.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newNetwork) @@ -104,7 +105,7 @@ func TestNetworksCRUD(t *testing.T) { var allNetworks []networkWithExt - allPages, err := networks.List(client, nil).AllPages() + allPages, err := networks.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) err = networks.ExtractNetworksInto(allPages, &allNetworks) @@ -136,7 +137,7 @@ func TestNetworksPortSecurityCRUD(t *testing.T) { portsecurity.PortSecurityExt } - err = networks.Get(client, network.ID).ExtractInto(&networkWithExtensions) + err = networks.Get(context.TODO(), client, network.ID).ExtractInto(&networkWithExtensions) th.AssertNoErr(t, err) tools.PrintResource(t, networkWithExtensions) @@ -148,7 +149,7 @@ func TestNetworksPortSecurityCRUD(t *testing.T) { PortSecurityEnabled: &iTrue, } - err = networks.Update(client, network.ID, updateOpts).ExtractInto(&networkWithExtensions) + err = networks.Update(context.TODO(), client, network.ID, updateOpts).ExtractInto(&networkWithExtensions) th.AssertNoErr(t, err) tools.PrintResource(t, networkWithExtensions) @@ -176,7 +177,7 @@ func TestNetworksRevision(t *testing.T) { Name: &newName, Description: &newDescription, } - network, err = networks.Update(client, network.ID, updateOpts).Extract() + network, err = networks.Update(context.TODO(), client, network.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, network) @@ -188,14 +189,14 @@ func TestNetworksRevision(t *testing.T) { Description: &newDescription, RevisionNumber: &oldRevisionNumber, } - _, err = networks.Update(client, network.ID, updateOpts).Extract() + _, err = networks.Update(context.TODO(), client, network.ID, updateOpts).Extract() th.AssertErr(t, err) if !strings.Contains(err.Error(), "RevisionNumberConstraintFailed") { t.Fatalf("expected to see an error of type RevisionNumberConstraintFailed, but got the following error instead: %v", err) } // Reread the network to show that it did not change. - network, err = networks.Get(client, network.ID).Extract() + network, err = networks.Get(context.TODO(), client, network.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, network) @@ -207,7 +208,7 @@ func TestNetworksRevision(t *testing.T) { Description: &newDescription, RevisionNumber: &network.RevisionNumber, } - network, err = networks.Update(client, network.ID, updateOpts).Extract() + network, err = networks.Update(context.TODO(), client, network.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, network) diff --git a/internal/acceptance/openstack/networking/v2/ports_test.go b/internal/acceptance/openstack/networking/v2/ports_test.go index 1cf7cecf4a..0c7352ec34 100644 --- a/internal/acceptance/openstack/networking/v2/ports_test.go +++ b/internal/acceptance/openstack/networking/v2/ports_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "fmt" "strings" "testing" @@ -49,7 +50,7 @@ func TestPortsCRUD(t *testing.T) { Name: &newPortName, Description: &newPortDescription, } - newPort, err := ports.Update(client, port.ID, updateOpts).Extract() + newPort, err := ports.Update(context.TODO(), client, port.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPort) @@ -57,7 +58,7 @@ func TestPortsCRUD(t *testing.T) { th.AssertEquals(t, newPort.Name, newPortName) th.AssertEquals(t, newPort.Description, newPortDescription) - allPages, err := ports.List(client, nil).AllPages() + allPages, err := ports.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allPorts, err := ports.ExtractPorts(allPages) @@ -125,7 +126,7 @@ func TestPortsCRUD(t *testing.T) { }, } { t.Run(fmt.Sprintf("List ports by %s", tt.name), func(t *testing.T) { - allPages, err := ports.List(client, tt.opts).AllPages() + allPages, err := ports.List(client, tt.opts).AllPages(context.TODO()) th.AssertNoErr(t, err) allPorts, err := ports.ExtractPorts(allPages) @@ -189,14 +190,14 @@ func TestPortsRemoveSecurityGroups(t *testing.T) { updateOpts := ports.UpdateOpts{ SecurityGroups: &[]string{group.ID}, } - newPort, err := ports.Update(client, port.ID, updateOpts).Extract() + newPort, err := ports.Update(context.TODO(), client, port.ID, updateOpts).Extract() th.AssertNoErr(t, err) // Remove the group updateOpts = ports.UpdateOpts{ SecurityGroups: &[]string{}, } - newPort, err = ports.Update(client, port.ID, updateOpts).Extract() + newPort, err = ports.Update(context.TODO(), client, port.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPort) @@ -236,7 +237,7 @@ func TestPortsDontAlterSecurityGroups(t *testing.T) { updateOpts := ports.UpdateOpts{ SecurityGroups: &[]string{group.ID}, } - newPort, err := ports.Update(client, port.ID, updateOpts).Extract() + newPort, err := ports.Update(context.TODO(), client, port.ID, updateOpts).Extract() th.AssertNoErr(t, err) // Update the port again @@ -244,7 +245,7 @@ func TestPortsDontAlterSecurityGroups(t *testing.T) { updateOpts = ports.UpdateOpts{ Name: &name, } - newPort, err = ports.Update(client, port.ID, updateOpts).Extract() + newPort, err = ports.Update(context.TODO(), client, port.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPort) @@ -307,14 +308,14 @@ func TestPortsRemoveAddressPair(t *testing.T) { {IPAddress: "192.168.255.10", MACAddress: "aa:bb:cc:dd:ee:ff"}, }, } - newPort, err := ports.Update(client, port.ID, updateOpts).Extract() + newPort, err := ports.Update(context.TODO(), client, port.ID, updateOpts).Extract() th.AssertNoErr(t, err) // Remove the address pair updateOpts = ports.UpdateOpts{ AllowedAddressPairs: &[]ports.AddressPair{}, } - newPort, err = ports.Update(client, port.ID, updateOpts).Extract() + newPort, err = ports.Update(context.TODO(), client, port.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPort) @@ -351,7 +352,7 @@ func TestPortsDontUpdateAllowedAddressPairs(t *testing.T) { {IPAddress: "192.168.255.10", MACAddress: "aa:bb:cc:dd:ee:ff"}, }, } - newPort, err := ports.Update(client, port.ID, updateOpts).Extract() + newPort, err := ports.Update(context.TODO(), client, port.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPort) @@ -361,7 +362,7 @@ func TestPortsDontUpdateAllowedAddressPairs(t *testing.T) { updateOpts = ports.UpdateOpts{ Name: &name, } - newPort, err = ports.Update(client, port.ID, updateOpts).Extract() + newPort, err = ports.Update(context.TODO(), client, port.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPort) @@ -395,7 +396,7 @@ func TestPortsPortSecurityCRUD(t *testing.T) { portsecurity.PortSecurityExt } - err = ports.Get(client, port.ID).ExtractInto(&portWithExt) + err = ports.Get(context.TODO(), client, port.ID).ExtractInto(&portWithExt) th.AssertNoErr(t, err) tools.PrintResource(t, portWithExt) @@ -407,7 +408,7 @@ func TestPortsPortSecurityCRUD(t *testing.T) { PortSecurityEnabled: &iTrue, } - err = ports.Update(client, port.ID, updateOpts).ExtractInto(&portWithExt) + err = ports.Update(context.TODO(), client, port.ID, updateOpts).ExtractInto(&portWithExt) th.AssertNoErr(t, err) tools.PrintResource(t, portWithExt) @@ -458,7 +459,7 @@ func TestPortsWithExtraDHCPOptsCRUD(t *testing.T) { } newPort := &PortWithExtraDHCPOpts{} - err = ports.Update(client, port.ID, updateOpts).ExtractInto(newPort) + err = ports.Update(context.TODO(), client, port.ID, updateOpts).ExtractInto(newPort) th.AssertNoErr(t, err) tools.PrintResource(t, newPort) @@ -493,7 +494,7 @@ func TestPortsRevision(t *testing.T) { }, RevisionNumber: &port.RevisionNumber, } - newPort, err := ports.Update(client, port.ID, updateOpts).Extract() + newPort, err := ports.Update(context.TODO(), client, port.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPort) @@ -503,14 +504,14 @@ func TestPortsRevision(t *testing.T) { AllowedAddressPairs: &[]ports.AddressPair{}, RevisionNumber: &port.RevisionNumber, } - newPort, err = ports.Update(client, port.ID, updateOpts).Extract() + newPort, err = ports.Update(context.TODO(), client, port.ID, updateOpts).Extract() th.AssertErr(t, err) if !strings.Contains(err.Error(), "RevisionNumberConstraintFailed") { t.Fatalf("expected to see an error of type RevisionNumberConstraintFailed, but got the following error instead: %v", err) } // The previous ports.Update returns an empty object, so get the port again. - newPort, err = ports.Get(client, port.ID).Extract() + newPort, err = ports.Get(context.TODO(), client, port.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPort) @@ -519,7 +520,7 @@ func TestPortsRevision(t *testing.T) { updateOpts = ports.UpdateOpts{ AllowedAddressPairs: &[]ports.AddressPair{}, } - newPort, err = ports.Update(client, port.ID, updateOpts).Extract() + newPort, err = ports.Update(context.TODO(), client, port.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newPort) diff --git a/internal/acceptance/openstack/networking/v2/subnets_test.go b/internal/acceptance/openstack/networking/v2/subnets_test.go index bed5ae1382..66740c8222 100644 --- a/internal/acceptance/openstack/networking/v2/subnets_test.go +++ b/internal/acceptance/openstack/networking/v2/subnets_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "fmt" "strings" "testing" @@ -38,18 +39,18 @@ func TestSubnetCRUD(t *testing.T) { Name: &newSubnetName, Description: &newSubnetDescription, } - _, err = subnets.Update(client, subnet.ID, updateOpts).Extract() + _, err = subnets.Update(context.TODO(), client, subnet.ID, updateOpts).Extract() th.AssertNoErr(t, err) // Get subnet - newSubnet, err := subnets.Get(client, subnet.ID).Extract() + newSubnet, err := subnets.Get(context.TODO(), client, subnet.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newSubnet) th.AssertEquals(t, newSubnet.Name, newSubnetName) th.AssertEquals(t, newSubnet.Description, newSubnetDescription) - allPages, err := subnets.List(client, nil).AllPages() + allPages, err := subnets.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allSubnets, err := subnets.ExtractSubnets(allPages) @@ -86,7 +87,7 @@ func TestSubnetsServiceType(t *testing.T) { ServiceTypes: &serviceTypes, } - newSubnet, err := subnets.Update(client, subnet.ID, updateOpts).Extract() + newSubnet, err := subnets.Update(context.TODO(), client, subnet.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, newSubnet.ServiceTypes, serviceTypes) @@ -117,7 +118,7 @@ func TestSubnetsDefaultGateway(t *testing.T) { GatewayIP: &noGateway, } - newSubnet, err := subnets.Update(client, subnet.ID, updateOpts).Extract() + newSubnet, err := subnets.Update(context.TODO(), client, subnet.ID, updateOpts).Extract() th.AssertNoErr(t, err) if newSubnet.GatewayIP != "" { @@ -151,7 +152,7 @@ func TestSubnetsNoGateway(t *testing.T) { GatewayIP: &newGateway, } - newSubnet, err := subnets.Update(client, subnet.ID, updateOpts).Extract() + newSubnet, err := subnets.Update(context.TODO(), client, subnet.ID, updateOpts).Extract() th.AssertNoErr(t, err) if newSubnet.GatewayIP == "" { @@ -267,11 +268,11 @@ func TestSubnetDNSNameservers(t *testing.T) { updateOpts := subnets.UpdateOpts{ DNSNameservers: &dnsNameservers, } - _, err = subnets.Update(client, subnet.ID, updateOpts).Extract() + _, err = subnets.Update(context.TODO(), client, subnet.ID, updateOpts).Extract() th.AssertNoErr(t, err) // Get subnet - newSubnet, err := subnets.Get(client, subnet.ID).Extract() + newSubnet, err := subnets.Get(context.TODO(), client, subnet.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newSubnet) @@ -282,11 +283,11 @@ func TestSubnetDNSNameservers(t *testing.T) { updateOpts = subnets.UpdateOpts{ DNSNameservers: &dnsNameservers, } - _, err = subnets.Update(client, subnet.ID, updateOpts).Extract() + _, err = subnets.Update(context.TODO(), client, subnet.ID, updateOpts).Extract() th.AssertNoErr(t, err) // Get subnet - newSubnet, err = subnets.Get(client, subnet.ID).Extract() + newSubnet, err = subnets.Get(context.TODO(), client, subnet.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, newSubnet) @@ -320,7 +321,7 @@ func TestSubnetsRevision(t *testing.T) { Name: &newSubnetName, Description: &newSubnetDescription, } - subnet, err = subnets.Update(client, subnet.ID, updateOpts).Extract() + subnet, err = subnets.Update(context.TODO(), client, subnet.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, subnet) @@ -332,14 +333,14 @@ func TestSubnetsRevision(t *testing.T) { Description: &newSubnetDescription, RevisionNumber: &oldRevisionNumber, } - _, err = subnets.Update(client, subnet.ID, updateOpts).Extract() + _, err = subnets.Update(context.TODO(), client, subnet.ID, updateOpts).Extract() th.AssertErr(t, err) if !strings.Contains(err.Error(), "RevisionNumberConstraintFailed") { t.Fatalf("expected to see an error of type RevisionNumberConstraintFailed, but got the following error instead: %v", err) } // Reread the subnet to show that it did not change. - subnet, err = subnets.Get(client, subnet.ID).Extract() + subnet, err = subnets.Get(context.TODO(), client, subnet.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, subnet) @@ -351,7 +352,7 @@ func TestSubnetsRevision(t *testing.T) { Description: &newSubnetDescription, RevisionNumber: &subnet.RevisionNumber, } - subnet, err = subnets.Update(client, subnet.ID, updateOpts).Extract() + subnet, err = subnets.Update(context.TODO(), client, subnet.ID, updateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, subnet) diff --git a/internal/acceptance/openstack/objectstorage/v1/accounts_test.go b/internal/acceptance/openstack/objectstorage/v1/accounts_test.go index 36107ee9b7..79f64b7e9a 100644 --- a/internal/acceptance/openstack/objectstorage/v1/accounts_test.go +++ b/internal/acceptance/openstack/objectstorage/v1/accounts_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "strings" "testing" @@ -22,7 +23,7 @@ func TestAccounts(t *testing.T) { metadata := map[string]string{ "Gophercloud-Test": "accounts", } - updateres := accounts.Update(client, accounts.UpdateOpts{Metadata: metadata}) + updateres := accounts.Update(context.TODO(), client, accounts.UpdateOpts{Metadata: metadata}) t.Logf("Update Account Response: %+v\n", updateres) updateHeaders, err := updateres.Extract() th.AssertNoErr(t, err) @@ -34,12 +35,12 @@ func TestAccounts(t *testing.T) { for k := range metadata { tempMap[k] = "" } - updateres = accounts.Update(client, accounts.UpdateOpts{Metadata: tempMap}) + updateres = accounts.Update(context.TODO(), client, accounts.UpdateOpts{Metadata: tempMap}) th.AssertNoErr(t, updateres.Err) }() // Extract the custom metadata from the 'Get' response. - res := accounts.Get(client, nil) + res := accounts.Get(context.TODO(), client, nil) h, err := res.Extract() th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/objectstorage/v1/containers_test.go b/internal/acceptance/openstack/objectstorage/v1/containers_test.go index 82000968e7..8f1eb00578 100644 --- a/internal/acceptance/openstack/objectstorage/v1/containers_test.go +++ b/internal/acceptance/openstack/objectstorage/v1/containers_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "strings" "testing" @@ -31,20 +32,20 @@ func TestContainers(t *testing.T) { // Create numContainers containers. for i := 0; i < len(cNames); i++ { - res := containers.Create(client, cNames[i], nil) + res := containers.Create(context.TODO(), client, cNames[i], nil) th.AssertNoErr(t, res.Err) } // Delete the numContainers containers after function completion. defer func() { for i := 0; i < len(cNames); i++ { - res := containers.Delete(client, cNames[i]) + res := containers.Delete(context.TODO(), client, cNames[i]) th.AssertNoErr(t, res.Err) } }() // List the numContainer names that were just created. To just list those, // the 'prefix' parameter is used. - err = containers.List(client, &containers.ListOpts{Prefix: "gophercloud-test-container-"}).EachPage(func(page pagination.Page) (bool, error) { + err = containers.List(client, &containers.ListOpts{Prefix: "gophercloud-test-container-"}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { containerList, err := containers.ExtractInfo(page) th.AssertNoErr(t, err) @@ -58,7 +59,7 @@ func TestContainers(t *testing.T) { th.AssertNoErr(t, err) // List the info for the numContainer containers that were created. - err = containers.List(client, &containers.ListOpts{Prefix: "gophercloud-test-container-"}).EachPage(func(page pagination.Page) (bool, error) { + err = containers.List(client, &containers.ListOpts{Prefix: "gophercloud-test-container-"}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { containerList, err := containers.ExtractNames(page) th.AssertNoErr(t, err) for _, n := range containerList { @@ -86,7 +87,7 @@ func TestContainers(t *testing.T) { ContainerSyncKey: &empty, } - updateres := containers.Update(client, cNames[0], opts) + updateres := containers.Update(context.TODO(), client, cNames[0], opts) th.AssertNoErr(t, updateres.Err) // After the tests are done, delete the metadata that was set. defer func() { @@ -101,7 +102,7 @@ func TestContainers(t *testing.T) { ContainerWrite: &empty, DetectContentType: &iTrue, } - res := containers.Update(client, cNames[0], opts) + res := containers.Update(context.TODO(), client, cNames[0], opts) th.AssertNoErr(t, res.Err) // confirm the metadata was removed @@ -109,7 +110,7 @@ func TestContainers(t *testing.T) { Newest: true, } - resp := containers.Get(client, cNames[0], getOpts) + resp := containers.Get(context.TODO(), client, cNames[0], getOpts) cm, err := resp.ExtractMetadata() th.AssertNoErr(t, err) for k := range metadata { @@ -128,7 +129,7 @@ func TestContainers(t *testing.T) { Newest: true, } - resp := containers.Get(client, cNames[0], getOpts) + resp := containers.Get(context.TODO(), client, cNames[0], getOpts) cm, err := resp.ExtractMetadata() th.AssertNoErr(t, err) for k := range metadata { @@ -142,7 +143,7 @@ func TestContainers(t *testing.T) { th.AssertEquals(t, write, strings.Join(container.Write, ",")) // Retrieve a container's timestamp - cHeaders, err := containers.Get(client, cNames[0], getOpts).Extract() + cHeaders, err := containers.Get(context.TODO(), client, cNames[0], getOpts).Extract() th.AssertNoErr(t, err) t.Logf("Container: Name [%s] Timestamp: [%f]\n", cNames[0], cHeaders.Timestamp) } @@ -163,20 +164,20 @@ func TestListAllContainers(t *testing.T) { // Create numContainers containers. for i := 0; i < len(cNames); i++ { - res := containers.Create(client, cNames[i], nil) + res := containers.Create(context.TODO(), client, cNames[i], nil) th.AssertNoErr(t, res.Err) } // Delete the numContainers containers after function completion. defer func() { for i := 0; i < len(cNames); i++ { - res := containers.Delete(client, cNames[i]) + res := containers.Delete(context.TODO(), client, cNames[i]) th.AssertNoErr(t, res.Err) } }() // List all the numContainer names that were just created. To just list those, // the 'prefix' parameter is used. - allPages, err := containers.List(client, &containers.ListOpts{Limit: 5, Prefix: "gophercloud-test-container-"}).AllPages() + allPages, err := containers.List(client, &containers.ListOpts{Limit: 5, Prefix: "gophercloud-test-container-"}).AllPages(context.TODO()) th.AssertNoErr(t, err) containerInfoList, err := containers.ExtractInfo(allPages) th.AssertNoErr(t, err) @@ -187,7 +188,7 @@ func TestListAllContainers(t *testing.T) { th.AssertEquals(t, numContainers, len(containerInfoList)) // List the info for all the numContainer containers that were created. - allPages, err = containers.List(client, &containers.ListOpts{Limit: 2, Prefix: "gophercloud-test-container-"}).AllPages() + allPages, err = containers.List(client, &containers.ListOpts{Limit: 2, Prefix: "gophercloud-test-container-"}).AllPages(context.TODO()) th.AssertNoErr(t, err) containerNamesList, err := containers.ExtractNames(allPages) th.AssertNoErr(t, err) @@ -213,7 +214,7 @@ func TestBulkDeleteContainers(t *testing.T) { // Create numContainers containers. for i := 0; i < len(cNames); i++ { - res := containers.Create(client, cNames[i], nil) + res := containers.Create(context.TODO(), client, cNames[i], nil) th.AssertNoErr(t, res.Err) } @@ -223,13 +224,13 @@ func TestBulkDeleteContainers(t *testing.T) { NumberDeleted: numContainers, } - resp, err := containers.BulkDelete(client, cNames).Extract() + resp, err := containers.BulkDelete(context.TODO(), client, cNames).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, *resp) th.AssertDeepEquals(t, *resp, expectedResp) for _, c := range cNames { - _, err = containers.Get(client, c, nil).Extract() + _, err = containers.Get(context.TODO(), client, c, nil).Extract() th.AssertErr(t, err) } } diff --git a/internal/acceptance/openstack/objectstorage/v1/objects_test.go b/internal/acceptance/openstack/objectstorage/v1/objects_test.go index 450c81cd6a..60a5444ce8 100644 --- a/internal/acceptance/openstack/objectstorage/v1/objects_test.go +++ b/internal/acceptance/openstack/objectstorage/v1/objects_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "fmt" "io" "net/http" @@ -40,13 +41,13 @@ func TestObjects(t *testing.T) { opts := containers.CreateOpts{ TempURLKey: "super-secret", } - header, err := containers.Create(client, cName, opts).Extract() + header, err := containers.Create(context.TODO(), client, cName, opts).Extract() th.AssertNoErr(t, err) t.Logf("Create object headers: %+v\n", header) // Defer deletion of the container until after testing. defer func() { - res := containers.Delete(client, cName) + res := containers.Delete(context.TODO(), client, cName) th.AssertNoErr(t, res.Err) }() @@ -57,13 +58,13 @@ func TestObjects(t *testing.T) { createOpts := objects.CreateOpts{ Content: strings.NewReader(oContents[i]), } - res := objects.Create(client, cName, oNames[i], createOpts) + res := objects.Create(context.TODO(), client, cName, oNames[i], createOpts) th.AssertNoErr(t, res.Err) } // Delete the objects after testing. defer func() { for i := 0; i < numObjects; i++ { - res := objects.Delete(client, cName, oNames[i], nil) + res := objects.Delete(context.TODO(), client, cName, oNames[i], nil) th.AssertNoErr(t, res.Err) } }() @@ -73,7 +74,7 @@ func TestObjects(t *testing.T) { Prefix: "test-object-", } - allPages, err := objects.List(client, cName, listOpts).AllPages() + allPages, err := objects.List(client, cName, listOpts).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list objects: %v", err) } @@ -94,7 +95,7 @@ func TestObjects(t *testing.T) { // Downloading the URL validates it (this cannot be done in unit tests). objURLs := make([]string, numObjects) for i := 0; i < numObjects; i++ { - objURLs[i], err = objects.CreateTempURL(client, cName, oNames[i], objects.CreateTempURLOpts{ + objURLs[i], err = objects.CreateTempURL(context.TODO(), client, cName, oNames[i], objects.CreateTempURLOpts{ Method: http.MethodGet, TTL: 180, }) @@ -113,7 +114,7 @@ func TestObjects(t *testing.T) { resp.Body.Close() // custom Temp URL key with a sha256 digest and exact timestamp - objURLs[i], err = objects.CreateTempURL(client, cName, oNames[i], objects.CreateTempURLOpts{ + objURLs[i], err = objects.CreateTempURL(context.TODO(), client, cName, oNames[i], objects.CreateTempURLOpts{ Method: http.MethodGet, Timestamp: time.Now().UTC().Add(180 * time.Second), Digest: "sha256", @@ -138,11 +139,11 @@ func TestObjects(t *testing.T) { copyOpts := objects.CopyOpts{ Destination: "/" + cName + "/" + oNames[1], } - copyres := objects.Copy(client, cName, oNames[0], copyOpts) + copyres := objects.Copy(context.TODO(), client, cName, oNames[0], copyOpts) th.AssertNoErr(t, copyres.Err) // Download one of the objects that was created above. - downloadres := objects.Download(client, cName, oNames[0], nil) + downloadres := objects.Download(context.TODO(), client, cName, oNames[0], nil) th.AssertNoErr(t, downloadres.Err) o1Content, err := downloadres.ExtractContent() @@ -152,7 +153,7 @@ func TestObjects(t *testing.T) { downloadOpts := objects.DownloadOpts{ Newest: true, } - downloadres = objects.Download(client, cName, oNames[1], downloadOpts) + downloadres = objects.Download(context.TODO(), client, cName, oNames[1], downloadOpts) th.AssertNoErr(t, downloadres.Err) o2Content, err := downloadres.ExtractContent() th.AssertNoErr(t, err) @@ -172,7 +173,7 @@ func TestObjects(t *testing.T) { ContentDisposition: &disposition, ContentType: &cType, } - updateres := objects.Update(client, cName, oNames[0], updateOpts) + updateres := objects.Update(context.TODO(), client, cName, oNames[0], updateOpts) th.AssertNoErr(t, updateres.Err) // Delete the object's metadata after testing. @@ -192,14 +193,14 @@ func TestObjects(t *testing.T) { ContentType: &cType, DetectContentType: &iTrue, } - res := objects.Update(client, cName, oNames[0], updateOpts) + res := objects.Update(context.TODO(), client, cName, oNames[0], updateOpts) th.AssertNoErr(t, res.Err) // Retrieve an object's metadata. getOpts := objects.GetOpts{ Newest: true, } - resp := objects.Get(client, cName, oNames[0], getOpts) + resp := objects.Get(context.TODO(), client, cName, oNames[0], getOpts) om, err := resp.ExtractMetadata() th.AssertNoErr(t, err) if len(om) > 0 { @@ -215,7 +216,7 @@ func TestObjects(t *testing.T) { getOpts := objects.GetOpts{ Newest: true, } - resp := objects.Get(client, cName, oNames[0], getOpts) + resp := objects.Get(context.TODO(), client, cName, oNames[0], getOpts) om, err := resp.ExtractMetadata() th.AssertNoErr(t, err) for k := range metadata { @@ -254,13 +255,13 @@ func TestObjectsListSubdir(t *testing.T) { // Create a container to hold the test objects. cName := "test-container-" + tools.RandomFunnyStringNoSlash(8) - _, err = containers.Create(client, cName, nil).Extract() + _, err = containers.Create(context.TODO(), client, cName, nil).Extract() th.AssertNoErr(t, err) // Defer deletion of the container until after testing. defer func() { t.Logf("Deleting container %s", cName) - res := containers.Delete(client, cName) + res := containers.Delete(context.TODO(), client, cName) th.AssertNoErr(t, res.Err) }() @@ -271,14 +272,14 @@ func TestObjectsListSubdir(t *testing.T) { createOpts := objects.CreateOpts{ Content: strings.NewReader(oContents1[i]), } - res := objects.Create(client, cName, oNames1[i], createOpts) + res := objects.Create(context.TODO(), client, cName, oNames1[i], createOpts) th.AssertNoErr(t, res.Err) } // Delete the objects after testing. defer func() { for i := 0; i < numObjects; i++ { t.Logf("Deleting object %s", oNames1[i]) - res := objects.Delete(client, cName, oNames1[i], nil) + res := objects.Delete(context.TODO(), client, cName, oNames1[i], nil) th.AssertNoErr(t, res.Err) } }() @@ -289,14 +290,14 @@ func TestObjectsListSubdir(t *testing.T) { createOpts := objects.CreateOpts{ Content: strings.NewReader(oContents2[i]), } - res := objects.Create(client, cName, oNames2[i], createOpts) + res := objects.Create(context.TODO(), client, cName, oNames2[i], createOpts) th.AssertNoErr(t, res.Err) } // Delete the objects after testing. defer func() { for i := 0; i < numObjects; i++ { t.Logf("Deleting object %s", oNames2[i]) - res := objects.Delete(client, cName, oNames2[i], nil) + res := objects.Delete(context.TODO(), client, cName, oNames2[i], nil) th.AssertNoErr(t, res.Err) } }() @@ -305,7 +306,7 @@ func TestObjectsListSubdir(t *testing.T) { Delimiter: "/", } - allPages, err := objects.List(client, cName, listOpts).AllPages() + allPages, err := objects.List(client, cName, listOpts).AllPages(context.TODO()) if err != nil { t.Fatal(err) } @@ -334,7 +335,7 @@ func TestObjectsListSubdir(t *testing.T) { Prefix: cSubdir2, } - allPages, err = objects.List(client, cName, listOpts).AllPages() + allPages, err = objects.List(client, cName, listOpts).AllPages(context.TODO()) if err != nil { t.Fatal(err) } @@ -371,13 +372,13 @@ func TestObjectsBulkDelete(t *testing.T) { // Create a container to hold the test objects. cName := "test-container-" + tools.RandomFunnyStringNoSlash(8) - _, err = containers.Create(client, cName, nil).Extract() + _, err = containers.Create(context.TODO(), client, cName, nil).Extract() th.AssertNoErr(t, err) // Defer deletion of the container until after testing. defer func() { t.Logf("Deleting container %s", cName) - res := containers.Delete(client, cName) + res := containers.Delete(context.TODO(), client, cName) th.AssertNoErr(t, res.Err) }() @@ -388,7 +389,7 @@ func TestObjectsBulkDelete(t *testing.T) { createOpts := objects.CreateOpts{ Content: strings.NewReader(oContents1[i]), } - res := objects.Create(client, cName, oNames1[i], createOpts) + res := objects.Create(context.TODO(), client, cName, oNames1[i], createOpts) th.AssertNoErr(t, res.Err) } @@ -398,7 +399,7 @@ func TestObjectsBulkDelete(t *testing.T) { createOpts := objects.CreateOpts{ Content: strings.NewReader(oContents2[i]), } - res := objects.Create(client, cName, oNames2[i], createOpts) + res := objects.Create(context.TODO(), client, cName, oNames2[i], createOpts) th.AssertNoErr(t, res.Err) } @@ -409,7 +410,7 @@ func TestObjectsBulkDelete(t *testing.T) { NumberDeleted: numObjects * 2, } - resp, err := objects.BulkDelete(client, cName, append(oNames1, oNames2...)).Extract() + resp, err := objects.BulkDelete(context.TODO(), client, cName, append(oNames1, oNames2...)).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, *resp, expectedResp) @@ -418,7 +419,7 @@ func TestObjectsBulkDelete(t *testing.T) { Delimiter: "/", } - allPages, err := objects.List(client, cName, listOpts).AllPages() + allPages, err := objects.List(client, cName, listOpts).AllPages(context.TODO()) if err != nil { t.Fatal(err) } diff --git a/internal/acceptance/openstack/objectstorage/v1/versioning_test.go b/internal/acceptance/openstack/objectstorage/v1/versioning_test.go index f817097ad2..d38629e04d 100644 --- a/internal/acceptance/openstack/objectstorage/v1/versioning_test.go +++ b/internal/acceptance/openstack/objectstorage/v1/versioning_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "strings" "testing" @@ -33,18 +34,18 @@ func TestObjectsVersioning(t *testing.T) { opts := containers.CreateOpts{ VersionsEnabled: true, } - header, err := containers.Create(client, cName, opts).Extract() + header, err := containers.Create(context.TODO(), client, cName, opts).Extract() th.AssertNoErr(t, err) t.Logf("Create container headers: %+v\n", header) // Defer deletion of the container until after testing. defer func() { - res := containers.Delete(client, cName) + res := containers.Delete(context.TODO(), client, cName) th.AssertNoErr(t, res.Err) }() // ensure versioning is enabled - get, err := containers.Get(client, cName, nil).Extract() + get, err := containers.Get(context.TODO(), client, cName, nil).Extract() th.AssertNoErr(t, err) t.Logf("Get container headers: %+v\n", get) th.AssertEquals(t, true, get.VersionsEnabled) @@ -57,7 +58,7 @@ func TestObjectsVersioning(t *testing.T) { createOpts := objects.CreateOpts{ Content: strings.NewReader(oContents[i]), } - obj, err := objects.Create(client, cName, oNames[i], createOpts).Extract() + obj, err := objects.Create(context.TODO(), client, cName, oNames[i], createOpts).Extract() th.AssertNoErr(t, err) oContentVersionIDs[i] = obj.ObjectVersionID } @@ -67,7 +68,7 @@ func TestObjectsVersioning(t *testing.T) { createOpts := objects.CreateOpts{ Content: strings.NewReader(oNewContents[i]), } - _, err := objects.Create(client, cName, oNames[i], createOpts).Extract() + _, err := objects.Create(context.TODO(), client, cName, oNames[i], createOpts).Extract() th.AssertNoErr(t, err) } // Delete the objects after testing two times. @@ -76,13 +77,13 @@ func TestObjectsVersioning(t *testing.T) { opts := containers.UpdateOpts{ VersionsEnabled: new(bool), } - header, err := containers.Update(client, cName, opts).Extract() + header, err := containers.Update(context.TODO(), client, cName, opts).Extract() th.AssertNoErr(t, err) t.Logf("Update container headers: %+v\n", header) // ensure versioning is disabled - get, err := containers.Get(client, cName, nil).Extract() + get, err := containers.Get(context.TODO(), client, cName, nil).Extract() th.AssertNoErr(t, err) t.Logf("Get container headers: %+v\n", get) th.AssertEquals(t, false, get.VersionsEnabled) @@ -93,7 +94,7 @@ func TestObjectsVersioning(t *testing.T) { opts := objects.DeleteOpts{ ObjectVersionID: oContentVersionIDs[i], } - obj, err := objects.Delete(client, cName, oNames[i], opts).Extract() + obj, err := objects.Delete(context.TODO(), client, cName, oNames[i], opts).Extract() th.AssertNoErr(t, err) currentVersionIDs[i] = obj.ObjectCurrentVersionID } @@ -101,7 +102,7 @@ func TestObjectsVersioning(t *testing.T) { opts := objects.DeleteOpts{ ObjectVersionID: currentVersionIDs[i], } - res := objects.Delete(client, cName, oNames[i], opts) + res := objects.Delete(context.TODO(), client, cName, oNames[i], opts) th.AssertNoErr(t, res.Err) } }() @@ -111,7 +112,7 @@ func TestObjectsVersioning(t *testing.T) { Prefix: "test-object-", } - allPages, err := objects.List(client, cName, listOpts).AllPages() + allPages, err := objects.List(client, cName, listOpts).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list objects: %v", err) } @@ -134,7 +135,7 @@ func TestObjectsVersioning(t *testing.T) { Versions: true, } - allPages, err = objects.List(client, cName, listOpts).AllPages() + allPages, err = objects.List(client, cName, listOpts).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list objects: %v", err) } @@ -164,7 +165,7 @@ func TestObjectsVersioning(t *testing.T) { } // Download one of the objects that was created above. - downloadres := objects.Download(client, cName, oNames[0], nil) + downloadres := objects.Download(context.TODO(), client, cName, oNames[0], nil) th.AssertNoErr(t, downloadres.Err) o1Content, err := downloadres.ExtractContent() @@ -177,7 +178,7 @@ func TestObjectsVersioning(t *testing.T) { downloadOpts := objects.DownloadOpts{ Newest: true, } - downloadres = objects.Download(client, cName, oNames[1], downloadOpts) + downloadres = objects.Download(context.TODO(), client, cName, oNames[1], downloadOpts) th.AssertNoErr(t, downloadres.Err) o2Content, err := downloadres.ExtractContent() th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/orchestration/v1/buildinfo_test.go b/internal/acceptance/openstack/orchestration/v1/buildinfo_test.go index 98c6e59fad..4a11af0d24 100644 --- a/internal/acceptance/openstack/orchestration/v1/buildinfo_test.go +++ b/internal/acceptance/openstack/orchestration/v1/buildinfo_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -15,7 +16,7 @@ func TestBuildInfo(t *testing.T) { client, err := clients.NewOrchestrationV1Client() th.AssertNoErr(t, err) - bi, err := buildinfo.Get(client).Extract() + bi, err := buildinfo.Get(context.TODO(), client).Extract() th.AssertNoErr(t, err) t.Logf("retrieved build info: %+v\n", bi) } diff --git a/internal/acceptance/openstack/orchestration/v1/orchestration.go b/internal/acceptance/openstack/orchestration/v1/orchestration.go index fde59c6aa0..f7448732d7 100644 --- a/internal/acceptance/openstack/orchestration/v1/orchestration.go +++ b/internal/acceptance/openstack/orchestration/v1/orchestration.go @@ -1,6 +1,7 @@ package v1 import ( + "context" "fmt" "testing" @@ -69,14 +70,14 @@ func CreateStack(t *testing.T, client *gophercloud.ServiceClient) (*stacks.Retri DisableRollback: gophercloud.Disabled, } - stack, err := stacks.Create(client, createOpts).Extract() + stack, err := stacks.Create(context.TODO(), client, createOpts).Extract() th.AssertNoErr(t, err) if err := WaitForStackStatus(client, stackName, stack.ID, "CREATE_COMPLETE"); err != nil { return nil, err } - newStack, err := stacks.Get(client, stackName, stack.ID).Extract() + newStack, err := stacks.Get(context.TODO(), client, stackName, stack.ID).Extract() return newStack, err } @@ -86,7 +87,7 @@ func CreateStack(t *testing.T, client *gophercloud.ServiceClient) (*stacks.Retri func DeleteStack(t *testing.T, client *gophercloud.ServiceClient, stackName, stackID string) { t.Logf("Attempting to delete stack %s (%s)", stackName, stackID) - err := stacks.Delete(client, stackName, stackID).ExtractErr() + err := stacks.Delete(context.TODO(), client, stackName, stackID).ExtractErr() if err != nil { t.Fatalf("Failed to delete stack %s: %s", stackID, err) } @@ -97,7 +98,7 @@ func DeleteStack(t *testing.T, client *gophercloud.ServiceClient, stackName, sta // WaitForStackStatus will wait until a stack has reached a certain status. func WaitForStackStatus(client *gophercloud.ServiceClient, stackName, stackID, status string) error { return tools.WaitFor(func() (bool, error) { - latest, err := stacks.Get(client, stackName, stackID).Extract() + latest, err := stacks.Get(context.TODO(), client, stackName, stackID).Extract() if err != nil { return false, err } @@ -135,13 +136,13 @@ resources: DisableRollback: gophercloud.Disabled, } - stack, err := stacks.Create(client, createOpts).Extract() + stack, err := stacks.Create(context.TODO(), client, createOpts).Extract() th.AssertNoErr(t, err) if err := WaitForStackStatus(client, stackName, stack.ID, "CREATE_COMPLETE"); err != nil { return nil, err } - newStack, err := stacks.Get(client, stackName, stack.ID).Extract() + newStack, err := stacks.Get(context.TODO(), client, stackName, stack.ID).Extract() return newStack, err } diff --git a/internal/acceptance/openstack/orchestration/v1/stackevents_test.go b/internal/acceptance/openstack/orchestration/v1/stackevents_test.go index 0bd5d379cc..bfdd0079a8 100644 --- a/internal/acceptance/openstack/orchestration/v1/stackevents_test.go +++ b/internal/acceptance/openstack/orchestration/v1/stackevents_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -19,7 +20,7 @@ func TestStackEvents(t *testing.T) { th.AssertNoErr(t, err) defer DeleteStack(t, client, stack.Name, stack.ID) - allPages, err := stackevents.List(client, stack.Name, stack.ID, nil).AllPages() + allPages, err := stackevents.List(client, stack.Name, stack.ID, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allEvents, err := stackevents.ExtractEvents(allPages) th.AssertNoErr(t, err) @@ -28,7 +29,7 @@ func TestStackEvents(t *testing.T) { /* allPages is currently broke - allPages, err = stackevents.ListResourceEvents(client, stack.Name, stack.ID, basicTemplateResourceName, nil).AllPages() + allPages, err = stackevents.ListResourceEvents(client, stack.Name, stack.ID, basicTemplateResourceName, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allEvents, err = stackevents.ExtractEvents(allPages) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/orchestration/v1/stackresources_test.go b/internal/acceptance/openstack/orchestration/v1/stackresources_test.go index 9e62a486b0..05930db255 100644 --- a/internal/acceptance/openstack/orchestration/v1/stackresources_test.go +++ b/internal/acceptance/openstack/orchestration/v1/stackresources_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -20,11 +21,11 @@ func TestStackResources(t *testing.T) { th.AssertNoErr(t, err) defer DeleteStack(t, client, stack.Name, stack.ID) - resource, err := stackresources.Get(client, stack.Name, stack.ID, basicTemplateResourceName).Extract() + resource, err := stackresources.Get(context.TODO(), client, stack.Name, stack.ID, basicTemplateResourceName).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, resource) - metadata, err := stackresources.Metadata(client, stack.Name, stack.ID, basicTemplateResourceName).Extract() + metadata, err := stackresources.Metadata(context.TODO(), client, stack.Name, stack.ID, basicTemplateResourceName).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, metadata) @@ -33,15 +34,15 @@ func TestStackResources(t *testing.T) { ResourceStatusReason: "Wrong security policy is detected.", } - err = stackresources.MarkUnhealthy(client, stack.Name, stack.ID, basicTemplateResourceName, markUnhealthyOpts).ExtractErr() + err = stackresources.MarkUnhealthy(context.TODO(), client, stack.Name, stack.ID, basicTemplateResourceName, markUnhealthyOpts).ExtractErr() th.AssertNoErr(t, err) - unhealthyResource, err := stackresources.Get(client, stack.Name, stack.ID, basicTemplateResourceName).Extract() + unhealthyResource, err := stackresources.Get(context.TODO(), client, stack.Name, stack.ID, basicTemplateResourceName).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "CHECK_FAILED", unhealthyResource.Status) tools.PrintResource(t, unhealthyResource) - allPages, err := stackresources.List(client, stack.Name, stack.ID, nil).AllPages() + allPages, err := stackresources.List(client, stack.Name, stack.ID, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allResources, err := stackresources.ExtractResources(allPages) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/orchestration/v1/stacks_test.go b/internal/acceptance/openstack/orchestration/v1/stacks_test.go index f32245008c..a7dbc90928 100644 --- a/internal/acceptance/openstack/orchestration/v1/stacks_test.go +++ b/internal/acceptance/openstack/orchestration/v1/stacks_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -30,14 +31,14 @@ func TestStacksCRUD(t *testing.T) { Timeout: 20, } - err = stacks.Update(client, createdStack.Name, createdStack.ID, updateOpts).ExtractErr() + err = stacks.Update(context.TODO(), client, createdStack.Name, createdStack.ID, updateOpts).ExtractErr() th.AssertNoErr(t, err) err = WaitForStackStatus(client, createdStack.Name, createdStack.ID, "UPDATE_COMPLETE") th.AssertNoErr(t, err) var found bool - allPages, err := stacks.List(client, nil).AllPages() + allPages, err := stacks.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allStacks, err := stacks.ExtractStacks(allPages) th.AssertNoErr(t, err) diff --git a/internal/acceptance/openstack/orchestration/v1/stacktemplates_test.go b/internal/acceptance/openstack/orchestration/v1/stacktemplates_test.go index fa6aa931cb..696fc9e530 100644 --- a/internal/acceptance/openstack/orchestration/v1/stacktemplates_test.go +++ b/internal/acceptance/openstack/orchestration/v1/stacktemplates_test.go @@ -4,6 +4,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -20,7 +21,7 @@ func TestStackTemplatesCRUD(t *testing.T) { th.AssertNoErr(t, err) defer DeleteStack(t, client, stack.Name, stack.ID) - tmpl, err := stacktemplates.Get(client, stack.Name, stack.ID).Extract() + tmpl, err := stacktemplates.Get(context.TODO(), client, stack.Name, stack.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, tmpl) } @@ -33,7 +34,7 @@ func TestStackTemplatesValidate(t *testing.T) { Template: validateTemplate, } - validatedTemplate, err := stacktemplates.Validate(client, validateOpts).Extract() + validatedTemplate, err := stacktemplates.Validate(context.TODO(), client, validateOpts).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, validatedTemplate) } @@ -46,7 +47,7 @@ func TestStackTemplateWithFile(t *testing.T) { th.AssertNoErr(t, err) defer DeleteStack(t, client, stack.Name, stack.ID) - tmpl, err := stacktemplates.Get(client, stack.Name, stack.ID).Extract() + tmpl, err := stacktemplates.Get(context.TODO(), client, stack.Name, stack.ID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, tmpl) } diff --git a/internal/acceptance/openstack/placement/v1/placement.go b/internal/acceptance/openstack/placement/v1/placement.go index 344ab97320..4149d5ff8b 100644 --- a/internal/acceptance/openstack/placement/v1/placement.go +++ b/internal/acceptance/openstack/placement/v1/placement.go @@ -1,6 +1,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -18,7 +19,7 @@ func CreateResourceProvider(t *testing.T, client *gophercloud.ServiceClient) (*r } client.Microversion = "1.20" - resourceProvider, err := resourceproviders.Create(client, createOpts).Extract() + resourceProvider, err := resourceproviders.Create(context.TODO(), client, createOpts).Extract() if err != nil { return resourceProvider, err } @@ -41,7 +42,7 @@ func CreateResourceProviderWithParent(t *testing.T, client *gophercloud.ServiceC } client.Microversion = "1.20" - resourceProvider, err := resourceproviders.Create(client, createOpts).Extract() + resourceProvider, err := resourceproviders.Create(context.TODO(), client, createOpts).Extract() if err != nil { return resourceProvider, err } @@ -61,7 +62,7 @@ func CreateResourceProviderWithParent(t *testing.T, client *gophercloud.ServiceC func DeleteResourceProvider(t *testing.T, client *gophercloud.ServiceClient, resourceProviderID string) { t.Logf("Attempting to delete resourceProvider: %s", resourceProviderID) - err := resourceproviders.Delete(client, resourceProviderID).ExtractErr() + err := resourceproviders.Delete(context.TODO(), client, resourceProviderID).ExtractErr() if err != nil { t.Fatalf("Unable to delete resourceProvider %s: %v", resourceProviderID, err) } diff --git a/internal/acceptance/openstack/placement/v1/resourceproviders_test.go b/internal/acceptance/openstack/placement/v1/resourceproviders_test.go index 11413b7921..b0b1bd5f3d 100644 --- a/internal/acceptance/openstack/placement/v1/resourceproviders_test.go +++ b/internal/acceptance/openstack/placement/v1/resourceproviders_test.go @@ -1,6 +1,7 @@ package v1 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -15,7 +16,7 @@ func TestResourceProviderList(t *testing.T) { client, err := clients.NewPlacementV1Client() th.AssertNoErr(t, err) - allPages, err := resourceproviders.List(client, resourceproviders.ListOpts{}).AllPages() + allPages, err := resourceproviders.List(client, resourceproviders.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) allResourceProviders, err := resourceproviders.ExtractResourceProviders(allPages) @@ -49,11 +50,11 @@ func TestResourceProvider(t *testing.T) { updateOpts := resourceproviders.UpdateOpts{ Name: &newName, } - resourceProviderUpdate, err := resourceproviders.Update(client, resourceProvider2.UUID, updateOpts).Extract() + resourceProviderUpdate, err := resourceproviders.Update(context.TODO(), client, resourceProvider2.UUID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, newName, resourceProviderUpdate.Name) - resourceProviderGet, err := resourceproviders.Get(client, resourceProvider2.UUID).Extract() + resourceProviderGet, err := resourceproviders.Get(context.TODO(), client, resourceProvider2.UUID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, newName, resourceProviderGet.Name) @@ -73,7 +74,7 @@ func TestResourceProviderUsages(t *testing.T) { defer DeleteResourceProvider(t, client, resourceProvider.UUID) // now get the usages for the newly created resource provider - usage, err := resourceproviders.GetUsages(client, resourceProvider.UUID).Extract() + usage, err := resourceproviders.GetUsages(context.TODO(), client, resourceProvider.UUID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, usage) @@ -91,7 +92,7 @@ func TestResourceProviderInventories(t *testing.T) { defer DeleteResourceProvider(t, client, resourceProvider.UUID) // now get the inventories for the newly created resource provider - usage, err := resourceproviders.GetInventories(client, resourceProvider.UUID).Extract() + usage, err := resourceproviders.GetInventories(context.TODO(), client, resourceProvider.UUID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, usage) @@ -109,7 +110,7 @@ func TestResourceProviderTraits(t *testing.T) { defer DeleteResourceProvider(t, client, resourceProvider.UUID) // now get the traits for the newly created resource provider - usage, err := resourceproviders.GetTraits(client, resourceProvider.UUID).Extract() + usage, err := resourceproviders.GetTraits(context.TODO(), client, resourceProvider.UUID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, usage) @@ -127,7 +128,7 @@ func TestResourceProviderAllocations(t *testing.T) { defer DeleteResourceProvider(t, client, resourceProvider.UUID) // now get the allocations for the newly created resource provider - usage, err := resourceproviders.GetAllocations(client, resourceProvider.UUID).Extract() + usage, err := resourceproviders.GetAllocations(context.TODO(), client, resourceProvider.UUID).Extract() th.AssertNoErr(t, err) tools.PrintResource(t, usage) diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/availabilityzones_test.go b/internal/acceptance/openstack/sharedfilesystems/v2/availabilityzones_test.go index aec11d0af3..75441f6e14 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/availabilityzones_test.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/availabilityzones_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -16,7 +17,7 @@ func TestAvailabilityZonesList(t *testing.T) { t.Fatalf("Unable to create shared file system client: %v", err) } - allPages, err := availabilityzones.List(client).AllPages() + allPages, err := availabilityzones.List(client).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list availability zones: %v", err) } diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/messages/messages.go b/internal/acceptance/openstack/sharedfilesystems/v2/messages/messages.go index 65d7ca934a..1c50770e75 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/messages/messages.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/messages/messages.go @@ -1,6 +1,7 @@ package messages import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -10,7 +11,7 @@ import ( // DeleteMessage will delete a message. An error will occur if // the message was unable to be deleted. func DeleteMessage(t *testing.T, client *gophercloud.ServiceClient, message *messages.Message) { - err := messages.Delete(client, message.ID).ExtractErr() + err := messages.Delete(context.TODO(), client, message.ID).ExtractErr() if err != nil { t.Fatalf("Failed to delete message %s: %v", message.ID, err) } diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/messages/messages_test.go b/internal/acceptance/openstack/sharedfilesystems/v2/messages/messages_test.go index d15209a007..4b1d53e99d 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/messages/messages_test.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/messages/messages_test.go @@ -1,6 +1,7 @@ package messages import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -18,7 +19,7 @@ func TestMessageList(t *testing.T) { } client.Microversion = minimumManilaMessagesMicroVersion - allPages, err := messages.List(client, messages.ListOpts{}).AllPages() + allPages, err := messages.List(client, messages.ListOpts{}).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve messages: %v", err) } @@ -46,7 +47,7 @@ func TestMessageListFiltering(t *testing.T) { RequestID: requestID, } - allPages, err := messages.List(client, options).AllPages() + allPages, err := messages.List(client, options).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve messages: %v", err) } @@ -77,7 +78,7 @@ func TestMessageDelete(t *testing.T) { RequestID: requestID, } - allPages, err := messages.List(client, options).AllPages() + allPages, err := messages.List(client, options).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve messages: %v", err) } @@ -100,7 +101,7 @@ func TestMessageDelete(t *testing.T) { messageID = listedMessage.ID } - message, err := messages.Get(client, messageID).Extract() + message, err := messages.Get(context.TODO(), client, messageID).Extract() if err != nil { t.Fatalf("Unable to retrieve the message: %v", err) } diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/replicas.go b/internal/acceptance/openstack/sharedfilesystems/v2/replicas.go index 5969ac3dd2..98de841523 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/replicas.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/replicas.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "fmt" "strings" "testing" @@ -20,7 +21,7 @@ func CreateReplica(t *testing.T, client *gophercloud.ServiceClient, share *share AvailabilityZone: share.AvailabilityZone, } - replica, err := replicas.Create(client, createOpts).Extract() + replica, err := replicas.Create(context.TODO(), client, createOpts).Extract() if err != nil { t.Logf("Failed to create replica") return nil, err @@ -39,7 +40,7 @@ func CreateReplica(t *testing.T, client *gophercloud.ServiceClient, share *share // DeleteReplica will delete a replica. A fatal error will occur if the replica // failed to be deleted. This works best when used as a deferred function. func DeleteReplica(t *testing.T, client *gophercloud.ServiceClient, replica *replicas.Replica) { - err := replicas.Delete(client, replica.ID).ExtractErr() + err := replicas.Delete(context.TODO(), client, replica.ID).ExtractErr() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { return @@ -61,7 +62,7 @@ func ListShareReplicas(t *testing.T, client *gophercloud.ServiceClient, shareID opts := replicas.ListOpts{ ShareID: shareID, } - pages, err := replicas.List(client, opts).AllPages() + pages, err := replicas.List(client, opts).AllPages(context.TODO()) if err != nil { t.Errorf("Unable to list %q share replicas: %v", shareID, err) } @@ -75,7 +76,7 @@ func waitForReplicaStatus(t *testing.T, c *gophercloud.ServiceClient, id, status err := tools.WaitFor(func() (bool, error) { var err error - current, err = replicas.Get(c, id).Extract() + current, err = replicas.Get(context.TODO(), c, id).Extract() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { switch status { @@ -115,7 +116,7 @@ func waitForReplicaState(t *testing.T, c *gophercloud.ServiceClient, id, state s err := tools.WaitFor(func() (bool, error) { var err error - current, err = replicas.Get(c, id).Extract() + current, err = replicas.Get(context.TODO(), c, id).Extract() if err != nil { return false, err } diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/replicas_test.go b/internal/acceptance/openstack/sharedfilesystems/v2/replicas_test.go index dca0c273ef..847512581f 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/replicas_test.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/replicas_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "time" @@ -40,7 +41,7 @@ func TestReplicaCreate(t *testing.T) { defer DeleteReplica(t, client, replica) - created, err := replicas.Get(client, replica.ID).Extract() + created, err := replicas.Get(context.TODO(), client, replica.ID).Extract() if err != nil { t.Errorf("Unable to retrieve replica: %v", err) } @@ -77,14 +78,14 @@ func TestReplicaPromote(t *testing.T) { defer DeleteReplica(t, client, replica) - created, err := replicas.Get(client, replica.ID).Extract() + created, err := replicas.Get(context.TODO(), client, replica.ID).Extract() if err != nil { t.Fatalf("Unable to retrieve replica: %v", err) } tools.PrintResource(t, created) // sync new replica - err = replicas.Resync(client, created.ID).ExtractErr() + err = replicas.Resync(context.TODO(), client, created.ID).ExtractErr() th.AssertNoErr(t, err) _, err = waitForReplicaState(t, client, created.ID, "in_sync") if err != nil { @@ -92,7 +93,7 @@ func TestReplicaPromote(t *testing.T) { } // promote new replica - err = replicas.Promote(client, created.ID, &replicas.PromoteOpts{}).ExtractErr() + err = replicas.Promote(context.TODO(), client, created.ID, &replicas.PromoteOpts{}).ExtractErr() th.AssertNoErr(t, err) _, err = waitForReplicaState(t, client, created.ID, "active") @@ -115,13 +116,13 @@ func TestReplicaPromote(t *testing.T) { t.Errorf("Unable to get old replica") } // sync old replica - err = replicas.Resync(client, oldReplicaID).ExtractErr() + err = replicas.Resync(context.TODO(), client, oldReplicaID).ExtractErr() th.AssertNoErr(t, err) _, err = waitForReplicaState(t, client, oldReplicaID, "in_sync") if err != nil { t.Fatalf("Replica status error: %v", err) } - err = replicas.Promote(client, oldReplicaID, &replicas.PromoteOpts{}).ExtractErr() + err = replicas.Promote(context.TODO(), client, oldReplicaID, &replicas.PromoteOpts{}).ExtractErr() th.AssertNoErr(t, err) _, err = waitForReplicaState(t, client, oldReplicaID, "active") @@ -154,7 +155,7 @@ func TestReplicaExportLocations(t *testing.T) { defer DeleteReplica(t, client, replica) // this call should return empty list, since replica is not yet active - exportLocations, err := replicas.ListExportLocations(client, replica.ID).Extract() + exportLocations, err := replicas.ListExportLocations(context.TODO(), client, replica.ID).Extract() if err != nil { t.Errorf("Unable to list replica export locations: %v", err) } @@ -163,7 +164,7 @@ func TestReplicaExportLocations(t *testing.T) { opts := replicas.ListOpts{ ShareID: share.ID, } - pages, err := replicas.List(client, opts).AllPages() + pages, err := replicas.List(client, opts).AllPages(context.TODO()) th.AssertNoErr(t, err) allReplicas, err := replicas.ExtractReplicas(pages) @@ -180,13 +181,13 @@ func TestReplicaExportLocations(t *testing.T) { t.Errorf("Unable to get active replica") } - exportLocations, err = replicas.ListExportLocations(client, activeReplicaID).Extract() + exportLocations, err = replicas.ListExportLocations(context.TODO(), client, activeReplicaID).Extract() if err != nil { t.Errorf("Unable to list replica export locations: %v", err) } tools.PrintResource(t, exportLocations) - exportLocation, err := replicas.GetExportLocation(client, activeReplicaID, exportLocations[0].ID).Extract() + exportLocation, err := replicas.GetExportLocation(context.TODO(), client, activeReplicaID, exportLocations[0].ID).Extract() if err != nil { t.Errorf("Unable to get replica export location: %v", err) } @@ -256,7 +257,7 @@ func TestReplicaResetStatus(t *testing.T) { resetStatusOpts := &replicas.ResetStatusOpts{ Status: "error", } - err = replicas.ResetStatus(client, replica.ID, resetStatusOpts).ExtractErr() + err = replicas.ResetStatus(context.TODO(), client, replica.ID, resetStatusOpts).ExtractErr() if err != nil { t.Fatalf("Unable to reset a replica status: %v", err) } @@ -295,7 +296,7 @@ func TestReplicaForceDelete(t *testing.T) { defer DeleteReplica(t, client, replica) - err = replicas.ForceDelete(client, replica.ID).ExtractErr() + err = replicas.ForceDelete(context.TODO(), client, replica.ID).ExtractErr() if err != nil { t.Fatalf("Unable to force delete a replica: %v", err) } diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/schedulerstats_test.go b/internal/acceptance/openstack/sharedfilesystems/v2/schedulerstats_test.go index 498bd450fa..672578a642 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/schedulerstats_test.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/schedulerstats_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestSchedulerStatsList(t *testing.T) { th.AssertNoErr(t, err) client.Microversion = "2.23" - allPages, err := schedulerstats.List(client, nil).AllPages() + allPages, err := schedulerstats.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allPools, err := schedulerstats.ExtractPools(allPages) diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/securityservices.go b/internal/acceptance/openstack/sharedfilesystems/v2/securityservices.go index b5cff53af6..413095a6e2 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/securityservices.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/securityservices.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -25,7 +26,7 @@ func CreateSecurityService(t *testing.T, client *gophercloud.ServiceClient) (*se Type: "kerberos", } - securityService, err := securityservices.Create(client, createOpts).Extract() + securityService, err := securityservices.Create(context.TODO(), client, createOpts).Extract() if err != nil { return securityService, err } @@ -36,7 +37,7 @@ func CreateSecurityService(t *testing.T, client *gophercloud.ServiceClient) (*se // DeleteSecurityService will delete a security service. An error will occur if // the security service was unable to be deleted. func DeleteSecurityService(t *testing.T, client *gophercloud.ServiceClient, securityService *securityservices.SecurityService) { - err := securityservices.Delete(client, securityService.ID).ExtractErr() + err := securityservices.Delete(context.TODO(), client, securityService.ID).ExtractErr() if err != nil { t.Fatalf("Failed to delete security service %s: %v", securityService.ID, err) } diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/securityservices_test.go b/internal/acceptance/openstack/sharedfilesystems/v2/securityservices_test.go index 64aa957145..32860ea6f2 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/securityservices_test.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/securityservices_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -22,7 +23,7 @@ func TestSecurityServiceCreateDelete(t *testing.T) { t.Fatalf("Unable to create security service: %v", err) } - newSecurityService, err := securityservices.Get(client, securityService.ID).Extract() + newSecurityService, err := securityservices.Get(context.TODO(), client, securityService.ID).Extract() if err != nil { t.Errorf("Unable to retrieve the security service: %v", err) } @@ -46,7 +47,7 @@ func TestSecurityServiceList(t *testing.T) { t.Fatalf("Unable to create a shared file system client: %v", err) } - allPages, err := securityservices.List(client, securityservices.ListOpts{}).AllPages() + allPages, err := securityservices.List(client, securityservices.ListOpts{}).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve security services: %v", err) } @@ -85,7 +86,7 @@ func TestSecurityServiceListFiltering(t *testing.T) { Name: securityService.Name, } - allPages, err := securityservices.List(client, options).AllPages() + allPages, err := securityservices.List(client, options).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve security services: %v", err) } @@ -124,12 +125,12 @@ func TestSecurityServiceUpdate(t *testing.T) { Type: "ldap", } - _, err = securityservices.Update(client, securityService.ID, options).Extract() + _, err = securityservices.Update(context.TODO(), client, securityService.ID, options).Extract() if err != nil { t.Errorf("Unable to update the security service: %v", err) } - newSecurityService, err := securityservices.Get(client, securityService.ID).Extract() + newSecurityService, err := securityservices.Get(context.TODO(), client, securityService.ID).Extract() if err != nil { t.Errorf("Unable to retrieve the security service: %v", err) } diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/services_test.go b/internal/acceptance/openstack/sharedfilesystems/v2/services_test.go index 0ccfe426b7..65d0acdbf7 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/services_test.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/services_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -17,7 +18,7 @@ func TestServicesList(t *testing.T) { th.AssertNoErr(t, err) client.Microversion = "2.7" - allPages, err := services.List(client, nil).AllPages() + allPages, err := services.List(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allServices, err := services.ExtractServices(allPages) diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/shareaccessrules.go b/internal/acceptance/openstack/sharedfilesystems/v2/shareaccessrules.go index 8be4821cf9..3fdc55cc7a 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/shareaccessrules.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/shareaccessrules.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "fmt" "testing" @@ -11,7 +12,7 @@ import ( ) func ShareAccessRuleGet(t *testing.T, client *gophercloud.ServiceClient, accessID string) (*shareaccessrules.ShareAccess, error) { - accessRule, err := shareaccessrules.Get(client, accessID).Extract() + accessRule, err := shareaccessrules.Get(context.TODO(), client, accessID).Extract() if err != nil { t.Logf("Failed to get share access rule %s: %v", accessID, err) return nil, err @@ -63,7 +64,7 @@ func WaitForShareAccessRule(t *testing.T, client *gophercloud.ServiceClient, acc } func ShareAccessRuleList(t *testing.T, client *gophercloud.ServiceClient, shareID string) ([]shareaccessrules.ShareAccess, error) { - accessRules, err := shareaccessrules.List(client, shareID).Extract() + accessRules, err := shareaccessrules.List(context.TODO(), client, shareID).Extract() if err != nil { t.Logf("Failed to list share access rules for share %s: %v", shareID, err) return nil, err diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/sharenetworks.go b/internal/acceptance/openstack/sharedfilesystems/v2/sharenetworks.go index 4250ef5d91..86d074058c 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/sharenetworks.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/sharenetworks.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -31,7 +32,7 @@ func CreateShareNetwork(t *testing.T, client *gophercloud.ServiceClient) (*share Description: "This is a shared network", } - shareNetwork, err := sharenetworks.Create(client, createOpts).Extract() + shareNetwork, err := sharenetworks.Create(context.TODO(), client, createOpts).Extract() if err != nil { return shareNetwork, err } @@ -42,7 +43,7 @@ func CreateShareNetwork(t *testing.T, client *gophercloud.ServiceClient) (*share // DeleteShareNetwork will delete a share network. An error will occur if // the share network was unable to be deleted. func DeleteShareNetwork(t *testing.T, client *gophercloud.ServiceClient, shareNetworkID string) { - err := sharenetworks.Delete(client, shareNetworkID).ExtractErr() + err := sharenetworks.Delete(context.TODO(), client, shareNetworkID).ExtractErr() if err != nil { t.Fatalf("Failed to delete share network %s: %v", shareNetworkID, err) } diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/sharenetworks_test.go b/internal/acceptance/openstack/sharedfilesystems/v2/sharenetworks_test.go index db683be42b..f212702b5e 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/sharenetworks_test.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/sharenetworks_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -24,7 +25,7 @@ func TestShareNetworkCreateDestroy(t *testing.T) { t.Fatalf("Unable to create share network: %v", err) } - newShareNetwork, err := sharenetworks.Get(client, shareNetwork.ID).Extract() + newShareNetwork, err := sharenetworks.Get(context.TODO(), client, shareNetwork.ID).Extract() if err != nil { t.Errorf("Unable to retrieve shareNetwork: %v", err) } @@ -55,7 +56,7 @@ func TestShareNetworkUpdate(t *testing.T) { t.Fatalf("Unable to create share network: %v", err) } - expectedShareNetwork, err := sharenetworks.Get(client, shareNetwork.ID).Extract() + expectedShareNetwork, err := sharenetworks.Get(context.TODO(), client, shareNetwork.ID).Extract() if err != nil { t.Errorf("Unable to retrieve shareNetwork: %v", err) } @@ -70,12 +71,12 @@ func TestShareNetworkUpdate(t *testing.T) { expectedShareNetwork.Name = name expectedShareNetwork.Description = description - _, err = sharenetworks.Update(client, shareNetwork.ID, options).Extract() + _, err = sharenetworks.Update(context.TODO(), client, shareNetwork.ID, options).Extract() if err != nil { t.Errorf("Unable to update shareNetwork: %v", err) } - updatedShareNetwork, err := sharenetworks.Get(client, shareNetwork.ID).Extract() + updatedShareNetwork, err := sharenetworks.Get(context.TODO(), client, shareNetwork.ID).Extract() if err != nil { t.Errorf("Unable to retrieve shareNetwork: %v", err) } @@ -96,7 +97,7 @@ func TestShareNetworkListDetail(t *testing.T) { t.Fatalf("Unable to create a shared file system client: %v", err) } - allPages, err := sharenetworks.ListDetail(client, sharenetworks.ListOpts{}).AllPages() + allPages, err := sharenetworks.ListDetail(client, sharenetworks.ListOpts{}).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve share networks: %v", err) } @@ -135,7 +136,7 @@ func TestShareNetworkListFiltering(t *testing.T) { Name: shareNetwork.Name, } - allPages, err := sharenetworks.ListDetail(client, options).AllPages() + allPages, err := sharenetworks.ListDetail(client, options).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve share networks: %v", err) } @@ -173,7 +174,7 @@ func TestShareNetworkListPagination(t *testing.T) { count := 0 - err = sharenetworks.ListDetail(client, sharenetworks.ListOpts{Offset: 0, Limit: 1}).EachPage(func(page pagination.Page) (bool, error) { + err = sharenetworks.ListDetail(client, sharenetworks.ListOpts{Offset: 0, Limit: 1}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ _, err := sharenetworks.ExtractShareNetworks(page) if err != nil { @@ -215,7 +216,7 @@ func TestShareNetworkAddRemoveSecurityService(t *testing.T) { SecurityServiceID: securityService.ID, } - _, err = sharenetworks.AddSecurityService(client, shareNetwork.ID, options).Extract() + _, err = sharenetworks.AddSecurityService(context.TODO(), client, shareNetwork.ID, options).Extract() if err != nil { t.Errorf("Unable to add security service: %v", err) } @@ -224,7 +225,7 @@ func TestShareNetworkAddRemoveSecurityService(t *testing.T) { SecurityServiceID: securityService.ID, } - _, err = sharenetworks.RemoveSecurityService(client, shareNetwork.ID, removeOptions).Extract() + _, err = sharenetworks.RemoveSecurityService(context.TODO(), client, shareNetwork.ID, removeOptions).Extract() if err != nil { t.Errorf("Unable to remove security service: %v", err) } diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/shares.go b/internal/acceptance/openstack/sharedfilesystems/v2/shares.go index fcb4b5d09d..9f80e1c36b 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/shares.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/shares.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "fmt" "strings" "testing" @@ -33,7 +34,7 @@ func CreateShare(t *testing.T, client *gophercloud.ServiceClient, optShareType . IsPublic: &iTrue, } - share, err := shares.Create(client, createOpts).Extract() + share, err := shares.Create(context.TODO(), client, createOpts).Extract() if err != nil { t.Logf("Failed to create share") return nil, err @@ -52,7 +53,7 @@ func CreateShare(t *testing.T, client *gophercloud.ServiceClient, optShareType . // ListShares lists all shares that belong to this tenant's project. // An error will be returned if the shares could not be listed.. func ListShares(t *testing.T, client *gophercloud.ServiceClient) ([]shares.Share, error) { - r, err := shares.ListDetail(client, &shares.ListOpts{}).AllPages() + r, err := shares.ListDetail(client, &shares.ListOpts{}).AllPages(context.TODO()) if err != nil { return nil, err } @@ -63,7 +64,7 @@ func ListShares(t *testing.T, client *gophercloud.ServiceClient) ([]shares.Share // GrantAccess will grant access to an existing share. A fatal error will occur if // this operation fails. func GrantAccess(t *testing.T, client *gophercloud.ServiceClient, share *shares.Share) (*shares.AccessRight, error) { - return shares.GrantAccess(client, share.ID, shares.GrantAccessOpts{ + return shares.GrantAccess(context.TODO(), client, share.ID, shares.GrantAccessOpts{ AccessType: "ip", AccessTo: "0.0.0.0/32", AccessLevel: "ro", @@ -73,7 +74,7 @@ func GrantAccess(t *testing.T, client *gophercloud.ServiceClient, share *shares. // RevokeAccess will revoke an exisiting access of a share. A fatal error will occur // if this operation fails. func RevokeAccess(t *testing.T, client *gophercloud.ServiceClient, share *shares.Share, accessRight *shares.AccessRight) error { - return shares.RevokeAccess(client, share.ID, shares.RevokeAccessOpts{ + return shares.RevokeAccess(context.TODO(), client, share.ID, shares.RevokeAccessOpts{ AccessID: accessRight.ID, }).ExtractErr() } @@ -81,13 +82,13 @@ func RevokeAccess(t *testing.T, client *gophercloud.ServiceClient, share *shares // GetAccessRightsSlice will retrieve all access rules assigned to a share. // A fatal error will occur if this operation fails. func GetAccessRightsSlice(t *testing.T, client *gophercloud.ServiceClient, share *shares.Share) ([]shares.AccessRight, error) { - return shares.ListAccessRights(client, share.ID).Extract() + return shares.ListAccessRights(context.TODO(), client, share.ID).Extract() } // DeleteShare will delete a share. A fatal error will occur if the share // failed to be deleted. This works best when used as a deferred function. func DeleteShare(t *testing.T, client *gophercloud.ServiceClient, share *shares.Share) { - err := shares.Delete(client, share.ID).ExtractErr() + err := shares.Delete(context.TODO(), client, share.ID).ExtractErr() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { return @@ -105,18 +106,18 @@ func DeleteShare(t *testing.T, client *gophercloud.ServiceClient, share *shares. // ExtendShare extends the capacity of an existing share func ExtendShare(t *testing.T, client *gophercloud.ServiceClient, share *shares.Share, newSize int) error { - return shares.Extend(client, share.ID, &shares.ExtendOpts{NewSize: newSize}).ExtractErr() + return shares.Extend(context.TODO(), client, share.ID, &shares.ExtendOpts{NewSize: newSize}).ExtractErr() } // ShrinkShare shrinks the capacity of an existing share func ShrinkShare(t *testing.T, client *gophercloud.ServiceClient, share *shares.Share, newSize int) error { - return shares.Shrink(client, share.ID, &shares.ShrinkOpts{NewSize: newSize}).ExtractErr() + return shares.Shrink(context.TODO(), client, share.ID, &shares.ShrinkOpts{NewSize: newSize}).ExtractErr() } func PrintMessages(t *testing.T, c *gophercloud.ServiceClient, id string) error { c.Microversion = "2.37" - allPages, err := messages.List(c, messages.ListOpts{ResourceID: id}).AllPages() + allPages, err := messages.List(c, messages.ListOpts{ResourceID: id}).AllPages(context.TODO()) if err != nil { return fmt.Errorf("Unable to retrieve messages: %v", err) } @@ -139,7 +140,7 @@ func waitForStatus(t *testing.T, c *gophercloud.ServiceClient, id, status string err := tools.WaitFor(func() (bool, error) { var err error - current, err = shares.Get(c, id).Extract() + current, err = shares.Get(context.TODO(), c, id).Extract() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { switch status { diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/shares_test.go b/internal/acceptance/openstack/sharedfilesystems/v2/shares_test.go index 173ee30810..a7f05516b9 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/shares_test.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/shares_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -25,7 +26,7 @@ func TestShareCreate(t *testing.T) { defer DeleteShare(t, client, share) - created, err := shares.Get(client, share.ID).Extract() + created, err := shares.Get(context.TODO(), client, share.ID).Extract() if err != nil { t.Errorf("Unable to retrieve share: %v", err) } @@ -52,13 +53,13 @@ func TestShareExportLocations(t *testing.T) { client.Microversion = "2.9" - exportLocations, err := shares.ListExportLocations(client, share.ID).Extract() + exportLocations, err := shares.ListExportLocations(context.TODO(), client, share.ID).Extract() if err != nil { t.Errorf("Unable to list share export locations: %v", err) } tools.PrintResource(t, exportLocations) - exportLocation, err := shares.GetExportLocation(client, share.ID, exportLocations[0].ID).Extract() + exportLocation, err := shares.GetExportLocation(context.TODO(), client, share.ID, exportLocations[0].ID).Extract() if err != nil { t.Errorf("Unable to get share export location: %v", err) } @@ -79,7 +80,7 @@ func TestShareUpdate(t *testing.T) { defer DeleteShare(t, client, share) - expectedShare, err := shares.Get(client, share.ID).Extract() + expectedShare, err := shares.Get(context.TODO(), client, share.ID).Extract() if err != nil { t.Errorf("Unable to retrieve share: %v", err) } @@ -97,12 +98,12 @@ func TestShareUpdate(t *testing.T) { expectedShare.Description = description expectedShare.IsPublic = iFalse - _, err = shares.Update(client, share.ID, options).Extract() + _, err = shares.Update(context.TODO(), client, share.ID, options).Extract() if err != nil { t.Errorf("Unable to update share: %v", err) } - updatedShare, err := shares.Get(client, share.ID).Extract() + updatedShare, err := shares.Get(context.TODO(), client, share.ID).Extract() if err != nil { t.Errorf("Unable to retrieve share: %v", err) } @@ -268,30 +269,30 @@ func TestShareMetadata(t *testing.T) { } } - metadata, err := shares.SetMetadata(client, share.ID, shares.SetMetadataOpts{Metadata: map[string]string{k: v1}}).Extract() + metadata, err := shares.SetMetadata(context.TODO(), client, share.ID, shares.SetMetadataOpts{Metadata: map[string]string{k: v1}}).Extract() if err != nil { t.Fatalf("Unable to set share metadata: %v", err) } checkMetadataEq(metadata, v1) - metadata, err = shares.UpdateMetadata(client, share.ID, shares.UpdateMetadataOpts{Metadata: map[string]string{k: v2}}).Extract() + metadata, err = shares.UpdateMetadata(context.TODO(), client, share.ID, shares.UpdateMetadataOpts{Metadata: map[string]string{k: v2}}).Extract() if err != nil { t.Fatalf("Unable to update share metadata: %v", err) } checkMetadataEq(metadata, v2) - metadata, err = shares.GetMetadatum(client, share.ID, k).Extract() + metadata, err = shares.GetMetadatum(context.TODO(), client, share.ID, k).Extract() if err != nil { t.Fatalf("Unable to get share metadatum: %v", err) } checkMetadataEq(metadata, v2) - err = shares.DeleteMetadatum(client, share.ID, k).ExtractErr() + err = shares.DeleteMetadatum(context.TODO(), client, share.ID, k).ExtractErr() if err != nil { t.Fatalf("Unable to delete share metadatum: %v", err) } - metadata, err = shares.GetMetadata(client, share.ID).Extract() + metadata, err = shares.GetMetadata(context.TODO(), client, share.ID).Extract() if err != nil { t.Fatalf("Unable to get share metadata: %v", err) } @@ -334,7 +335,7 @@ func TestRevert(t *testing.T) { revertOpts := &shares.RevertOpts{ SnapshotID: snapshot.ID, } - err = shares.Revert(client, share.ID, revertOpts).ExtractErr() + err = shares.Revert(context.TODO(), client, share.ID, revertOpts).ExtractErr() if err != nil { t.Fatalf("Unable to revert a snapshot: %v", err) } @@ -396,7 +397,7 @@ func TestShareRestoreFromSnapshot(t *testing.T) { SnapshotID: snapshot.ID, IsPublic: &iTrue, } - restored, err := shares.Create(client, createOpts).Extract() + restored, err := shares.Create(context.TODO(), client, createOpts).Extract() if err != nil { t.Fatalf("Unable to create a share from a snapshot: %v", err) } @@ -442,7 +443,7 @@ func TestResetStatus(t *testing.T) { resetStatusOpts := &shares.ResetStatusOpts{ Status: "error", } - err = shares.ResetStatus(client, share.ID, resetStatusOpts).ExtractErr() + err = shares.ResetStatus(context.TODO(), client, share.ID, resetStatusOpts).ExtractErr() if err != nil { t.Fatalf("Unable to reset a share status: %v", err) } @@ -475,7 +476,7 @@ func TestForceDelete(t *testing.T) { t.Fatalf("Share status error: %v", err) } - err = shares.ForceDelete(client, share.ID).ExtractErr() + err = shares.ForceDelete(context.TODO(), client, share.ID).ExtractErr() if err != nil { t.Fatalf("Unable to force delete a share: %v", err) } @@ -509,7 +510,7 @@ func TestUnmanage(t *testing.T) { t.Fatalf("Share status error: %v", err) } - err = shares.Unmanage(client, share.ID).ExtractErr() + err = shares.Unmanage(context.TODO(), client, share.ID).ExtractErr() if err != nil { t.Fatalf("Unable to unmanage a share: %v", err) } diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/sharetransfers.go b/internal/acceptance/openstack/sharedfilesystems/v2/sharetransfers.go index dcff28e2f9..6b95497452 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/sharetransfers.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/sharetransfers.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "fmt" "testing" @@ -14,7 +15,7 @@ func CreateTransferRequest(t *testing.T, client *gophercloud.ServiceClient, shar ShareID: share.ID, Name: name, } - transfer, err := sharetransfers.Create(client, opts).Extract() + transfer, err := sharetransfers.Create(context.TODO(), client, opts).Extract() if err != nil { return nil, fmt.Errorf("failed to create a share transfer request: %s", err) } @@ -27,7 +28,7 @@ func AcceptTransfer(t *testing.T, client *gophercloud.ServiceClient, transferReq AuthKey: transferRequest.AuthKey, ClearAccessRules: true, } - err := sharetransfers.Accept(client, transferRequest.ID, opts).ExtractErr() + err := sharetransfers.Accept(context.TODO(), client, transferRequest.ID, opts).ExtractErr() if err != nil { return fmt.Errorf("failed to accept a share transfer request: %s", err) } @@ -36,7 +37,7 @@ func AcceptTransfer(t *testing.T, client *gophercloud.ServiceClient, transferReq } func DeleteTransferRequest(t *testing.T, client *gophercloud.ServiceClient, transfer *sharetransfers.Transfer) { - err := sharetransfers.Delete(client, transfer.ID).ExtractErr() + err := sharetransfers.Delete(context.TODO(), client, transfer.ID).ExtractErr() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { return diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/sharetransfers_test.go b/internal/acceptance/openstack/sharedfilesystems/v2/sharetransfers_test.go index 6853f23f50..2d77d32a8c 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/sharetransfers_test.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/sharetransfers_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -39,7 +40,7 @@ func TestTransferRequestCRUD(t *testing.T) { defer DeleteTransferRequest(t, client, transferRequest) // list transfer requests - allTransferRequestsPages, err := sharetransfers.ListDetail(client, nil).AllPages() + allTransferRequestsPages, err := sharetransfers.ListDetail(client, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allTransferRequests, err := sharetransfers.ExtractTransfers(allTransferRequestsPages) @@ -56,7 +57,7 @@ func TestTransferRequestCRUD(t *testing.T) { th.AssertEquals(t, foundRequest, true) // checking get - tr, err := sharetransfers.Get(client, transferRequest.ID).Extract() + tr, err := sharetransfers.Get(context.TODO(), client, transferRequest.ID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, transferRequest.ID == tr.ID, true) diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/sharetypes.go b/internal/acceptance/openstack/sharedfilesystems/v2/sharetypes.go index 54c48934dd..69e0a4ea3c 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/sharetypes.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/sharetypes.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -28,7 +29,7 @@ func CreateShareType(t *testing.T, client *gophercloud.ServiceClient) (*sharetyp ExtraSpecs: extraSpecsOps, } - shareType, err := sharetypes.Create(client, createOpts).Extract() + shareType, err := sharetypes.Create(context.TODO(), client, createOpts).Extract() if err != nil { return shareType, err } @@ -39,7 +40,7 @@ func CreateShareType(t *testing.T, client *gophercloud.ServiceClient) (*sharetyp // DeleteShareType will delete a share type. An error will occur if // the share type was unable to be deleted. func DeleteShareType(t *testing.T, client *gophercloud.ServiceClient, shareType *sharetypes.ShareType) { - err := sharetypes.Delete(client, shareType.ID).ExtractErr() + err := sharetypes.Delete(context.TODO(), client, shareType.ID).ExtractErr() if err != nil { t.Fatalf("Failed to delete share type %s: %v", shareType.ID, err) } diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/sharetypes_test.go b/internal/acceptance/openstack/sharedfilesystems/v2/sharetypes_test.go index 466d830c8e..d51da2ef3e 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/sharetypes_test.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/sharetypes_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -33,7 +34,7 @@ func TestShareTypeList(t *testing.T) { t.Fatalf("Unable to create a shared file system client: %v", err) } - allPages, err := sharetypes.List(client, sharetypes.ListOpts{}).AllPages() + allPages, err := sharetypes.List(client, sharetypes.ListOpts{}).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to retrieve share types: %v", err) } @@ -54,7 +55,7 @@ func TestShareTypeGetDefault(t *testing.T) { t.Fatalf("Unable to create a shared file system client: %v", err) } - shareType, err := sharetypes.GetDefault(client).Extract() + shareType, err := sharetypes.GetDefault(context.TODO(), client).Extract() if err != nil { t.Fatalf("Unable to retrieve the default share type: %v", err) } @@ -77,12 +78,12 @@ func TestShareTypeExtraSpecs(t *testing.T) { ExtraSpecs: map[string]interface{}{"my_new_key": "my_value"}, } - _, err = sharetypes.SetExtraSpecs(client, shareType.ID, options).Extract() + _, err = sharetypes.SetExtraSpecs(context.TODO(), client, shareType.ID, options).Extract() if err != nil { t.Fatalf("Unable to set extra specs for Share type: %s", shareType.Name) } - extraSpecs, err := sharetypes.GetExtraSpecs(client, shareType.ID).Extract() + extraSpecs, err := sharetypes.GetExtraSpecs(context.TODO(), client, shareType.ID).Extract() if err != nil { t.Fatalf("Unable to retrieve share type: %s", shareType.Name) } @@ -95,12 +96,12 @@ func TestShareTypeExtraSpecs(t *testing.T) { t.Fatal("my_new_key was expected to be equal to my_value") } - err = sharetypes.UnsetExtraSpecs(client, shareType.ID, "my_new_key").ExtractErr() + err = sharetypes.UnsetExtraSpecs(context.TODO(), client, shareType.ID, "my_new_key").ExtractErr() if err != nil { t.Fatalf("Unable to unset extra specs for Share type: %s", shareType.Name) } - extraSpecs, err = sharetypes.GetExtraSpecs(client, shareType.ID).Extract() + extraSpecs, err = sharetypes.GetExtraSpecs(context.TODO(), client, shareType.ID).Extract() if err != nil { t.Fatalf("Unable to retrieve share type: %s", shareType.Name) } @@ -129,12 +130,12 @@ func TestShareTypeAccess(t *testing.T) { Project: "9e3a5a44e0134445867776ef53a37605", } - err = sharetypes.AddAccess(client, shareType.ID, options).ExtractErr() + err = sharetypes.AddAccess(context.TODO(), client, shareType.ID, options).ExtractErr() if err != nil { t.Fatalf("Unable to add a new access to a share type: %v", err) } - access, err := sharetypes.ShowAccess(client, shareType.ID).Extract() + access, err := sharetypes.ShowAccess(context.TODO(), client, shareType.ID).Extract() if err != nil { t.Fatalf("Unable to retrieve the access details for a share type: %v", err) } @@ -145,12 +146,12 @@ func TestShareTypeAccess(t *testing.T) { t.Fatal("Share type access is not the same than expected") } - err = sharetypes.RemoveAccess(client, shareType.ID, options).ExtractErr() + err = sharetypes.RemoveAccess(context.TODO(), client, shareType.ID, options).ExtractErr() if err != nil { t.Fatalf("Unable to remove an access from a share type: %v", err) } - access, err = sharetypes.ShowAccess(client, shareType.ID).Extract() + access, err = sharetypes.ShowAccess(context.TODO(), client, shareType.ID).Extract() if err != nil { t.Fatalf("Unable to retrieve the access details for a share type: %v", err) } diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/snapshots.go b/internal/acceptance/openstack/sharedfilesystems/v2/snapshots.go index 51a2daec55..67eebd7231 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/snapshots.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/snapshots.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "fmt" "strings" "testing" @@ -23,7 +24,7 @@ func CreateSnapshot(t *testing.T, client *gophercloud.ServiceClient, shareID str Description: "My Test Description", } - snapshot, err := snapshots.Create(client, createOpts).Extract() + snapshot, err := snapshots.Create(context.TODO(), client, createOpts).Extract() if err != nil { t.Logf("Failed to create snapshot") return nil, err @@ -41,7 +42,7 @@ func CreateSnapshot(t *testing.T, client *gophercloud.ServiceClient, shareID str // ListSnapshots lists all snapshots that belong to this tenant's project. // An error will be returned if the snapshots could not be listed.. func ListSnapshots(t *testing.T, client *gophercloud.ServiceClient) ([]snapshots.Snapshot, error) { - r, err := snapshots.ListDetail(client, &snapshots.ListOpts{}).AllPages() + r, err := snapshots.ListDetail(client, &snapshots.ListOpts{}).AllPages(context.TODO()) if err != nil { return nil, err } @@ -52,7 +53,7 @@ func ListSnapshots(t *testing.T, client *gophercloud.ServiceClient) ([]snapshots // DeleteSnapshot will delete a snapshot. A fatal error will occur if the snapshot // failed to be deleted. This works best when used as a deferred function. func DeleteSnapshot(t *testing.T, client *gophercloud.ServiceClient, snapshot *snapshots.Snapshot) { - err := snapshots.Delete(client, snapshot.ID).ExtractErr() + err := snapshots.Delete(context.TODO(), client, snapshot.ID).ExtractErr() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { return @@ -70,7 +71,7 @@ func DeleteSnapshot(t *testing.T, client *gophercloud.ServiceClient, snapshot *s func waitForSnapshotStatus(t *testing.T, c *gophercloud.ServiceClient, id, status string) error { err := tools.WaitFor(func() (bool, error) { - current, err := snapshots.Get(c, id).Extract() + current, err := snapshots.Get(context.TODO(), c, id).Extract() if err != nil { if _, ok := err.(gophercloud.ErrDefault404); ok { switch status { diff --git a/internal/acceptance/openstack/sharedfilesystems/v2/snapshots_test.go b/internal/acceptance/openstack/sharedfilesystems/v2/snapshots_test.go index a84d652178..e457d3c704 100644 --- a/internal/acceptance/openstack/sharedfilesystems/v2/snapshots_test.go +++ b/internal/acceptance/openstack/sharedfilesystems/v2/snapshots_test.go @@ -4,6 +4,7 @@ package v2 import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" @@ -36,7 +37,7 @@ func TestSnapshotCreate(t *testing.T) { defer DeleteSnapshot(t, client, snapshot) - created, err := snapshots.Get(client, snapshot.ID).Extract() + created, err := snapshots.Get(context.TODO(), client, snapshot.ID).Extract() if err != nil { t.Fatalf("Unable to retrieve a snapshot: %v", err) } @@ -64,7 +65,7 @@ func TestSnapshotUpdate(t *testing.T) { defer DeleteSnapshot(t, client, snapshot) - expectedSnapshot, err := snapshots.Get(client, snapshot.ID).Extract() + expectedSnapshot, err := snapshots.Get(context.TODO(), client, snapshot.ID).Extract() if err != nil { t.Errorf("Unable to retrieve snapshot: %v", err) } @@ -79,12 +80,12 @@ func TestSnapshotUpdate(t *testing.T) { expectedSnapshot.Name = name expectedSnapshot.Description = description - _, err = snapshots.Update(client, snapshot.ID, options).Extract() + _, err = snapshots.Update(context.TODO(), client, snapshot.ID, options).Extract() if err != nil { t.Errorf("Unable to update snapshot: %v", err) } - updatedSnapshot, err := snapshots.Get(client, snapshot.ID).Extract() + updatedSnapshot, err := snapshots.Get(context.TODO(), client, snapshot.ID).Extract() if err != nil { t.Errorf("Unable to retrieve snapshot: %v", err) } @@ -148,7 +149,7 @@ func TestSnapshotResetStatus(t *testing.T) { resetStatusOpts := &snapshots.ResetStatusOpts{ Status: "error", } - err = snapshots.ResetStatus(client, snapshot.ID, resetStatusOpts).ExtractErr() + err = snapshots.ResetStatus(context.TODO(), client, snapshot.ID, resetStatusOpts).ExtractErr() if err != nil { t.Fatalf("Unable to reset a snapshot status: %v", err) } @@ -182,7 +183,7 @@ func TestSnapshotForceDelete(t *testing.T) { defer DeleteSnapshot(t, client, snapshot) - err = snapshots.ForceDelete(client, snapshot.ID).ExtractErr() + err = snapshots.ForceDelete(context.TODO(), client, snapshot.ID).ExtractErr() if err != nil { t.Fatalf("Unable to force delete a snapshot: %v", err) } diff --git a/internal/acceptance/openstack/workflow/v2/crontrigger.go b/internal/acceptance/openstack/workflow/v2/crontrigger.go index 01a80bfd5c..821129c318 100644 --- a/internal/acceptance/openstack/workflow/v2/crontrigger.go +++ b/internal/acceptance/openstack/workflow/v2/crontrigger.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "testing" "time" @@ -26,7 +27,7 @@ func CreateCronTrigger(t *testing.T, client *gophercloud.ServiceClient, workflow }, FirstExecutionTime: &firstExecution, } - crontrigger, err := crontriggers.Create(client, createOpts).Extract() + crontrigger, err := crontriggers.Create(context.TODO(), client, createOpts).Extract() if err != nil { return crontrigger, err } @@ -37,7 +38,7 @@ func CreateCronTrigger(t *testing.T, client *gophercloud.ServiceClient, workflow // DeleteCronTrigger deletes a cron trigger. func DeleteCronTrigger(t *testing.T, client *gophercloud.ServiceClient, crontrigger *crontriggers.CronTrigger) { - err := crontriggers.Delete(client, crontrigger.ID).ExtractErr() + err := crontriggers.Delete(context.TODO(), client, crontrigger.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete cron trigger %s: %v", crontrigger.Name, err) } @@ -47,7 +48,7 @@ func DeleteCronTrigger(t *testing.T, client *gophercloud.ServiceClient, crontrig // GetCronTrigger gets a cron trigger. func GetCronTrigger(t *testing.T, client *gophercloud.ServiceClient, id string) (*crontriggers.CronTrigger, error) { - crontrigger, err := crontriggers.Get(client, id).Extract() + crontrigger, err := crontriggers.Get(context.TODO(), client, id).Extract() if err != nil { t.Fatalf("Unable to get cron trigger %s: %v", id, err) } @@ -57,7 +58,7 @@ func GetCronTrigger(t *testing.T, client *gophercloud.ServiceClient, id string) // ListCronTriggers lists cron triggers. func ListCronTriggers(t *testing.T, client *gophercloud.ServiceClient, opts crontriggers.ListOptsBuilder) ([]crontriggers.CronTrigger, error) { - allPages, err := crontriggers.List(client, opts).AllPages() + allPages, err := crontriggers.List(client, opts).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list cron triggers: %v", err) } diff --git a/internal/acceptance/openstack/workflow/v2/execution.go b/internal/acceptance/openstack/workflow/v2/execution.go index a3d5168149..398a278477 100644 --- a/internal/acceptance/openstack/workflow/v2/execution.go +++ b/internal/acceptance/openstack/workflow/v2/execution.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "fmt" "testing" @@ -25,7 +26,7 @@ func CreateExecution(t *testing.T, client *gophercloud.ServiceClient, workflow * "msg": "Hello World!", }, } - execution, err := executions.Create(client, createOpts).Extract() + execution, err := executions.Create(context.TODO(), client, createOpts).Extract() if err != nil { return execution, err } @@ -36,7 +37,7 @@ func CreateExecution(t *testing.T, client *gophercloud.ServiceClient, workflow * t.Logf("Wait for execution status SUCCESS: %s", executionDescription) th.AssertNoErr(t, tools.WaitFor(func() (bool, error) { - latest, err := executions.Get(client, execution.ID).Extract() + latest, err := executions.Get(context.TODO(), client, execution.ID).Extract() if err != nil { return false, err } @@ -59,7 +60,7 @@ func CreateExecution(t *testing.T, client *gophercloud.ServiceClient, workflow * // DeleteExecution deletes an execution. func DeleteExecution(t *testing.T, client *gophercloud.ServiceClient, execution *executions.Execution) { - err := executions.Delete(client, execution.ID).ExtractErr() + err := executions.Delete(context.TODO(), client, execution.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete executions %s: %v", execution.Description, err) } @@ -68,7 +69,7 @@ func DeleteExecution(t *testing.T, client *gophercloud.ServiceClient, execution // ListExecutions lists the executions. func ListExecutions(t *testing.T, client *gophercloud.ServiceClient, opts executions.ListOptsBuilder) ([]executions.Execution, error) { - allPages, err := executions.List(client, opts).AllPages() + allPages, err := executions.List(client, opts).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list executions: %v", err) } diff --git a/internal/acceptance/openstack/workflow/v2/workflow.go b/internal/acceptance/openstack/workflow/v2/workflow.go index 4fa16d5e43..ea67739eac 100644 --- a/internal/acceptance/openstack/workflow/v2/workflow.go +++ b/internal/acceptance/openstack/workflow/v2/workflow.go @@ -1,6 +1,7 @@ package v2 import ( + "context" "fmt" "strings" "testing" @@ -45,7 +46,7 @@ func CreateWorkflow(t *testing.T, client *gophercloud.ServiceClient) (*workflows Scope: "private", Definition: strings.NewReader(definition), } - workflowList, err := workflows.Create(client, opts).Extract() + workflowList, err := workflows.Create(context.TODO(), client, opts).Extract() if err != nil { return nil, err } @@ -62,7 +63,7 @@ func CreateWorkflow(t *testing.T, client *gophercloud.ServiceClient) (*workflows // DeleteWorkflow deletes the given workflow. func DeleteWorkflow(t *testing.T, client *gophercloud.ServiceClient, workflow *workflows.Workflow) { - err := workflows.Delete(client, workflow.ID).ExtractErr() + err := workflows.Delete(context.TODO(), client, workflow.ID).ExtractErr() if err != nil { t.Fatalf("Unable to delete workflows %s: %v", workflow.Name, err) } @@ -72,7 +73,7 @@ func DeleteWorkflow(t *testing.T, client *gophercloud.ServiceClient, workflow *w // GetWorkflow gets a workflow. func GetWorkflow(t *testing.T, client *gophercloud.ServiceClient, id string) (*workflows.Workflow, error) { - workflow, err := workflows.Get(client, id).Extract() + workflow, err := workflows.Get(context.TODO(), client, id).Extract() if err != nil { t.Fatalf("Unable to get workflow %s: %v", id, err) } @@ -82,7 +83,7 @@ func GetWorkflow(t *testing.T, client *gophercloud.ServiceClient, id string) (*w // ListWorkflows lists the workflows. func ListWorkflows(t *testing.T, client *gophercloud.ServiceClient, opts workflows.ListOptsBuilder) ([]workflows.Workflow, error) { - allPages, err := workflows.List(client, opts).AllPages() + allPages, err := workflows.List(client, opts).AllPages(context.TODO()) if err != nil { t.Fatalf("Unable to list workflows: %v", err) } diff --git a/openstack/baremetal/apiversions/requests.go b/openstack/baremetal/apiversions/requests.go index cf096413a1..0ab8fd2c67 100644 --- a/openstack/baremetal/apiversions/requests.go +++ b/openstack/baremetal/apiversions/requests.go @@ -1,19 +1,21 @@ package apiversions import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // List lists all the API versions available to end users. -func List(client *gophercloud.ServiceClient) (r ListResult) { - resp, err := client.Get(listURL(client), &r.Body, nil) +func List(ctx context.Context, client *gophercloud.ServiceClient) (r ListResult) { + resp, err := client.Get(ctx, listURL(client), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get will get a specific API version, specified by major ID. -func Get(client *gophercloud.ServiceClient, v string) (r GetResult) { - resp, err := client.Get(getURL(client, v), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, v string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, v), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/baremetal/apiversions/testing/requests_test.go b/openstack/baremetal/apiversions/testing/requests_test.go index df2ec60f76..27d9fa5e22 100644 --- a/openstack/baremetal/apiversions/testing/requests_test.go +++ b/openstack/baremetal/apiversions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/baremetal/apiversions" @@ -14,7 +15,7 @@ func TestListAPIVersions(t *testing.T) { MockListResponse(t) - actual, err := apiversions.List(client.ServiceClient()).Extract() + actual, err := apiversions.List(context.TODO(), client.ServiceClient()).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, IronicAllAPIVersionResults, *actual) @@ -26,7 +27,7 @@ func TestGetAPIVersion(t *testing.T) { MockGetResponse(t) - actual, err := apiversions.Get(client.ServiceClient(), "v1").Extract() + actual, err := apiversions.Get(context.TODO(), client.ServiceClient(), "v1").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, IronicAPIVersion1Result, *actual) diff --git a/openstack/baremetal/v1/allocations/requests.go b/openstack/baremetal/v1/allocations/requests.go index 851c70d589..4357f8c46c 100644 --- a/openstack/baremetal/v1/allocations/requests.go +++ b/openstack/baremetal/v1/allocations/requests.go @@ -1,6 +1,8 @@ package allocations import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -43,14 +45,14 @@ func (opts CreateOpts) ToAllocationCreateMap() (map[string]interface{}, error) { } // Create requests a node to be created -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { reqBody, err := opts.ToAllocationCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), reqBody, &r.Body, nil) + resp, err := client.Post(ctx, createURL(client), reqBody, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -118,8 +120,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get requests the details of an allocation by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -127,8 +129,8 @@ func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { } // Delete requests the deletion of an allocation -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/baremetal/v1/allocations/testing/requests_test.go b/openstack/baremetal/v1/allocations/testing/requests_test.go index 9c04477be5..2eec2aa51b 100644 --- a/openstack/baremetal/v1/allocations/testing/requests_test.go +++ b/openstack/baremetal/v1/allocations/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/baremetal/v1/allocations" @@ -15,7 +16,7 @@ func TestListAllocations(t *testing.T) { HandleAllocationListSuccessfully(t) pages := 0 - err := allocations.List(client.ServiceClient(), allocations.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := allocations.List(client.ServiceClient(), allocations.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := allocations.ExtractAllocations(page) @@ -44,7 +45,7 @@ func TestCreateAllocation(t *testing.T) { defer th.TeardownHTTP() HandleAllocationCreationSuccessfully(t, SingleAllocationBody) - actual, err := allocations.Create(client.ServiceClient(), allocations.CreateOpts{ + actual, err := allocations.Create(context.TODO(), client.ServiceClient(), allocations.CreateOpts{ Name: "allocation-1", ResourceClass: "baremetal", CandidateNodes: []string{"344a3e2-978a-444e-990a-cbf47c62ef88"}, @@ -60,7 +61,7 @@ func TestDeleteAllocation(t *testing.T) { defer th.TeardownHTTP() HandleAllocationDeletionSuccessfully(t) - res := allocations.Delete(client.ServiceClient(), "344a3e2-978a-444e-990a-cbf47c62ef88") + res := allocations.Delete(context.TODO(), client.ServiceClient(), "344a3e2-978a-444e-990a-cbf47c62ef88") th.AssertNoErr(t, res.Err) } @@ -70,7 +71,7 @@ func TestGetAllocation(t *testing.T) { HandleAllocationGetSuccessfully(t) c := client.ServiceClient() - actual, err := allocations.Get(c, "344a3e2-978a-444e-990a-cbf47c62ef88").Extract() + actual, err := allocations.Get(context.TODO(), c, "344a3e2-978a-444e-990a-cbf47c62ef88").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } diff --git a/openstack/baremetal/v1/conductors/requests.go b/openstack/baremetal/v1/conductors/requests.go index 96b1441e76..068ab215be 100644 --- a/openstack/baremetal/v1/conductors/requests.go +++ b/openstack/baremetal/v1/conductors/requests.go @@ -1,6 +1,7 @@ package conductors import ( + "context" "fmt" "github.com/gophercloud/gophercloud/v2" @@ -63,8 +64,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get requests details on a single conductor by hostname -func Get(client *gophercloud.ServiceClient, name string) (r GetResult) { - resp, err := client.Get(getURL(client, name), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, name string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, name), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/baremetal/v1/conductors/testing/requests_test.go b/openstack/baremetal/v1/conductors/testing/requests_test.go index 8221a10919..7ddacf7f90 100644 --- a/openstack/baremetal/v1/conductors/testing/requests_test.go +++ b/openstack/baremetal/v1/conductors/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/baremetal/v1/conductors" @@ -15,7 +16,7 @@ func TestListConductors(t *testing.T) { HandleConductorListSuccessfully(t) pages := 0 - err := conductors.List(client.ServiceClient(), conductors.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := conductors.List(client.ServiceClient(), conductors.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := conductors.ExtractConductors(page) @@ -45,7 +46,7 @@ func TestListDetailConductors(t *testing.T) { HandleConductorListDetailSuccessfully(t) pages := 0 - err := conductors.List(client.ServiceClient(), conductors.ListOpts{Detail: true}).EachPage(func(page pagination.Page) (bool, error) { + err := conductors.List(client.ServiceClient(), conductors.ListOpts{Detail: true}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := conductors.ExtractConductors(page) @@ -97,7 +98,7 @@ func TestGetConductor(t *testing.T) { HandleConductorGetSuccessfully(t) c := client.ServiceClient() - actual, err := conductors.Get(c, "1234asdf").Extract() + actual, err := conductors.Get(context.TODO(), c, "1234asdf").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } diff --git a/openstack/baremetal/v1/drivers/requests.go b/openstack/baremetal/v1/drivers/requests.go index 989408534f..f23629309c 100644 --- a/openstack/baremetal/v1/drivers/requests.go +++ b/openstack/baremetal/v1/drivers/requests.go @@ -1,6 +1,8 @@ package drivers import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -42,8 +44,8 @@ func ListDrivers(client *gophercloud.ServiceClient, opts ListDriversOptsBuilder) } // GetDriverDetails Shows details for a driver -func GetDriverDetails(client *gophercloud.ServiceClient, driverName string) (r GetDriverResult) { - resp, err := client.Get(driverDetailsURL(client, driverName), &r.Body, &gophercloud.RequestOpts{ +func GetDriverDetails(ctx context.Context, client *gophercloud.ServiceClient, driverName string) (r GetDriverResult) { + resp, err := client.Get(ctx, driverDetailsURL(client, driverName), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -53,8 +55,8 @@ func GetDriverDetails(client *gophercloud.ServiceClient, driverName string) (r G // GetDriverProperties Shows the required and optional parameters that // driverName expects to be supplied in the driver_info field for every // Node it manages -func GetDriverProperties(client *gophercloud.ServiceClient, driverName string) (r GetPropertiesResult) { - resp, err := client.Get(driverPropertiesURL(client, driverName), &r.Body, &gophercloud.RequestOpts{ +func GetDriverProperties(ctx context.Context, client *gophercloud.ServiceClient, driverName string) (r GetPropertiesResult) { + resp, err := client.Get(ctx, driverPropertiesURL(client, driverName), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -64,8 +66,8 @@ func GetDriverProperties(client *gophercloud.ServiceClient, driverName string) ( // GetDriverDiskProperties Show the required and optional parameters that // driverName expects to be supplied in the node’s raid_config field, if a // RAID configuration change is requested. -func GetDriverDiskProperties(client *gophercloud.ServiceClient, driverName string) (r GetDiskPropertiesResult) { - resp, err := client.Get(driverDiskPropertiesURL(client, driverName), &r.Body, &gophercloud.RequestOpts{ +func GetDriverDiskProperties(ctx context.Context, client *gophercloud.ServiceClient, driverName string) (r GetDiskPropertiesResult) { + resp, err := client.Get(ctx, driverDiskPropertiesURL(client, driverName), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/baremetal/v1/drivers/testing/requests_test.go b/openstack/baremetal/v1/drivers/testing/requests_test.go index c53af5addc..f99e3198c0 100644 --- a/openstack/baremetal/v1/drivers/testing/requests_test.go +++ b/openstack/baremetal/v1/drivers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/baremetal/v1/drivers" @@ -15,7 +16,7 @@ func TestListDrivers(t *testing.T) { HandleListDriversSuccessfully(t) pages := 0 - err := drivers.ListDrivers(client.ServiceClient(), drivers.ListDriversOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := drivers.ListDrivers(client.ServiceClient(), drivers.ListDriversOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := drivers.ExtractDrivers(page) @@ -47,7 +48,7 @@ func TestGetDriverDetails(t *testing.T) { HandleGetDriverDetailsSuccessfully(t) c := client.ServiceClient() - actual, err := drivers.GetDriverDetails(c, "ipmi").Extract() + actual, err := drivers.GetDriverDetails(context.TODO(), c, "ipmi").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -61,7 +62,7 @@ func TestGetDriverProperties(t *testing.T) { HandleGetDriverPropertiesSuccessfully(t) c := client.ServiceClient() - actual, err := drivers.GetDriverProperties(c, "agent_ipmitool").Extract() + actual, err := drivers.GetDriverProperties(context.TODO(), c, "agent_ipmitool").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -75,7 +76,7 @@ func TestGetDriverDiskProperties(t *testing.T) { HandleGetDriverDiskPropertiesSuccessfully(t) c := client.ServiceClient() - actual, err := drivers.GetDriverDiskProperties(c, "agent_ipmitool").Extract() + actual, err := drivers.GetDriverDiskProperties(context.TODO(), c, "agent_ipmitool").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } diff --git a/openstack/baremetal/v1/nodes/requests.go b/openstack/baremetal/v1/nodes/requests.go index 443e36e872..567aa6be71 100644 --- a/openstack/baremetal/v1/nodes/requests.go +++ b/openstack/baremetal/v1/nodes/requests.go @@ -1,6 +1,7 @@ package nodes import ( + "context" "fmt" "github.com/gophercloud/gophercloud/v2" @@ -166,8 +167,8 @@ func ListDetail(client *gophercloud.ServiceClient, opts ListOptsBuilder) paginat } // Get requests details on a single node, by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -270,14 +271,14 @@ func (opts CreateOpts) ToNodeCreateMap() (map[string]interface{}, error) { } // Create requests a node to be created -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { reqBody, err := opts.ToNodeCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), reqBody, &r.Body, nil) + resp, err := client.Post(ctx, createURL(client), reqBody, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -308,7 +309,7 @@ func (opts UpdateOperation) ToNodeUpdateMap() (map[string]interface{}, error) { } // Update requests that a node be updated -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { body := make([]map[string]interface{}, len(opts)) for i, patch := range opts { result, err := patch.ToNodeUpdateMap() @@ -319,7 +320,7 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOpts) (r Up body[i] = result } - resp, err := client.Patch(updateURL(client, id), body, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), body, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -327,16 +328,16 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOpts) (r Up } // Delete requests that a node be removed -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Request that Ironic validate whether the Node’s driver has enough information to manage the Node. This polls each // interface on the driver, and returns the status of that interface. -func Validate(client *gophercloud.ServiceClient, id string) (r ValidateResult) { - resp, err := client.Get(validateURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func Validate(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ValidateResult) { + resp, err := client.Get(ctx, validateURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -345,8 +346,8 @@ func Validate(client *gophercloud.ServiceClient, id string) (r ValidateResult) { // Inject NMI (Non-Masking Interrupts) for the given Node. This feature can be used for hardware diagnostics, and // actual support depends on a driver. -func InjectNMI(client *gophercloud.ServiceClient, id string) (r InjectNMIResult) { - resp, err := client.Put(injectNMIURL(client, id), map[string]string{}, nil, &gophercloud.RequestOpts{ +func InjectNMI(ctx context.Context, client *gophercloud.ServiceClient, id string) (r InjectNMIResult) { + resp, err := client.Put(ctx, injectNMIURL(client, id), map[string]string{}, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -376,14 +377,14 @@ func (opts BootDeviceOpts) ToBootDeviceMap() (map[string]interface{}, error) { // Set the boot device for the given Node, and set it persistently or for one-time boot. The exact behaviour // of this depends on the hardware driver. -func SetBootDevice(client *gophercloud.ServiceClient, id string, bootDevice BootDeviceOptsBuilder) (r SetBootDeviceResult) { +func SetBootDevice(ctx context.Context, client *gophercloud.ServiceClient, id string, bootDevice BootDeviceOptsBuilder) (r SetBootDeviceResult) { reqBody, err := bootDevice.ToBootDeviceMap() if err != nil { r.Err = err return } - resp, err := client.Put(bootDeviceURL(client, id), reqBody, nil, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, bootDeviceURL(client, id), reqBody, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -391,8 +392,8 @@ func SetBootDevice(client *gophercloud.ServiceClient, id string, bootDevice Boot } // Get the current boot device for the given Node. -func GetBootDevice(client *gophercloud.ServiceClient, id string) (r BootDeviceResult) { - resp, err := client.Get(bootDeviceURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func GetBootDevice(ctx context.Context, client *gophercloud.ServiceClient, id string) (r BootDeviceResult) { + resp, err := client.Get(ctx, bootDeviceURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -400,8 +401,8 @@ func GetBootDevice(client *gophercloud.ServiceClient, id string) (r BootDeviceRe } // Retrieve the acceptable set of supported boot devices for a specific Node. -func GetSupportedBootDevices(client *gophercloud.ServiceClient, id string) (r SupportedBootDeviceResult) { - resp, err := client.Get(supportedBootDeviceURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func GetSupportedBootDevices(ctx context.Context, client *gophercloud.ServiceClient, id string) (r SupportedBootDeviceResult) { + resp, err := client.Get(ctx, supportedBootDeviceURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -475,14 +476,14 @@ func (opts ProvisionStateOpts) ToProvisionStateMap() (map[string]interface{}, er // Request a change to the Node’s provision state. Acceptable target states depend on the Node’s current provision // state. More detailed documentation of the Ironic State Machine is available in the developer docs. -func ChangeProvisionState(client *gophercloud.ServiceClient, id string, opts ProvisionStateOptsBuilder) (r ChangeStateResult) { +func ChangeProvisionState(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ProvisionStateOptsBuilder) (r ChangeStateResult) { reqBody, err := opts.ToProvisionStateMap() if err != nil { r.Err = err return } - resp, err := client.Put(provisionStateURL(client, id), reqBody, nil, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, provisionStateURL(client, id), reqBody, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -522,14 +523,14 @@ func (opts PowerStateOpts) ToPowerStateMap() (map[string]interface{}, error) { } // Request to change a Node's power state. -func ChangePowerState(client *gophercloud.ServiceClient, id string, opts PowerStateOptsBuilder) (r ChangePowerStateResult) { +func ChangePowerState(ctx context.Context, client *gophercloud.ServiceClient, id string, opts PowerStateOptsBuilder) (r ChangePowerStateResult) { reqBody, err := opts.ToPowerStateMap() if err != nil { r.Err = err return } - resp, err := client.Put(powerStateURL(client, id), reqBody, nil, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, powerStateURL(client, id), reqBody, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -631,14 +632,14 @@ func (opts RAIDConfigOpts) ToRAIDConfigMap() (map[string]interface{}, error) { } // Request to change a Node's RAID config. -func SetRAIDConfig(client *gophercloud.ServiceClient, id string, raidConfigOptsBuilder RAIDConfigOptsBuilder) (r ChangeStateResult) { +func SetRAIDConfig(ctx context.Context, client *gophercloud.ServiceClient, id string, raidConfigOptsBuilder RAIDConfigOptsBuilder) (r ChangeStateResult) { reqBody, err := raidConfigOptsBuilder.ToRAIDConfigMap() if err != nil { r.Err = err return } - resp, err := client.Put(raidConfigURL(client, id), reqBody, nil, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, raidConfigURL(client, id), reqBody, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -672,7 +673,7 @@ func (opts ListBIOSSettingsOpts) ToListBIOSSettingsOptsQuery() (string, error) { // Get the current BIOS Settings for the given Node. // To use the opts requires microversion 1.74. -func ListBIOSSettings(client *gophercloud.ServiceClient, id string, opts ListBIOSSettingsOptsBuilder) (r ListBIOSSettingsResult) { +func ListBIOSSettings(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ListBIOSSettingsOptsBuilder) (r ListBIOSSettingsResult) { url := biosListSettingsURL(client, id) if opts != nil { @@ -684,7 +685,7 @@ func ListBIOSSettings(client *gophercloud.ServiceClient, id string, opts ListBIO url += query } - resp, err := client.Get(url, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -692,8 +693,8 @@ func ListBIOSSettings(client *gophercloud.ServiceClient, id string, opts ListBIO } // Get one BIOS Setting for the given Node. -func GetBIOSSetting(client *gophercloud.ServiceClient, id string, setting string) (r GetBIOSSettingResult) { - resp, err := client.Get(biosGetSettingURL(client, id, setting), &r.Body, &gophercloud.RequestOpts{ +func GetBIOSSetting(ctx context.Context, client *gophercloud.ServiceClient, id string, setting string) (r GetBIOSSettingResult) { + resp, err := client.Get(ctx, biosGetSettingURL(client, id, setting), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -712,8 +713,8 @@ func ToGetAllSubscriptionMap(opts CallVendorPassthruOpts) (string, error) { } // Get all vendor_passthru methods available for the given Node. -func GetVendorPassthruMethods(client *gophercloud.ServiceClient, id string) (r VendorPassthruMethodsResult) { - resp, err := client.Get(vendorPassthruMethodsURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func GetVendorPassthruMethods(ctx context.Context, client *gophercloud.ServiceClient, id string) (r VendorPassthruMethodsResult) { + resp, err := client.Get(ctx, vendorPassthruMethodsURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -721,14 +722,14 @@ func GetVendorPassthruMethods(client *gophercloud.ServiceClient, id string) (r V } // Get all subscriptions available for the given Node. -func GetAllSubscriptions(client *gophercloud.ServiceClient, id string, method CallVendorPassthruOpts) (r GetAllSubscriptionsVendorPassthruResult) { +func GetAllSubscriptions(ctx context.Context, client *gophercloud.ServiceClient, id string, method CallVendorPassthruOpts) (r GetAllSubscriptionsVendorPassthruResult) { query, err := ToGetAllSubscriptionMap(method) if err != nil { r.Err = err return } url := vendorPassthruCallURL(client, id) + query - resp, err := client.Get(url, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -755,14 +756,14 @@ func ToGetSubscriptionMap(method CallVendorPassthruOpts, opts GetSubscriptionOpt } // Get a subscription on the given Node. -func GetSubscription(client *gophercloud.ServiceClient, id string, method CallVendorPassthruOpts, subscriptionOpts GetSubscriptionOpts) (r SubscriptionVendorPassthruResult) { +func GetSubscription(ctx context.Context, client *gophercloud.ServiceClient, id string, method CallVendorPassthruOpts, subscriptionOpts GetSubscriptionOpts) (r SubscriptionVendorPassthruResult) { query, reqBody, err := ToGetSubscriptionMap(method, subscriptionOpts) if err != nil { r.Err = err return } url := vendorPassthruCallURL(client, id) + query - resp, err := client.Get(url, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, &r.Body, &gophercloud.RequestOpts{ JSONBody: reqBody, OkCodes: []int{200}, }) @@ -789,14 +790,14 @@ func ToDeleteSubscriptionMap(method CallVendorPassthruOpts, opts DeleteSubscript } // Delete a subscription on the given node. -func DeleteSubscription(client *gophercloud.ServiceClient, id string, method CallVendorPassthruOpts, subscriptionOpts DeleteSubscriptionOpts) (r DeleteSubscriptionVendorPassthruResult) { +func DeleteSubscription(ctx context.Context, client *gophercloud.ServiceClient, id string, method CallVendorPassthruOpts, subscriptionOpts DeleteSubscriptionOpts) (r DeleteSubscriptionVendorPassthruResult) { query, reqBody, err := ToDeleteSubscriptionMap(method, subscriptionOpts) if err != nil { r.Err = err return } url := vendorPassthruCallURL(client, id) + query - resp, err := client.Delete(url, &gophercloud.RequestOpts{ + resp, err := client.Delete(ctx, url, &gophercloud.RequestOpts{ JSONBody: reqBody, OkCodes: []int{200, 202, 204}, }) @@ -827,14 +828,14 @@ func ToCreateSubscriptionMap(method CallVendorPassthruOpts, opts CreateSubscript } // Creates a subscription on the given node. -func CreateSubscription(client *gophercloud.ServiceClient, id string, method CallVendorPassthruOpts, subscriptionOpts CreateSubscriptionOpts) (r SubscriptionVendorPassthruResult) { +func CreateSubscription(ctx context.Context, client *gophercloud.ServiceClient, id string, method CallVendorPassthruOpts, subscriptionOpts CreateSubscriptionOpts) (r SubscriptionVendorPassthruResult) { query, reqBody, err := ToCreateSubscriptionMap(method, subscriptionOpts) if err != nil { r.Err = err return } url := vendorPassthruCallURL(client, id) + query - resp, err := client.Post(url, reqBody, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, url, reqBody, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -862,14 +863,14 @@ func (opts MaintenanceOpts) ToMaintenanceMap() (map[string]interface{}, error) { } // Request to set the Node's maintenance mode. -func SetMaintenance(client *gophercloud.ServiceClient, id string, opts MaintenanceOptsBuilder) (r SetMaintenanceResult) { +func SetMaintenance(ctx context.Context, client *gophercloud.ServiceClient, id string, opts MaintenanceOptsBuilder) (r SetMaintenanceResult) { reqBody, err := opts.ToMaintenanceMap() if err != nil { r.Err = err return } - resp, err := client.Put(maintenanceURL(client, id), reqBody, nil, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, maintenanceURL(client, id), reqBody, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -877,8 +878,8 @@ func SetMaintenance(client *gophercloud.ServiceClient, id string, opts Maintenan } // Request to unset the Node's maintenance mode. -func UnsetMaintenance(client *gophercloud.ServiceClient, id string) (r SetMaintenanceResult) { - resp, err := client.Delete(maintenanceURL(client, id), &gophercloud.RequestOpts{ +func UnsetMaintenance(ctx context.Context, client *gophercloud.ServiceClient, id string) (r SetMaintenanceResult) { + resp, err := client.Delete(ctx, maintenanceURL(client, id), &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -886,8 +887,8 @@ func UnsetMaintenance(client *gophercloud.ServiceClient, id string) (r SetMainte } // GetInventory return stored data from successful inspection. -func GetInventory(client *gophercloud.ServiceClient, id string) (r InventoryResult) { - resp, err := client.Get(inventoryURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func GetInventory(ctx context.Context, client *gophercloud.ServiceClient, id string) (r InventoryResult) { + resp, err := client.Get(ctx, inventoryURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -895,8 +896,8 @@ func GetInventory(client *gophercloud.ServiceClient, id string) (r InventoryResu } // ListFirmware return the list of Firmware components for the given Node. -func ListFirmware(client *gophercloud.ServiceClient, id string) (r ListFirmwareResult) { - resp, err := client.Get(firmwareListURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func ListFirmware(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ListFirmwareResult) { + resp, err := client.Get(ctx, firmwareListURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/baremetal/v1/nodes/testing/requests_test.go b/openstack/baremetal/v1/nodes/testing/requests_test.go index 6fca0e87a3..c0f1a28360 100644 --- a/openstack/baremetal/v1/nodes/testing/requests_test.go +++ b/openstack/baremetal/v1/nodes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -16,7 +17,7 @@ func TestListDetailNodes(t *testing.T) { HandleNodeListDetailSuccessfully(t) pages := 0 - err := nodes.ListDetail(client.ServiceClient(), nodes.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := nodes.ListDetail(client.ServiceClient(), nodes.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := nodes.ExtractNodes(page) @@ -47,7 +48,7 @@ func TestListNodes(t *testing.T) { HandleNodeListSuccessfully(t) pages := 0 - err := nodes.List(client.ServiceClient(), nodes.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := nodes.List(client.ServiceClient(), nodes.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := nodes.ExtractNodes(page) @@ -92,7 +93,7 @@ func TestCreateNode(t *testing.T) { defer th.TeardownHTTP() HandleNodeCreationSuccessfully(t, SingleNodeBody) - actual, err := nodes.Create(client.ServiceClient(), nodes.CreateOpts{ + actual, err := nodes.Create(context.TODO(), client.ServiceClient(), nodes.CreateOpts{ Name: "foo", Driver: "ipmi", BootInterface: "pxe", @@ -116,7 +117,7 @@ func TestDeleteNode(t *testing.T) { defer th.TeardownHTTP() HandleNodeDeletionSuccessfully(t) - res := nodes.Delete(client.ServiceClient(), "asdfasdfasdf") + res := nodes.Delete(context.TODO(), client.ServiceClient(), "asdfasdfasdf") th.AssertNoErr(t, res.Err) } @@ -126,7 +127,7 @@ func TestGetNode(t *testing.T) { HandleNodeGetSuccessfully(t) c := client.ServiceClient() - actual, err := nodes.Get(c, "1234asdf").Extract() + actual, err := nodes.Get(context.TODO(), c, "1234asdf").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -140,7 +141,7 @@ func TestUpdateNode(t *testing.T) { HandleNodeUpdateSuccessfully(t, SingleNodeBody) c := client.ServiceClient() - actual, err := nodes.Update(c, "1234asdf", nodes.UpdateOpts{ + actual, err := nodes.Update(context.TODO(), c, "1234asdf", nodes.UpdateOpts{ nodes.UpdateOperation{ Op: nodes.ReplaceOp, Path: "/properties", @@ -158,7 +159,7 @@ func TestUpdateNode(t *testing.T) { func TestUpdateRequiredOp(t *testing.T) { c := client.ServiceClient() - _, err := nodes.Update(c, "1234asdf", nodes.UpdateOpts{ + _, err := nodes.Update(context.TODO(), c, "1234asdf", nodes.UpdateOpts{ nodes.UpdateOperation{ Path: "/driver", Value: "new-driver", @@ -173,7 +174,7 @@ func TestUpdateRequiredOp(t *testing.T) { func TestUpdateRequiredPath(t *testing.T) { c := client.ServiceClient() - _, err := nodes.Update(c, "1234asdf", nodes.UpdateOpts{ + _, err := nodes.Update(context.TODO(), c, "1234asdf", nodes.UpdateOpts{ nodes.UpdateOperation{ Op: nodes.ReplaceOp, Value: "new-driver", @@ -191,7 +192,7 @@ func TestValidateNode(t *testing.T) { HandleNodeValidateSuccessfully(t) c := client.ServiceClient() - actual, err := nodes.Validate(c, "1234asdf").Extract() + actual, err := nodes.Validate(context.TODO(), c, "1234asdf").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeFooValidation, *actual) } @@ -202,7 +203,7 @@ func TestInjectNMI(t *testing.T) { HandleInjectNMISuccessfully(t) c := client.ServiceClient() - err := nodes.InjectNMI(c, "1234asdf").ExtractErr() + err := nodes.InjectNMI(context.TODO(), c, "1234asdf").ExtractErr() th.AssertNoErr(t, err) } @@ -212,7 +213,7 @@ func TestSetBootDevice(t *testing.T) { HandleSetBootDeviceSuccessfully(t) c := client.ServiceClient() - err := nodes.SetBootDevice(c, "1234asdf", nodes.BootDeviceOpts{ + err := nodes.SetBootDevice(context.TODO(), c, "1234asdf", nodes.BootDeviceOpts{ BootDevice: "pxe", Persistent: false, }).ExtractErr() @@ -225,7 +226,7 @@ func TestGetBootDevice(t *testing.T) { HandleGetBootDeviceSuccessfully(t) c := client.ServiceClient() - bootDevice, err := nodes.GetBootDevice(c, "1234asdf").Extract() + bootDevice, err := nodes.GetBootDevice(context.TODO(), c, "1234asdf").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeBootDevice, *bootDevice) } @@ -236,7 +237,7 @@ func TestGetSupportedBootDevices(t *testing.T) { HandleGetSupportedBootDeviceSuccessfully(t) c := client.ServiceClient() - bootDevices, err := nodes.GetSupportedBootDevices(c, "1234asdf").Extract() + bootDevices, err := nodes.GetSupportedBootDevices(context.TODO(), c, "1234asdf").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeSupportedBootDevice, bootDevices) } @@ -247,7 +248,7 @@ func TestNodeChangeProvisionStateActive(t *testing.T) { HandleNodeChangeProvisionStateActive(t) c := client.ServiceClient() - err := nodes.ChangeProvisionState(c, "1234asdf", nodes.ProvisionStateOpts{ + err := nodes.ChangeProvisionState(context.TODO(), c, "1234asdf", nodes.ProvisionStateOpts{ Target: nodes.TargetActive, ConfigDrive: "http://127.0.0.1/images/test-node-config-drive.iso.gz", }).ExtractErr() @@ -261,7 +262,7 @@ func TestNodeChangeProvisionStateActiveWithSteps(t *testing.T) { HandleNodeChangeProvisionStateActiveWithSteps(t) c := client.ServiceClient() - err := nodes.ChangeProvisionState(c, "1234asdf", nodes.ProvisionStateOpts{ + err := nodes.ChangeProvisionState(context.TODO(), c, "1234asdf", nodes.ProvisionStateOpts{ Target: nodes.TargetActive, DeploySteps: []nodes.DeployStep{ { @@ -286,7 +287,7 @@ func TestHandleNodeChangeProvisionStateConfigDrive(t *testing.T) { c := client.ServiceClient() - err := nodes.ChangeProvisionState(c, "1234asdf", nodes.ProvisionStateOpts{ + err := nodes.ChangeProvisionState(context.TODO(), c, "1234asdf", nodes.ProvisionStateOpts{ Target: nodes.TargetActive, ConfigDrive: ConfigDriveMap, }).ExtractErr() @@ -300,7 +301,7 @@ func TestNodeChangeProvisionStateClean(t *testing.T) { HandleNodeChangeProvisionStateClean(t) c := client.ServiceClient() - err := nodes.ChangeProvisionState(c, "1234asdf", nodes.ProvisionStateOpts{ + err := nodes.ChangeProvisionState(context.TODO(), c, "1234asdf", nodes.ProvisionStateOpts{ Target: nodes.TargetClean, CleanSteps: []nodes.CleanStep{ { @@ -322,7 +323,7 @@ func TestNodeChangeProvisionStateCleanWithConflict(t *testing.T) { HandleNodeChangeProvisionStateCleanWithConflict(t) c := client.ServiceClient() - err := nodes.ChangeProvisionState(c, "1234asdf", nodes.ProvisionStateOpts{ + err := nodes.ChangeProvisionState(context.TODO(), c, "1234asdf", nodes.ProvisionStateOpts{ Target: nodes.TargetClean, CleanSteps: []nodes.CleanStep{ { @@ -342,7 +343,7 @@ func TestNodeChangeProvisionStateCleanWithConflict(t *testing.T) { func TestCleanStepRequiresInterface(t *testing.T) { c := client.ServiceClient() - err := nodes.ChangeProvisionState(c, "1234asdf", nodes.ProvisionStateOpts{ + err := nodes.ChangeProvisionState(context.TODO(), c, "1234asdf", nodes.ProvisionStateOpts{ Target: nodes.TargetClean, CleanSteps: []nodes.CleanStep{ { @@ -361,7 +362,7 @@ func TestCleanStepRequiresInterface(t *testing.T) { func TestCleanStepRequiresStep(t *testing.T) { c := client.ServiceClient() - err := nodes.ChangeProvisionState(c, "1234asdf", nodes.ProvisionStateOpts{ + err := nodes.ChangeProvisionState(context.TODO(), c, "1234asdf", nodes.ProvisionStateOpts{ Target: nodes.TargetClean, CleanSteps: []nodes.CleanStep{ { @@ -389,7 +390,7 @@ func TestChangePowerState(t *testing.T) { } c := client.ServiceClient() - err := nodes.ChangePowerState(c, "1234asdf", opts).ExtractErr() + err := nodes.ChangePowerState(context.TODO(), c, "1234asdf", opts).ExtractErr() th.AssertNoErr(t, err) } @@ -404,7 +405,7 @@ func TestChangePowerStateWithConflict(t *testing.T) { } c := client.ServiceClient() - err := nodes.ChangePowerState(c, "1234asdf", opts).ExtractErr() + err := nodes.ChangePowerState(context.TODO(), c, "1234asdf", opts).ExtractErr() if _, ok := err.(gophercloud.ErrDefault409); !ok { t.Fatal("ErrDefault409 was expected to occur") } @@ -429,7 +430,7 @@ func TestSetRAIDConfig(t *testing.T) { } c := client.ServiceClient() - err := nodes.SetRAIDConfig(c, "1234asdf", config).ExtractErr() + err := nodes.SetRAIDConfig(context.TODO(), c, "1234asdf", config).ExtractErr() th.AssertNoErr(t, err) } @@ -451,7 +452,7 @@ func TestSetRAIDConfigMaxSize(t *testing.T) { } c := client.ServiceClient() - err := nodes.SetRAIDConfig(c, "1234asdf", config).ExtractErr() + err := nodes.SetRAIDConfig(context.TODO(), c, "1234asdf", config).ExtractErr() th.AssertNoErr(t, err) } @@ -553,7 +554,7 @@ func TestListBIOSSettings(t *testing.T) { HandleListBIOSSettingsSuccessfully(t) c := client.ServiceClient() - actual, err := nodes.ListBIOSSettings(c, "1234asdf", nil).Extract() + actual, err := nodes.ListBIOSSettings(context.TODO(), c, "1234asdf", nil).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeBIOSSettings, actual) } @@ -568,7 +569,7 @@ func TestListDetailBIOSSettings(t *testing.T) { } c := client.ServiceClient() - actual, err := nodes.ListBIOSSettings(c, "1234asdf", opts).Extract() + actual, err := nodes.ListBIOSSettings(context.TODO(), c, "1234asdf", opts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeDetailBIOSSettings, actual) } @@ -579,7 +580,7 @@ func TestGetBIOSSetting(t *testing.T) { HandleGetBIOSSettingSuccessfully(t) c := client.ServiceClient() - actual, err := nodes.GetBIOSSetting(c, "1234asdf", "ProcVirtualization").Extract() + actual, err := nodes.GetBIOSSetting(context.TODO(), c, "1234asdf", "ProcVirtualization").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeSingleBIOSSetting, *actual) } @@ -601,7 +602,7 @@ func TestGetVendorPassthruMethods(t *testing.T) { HandleGetVendorPassthruMethodsSuccessfully(t) c := client.ServiceClient() - actual, err := nodes.GetVendorPassthruMethods(c, "1234asdf").Extract() + actual, err := nodes.GetVendorPassthruMethods(context.TODO(), c, "1234asdf").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeVendorPassthruMethods, *actual) } @@ -615,7 +616,7 @@ func TestGetAllSubscriptions(t *testing.T) { method := nodes.CallVendorPassthruOpts{ Method: "get_all_subscriptions", } - actual, err := nodes.GetAllSubscriptions(c, "1234asdf", method).Extract() + actual, err := nodes.GetAllSubscriptions(context.TODO(), c, "1234asdf", method).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeGetAllSubscriptions, *actual) } @@ -632,7 +633,7 @@ func TestGetSubscription(t *testing.T) { subscriptionOpt := nodes.GetSubscriptionOpts{ Id: "62dbd1b6-f637-11eb-b551-4cd98f20754c", } - actual, err := nodes.GetSubscription(c, "1234asdf", method, subscriptionOpt).Extract() + actual, err := nodes.GetSubscription(context.TODO(), c, "1234asdf", method, subscriptionOpt).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeGetSubscription, *actual) } @@ -653,7 +654,7 @@ func TestCreateSubscriptionAllParameters(t *testing.T) { EventTypes: []string{"Alert"}, HttpHeaders: []map[string]string{{"Content-Type": "application/json"}}, } - actual, err := nodes.CreateSubscription(c, "1234asdf", method, createOpt).Extract() + actual, err := nodes.CreateSubscription(context.TODO(), c, "1234asdf", method, createOpt).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeCreateSubscriptionAllParameters, *actual) } @@ -670,7 +671,7 @@ func TestCreateSubscriptionWithRequiredParameters(t *testing.T) { createOpt := nodes.CreateSubscriptionOpts{ Destination: "https://somedestinationurl", } - actual, err := nodes.CreateSubscription(c, "1234asdf", method, createOpt).Extract() + actual, err := nodes.CreateSubscription(context.TODO(), c, "1234asdf", method, createOpt).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeCreateSubscriptionRequiredParameters, *actual) } @@ -687,7 +688,7 @@ func TestDeleteSubscription(t *testing.T) { deleteOpt := nodes.DeleteSubscriptionOpts{ Id: "344a3e2-978a-444e-990a-cbf47c62ef88", } - err := nodes.DeleteSubscription(c, "1234asdf", method, deleteOpt).ExtractErr() + err := nodes.DeleteSubscription(context.TODO(), c, "1234asdf", method, deleteOpt).ExtractErr() th.AssertNoErr(t, err) } @@ -697,7 +698,7 @@ func TestSetMaintenance(t *testing.T) { HandleSetNodeMaintenanceSuccessfully(t) c := client.ServiceClient() - err := nodes.SetMaintenance(c, "1234asdf", nodes.MaintenanceOpts{ + err := nodes.SetMaintenance(context.TODO(), c, "1234asdf", nodes.MaintenanceOpts{ Reason: "I'm tired", }).ExtractErr() th.AssertNoErr(t, err) @@ -709,7 +710,7 @@ func TestUnsetMaintenance(t *testing.T) { HandleUnsetNodeMaintenanceSuccessfully(t) c := client.ServiceClient() - err := nodes.UnsetMaintenance(c, "1234asdf").ExtractErr() + err := nodes.UnsetMaintenance(context.TODO(), c, "1234asdf").ExtractErr() th.AssertNoErr(t, err) } @@ -719,7 +720,7 @@ func TestGetInventory(t *testing.T) { HandleGetInventorySuccessfully(t) c := client.ServiceClient() - actual, err := nodes.GetInventory(c, "1234asdf").Extract() + actual, err := nodes.GetInventory(context.TODO(), c, "1234asdf").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeInventoryData.Inventory, actual.Inventory) @@ -738,7 +739,7 @@ func TestListFirmware(t *testing.T) { HandleListFirmwareSuccessfully(t) c := client.ServiceClient() - actual, err := nodes.ListFirmware(c, "1234asdf").Extract() + actual, err := nodes.ListFirmware(context.TODO(), c, "1234asdf").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, NodeFirmwareList, actual) } diff --git a/openstack/baremetal/v1/ports/requests.go b/openstack/baremetal/v1/ports/requests.go index 3812b0d3b1..2c4e515191 100644 --- a/openstack/baremetal/v1/ports/requests.go +++ b/openstack/baremetal/v1/ports/requests.go @@ -1,6 +1,7 @@ package ports import ( + "context" "fmt" "github.com/gophercloud/gophercloud/v2" @@ -98,8 +99,8 @@ func ListDetail(client *gophercloud.ServiceClient, opts ListOptsBuilder) paginat } // Get - requests the details off a port, by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -155,14 +156,14 @@ func (opts CreateOpts) ToPortCreateMap() (map[string]interface{}, error) { } // Create - requests the creation of a port -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { reqBody, err := opts.ToPortCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), reqBody, &r.Body, nil) + resp, err := client.Post(ctx, createURL(client), reqBody, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -198,13 +199,13 @@ func (opts UpdateOperation) ToPortUpdateMap() map[string]interface{} { } // Update - requests the update of a port -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { body := make([]map[string]interface{}, len(opts)) for i, patch := range opts { body[i] = patch.ToPortUpdateMap() } - resp, err := client.Patch(updateURL(client, id), body, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), body, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -212,8 +213,8 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOpts) (r Up } // Delete - requests the deletion of a port -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/baremetal/v1/ports/testing/requests_test.go b/openstack/baremetal/v1/ports/testing/requests_test.go index 6c04c8567e..95073b0a71 100644 --- a/openstack/baremetal/v1/ports/testing/requests_test.go +++ b/openstack/baremetal/v1/ports/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/baremetal/v1/ports" @@ -15,7 +16,7 @@ func TestListDetailPorts(t *testing.T) { HandlePortListDetailSuccessfully(t) pages := 0 - err := ports.ListDetail(client.ServiceClient(), ports.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := ports.ListDetail(client.ServiceClient(), ports.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := ports.ExtractPorts(page) @@ -45,7 +46,7 @@ func TestListPorts(t *testing.T) { HandlePortListSuccessfully(t) pages := 0 - err := ports.List(client.ServiceClient(), ports.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := ports.List(client.ServiceClient(), ports.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := ports.ExtractPorts(page) @@ -90,7 +91,7 @@ func TestCreatePort(t *testing.T) { HandlePortCreationSuccessfully(t, SinglePortBody) iTrue := true - actual, err := ports.Create(client.ServiceClient(), ports.CreateOpts{ + actual, err := ports.Create(context.TODO(), client.ServiceClient(), ports.CreateOpts{ NodeUUID: "ddd06a60-b91e-4ab4-a6e7-56c0b25b6086", Address: "52:54:00:4d:87:e6", PXEEnabled: &iTrue, @@ -105,7 +106,7 @@ func TestDeletePort(t *testing.T) { defer th.TeardownHTTP() HandlePortDeletionSuccessfully(t) - res := ports.Delete(client.ServiceClient(), "3abe3f36-9708-4e9f-b07e-0f898061d3a7") + res := ports.Delete(context.TODO(), client.ServiceClient(), "3abe3f36-9708-4e9f-b07e-0f898061d3a7") th.AssertNoErr(t, res.Err) } @@ -115,7 +116,7 @@ func TestGetPort(t *testing.T) { HandlePortGetSuccessfully(t) c := client.ServiceClient() - actual, err := ports.Get(c, "f2845e11-dbd4-4728-a8c0-30d19f48924a").Extract() + actual, err := ports.Get(context.TODO(), c, "f2845e11-dbd4-4728-a8c0-30d19f48924a").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -129,7 +130,7 @@ func TestUpdatePort(t *testing.T) { HandlePortUpdateSuccessfully(t, SinglePortBody) c := client.ServiceClient() - actual, err := ports.Update(c, "f2845e11-dbd4-4728-a8c0-30d19f48924a", ports.UpdateOpts{ + actual, err := ports.Update(context.TODO(), c, "f2845e11-dbd4-4728-a8c0-30d19f48924a", ports.UpdateOpts{ ports.UpdateOperation{ Op: ports.ReplaceOp, Path: "/address", diff --git a/openstack/baremetalintrospection/v1/introspection/requests.go b/openstack/baremetalintrospection/v1/introspection/requests.go index e7e1b39f08..25939baab4 100644 --- a/openstack/baremetalintrospection/v1/introspection/requests.go +++ b/openstack/baremetalintrospection/v1/introspection/requests.go @@ -1,6 +1,8 @@ package introspection import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -47,8 +49,8 @@ func ListIntrospections(client *gophercloud.ServiceClient, opts ListIntrospectio // GetIntrospectionStatus makes a request against the Inspector API to get the // status of a single introspection. -func GetIntrospectionStatus(client *gophercloud.ServiceClient, nodeID string) (r GetIntrospectionStatusResult) { - resp, err := client.Get(introspectionURL(client, nodeID), &r.Body, &gophercloud.RequestOpts{ +func GetIntrospectionStatus(ctx context.Context, client *gophercloud.ServiceClient, nodeID string) (r GetIntrospectionStatusResult) { + resp, err := client.Get(ctx, introspectionURL(client, nodeID), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -75,14 +77,14 @@ func (opts StartOpts) ToStartIntrospectionQuery() (string, error) { // StartIntrospection initiate hardware introspection for node NodeID . // All power management configuration for this node needs to be done prior to calling the endpoint. -func StartIntrospection(client *gophercloud.ServiceClient, nodeID string, opts StartOptsBuilder) (r StartResult) { +func StartIntrospection(ctx context.Context, client *gophercloud.ServiceClient, nodeID string, opts StartOptsBuilder) (r StartResult) { _, err := opts.ToStartIntrospectionQuery() if err != nil { r.Err = err return } - resp, err := client.Post(introspectionURL(client, nodeID), nil, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, introspectionURL(client, nodeID), nil, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -90,8 +92,8 @@ func StartIntrospection(client *gophercloud.ServiceClient, nodeID string, opts S } // AbortIntrospection abort running introspection. -func AbortIntrospection(client *gophercloud.ServiceClient, nodeID string) (r AbortResult) { - resp, err := client.Post(abortIntrospectionURL(client, nodeID), nil, nil, &gophercloud.RequestOpts{ +func AbortIntrospection(ctx context.Context, client *gophercloud.ServiceClient, nodeID string) (r AbortResult) { + resp, err := client.Post(ctx, abortIntrospectionURL(client, nodeID), nil, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -99,8 +101,8 @@ func AbortIntrospection(client *gophercloud.ServiceClient, nodeID string) (r Abo } // GetIntrospectionData return stored data from successful introspection. -func GetIntrospectionData(client *gophercloud.ServiceClient, nodeID string) (r DataResult) { - resp, err := client.Get(introspectionDataURL(client, nodeID), &r.Body, &gophercloud.RequestOpts{ +func GetIntrospectionData(ctx context.Context, client *gophercloud.ServiceClient, nodeID string) (r DataResult) { + resp, err := client.Get(ctx, introspectionDataURL(client, nodeID), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -109,8 +111,8 @@ func GetIntrospectionData(client *gophercloud.ServiceClient, nodeID string) (r D // ReApplyIntrospection triggers introspection on stored unprocessed data. // No data is allowed to be sent along with the request. -func ReApplyIntrospection(client *gophercloud.ServiceClient, nodeID string) (r ApplyDataResult) { - resp, err := client.Post(introspectionUnprocessedDataURL(client, nodeID), nil, nil, &gophercloud.RequestOpts{ +func ReApplyIntrospection(ctx context.Context, client *gophercloud.ServiceClient, nodeID string) (r ApplyDataResult) { + resp, err := client.Post(ctx, introspectionUnprocessedDataURL(client, nodeID), nil, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/baremetalintrospection/v1/introspection/testing/requests_test.go b/openstack/baremetalintrospection/v1/introspection/testing/requests_test.go index c67af04998..b36318ce76 100644 --- a/openstack/baremetalintrospection/v1/introspection/testing/requests_test.go +++ b/openstack/baremetalintrospection/v1/introspection/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/baremetalintrospection/v1/introspection" @@ -15,7 +16,7 @@ func TestListIntrospections(t *testing.T) { HandleListIntrospectionsSuccessfully(t) pages := 0 - err := introspection.ListIntrospections(client.ServiceClient(), introspection.ListIntrospectionsOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := introspection.ListIntrospections(client.ServiceClient(), introspection.ListIntrospectionsOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := introspection.ExtractIntrospections(page) @@ -45,7 +46,7 @@ func TestGetIntrospectionStatus(t *testing.T) { HandleGetIntrospectionStatusSuccessfully(t) c := client.ServiceClient() - actual, err := introspection.GetIntrospectionStatus(c, "c244557e-899f-46fa-a1ff-5b2c6718616b").Extract() + actual, err := introspection.GetIntrospectionStatus(context.TODO(), c, "c244557e-899f-46fa-a1ff-5b2c6718616b").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -59,7 +60,7 @@ func TestStartIntrospection(t *testing.T) { HandleStartIntrospectionSuccessfully(t) c := client.ServiceClient() - err := introspection.StartIntrospection(c, "c244557e-899f-46fa-a1ff-5b2c6718616b", introspection.StartOpts{}).ExtractErr() + err := introspection.StartIntrospection(context.TODO(), c, "c244557e-899f-46fa-a1ff-5b2c6718616b", introspection.StartOpts{}).ExtractErr() th.AssertNoErr(t, err) } @@ -69,7 +70,7 @@ func TestAbortIntrospection(t *testing.T) { HandleAbortIntrospectionSuccessfully(t) c := client.ServiceClient() - err := introspection.AbortIntrospection(c, "c244557e-899f-46fa-a1ff-5b2c6718616b").ExtractErr() + err := introspection.AbortIntrospection(context.TODO(), c, "c244557e-899f-46fa-a1ff-5b2c6718616b").ExtractErr() th.AssertNoErr(t, err) } @@ -79,7 +80,7 @@ func TestGetIntrospectionData(t *testing.T) { HandleGetIntrospectionDataSuccessfully(t) c := client.ServiceClient() - actual, err := introspection.GetIntrospectionData(c, "c244557e-899f-46fa-a1ff-5b2c6718616b").Extract() + actual, err := introspection.GetIntrospectionData(context.TODO(), c, "c244557e-899f-46fa-a1ff-5b2c6718616b").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -93,6 +94,6 @@ func TestReApplyIntrospection(t *testing.T) { HandleReApplyIntrospectionSuccessfully(t) c := client.ServiceClient() - err := introspection.ReApplyIntrospection(c, "c244557e-899f-46fa-a1ff-5b2c6718616b").ExtractErr() + err := introspection.ReApplyIntrospection(context.TODO(), c, "c244557e-899f-46fa-a1ff-5b2c6718616b").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/blockstorage/apiversions/testing/requests_test.go b/openstack/blockstorage/apiversions/testing/requests_test.go index 24bd28ca9f..1cfcb72e29 100644 --- a/openstack/blockstorage/apiversions/testing/requests_test.go +++ b/openstack/blockstorage/apiversions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -15,7 +16,7 @@ func TestListVersions(t *testing.T) { MockListResponse(t) - allVersions, err := apiversions.List(client.ServiceClient()).AllPages() + allVersions, err := apiversions.List(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := apiversions.ExtractAPIVersions(allVersions) th.AssertNoErr(t, err) @@ -49,7 +50,7 @@ func TestListOldVersions(t *testing.T) { MockListOldResponse(t) - allVersions, err := apiversions.List(client.ServiceClient()).AllPages() + allVersions, err := apiversions.List(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := apiversions.ExtractAPIVersions(allVersions) th.AssertNoErr(t, err) @@ -76,7 +77,7 @@ func TestGetVersion(t *testing.T) { MockListResponse(t) - allVersions, err := apiversions.List(client.ServiceClient()).AllPages() + allVersions, err := apiversions.List(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := apiversions.ExtractAPIVersion(allVersions, "v3.0") th.AssertNoErr(t, err) @@ -100,7 +101,7 @@ func TestGetOldVersion(t *testing.T) { MockListOldResponse(t) - allVersions, err := apiversions.List(client.ServiceClient()).AllPages() + allVersions, err := apiversions.List(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := apiversions.ExtractAPIVersion(allVersions, "v2.0") th.AssertNoErr(t, err) diff --git a/openstack/blockstorage/extensions/availabilityzones/testing/requests_test.go b/openstack/blockstorage/extensions/availabilityzones/testing/requests_test.go index c722827ea5..07f74d6aa0 100644 --- a/openstack/blockstorage/extensions/availabilityzones/testing/requests_test.go +++ b/openstack/blockstorage/extensions/availabilityzones/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" az "github.com/gophercloud/gophercloud/v2/openstack/blockstorage/extensions/availabilityzones" @@ -15,7 +16,7 @@ func TestList(t *testing.T) { HandleGetSuccessfully(t) - allPages, err := az.List(client.ServiceClient()).AllPages() + allPages, err := az.List(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := az.ExtractAvailabilityZones(allPages) diff --git a/openstack/blockstorage/extensions/backups/requests.go b/openstack/blockstorage/extensions/backups/requests.go index 2e201d7431..57f5f55ee3 100644 --- a/openstack/blockstorage/extensions/backups/requests.go +++ b/openstack/blockstorage/extensions/backups/requests.go @@ -1,6 +1,8 @@ package backups import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -55,13 +57,13 @@ func (opts CreateOpts) ToBackupCreateMap() (map[string]interface{}, error) { // Create will create a new Backup based on the values in CreateOpts. To // extract the Backup object from the response, call the Extract method on the // CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToBackupCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -69,16 +71,16 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete will delete the existing Backup with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves the Backup with the provided ID. To extract the Backup // object from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -223,13 +225,13 @@ func (opts UpdateOpts) ToBackupUpdateMap() (map[string]interface{}, error) { // the updated Backup from the response, call the Extract method on the // UpdateResult. // Requires microversion 3.9 or later. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToBackupUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -255,13 +257,13 @@ func (opts RestoreOpts) ToRestoreMap() (map[string]interface{}, error) { // RestoreFromBackup will restore a Backup to a volume based on the values in // RestoreOpts. To extract the Restore object from the response, call the // Extract method on the RestoreResult. -func RestoreFromBackup(client *gophercloud.ServiceClient, id string, opts RestoreOpts) (r RestoreResult) { +func RestoreFromBackup(ctx context.Context, client *gophercloud.ServiceClient, id string, opts RestoreOpts) (r RestoreResult) { b, err := opts.ToRestoreMap() if err != nil { r.Err = err return } - resp, err := client.Post(restoreURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, restoreURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -270,8 +272,8 @@ func RestoreFromBackup(client *gophercloud.ServiceClient, id string, opts Restor // Export will export a Backup information. To extract the Backup export record // object from the response, call the Extract method on the ExportResult. -func Export(client *gophercloud.ServiceClient, id string) (r ExportResult) { - resp, err := client.Get(exportURL(client, id), &r.Body, nil) +func Export(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ExportResult) { + resp, err := client.Get(ctx, exportURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -289,13 +291,13 @@ func (opts ImportOpts) ToBackupImportMap() (map[string]interface{}, error) { // Import will import a Backup data to a backup based on the values in // ImportOpts. To extract the Backup object from the response, call the // Extract method on the ImportResult. -func Import(client *gophercloud.ServiceClient, opts ImportOpts) (r ImportResult) { +func Import(ctx context.Context, client *gophercloud.ServiceClient, opts ImportOpts) (r ImportResult) { b, err := opts.ToBackupImportMap() if err != nil { r.Err = err return } - resp, err := client.Post(importURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, importURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -324,14 +326,14 @@ func (opts ResetStatusOpts) ToBackupResetStatusMap() (map[string]interface{}, er // ResetStatus will reset the existing backup status. ResetStatusResult contains only the error. // To extract it, call the ExtractErr method on the ResetStatusResult. -func ResetStatus(client *gophercloud.ServiceClient, id string, opts ResetStatusOptsBuilder) (r ResetStatusResult) { +func ResetStatus(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ResetStatusOptsBuilder) (r ResetStatusResult) { b, err := opts.ToBackupResetStatusMap() if err != nil { r.Err = err return } - resp, err := client.Post(resetStatusURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, resetStatusURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -340,11 +342,11 @@ func ResetStatus(client *gophercloud.ServiceClient, id string, opts ResetStatusO // ForceDelete will delete the existing backup in any state. ForceDeleteResult contains only the error. // To extract it, call the ExtractErr method on the ForceDeleteResult. -func ForceDelete(client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) { +func ForceDelete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) { b := map[string]interface{}{ "os-force_delete": struct{}{}, } - resp, err := client.Post(forceDeleteURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, forceDeleteURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/blockstorage/extensions/backups/testing/requests_test.go b/openstack/blockstorage/extensions/backups/testing/requests_test.go index 6fc405cb45..667715c3cc 100644 --- a/openstack/blockstorage/extensions/backups/testing/requests_test.go +++ b/openstack/blockstorage/extensions/backups/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "encoding/json" "testing" "time" @@ -19,7 +20,7 @@ func TestList(t *testing.T) { count := 0 - err := backups.List(client.ServiceClient(), &backups.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := backups.List(client.ServiceClient(), &backups.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := backups.ExtractBackups(page) if err != nil { @@ -59,7 +60,7 @@ func TestListDetail(t *testing.T) { count := 0 - err := backups.ListDetail(client.ServiceClient(), &backups.ListDetailOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := backups.ListDetail(client.ServiceClient(), &backups.ListDetailOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := backups.ExtractBackups(page) if err != nil { @@ -107,7 +108,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - v, err := backups.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() + v, err := backups.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, v.Name, "backup-001") @@ -121,7 +122,7 @@ func TestCreate(t *testing.T) { MockCreateResponse(t) options := backups.CreateOpts{VolumeID: "1234", Name: "backup-001"} - n, err := backups.Create(client.ServiceClient(), options).Extract() + n, err := backups.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.VolumeID, "1234") @@ -136,7 +137,7 @@ func TestRestore(t *testing.T) { MockRestoreResponse(t) options := backups.RestoreOpts{VolumeID: "1234", Name: "vol-001"} - n, err := backups.RestoreFromBackup(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", options).Extract() + n, err := backups.RestoreFromBackup(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.VolumeID, "1234") @@ -150,7 +151,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := backups.Delete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") + res := backups.Delete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") th.AssertNoErr(t, res.Err) } @@ -160,7 +161,7 @@ func TestExport(t *testing.T) { MockExportResponse(t) - n, err := backups.Export(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() + n, err := backups.Export(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.BackupService, "cinder.backup.drivers.swift.SwiftBackupDriver") @@ -182,7 +183,7 @@ func TestImport(t *testing.T) { BackupService: "cinder.backup.drivers.swift.SwiftBackupDriver", BackupURL: backupURL, } - n, err := backups.Import(client.ServiceClient(), options).Extract() + n, err := backups.Import(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.ID, "d32019d3-bc6e-4319-9c1d-6722fc136a22") @@ -197,7 +198,7 @@ func TestResetStatus(t *testing.T) { opts := &backups.ResetStatusOpts{ Status: "error", } - res := backups.ResetStatus(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", opts) + res := backups.ResetStatus(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", opts) th.AssertNoErr(t, res.Err) } @@ -207,6 +208,6 @@ func TestForceDelete(t *testing.T) { MockForceDeleteResponse(t) - res := backups.ForceDelete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") + res := backups.ForceDelete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") th.AssertNoErr(t, res.Err) } diff --git a/openstack/blockstorage/extensions/limits/requests.go b/openstack/blockstorage/extensions/limits/requests.go index 0fe84b4e91..8ae37cdd99 100644 --- a/openstack/blockstorage/extensions/limits/requests.go +++ b/openstack/blockstorage/extensions/limits/requests.go @@ -1,13 +1,15 @@ package limits import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // Get returns the limits about the currently scoped tenant. -func Get(client *gophercloud.ServiceClient) (r GetResult) { +func Get(ctx context.Context, client *gophercloud.ServiceClient) (r GetResult) { url := getURL(client) - resp, err := client.Get(url, &r.Body, nil) + resp, err := client.Get(ctx, url, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/blockstorage/extensions/limits/testing/requests_test.go b/openstack/blockstorage/extensions/limits/testing/requests_test.go index 1740048a77..a097c35bcf 100644 --- a/openstack/blockstorage/extensions/limits/testing/requests_test.go +++ b/openstack/blockstorage/extensions/limits/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/blockstorage/extensions/limits" @@ -13,7 +14,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t) - actual, err := limits.Get(client.ServiceClient()).Extract() + actual, err := limits.Get(context.TODO(), client.ServiceClient()).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &LimitsResult, actual) } diff --git a/openstack/blockstorage/extensions/quotasets/requests.go b/openstack/blockstorage/extensions/quotasets/requests.go index be1b9734eb..21fa7c8f97 100644 --- a/openstack/blockstorage/extensions/quotasets/requests.go +++ b/openstack/blockstorage/extensions/quotasets/requests.go @@ -1,42 +1,43 @@ package quotasets import ( + "context" "fmt" "github.com/gophercloud/gophercloud/v2" ) // Get returns public data about a previously created QuotaSet. -func Get(client *gophercloud.ServiceClient, projectID string) (r GetResult) { - resp, err := client.Get(getURL(client, projectID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, projectID string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, projectID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetDefaults returns public data about the project's default block storage quotas. -func GetDefaults(client *gophercloud.ServiceClient, projectID string) (r GetResult) { - resp, err := client.Get(getDefaultsURL(client, projectID), &r.Body, nil) +func GetDefaults(ctx context.Context, client *gophercloud.ServiceClient, projectID string) (r GetResult) { + resp, err := client.Get(ctx, getDefaultsURL(client, projectID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetUsage returns detailed public data about a previously created QuotaSet. -func GetUsage(client *gophercloud.ServiceClient, projectID string) (r GetUsageResult) { +func GetUsage(ctx context.Context, client *gophercloud.ServiceClient, projectID string) (r GetUsageResult) { u := fmt.Sprintf("%s?usage=true", getURL(client, projectID)) - resp, err := client.Get(u, &r.Body, nil) + resp, err := client.Get(ctx, u, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Updates the quotas for the given projectID and returns the new QuotaSet. -func Update(client *gophercloud.ServiceClient, projectID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, projectID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToBlockStorageQuotaUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, projectID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, projectID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -107,8 +108,8 @@ type UpdateOpts struct { } // Resets the quotas for the given tenant to their default values. -func Delete(client *gophercloud.ServiceClient, projectID string) (r DeleteResult) { - resp, err := client.Delete(updateURL(client, projectID), &gophercloud.RequestOpts{ +func Delete(ctx context.Context, client *gophercloud.ServiceClient, projectID string) (r DeleteResult) { + resp, err := client.Delete(ctx, updateURL(client, projectID), &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/blockstorage/extensions/quotasets/testing/requests_test.go b/openstack/blockstorage/extensions/quotasets/testing/requests_test.go index 86bac291f3..a6a6f40ce1 100644 --- a/openstack/blockstorage/extensions/quotasets/testing/requests_test.go +++ b/openstack/blockstorage/extensions/quotasets/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "errors" "testing" @@ -15,7 +16,7 @@ func TestGet(t *testing.T) { uriQueryParms := map[string]string{} HandleSuccessfulRequest(t, "GET", "/os-quota-sets/"+FirstTenantID, getExpectedJSONBody, uriQueryParms) - actual, err := quotasets.Get(client.ServiceClient(), FirstTenantID).Extract() + actual, err := quotasets.Get(context.TODO(), client.ServiceClient(), FirstTenantID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &getExpectedQuotaSet, actual) } @@ -26,7 +27,7 @@ func TestGetUsage(t *testing.T) { uriQueryParms := map[string]string{"usage": "true"} HandleSuccessfulRequest(t, "GET", "/os-quota-sets/"+FirstTenantID, getUsageExpectedJSONBody, uriQueryParms) - actual, err := quotasets.GetUsage(client.ServiceClient(), FirstTenantID).Extract() + actual, err := quotasets.GetUsage(context.TODO(), client.ServiceClient(), FirstTenantID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, getUsageExpectedQuotaSet, actual) } @@ -37,7 +38,7 @@ func TestFullUpdate(t *testing.T) { uriQueryParms := map[string]string{} HandleSuccessfulRequest(t, "PUT", "/os-quota-sets/"+FirstTenantID, fullUpdateExpectedJSONBody, uriQueryParms) - actual, err := quotasets.Update(client.ServiceClient(), FirstTenantID, fullUpdateOpts).Extract() + actual, err := quotasets.Update(context.TODO(), client.ServiceClient(), FirstTenantID, fullUpdateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &fullUpdateExpectedQuotaSet, actual) } @@ -48,7 +49,7 @@ func TestPartialUpdate(t *testing.T) { uriQueryParms := map[string]string{} HandleSuccessfulRequest(t, "PUT", "/os-quota-sets/"+FirstTenantID, partialUpdateExpectedJSONBody, uriQueryParms) - actual, err := quotasets.Update(client.ServiceClient(), FirstTenantID, partialUpdateOpts).Extract() + actual, err := quotasets.Update(context.TODO(), client.ServiceClient(), FirstTenantID, partialUpdateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &partiualUpdateExpectedQuotaSet, actual) } @@ -64,7 +65,7 @@ func TestErrorInToBlockStorageQuotaUpdateMap(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandleSuccessfulRequest(t, "PUT", "/os-quota-sets/"+FirstTenantID, "", nil) - _, err := quotasets.Update(client.ServiceClient(), FirstTenantID, opts).Extract() + _, err := quotasets.Update(context.TODO(), client.ServiceClient(), FirstTenantID, opts).Extract() if err == nil { t.Fatal("Error handling failed") } @@ -75,6 +76,6 @@ func TestDelete(t *testing.T) { defer th.TeardownHTTP() HandleDeleteSuccessfully(t) - err := quotasets.Delete(client.ServiceClient(), FirstTenantID).ExtractErr() + err := quotasets.Delete(context.TODO(), client.ServiceClient(), FirstTenantID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/blockstorage/extensions/schedulerstats/testing/requests_test.go b/openstack/blockstorage/extensions/schedulerstats/testing/requests_test.go index 521cad03e2..2895a46b89 100644 --- a/openstack/blockstorage/extensions/schedulerstats/testing/requests_test.go +++ b/openstack/blockstorage/extensions/schedulerstats/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/blockstorage/extensions/schedulerstats" @@ -15,7 +16,7 @@ func TestListStoragePoolsDetail(t *testing.T) { HandleStoragePoolsListSuccessfully(t) pages := 0 - err := schedulerstats.List(client.ServiceClient(), schedulerstats.ListOpts{Detail: true}).EachPage(func(page pagination.Page) (bool, error) { + err := schedulerstats.List(client.ServiceClient(), schedulerstats.ListOpts{Detail: true}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := schedulerstats.ExtractStoragePools(page) diff --git a/openstack/blockstorage/extensions/services/testing/requests_test.go b/openstack/blockstorage/extensions/services/testing/requests_test.go index c23b148080..407aa0723b 100644 --- a/openstack/blockstorage/extensions/services/testing/requests_test.go +++ b/openstack/blockstorage/extensions/services/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/blockstorage/extensions/services" @@ -15,7 +16,7 @@ func TestListServices(t *testing.T) { HandleListSuccessfully(t) pages := 0 - err := services.List(client.ServiceClient(), services.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := services.List(client.ServiceClient(), services.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := services.ExtractServices(page) diff --git a/openstack/blockstorage/extensions/volumeactions/requests.go b/openstack/blockstorage/extensions/volumeactions/requests.go index 34e400ec33..a435e6c754 100644 --- a/openstack/blockstorage/extensions/volumeactions/requests.go +++ b/openstack/blockstorage/extensions/volumeactions/requests.go @@ -1,6 +1,8 @@ package volumeactions import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) @@ -41,13 +43,13 @@ func (opts AttachOpts) ToVolumeAttachMap() (map[string]interface{}, error) { } // Attach will attach a volume based on the values in AttachOpts. -func Attach(client *gophercloud.ServiceClient, id string, opts AttachOptsBuilder) (r AttachResult) { +func Attach(ctx context.Context, client *gophercloud.ServiceClient, id string, opts AttachOptsBuilder) (r AttachResult) { b, err := opts.ToVolumeAttachMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -55,9 +57,9 @@ func Attach(client *gophercloud.ServiceClient, id string, opts AttachOptsBuilder } // BeginDetaching will mark the volume as detaching. -func BeginDetaching(client *gophercloud.ServiceClient, id string) (r BeginDetachingResult) { +func BeginDetaching(ctx context.Context, client *gophercloud.ServiceClient, id string) (r BeginDetachingResult) { b := map[string]interface{}{"os-begin_detaching": make(map[string]interface{})} - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -83,13 +85,13 @@ func (opts DetachOpts) ToVolumeDetachMap() (map[string]interface{}, error) { } // Detach will detach a volume based on volume ID. -func Detach(client *gophercloud.ServiceClient, id string, opts DetachOptsBuilder) (r DetachResult) { +func Detach(ctx context.Context, client *gophercloud.ServiceClient, id string, opts DetachOptsBuilder) (r DetachResult) { b, err := opts.ToVolumeDetachMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -97,9 +99,9 @@ func Detach(client *gophercloud.ServiceClient, id string, opts DetachOptsBuilder } // Reserve will reserve a volume based on volume ID. -func Reserve(client *gophercloud.ServiceClient, id string) (r ReserveResult) { +func Reserve(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ReserveResult) { b := map[string]interface{}{"os-reserve": make(map[string]interface{})} - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -107,9 +109,9 @@ func Reserve(client *gophercloud.ServiceClient, id string) (r ReserveResult) { } // Unreserve will unreserve a volume based on volume ID. -func Unreserve(client *gophercloud.ServiceClient, id string) (r UnreserveResult) { +func Unreserve(ctx context.Context, client *gophercloud.ServiceClient, id string) (r UnreserveResult) { b := map[string]interface{}{"os-unreserve": make(map[string]interface{})} - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -144,13 +146,13 @@ func (opts InitializeConnectionOpts) ToVolumeInitializeConnectionMap() (map[stri } // InitializeConnection initializes an iSCSI connection by volume ID. -func InitializeConnection(client *gophercloud.ServiceClient, id string, opts InitializeConnectionOptsBuilder) (r InitializeConnectionResult) { +func InitializeConnection(ctx context.Context, client *gophercloud.ServiceClient, id string, opts InitializeConnectionOptsBuilder) (r InitializeConnectionResult) { b, err := opts.ToVolumeInitializeConnectionMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -183,13 +185,13 @@ func (opts TerminateConnectionOpts) ToVolumeTerminateConnectionMap() (map[string } // TerminateConnection terminates an iSCSI connection by volume ID. -func TerminateConnection(client *gophercloud.ServiceClient, id string, opts TerminateConnectionOptsBuilder) (r TerminateConnectionResult) { +func TerminateConnection(ctx context.Context, client *gophercloud.ServiceClient, id string, opts TerminateConnectionOptsBuilder) (r TerminateConnectionResult) { b, err := opts.ToVolumeTerminateConnectionMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -217,13 +219,13 @@ func (opts ExtendSizeOpts) ToVolumeExtendSizeMap() (map[string]interface{}, erro // ExtendSize will extend the size of the volume based on the provided information. // This operation does not return a response body. -func ExtendSize(client *gophercloud.ServiceClient, id string, opts ExtendSizeOptsBuilder) (r ExtendSizeResult) { +func ExtendSize(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ExtendSizeOptsBuilder) (r ExtendSizeResult) { b, err := opts.ToVolumeExtendSizeMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -266,13 +268,13 @@ func (opts UploadImageOpts) ToVolumeUploadImageMap() (map[string]interface{}, er } // UploadImage will upload an image based on the values in UploadImageOptsBuilder. -func UploadImage(client *gophercloud.ServiceClient, id string, opts UploadImageOptsBuilder) (r UploadImageResult) { +func UploadImage(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UploadImageOptsBuilder) (r UploadImageResult) { b, err := opts.ToVolumeUploadImageMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -280,8 +282,8 @@ func UploadImage(client *gophercloud.ServiceClient, id string, opts UploadImageO } // ForceDelete will delete the volume regardless of state. -func ForceDelete(client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) { - resp, err := client.Post(actionURL(client, id), map[string]interface{}{"os-force_delete": ""}, nil, nil) +func ForceDelete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) { + resp, err := client.Post(ctx, actionURL(client, id), map[string]interface{}{"os-force_delete": ""}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -305,13 +307,13 @@ func (opts ImageMetadataOpts) ToImageMetadataMap() (map[string]interface{}, erro } // SetImageMetadata will set image metadata on a volume based on the values in ImageMetadataOptsBuilder. -func SetImageMetadata(client *gophercloud.ServiceClient, id string, opts ImageMetadataOptsBuilder) (r SetImageMetadataResult) { +func SetImageMetadata(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ImageMetadataOptsBuilder) (r SetImageMetadataResult) { b, err := opts.ToImageMetadataMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -331,13 +333,13 @@ func (opts BootableOpts) ToBootableMap() (map[string]interface{}, error) { } // SetBootable will set bootable status on a volume based on the values in BootableOpts -func SetBootable(client *gophercloud.ServiceClient, id string, opts BootableOpts) (r SetBootableResult) { +func SetBootable(ctx context.Context, client *gophercloud.ServiceClient, id string, opts BootableOpts) (r SetBootableResult) { b, err := opts.ToBootableMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -379,13 +381,13 @@ func (opts ChangeTypeOpts) ToVolumeChangeTypeMap() (map[string]interface{}, erro // ChangeType will change the volume type of the volume based on the provided information. // This operation does not return a response body. -func ChangeType(client *gophercloud.ServiceClient, id string, opts ChangeTypeOptsBuilder) (r ChangeTypeResult) { +func ChangeType(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ChangeTypeOptsBuilder) (r ChangeTypeResult) { b, err := opts.ToVolumeChangeTypeMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -406,13 +408,13 @@ func (opts ReImageOpts) ToReImageMap() (map[string]interface{}, error) { } // ReImage will re-image a volume based on the values in ReImageOpts -func ReImage(client *gophercloud.ServiceClient, id string, opts ReImageOpts) (r ReImageResult) { +func ReImage(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ReImageOpts) (r ReImageResult) { b, err := opts.ToReImageMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -445,14 +447,14 @@ func (opts ResetStatusOpts) ToResetStatusMap() (map[string]interface{}, error) { // ResetStatus will reset the existing volume status. ResetStatusResult contains only the error. // To extract it, call the ExtractErr method on the ResetStatusResult. -func ResetStatus(client *gophercloud.ServiceClient, id string, opts ResetStatusOptsBuilder) (r ResetStatusResult) { +func ResetStatus(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ResetStatusOptsBuilder) (r ResetStatusResult) { b, err := opts.ToResetStatusMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/blockstorage/extensions/volumeactions/testing/requests_test.go b/openstack/blockstorage/extensions/volumeactions/testing/requests_test.go index db3fd78d06..ac32ee2236 100644 --- a/openstack/blockstorage/extensions/volumeactions/testing/requests_test.go +++ b/openstack/blockstorage/extensions/volumeactions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -21,7 +22,7 @@ func TestAttach(t *testing.T) { Mode: "rw", InstanceUUID: "50902f4f-a974-46a0-85e9-7efc5e22dfdd", } - err := volumeactions.Attach(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() + err := volumeactions.Attach(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() th.AssertNoErr(t, err) } @@ -31,7 +32,7 @@ func TestBeginDetaching(t *testing.T) { MockBeginDetachingResponse(t) - err := volumeactions.BeginDetaching(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c").ExtractErr() + err := volumeactions.BeginDetaching(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c").ExtractErr() th.AssertNoErr(t, err) } @@ -41,7 +42,7 @@ func TestDetach(t *testing.T) { MockDetachResponse(t) - err := volumeactions.Detach(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", &volumeactions.DetachOpts{}).ExtractErr() + err := volumeactions.Detach(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", &volumeactions.DetachOpts{}).ExtractErr() th.AssertNoErr(t, err) } @@ -56,7 +57,7 @@ func TestUploadImage(t *testing.T) { Force: true, } - actual, err := volumeactions.UploadImage(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).Extract() + actual, err := volumeactions.UploadImage(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).Extract() th.AssertNoErr(t, err) expected := volumeactions.VolumeImage{ @@ -91,7 +92,7 @@ func TestReserve(t *testing.T) { MockReserveResponse(t) - err := volumeactions.Reserve(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c").ExtractErr() + err := volumeactions.Reserve(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c").ExtractErr() th.AssertNoErr(t, err) } @@ -101,7 +102,7 @@ func TestUnreserve(t *testing.T) { MockUnreserveResponse(t) - err := volumeactions.Unreserve(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c").ExtractErr() + err := volumeactions.Unreserve(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c").ExtractErr() th.AssertNoErr(t, err) } @@ -119,7 +120,7 @@ func TestInitializeConnection(t *testing.T) { Platform: "x86_64", OSType: "linux2", } - _, err := volumeactions.InitializeConnection(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).Extract() + _, err := volumeactions.InitializeConnection(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).Extract() th.AssertNoErr(t, err) } @@ -137,7 +138,7 @@ func TestTerminateConnection(t *testing.T) { Platform: "x86_64", OSType: "linux2", } - err := volumeactions.TerminateConnection(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() + err := volumeactions.TerminateConnection(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() th.AssertNoErr(t, err) } @@ -151,7 +152,7 @@ func TestExtendSize(t *testing.T) { NewSize: 3, } - err := volumeactions.ExtendSize(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() + err := volumeactions.ExtendSize(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() th.AssertNoErr(t, err) } @@ -161,7 +162,7 @@ func TestForceDelete(t *testing.T) { MockForceDeleteResponse(t) - res := volumeactions.ForceDelete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") + res := volumeactions.ForceDelete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") th.AssertNoErr(t, res.Err) } @@ -177,7 +178,7 @@ func TestSetImageMetadata(t *testing.T) { }, } - err := volumeactions.SetImageMetadata(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() + err := volumeactions.SetImageMetadata(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() th.AssertNoErr(t, err) } @@ -191,7 +192,7 @@ func TestSetBootable(t *testing.T) { Bootable: true, } - err := volumeactions.SetBootable(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() + err := volumeactions.SetBootable(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() th.AssertNoErr(t, err) } @@ -206,7 +207,7 @@ func TestReImage(t *testing.T) { ReImageReserved: false, } - err := volumeactions.ReImage(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() + err := volumeactions.ReImage(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() th.AssertNoErr(t, err) } @@ -221,7 +222,7 @@ func TestChangeType(t *testing.T) { MigrationPolicy: "on-demand", } - err := volumeactions.ChangeType(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() + err := volumeactions.ChangeType(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() th.AssertNoErr(t, err) } @@ -237,6 +238,6 @@ func TestResetStatus(t *testing.T) { MigrationStatus: "migrating", } - err := volumeactions.ResetStatus(client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() + err := volumeactions.ResetStatus(context.TODO(), client.ServiceClient(), "cd281d77-8217-4830-be95-9528227c105c", options).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/blockstorage/extensions/volumetransfers/requests.go b/openstack/blockstorage/extensions/volumetransfers/requests.go index 5686c58c70..8cdd7d152e 100644 --- a/openstack/blockstorage/extensions/volumetransfers/requests.go +++ b/openstack/blockstorage/extensions/volumetransfers/requests.go @@ -1,6 +1,8 @@ package volumetransfers import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -21,13 +23,13 @@ func (opts CreateOpts) ToCreateMap() (map[string]interface{}, error) { } // Create will create a volume tranfer request based on the values in CreateOpts. -func Create(client *gophercloud.ServiceClient, opts CreateOpts) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOpts) (r CreateResult) { b, err := opts.ToCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(transferURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, transferURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -47,13 +49,13 @@ func (opts AcceptOpts) ToAcceptMap() (map[string]interface{}, error) { } // Accept will accept a volume tranfer request based on the values in AcceptOpts. -func Accept(client *gophercloud.ServiceClient, id string, opts AcceptOpts) (r CreateResult) { +func Accept(ctx context.Context, client *gophercloud.ServiceClient, id string, opts AcceptOpts) (r CreateResult) { b, err := opts.ToAcceptMap() if err != nil { r.Err = err return } - resp, err := client.Post(acceptURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, acceptURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -61,8 +63,8 @@ func Accept(client *gophercloud.ServiceClient, id string, opts AcceptOpts) (r Cr } // Delete deletes a volume transfer. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -117,8 +119,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa // Get retrieves the Transfer with the provided ID. To extract the Transfer object // from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/blockstorage/extensions/volumetransfers/testing/requests_test.go b/openstack/blockstorage/extensions/volumetransfers/testing/requests_test.go index 0e2e440df7..d5fc321473 100644 --- a/openstack/blockstorage/extensions/volumetransfers/testing/requests_test.go +++ b/openstack/blockstorage/extensions/volumetransfers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/blockstorage/extensions/volumetransfers" @@ -14,7 +15,7 @@ func TestCreateTransfer(t *testing.T) { defer th.TeardownHTTP() HandleCreateTransfer(t) - actual, err := volumetransfers.Create(client.ServiceClient(), TransferRequest).Extract() + actual, err := volumetransfers.Create(context.TODO(), client.ServiceClient(), TransferRequest).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, TransferResponse, *actual) } @@ -24,7 +25,7 @@ func TestAcceptTransfer(t *testing.T) { defer th.TeardownHTTP() HandleAcceptTransfer(t) - actual, err := volumetransfers.Accept(client.ServiceClient(), TransferResponse.ID, AcceptRequest).Extract() + actual, err := volumetransfers.Accept(context.TODO(), client.ServiceClient(), TransferResponse.ID, AcceptRequest).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, AcceptResponse, *actual) } @@ -34,7 +35,7 @@ func TestDeleteTransfer(t *testing.T) { defer th.TeardownHTTP() HandleDeleteTransfer(t) - err := volumetransfers.Delete(client.ServiceClient(), TransferResponse.ID).ExtractErr() + err := volumetransfers.Delete(context.TODO(), client.ServiceClient(), TransferResponse.ID).ExtractErr() th.AssertNoErr(t, err) } @@ -47,7 +48,7 @@ func TestListTransfers(t *testing.T) { expectedResponse[0].AuthKey = "" count := 0 - err := volumetransfers.List(client.ServiceClient(), &volumetransfers.ListOpts{AllTenants: true}).EachPage(func(page pagination.Page) (bool, error) { + err := volumetransfers.List(client.ServiceClient(), &volumetransfers.ListOpts{AllTenants: true}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := volumetransfers.ExtractTransfers(page) @@ -69,7 +70,7 @@ func TestListTransfersAllPages(t *testing.T) { expectedResponse := TransferListResponse expectedResponse[0].AuthKey = "" - allPages, err := volumetransfers.List(client.ServiceClient(), &volumetransfers.ListOpts{AllTenants: true}).AllPages() + allPages, err := volumetransfers.List(client.ServiceClient(), &volumetransfers.ListOpts{AllTenants: true}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := volumetransfers.ExtractTransfers(allPages) th.AssertNoErr(t, err) @@ -84,7 +85,7 @@ func TestGetTransfer(t *testing.T) { expectedResponse := TransferResponse expectedResponse.AuthKey = "" - actual, err := volumetransfers.Get(client.ServiceClient(), TransferResponse.ID).Extract() + actual, err := volumetransfers.Get(context.TODO(), client.ServiceClient(), TransferResponse.ID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expectedResponse, *actual) } diff --git a/openstack/blockstorage/v1/apiversions/requests.go b/openstack/blockstorage/v1/apiversions/requests.go index d60f8ab235..c376b3307d 100644 --- a/openstack/blockstorage/v1/apiversions/requests.go +++ b/openstack/blockstorage/v1/apiversions/requests.go @@ -1,6 +1,8 @@ package apiversions import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -14,8 +16,8 @@ func List(c *gophercloud.ServiceClient) pagination.Pager { // Get will retrieve the volume type with the provided ID. To extract the volume // type from the result, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, v string) (r GetResult) { - resp, err := client.Get(getURL(client, v), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, v string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, v), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/blockstorage/v1/apiversions/testing/requests_test.go b/openstack/blockstorage/v1/apiversions/testing/requests_test.go index a7bcc38cea..5af2ce0f4f 100644 --- a/openstack/blockstorage/v1/apiversions/testing/requests_test.go +++ b/openstack/blockstorage/v1/apiversions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/blockstorage/v1/apiversions" @@ -17,7 +18,7 @@ func TestListVersions(t *testing.T) { count := 0 - apiversions.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + apiversions.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := apiversions.ExtractAPIVersions(page) th.AssertNoErr(t, err) @@ -49,7 +50,7 @@ func TestAPIInfo(t *testing.T) { MockGetResponse(t) - actual, err := apiversions.Get(client.ServiceClient(), "v1").Extract() + actual, err := apiversions.Get(context.TODO(), client.ServiceClient(), "v1").Extract() th.AssertNoErr(t, err) expected := apiversions.APIVersion{ diff --git a/openstack/blockstorage/v1/snapshots/requests.go b/openstack/blockstorage/v1/snapshots/requests.go index adfa9d0693..73f16310a2 100644 --- a/openstack/blockstorage/v1/snapshots/requests.go +++ b/openstack/blockstorage/v1/snapshots/requests.go @@ -1,6 +1,8 @@ package snapshots import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -31,13 +33,13 @@ func (opts CreateOpts) ToSnapshotCreateMap() (map[string]interface{}, error) { // Create will create a new Snapshot based on the values in CreateOpts. To // extract the Snapshot object from the response, call the Extract method on the // CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToSnapshotCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -45,16 +47,16 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete will delete the existing Snapshot with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves the Snapshot with the provided ID. To extract the Snapshot // object from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -117,13 +119,13 @@ func (opts UpdateMetadataOpts) ToSnapshotUpdateMetadataMap() (map[string]interfa // UpdateMetadata will update the Snapshot with provided information. To // extract the updated Snapshot from the response, call the ExtractMetadata // method on the UpdateMetadataResult. -func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) (r UpdateMetadataResult) { +func UpdateMetadata(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) (r UpdateMetadataResult) { b, err := opts.ToSnapshotUpdateMetadataMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateMetadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateMetadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/blockstorage/v1/snapshots/testing/requests_test.go b/openstack/blockstorage/v1/snapshots/testing/requests_test.go index 3088bf002e..3f24e41238 100644 --- a/openstack/blockstorage/v1/snapshots/testing/requests_test.go +++ b/openstack/blockstorage/v1/snapshots/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -18,7 +19,7 @@ func TestList(t *testing.T) { count := 0 - snapshots.List(client.ServiceClient(), &snapshots.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + snapshots.List(client.ServiceClient(), &snapshots.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := snapshots.ExtractSnapshots(page) if err != nil { @@ -63,7 +64,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - v, err := snapshots.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() + v, err := snapshots.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, v.Name, "snapshot-001") @@ -77,7 +78,7 @@ func TestCreate(t *testing.T) { MockCreateResponse(t) options := snapshots.CreateOpts{VolumeID: "1234", Name: "snapshot-001"} - n, err := snapshots.Create(client.ServiceClient(), options).Extract() + n, err := snapshots.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.VolumeID, "1234") @@ -99,7 +100,7 @@ func TestUpdateMetadata(t *testing.T) { }, } - actual, err := snapshots.UpdateMetadata(client.ServiceClient(), "123", options).ExtractMetadata() + actual, err := snapshots.UpdateMetadata(context.TODO(), client.ServiceClient(), "123", options).ExtractMetadata() th.AssertNoErr(t, err) th.AssertDeepEquals(t, actual, expected) @@ -111,6 +112,6 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := snapshots.Delete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") + res := snapshots.Delete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") th.AssertNoErr(t, res.Err) } diff --git a/openstack/blockstorage/v1/snapshots/util.go b/openstack/blockstorage/v1/snapshots/util.go index e74ff98f31..a484fc3186 100644 --- a/openstack/blockstorage/v1/snapshots/util.go +++ b/openstack/blockstorage/v1/snapshots/util.go @@ -1,14 +1,16 @@ package snapshots import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // WaitForStatus will continually poll the resource, checking for a particular // status. It will do this for the amount of seconds defined. -func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error { +func WaitForStatus(ctx context.Context, c *gophercloud.ServiceClient, id, status string, secs int) error { return gophercloud.WaitFor(secs, func() (bool, error) { - current, err := Get(c, id).Extract() + current, err := Get(ctx, c, id).Extract() if err != nil { return false, err } diff --git a/openstack/blockstorage/v1/volumes/requests.go b/openstack/blockstorage/v1/volumes/requests.go index f0dd9e5baf..8ac1b36745 100644 --- a/openstack/blockstorage/v1/volumes/requests.go +++ b/openstack/blockstorage/v1/volumes/requests.go @@ -1,6 +1,8 @@ package volumes import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -35,13 +37,13 @@ func (opts CreateOpts) ToVolumeCreateMap() (map[string]interface{}, error) { // Create will create a new Volume based on the values in CreateOpts. To extract // the Volume object from the response, call the Extract method on the // CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToVolumeCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -49,16 +51,16 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete will delete the existing Volume with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves the Volume with the provided ID. To extract the Volume object // from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -126,13 +128,13 @@ func (opts UpdateOpts) ToVolumeUpdateMap() (map[string]interface{}, error) { // Update will update the Volume with provided information. To extract the updated // Volume from the response, call the Extract method on the UpdateResult. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToVolumeUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/blockstorage/v1/volumes/testing/requests_test.go b/openstack/blockstorage/v1/volumes/testing/requests_test.go index 9dc434f008..323949dfc2 100644 --- a/openstack/blockstorage/v1/volumes/testing/requests_test.go +++ b/openstack/blockstorage/v1/volumes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -18,7 +19,7 @@ func TestList(t *testing.T) { count := 0 - volumes.List(client.ServiceClient(), &volumes.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + volumes.List(client.ServiceClient(), &volumes.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := volumes.ExtractVolumes(page) if err != nil { @@ -53,7 +54,7 @@ func TestListAll(t *testing.T) { MockListResponse(t) - allPages, err := volumes.List(client.ServiceClient(), &volumes.ListOpts{}).AllPages() + allPages, err := volumes.List(client.ServiceClient(), &volumes.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := volumes.ExtractVolumes(allPages) th.AssertNoErr(t, err) @@ -79,7 +80,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - actual, err := volumes.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() + actual, err := volumes.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() th.AssertNoErr(t, err) expected := &volumes.Volume{ @@ -122,7 +123,7 @@ func TestCreate(t *testing.T) { Size: 75, AvailabilityZone: "us-east1", } - n, err := volumes.Create(client.ServiceClient(), options).Extract() + n, err := volumes.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Size, 4) @@ -135,7 +136,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := volumes.Delete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") + res := volumes.Delete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") th.AssertNoErr(t, res.Err) } @@ -147,7 +148,7 @@ func TestUpdate(t *testing.T) { var name = "vol-002" options := volumes.UpdateOpts{Name: &name} - v, err := volumes.Update(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", options).Extract() + v, err := volumes.Update(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", options).Extract() th.AssertNoErr(t, err) th.CheckEquals(t, "vol-002", v.Name) } diff --git a/openstack/blockstorage/v1/volumes/util.go b/openstack/blockstorage/v1/volumes/util.go index f596575e52..d6a76e6c80 100644 --- a/openstack/blockstorage/v1/volumes/util.go +++ b/openstack/blockstorage/v1/volumes/util.go @@ -1,14 +1,16 @@ package volumes import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // WaitForStatus will continually poll the resource, checking for a particular // status. It will do this for the amount of seconds defined. -func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error { +func WaitForStatus(ctx context.Context, c *gophercloud.ServiceClient, id, status string, secs int) error { return gophercloud.WaitFor(secs, func() (bool, error) { - current, err := Get(c, id).Extract() + current, err := Get(ctx, c, id).Extract() if err != nil { return false, err } diff --git a/openstack/blockstorage/v1/volumetypes/requests.go b/openstack/blockstorage/v1/volumetypes/requests.go index 4343819607..292c36103c 100644 --- a/openstack/blockstorage/v1/volumetypes/requests.go +++ b/openstack/blockstorage/v1/volumetypes/requests.go @@ -1,6 +1,8 @@ package volumetypes import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -26,13 +28,13 @@ func (opts CreateOpts) ToVolumeTypeCreateMap() (map[string]interface{}, error) { // Create will create a new volume. To extract the created volume type object, // call the Extract method on the CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToVolumeTypeCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -40,16 +42,16 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete will delete the volume type with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get will retrieve the volume type with the provided ID. To extract the volume // type from the result, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/blockstorage/v1/volumetypes/testing/requests_test.go b/openstack/blockstorage/v1/volumetypes/testing/requests_test.go index d43b6b7baa..004bea24f3 100644 --- a/openstack/blockstorage/v1/volumetypes/testing/requests_test.go +++ b/openstack/blockstorage/v1/volumetypes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -19,7 +20,7 @@ func TestList(t *testing.T) { count := 0 - volumetypes.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + volumetypes.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := volumetypes.ExtractVolumeTypes(page) if err != nil { @@ -58,7 +59,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - vt, err := volumetypes.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() + vt, err := volumetypes.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, vt.ExtraSpecs, map[string]interface{}{"serverNumber": "2"}) @@ -97,7 +98,7 @@ func TestCreate(t *testing.T) { }) options := &volumetypes.CreateOpts{Name: "vol-type-001"} - n, err := volumetypes.Create(client.ServiceClient(), options).Extract() + n, err := volumetypes.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, "vol-type-001") @@ -114,6 +115,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusAccepted) }) - err := volumetypes.Delete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractErr() + err := volumetypes.Delete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/blockstorage/v2/snapshots/requests.go b/openstack/blockstorage/v2/snapshots/requests.go index e6985fb296..ccf39043f0 100644 --- a/openstack/blockstorage/v2/snapshots/requests.go +++ b/openstack/blockstorage/v2/snapshots/requests.go @@ -1,6 +1,8 @@ package snapshots import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -31,13 +33,13 @@ func (opts CreateOpts) ToSnapshotCreateMap() (map[string]interface{}, error) { // Create will create a new Snapshot based on the values in CreateOpts. To // extract the Snapshot object from the response, call the Extract method on the // CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToSnapshotCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -45,16 +47,16 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete will delete the existing Snapshot with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves the Snapshot with the provided ID. To extract the Snapshot // object from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -129,13 +131,13 @@ func (opts UpdateMetadataOpts) ToSnapshotUpdateMetadataMap() (map[string]interfa // UpdateMetadata will update the Snapshot with provided information. To // extract the updated Snapshot from the response, call the ExtractMetadata // method on the UpdateMetadataResult. -func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) (r UpdateMetadataResult) { +func UpdateMetadata(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) (r UpdateMetadataResult) { b, err := opts.ToSnapshotUpdateMetadataMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateMetadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateMetadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/blockstorage/v2/snapshots/testing/requests_test.go b/openstack/blockstorage/v2/snapshots/testing/requests_test.go index 6faa40c699..43a3fbd131 100644 --- a/openstack/blockstorage/v2/snapshots/testing/requests_test.go +++ b/openstack/blockstorage/v2/snapshots/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -18,7 +19,7 @@ func TestList(t *testing.T) { count := 0 - snapshots.List(client.ServiceClient(), &snapshots.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + snapshots.List(client.ServiceClient(), &snapshots.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := snapshots.ExtractSnapshots(page) if err != nil { @@ -63,7 +64,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - v, err := snapshots.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() + v, err := snapshots.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, v.Name, "snapshot-001") @@ -77,7 +78,7 @@ func TestCreate(t *testing.T) { MockCreateResponse(t) options := snapshots.CreateOpts{VolumeID: "1234", Name: "snapshot-001"} - n, err := snapshots.Create(client.ServiceClient(), options).Extract() + n, err := snapshots.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.VolumeID, "1234") @@ -99,7 +100,7 @@ func TestUpdateMetadata(t *testing.T) { }, } - actual, err := snapshots.UpdateMetadata(client.ServiceClient(), "123", options).ExtractMetadata() + actual, err := snapshots.UpdateMetadata(context.TODO(), client.ServiceClient(), "123", options).ExtractMetadata() th.AssertNoErr(t, err) th.AssertDeepEquals(t, actual, expected) @@ -111,6 +112,6 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := snapshots.Delete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") + res := snapshots.Delete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") th.AssertNoErr(t, res.Err) } diff --git a/openstack/blockstorage/v2/snapshots/util.go b/openstack/blockstorage/v2/snapshots/util.go index e74ff98f31..a484fc3186 100644 --- a/openstack/blockstorage/v2/snapshots/util.go +++ b/openstack/blockstorage/v2/snapshots/util.go @@ -1,14 +1,16 @@ package snapshots import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // WaitForStatus will continually poll the resource, checking for a particular // status. It will do this for the amount of seconds defined. -func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error { +func WaitForStatus(ctx context.Context, c *gophercloud.ServiceClient, id, status string, secs int) error { return gophercloud.WaitFor(secs, func() (bool, error) { - current, err := Get(c, id).Extract() + current, err := Get(ctx, c, id).Extract() if err != nil { return false, err } diff --git a/openstack/blockstorage/v2/volumes/requests.go b/openstack/blockstorage/v2/volumes/requests.go index 7551b465f6..7f2d5f6a55 100644 --- a/openstack/blockstorage/v2/volumes/requests.go +++ b/openstack/blockstorage/v2/volumes/requests.go @@ -1,6 +1,8 @@ package volumes import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -49,13 +51,13 @@ func (opts CreateOpts) ToVolumeCreateMap() (map[string]interface{}, error) { // Create will create a new Volume based on the values in CreateOpts. To extract // the Volume object from the response, call the Extract method on the // CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToVolumeCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -82,7 +84,7 @@ func (opts DeleteOpts) ToVolumeDeleteQuery() (string, error) { } // Delete will delete the existing Volume with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder) (r DeleteResult) { +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder) (r DeleteResult) { url := deleteURL(client, id) if opts != nil { query, err := opts.ToVolumeDeleteQuery() @@ -92,15 +94,15 @@ func Delete(client *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder } url += query } - resp, err := client.Delete(url, nil) + resp, err := client.Delete(ctx, url, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves the Volume with the provided ID. To extract the Volume object // from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -189,13 +191,13 @@ func (opts UpdateOpts) ToVolumeUpdateMap() (map[string]interface{}, error) { // Update will update the Volume with provided information. To extract the updated // Volume from the response, call the Extract method on the UpdateResult. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToVolumeUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/blockstorage/v2/volumes/testing/requests_test.go b/openstack/blockstorage/v2/volumes/testing/requests_test.go index 77dd3cadf4..9324f67e40 100644 --- a/openstack/blockstorage/v2/volumes/testing/requests_test.go +++ b/openstack/blockstorage/v2/volumes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -19,7 +20,7 @@ func TestListWithExtensions(t *testing.T) { count := 0 - volumes.List(client.ServiceClient(), &volumes.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + volumes.List(client.ServiceClient(), &volumes.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := volumes.ExtractVolumes(page) if err != nil { @@ -105,7 +106,7 @@ func TestListAllWithExtensions(t *testing.T) { volumetenants.VolumeTenantExt } - allPages, err := volumes.List(client.ServiceClient(), &volumes.ListOpts{}).AllPages() + allPages, err := volumes.List(client.ServiceClient(), &volumes.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) var actual []VolumeWithExt @@ -121,7 +122,7 @@ func TestListAll(t *testing.T) { MockListResponse(t) - allPages, err := volumes.List(client.ServiceClient(), &volumes.ListOpts{}).AllPages() + allPages, err := volumes.List(client.ServiceClient(), &volumes.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := volumes.ExtractVolumes(allPages) th.AssertNoErr(t, err) @@ -193,7 +194,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - v, err := volumes.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() + v, err := volumes.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, v.Name, "vol-001") @@ -207,7 +208,7 @@ func TestCreate(t *testing.T) { MockCreateResponse(t) options := &volumes.CreateOpts{Size: 75, Name: "vol-001"} - n, err := volumes.Create(client.ServiceClient(), options).Extract() + n, err := volumes.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Size, 75) @@ -220,7 +221,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := volumes.Delete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", volumes.DeleteOpts{}) + res := volumes.Delete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", volumes.DeleteOpts{}) th.AssertNoErr(t, res.Err) } @@ -232,7 +233,7 @@ func TestUpdate(t *testing.T) { var name = "vol-002" options := volumes.UpdateOpts{Name: &name} - v, err := volumes.Update(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", options).Extract() + v, err := volumes.Update(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", options).Extract() th.AssertNoErr(t, err) th.CheckEquals(t, "vol-002", v.Name) } @@ -247,11 +248,11 @@ func TestGetWithExtensions(t *testing.T) { volumes.Volume volumetenants.VolumeTenantExt } - err := volumes.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&s) + err := volumes.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "304dc00909ac4d0da6c62d816bcb3459", s.TenantID) - err = volumes.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(s) + err = volumes.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(s) if err == nil { t.Errorf("Expected error when providing non-pointer struct") } diff --git a/openstack/blockstorage/v2/volumes/util.go b/openstack/blockstorage/v2/volumes/util.go index f596575e52..d6a76e6c80 100644 --- a/openstack/blockstorage/v2/volumes/util.go +++ b/openstack/blockstorage/v2/volumes/util.go @@ -1,14 +1,16 @@ package volumes import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // WaitForStatus will continually poll the resource, checking for a particular // status. It will do this for the amount of seconds defined. -func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error { +func WaitForStatus(ctx context.Context, c *gophercloud.ServiceClient, id, status string, secs int) error { return gophercloud.WaitFor(secs, func() (bool, error) { - current, err := Get(c, id).Extract() + current, err := Get(ctx, c, id).Extract() if err != nil { return false, err } diff --git a/openstack/blockstorage/v3/attachments/requests.go b/openstack/blockstorage/v3/attachments/requests.go index eb5db3711a..0d8cb7d716 100644 --- a/openstack/blockstorage/v3/attachments/requests.go +++ b/openstack/blockstorage/v3/attachments/requests.go @@ -1,6 +1,8 @@ package attachments import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -40,13 +42,13 @@ func (opts CreateOpts) ToAttachmentCreateMap() (map[string]interface{}, error) { // Create will create a new Attachment based on the values in CreateOpts. To // extract the Attachment object from the response, call the Extract method on // the CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToAttachmentCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -54,8 +56,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete will delete the existing Attachment with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), &gophercloud.RequestOpts{ +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -64,8 +66,8 @@ func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { // Get retrieves the Attachment with the provided ID. To extract the Attachment // object from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -153,13 +155,13 @@ func (opts UpdateOpts) ToAttachmentUpdateMap() (map[string]interface{}, error) { // Update will update the Attachment with provided information. To extract the // updated Attachment from the response, call the Extract method on the // UpdateResult. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToAttachmentUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -168,11 +170,11 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder // Complete will complete an attachment for a cinder volume. // Available starting in the 3.44 microversion. -func Complete(client *gophercloud.ServiceClient, id string) (r CompleteResult) { +func Complete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r CompleteResult) { b := map[string]interface{}{ "os-complete": nil, } - resp, err := client.Post(completeURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, completeURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/blockstorage/v3/attachments/testing/requests_test.go b/openstack/blockstorage/v3/attachments/testing/requests_test.go index 09bc916ab3..9c7e399add 100644 --- a/openstack/blockstorage/v3/attachments/testing/requests_test.go +++ b/openstack/blockstorage/v3/attachments/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/blockstorage/v3/attachments" @@ -14,7 +15,7 @@ func TestListAll(t *testing.T) { MockListResponse(t) - allPages, err := attachments.List(client.ServiceClient(), &attachments.ListOpts{}).AllPages() + allPages, err := attachments.List(client.ServiceClient(), &attachments.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := attachments.ExtractAttachments(allPages) th.AssertNoErr(t, err) @@ -31,7 +32,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - attachment, err := attachments.Get(client.ServiceClient(), "05551600-a936-4d4a-ba42-79a037c1-c91a").Extract() + attachment, err := attachments.Get(context.TODO(), client.ServiceClient(), "05551600-a936-4d4a-ba42-79a037c1-c91a").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expectedAttachment, attachment) @@ -57,7 +58,7 @@ func TestCreate(t *testing.T) { }, VolumeUUID: "289da7f8-6440-407c-9fb4-7db01ec49164", } - attachment, err := attachments.Create(client.ServiceClient(), options).Extract() + attachment, err := attachments.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expectedAttachment, attachment) @@ -69,7 +70,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := attachments.Delete(client.ServiceClient(), "05551600-a936-4d4a-ba42-79a037c1-c91a") + res := attachments.Delete(context.TODO(), client.ServiceClient(), "05551600-a936-4d4a-ba42-79a037c1-c91a") th.AssertNoErr(t, res.Err) } @@ -91,7 +92,7 @@ func TestUpdate(t *testing.T) { "mode": "rw", }, } - attachment, err := attachments.Update(client.ServiceClient(), "05551600-a936-4d4a-ba42-79a037c1-c91a", options).Extract() + attachment, err := attachments.Update(context.TODO(), client.ServiceClient(), "05551600-a936-4d4a-ba42-79a037c1-c91a", options).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expectedAttachment, attachment) } @@ -103,7 +104,7 @@ func TestUpdateEmpty(t *testing.T) { MockUpdateEmptyResponse(t) options := attachments.UpdateOpts{} - attachment, err := attachments.Update(client.ServiceClient(), "05551600-a936-4d4a-ba42-79a037c1-c91a", options).Extract() + attachment, err := attachments.Update(context.TODO(), client.ServiceClient(), "05551600-a936-4d4a-ba42-79a037c1-c91a", options).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expectedAttachment, attachment) } @@ -114,6 +115,6 @@ func TestComplete(t *testing.T) { MockCompleteResponse(t) - err := attachments.Complete(client.ServiceClient(), "05551600-a936-4d4a-ba42-79a037c1-c91a").ExtractErr() + err := attachments.Complete(context.TODO(), client.ServiceClient(), "05551600-a936-4d4a-ba42-79a037c1-c91a").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/blockstorage/v3/attachments/util.go b/openstack/blockstorage/v3/attachments/util.go index b235ac0430..12409d626d 100644 --- a/openstack/blockstorage/v3/attachments/util.go +++ b/openstack/blockstorage/v3/attachments/util.go @@ -1,14 +1,16 @@ package attachments import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // WaitForStatus will continually poll the resource, checking for a particular // status. It will do this for the amount of seconds defined. -func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error { +func WaitForStatus(ctx context.Context, c *gophercloud.ServiceClient, id, status string, secs int) error { return gophercloud.WaitFor(secs, func() (bool, error) { - current, err := Get(c, id).Extract() + current, err := Get(ctx, c, id).Extract() if err != nil { return false, err } diff --git a/openstack/blockstorage/v3/qos/requests.go b/openstack/blockstorage/v3/qos/requests.go index e9a02e2dda..7ffacd3a6f 100644 --- a/openstack/blockstorage/v3/qos/requests.go +++ b/openstack/blockstorage/v3/qos/requests.go @@ -1,6 +1,8 @@ package qos import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -58,13 +60,13 @@ func (opts CreateOpts) ToQoSCreateMap() (map[string]interface{}, error) { // Create will create a new QoS based on the values in CreateOpts. To extract // the QoS object from the response, call the Extract method on the // CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToQoSCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -91,7 +93,7 @@ func (opts DeleteOpts) ToQoSDeleteQuery() (string, error) { } // Delete will delete the existing QoS with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder) (r DeleteResult) { +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder) (r DeleteResult) { url := deleteURL(client, id) if opts != nil { query, err := opts.ToQoSDeleteQuery() @@ -101,7 +103,7 @@ func Delete(client *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder } url += query } - resp, err := client.Delete(url, nil) + resp, err := client.Delete(ctx, url, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -146,8 +148,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa // Get retrieves details of a single qos. Use Extract to convert its // result into a QoS. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -197,13 +199,13 @@ func (opts UpdateOpts) ToQoSUpdateMap() (map[string]interface{}, error) { // Update will update an existing QoS based on the values in UpdateOpts. // To extract the QoS object from the response, call the Extract method // on the UpdateResult. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r updateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r updateResult) { b, err := opts.ToQoSUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -226,13 +228,13 @@ func (opts DeleteKeysOpts) ToDeleteKeysCreateMap() (map[string]interface{}, erro } // DeleteKeys will delete the keys/specs from the specified QoS -func DeleteKeys(client *gophercloud.ServiceClient, qosID string, opts DeleteKeysOptsBuilder) (r DeleteResult) { +func DeleteKeys(ctx context.Context, client *gophercloud.ServiceClient, qosID string, opts DeleteKeysOptsBuilder) (r DeleteResult) { b, err := opts.ToDeleteKeysCreateMap() if err != nil { r.Err = err return } - resp, err := client.Put(deleteKeysURL(client, qosID), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, deleteKeysURL(client, qosID), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -258,7 +260,7 @@ func (opts AssociateOpts) ToQosAssociateQuery() (string, error) { } // Associate will associate a qos with a volute type -func Associate(client *gophercloud.ServiceClient, qosID string, opts AssociateOptsBuilder) (r AssociateResult) { +func Associate(ctx context.Context, client *gophercloud.ServiceClient, qosID string, opts AssociateOptsBuilder) (r AssociateResult) { url := associateURL(client, qosID) query, err := opts.ToQosAssociateQuery() if err != nil { @@ -267,7 +269,7 @@ func Associate(client *gophercloud.ServiceClient, qosID string, opts AssociateOp } url += query - resp, err := client.Get(url, nil, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -293,7 +295,7 @@ func (opts DisassociateOpts) ToQosDisassociateQuery() (string, error) { } // Disassociate will disassociate a qos from a volute type -func Disassociate(client *gophercloud.ServiceClient, qosID string, opts DisassociateOptsBuilder) (r DisassociateResult) { +func Disassociate(ctx context.Context, client *gophercloud.ServiceClient, qosID string, opts DisassociateOptsBuilder) (r DisassociateResult) { url := disassociateURL(client, qosID) query, err := opts.ToQosDisassociateQuery() if err != nil { @@ -302,7 +304,7 @@ func Disassociate(client *gophercloud.ServiceClient, qosID string, opts Disassoc } url += query - resp, err := client.Get(url, nil, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -310,8 +312,8 @@ func Disassociate(client *gophercloud.ServiceClient, qosID string, opts Disassoc } // DisassociateAll will disassociate a qos from all volute types -func DisassociateAll(client *gophercloud.ServiceClient, qosID string) (r DisassociateAllResult) { - resp, err := client.Get(disassociateAllURL(client, qosID), nil, &gophercloud.RequestOpts{ +func DisassociateAll(ctx context.Context, client *gophercloud.ServiceClient, qosID string) (r DisassociateAllResult) { + resp, err := client.Get(ctx, disassociateAllURL(client, qosID), nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/blockstorage/v3/qos/testing/requests_test.go b/openstack/blockstorage/v3/qos/testing/requests_test.go index 3243b718a2..be88fbd302 100644 --- a/openstack/blockstorage/v3/qos/testing/requests_test.go +++ b/openstack/blockstorage/v3/qos/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "reflect" "testing" @@ -23,7 +24,7 @@ func TestCreate(t *testing.T) { "read_iops_sec": "20000", }, } - actual, err := qos.Create(client.ServiceClient(), options).Extract() + actual, err := qos.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &createQoSExpected, actual) } @@ -34,7 +35,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := qos.Delete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", qos.DeleteOpts{}) + res := qos.Delete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", qos.DeleteOpts{}) th.AssertNoErr(t, res.Err) } @@ -45,7 +46,7 @@ func TestList(t *testing.T) { MockListResponse(t) pages := 0 - err := qos.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := qos.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := qos.ExtractQoS(page) if err != nil { @@ -80,7 +81,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - actual, err := qos.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() + actual, err := qos.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &getQoSExpected, actual) } @@ -99,7 +100,7 @@ func TestUpdate(t *testing.T) { } expected := UpdateQos - actual, err := qos.Update(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", updateOpts).Extract() + actual, err := qos.Update(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expected, actual) } @@ -110,7 +111,7 @@ func TestDeleteKeys(t *testing.T) { MockDeleteKeysResponse(t) - res := qos.DeleteKeys(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", qos.DeleteKeysOpts{"read_iops_sec"}) + res := qos.DeleteKeys(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", qos.DeleteKeysOpts{"read_iops_sec"}) th.AssertNoErr(t, res.Err) } @@ -124,7 +125,7 @@ func TestAssociate(t *testing.T) { VolumeTypeID: "b596be6a-0ce9-43fa-804a-5c5e181ede76", } - res := qos.Associate(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", associateOpts) + res := qos.Associate(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", associateOpts) th.AssertNoErr(t, res.Err) } @@ -138,7 +139,7 @@ func TestDisssociate(t *testing.T) { VolumeTypeID: "b596be6a-0ce9-43fa-804a-5c5e181ede76", } - res := qos.Disassociate(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", disassociateOpts) + res := qos.Disassociate(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", disassociateOpts) th.AssertNoErr(t, res.Err) } @@ -148,7 +149,7 @@ func TestDissasociateAll(t *testing.T) { MockDisassociateAllResponse(t) - res := qos.DisassociateAll(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") + res := qos.DisassociateAll(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") th.AssertNoErr(t, res.Err) } @@ -166,7 +167,7 @@ func TestQosAssociationsList(t *testing.T) { }, } - allPages, err := qos.ListAssociations(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").AllPages() + allPages, err := qos.ListAssociations(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := qos.ExtractAssociations(allPages) diff --git a/openstack/blockstorage/v3/snapshots/requests.go b/openstack/blockstorage/v3/snapshots/requests.go index 6b8357bfe6..cec3be5437 100644 --- a/openstack/blockstorage/v3/snapshots/requests.go +++ b/openstack/blockstorage/v3/snapshots/requests.go @@ -1,6 +1,8 @@ package snapshots import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -31,13 +33,13 @@ func (opts CreateOpts) ToSnapshotCreateMap() (map[string]interface{}, error) { // Create will create a new Snapshot based on the values in CreateOpts. To // extract the Snapshot object from the response, call the Extract method on the // CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToSnapshotCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -45,16 +47,16 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete will delete the existing Snapshot with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves the Snapshot with the provided ID. To extract the Snapshot // object from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -142,13 +144,13 @@ func (opts UpdateOpts) ToSnapshotUpdateMap() (map[string]interface{}, error) { // Update will update the Snapshot with provided information. To extract the updated // Snapshot from the response, call the Extract method on the UpdateResult. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToSnapshotUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -177,13 +179,13 @@ func (opts UpdateMetadataOpts) ToSnapshotUpdateMetadataMap() (map[string]interfa // UpdateMetadata will update the Snapshot with provided information. To // extract the updated Snapshot from the response, call the ExtractMetadata // method on the UpdateMetadataResult. -func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) (r UpdateMetadataResult) { +func UpdateMetadata(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) (r UpdateMetadataResult) { b, err := opts.ToSnapshotUpdateMetadataMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateMetadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateMetadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -212,14 +214,14 @@ func (opts ResetStatusOpts) ToSnapshotResetStatusMap() (map[string]interface{}, // ResetStatus will reset the existing snapshot status. ResetStatusResult contains only the error. // To extract it, call the ExtractErr method on the ResetStatusResult. -func ResetStatus(client *gophercloud.ServiceClient, id string, opts ResetStatusOptsBuilder) (r ResetStatusResult) { +func ResetStatus(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ResetStatusOptsBuilder) (r ResetStatusResult) { b, err := opts.ToSnapshotResetStatusMap() if err != nil { r.Err = err return } - resp, err := client.Post(resetStatusURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, resetStatusURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -250,14 +252,14 @@ func (opts UpdateStatusOpts) ToSnapshotUpdateStatusMap() (map[string]interface{} // UpdateStatus will update the existing snapshot status. UpdateStatusResult contains only the error. // To extract it, call the ExtractErr method on the UpdateStatusResult. -func UpdateStatus(client *gophercloud.ServiceClient, id string, opts UpdateStatusOptsBuilder) (r UpdateStatusResult) { +func UpdateStatus(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateStatusOptsBuilder) (r UpdateStatusResult) { b, err := opts.ToSnapshotUpdateStatusMap() if err != nil { r.Err = err return } - resp, err := client.Post(resetStatusURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, resetStatusURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -266,11 +268,11 @@ func UpdateStatus(client *gophercloud.ServiceClient, id string, opts UpdateStatu // ForceDelete will delete the existing snapshot in any state. ForceDeleteResult contains only the error. // To extract it, call the ExtractErr method on the ForceDeleteResult. -func ForceDelete(client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) { +func ForceDelete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) { b := map[string]interface{}{ "os-force_delete": struct{}{}, } - resp, err := client.Post(forceDeleteURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, forceDeleteURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/blockstorage/v3/snapshots/testing/requests_test.go b/openstack/blockstorage/v3/snapshots/testing/requests_test.go index 1cc4e17a73..ddca839153 100644 --- a/openstack/blockstorage/v3/snapshots/testing/requests_test.go +++ b/openstack/blockstorage/v3/snapshots/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -18,7 +19,7 @@ func TestList(t *testing.T) { count := 0 - snapshots.List(client.ServiceClient(), &snapshots.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + snapshots.List(client.ServiceClient(), &snapshots.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := snapshots.ExtractSnapshots(page) if err != nil { @@ -63,7 +64,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - v, err := snapshots.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() + v, err := snapshots.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, v.Name, "snapshot-001") @@ -77,7 +78,7 @@ func TestCreate(t *testing.T) { MockCreateResponse(t) options := snapshots.CreateOpts{VolumeID: "1234", Name: "snapshot-001"} - n, err := snapshots.Create(client.ServiceClient(), options).Extract() + n, err := snapshots.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.VolumeID, "1234") @@ -99,7 +100,7 @@ func TestUpdateMetadata(t *testing.T) { }, } - actual, err := snapshots.UpdateMetadata(client.ServiceClient(), "123", options).ExtractMetadata() + actual, err := snapshots.UpdateMetadata(context.TODO(), client.ServiceClient(), "123", options).ExtractMetadata() th.AssertNoErr(t, err) th.AssertDeepEquals(t, actual, expected) @@ -111,7 +112,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := snapshots.Delete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") + res := snapshots.Delete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") th.AssertNoErr(t, res.Err) } @@ -124,7 +125,7 @@ func TestUpdate(t *testing.T) { var name = "snapshot-002" var description = "Daily backup 002" options := snapshots.UpdateOpts{Name: &name, Description: &description} - v, err := snapshots.Update(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", options).Extract() + v, err := snapshots.Update(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", options).Extract() th.AssertNoErr(t, err) th.CheckEquals(t, "snapshot-002", v.Name) th.CheckEquals(t, "Daily backup 002", v.Description) @@ -139,7 +140,7 @@ func TestResetStatus(t *testing.T) { opts := &snapshots.ResetStatusOpts{ Status: "error", } - res := snapshots.ResetStatus(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", opts) + res := snapshots.ResetStatus(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", opts) th.AssertNoErr(t, res.Err) } @@ -153,7 +154,7 @@ func TestUpdateStatus(t *testing.T) { Status: "error", Progress: "80%", } - res := snapshots.UpdateStatus(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", opts) + res := snapshots.UpdateStatus(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", opts) th.AssertNoErr(t, res.Err) } @@ -163,6 +164,6 @@ func TestForceDelete(t *testing.T) { MockForceDeleteResponse(t) - res := snapshots.ForceDelete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") + res := snapshots.ForceDelete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") th.AssertNoErr(t, res.Err) } diff --git a/openstack/blockstorage/v3/snapshots/util.go b/openstack/blockstorage/v3/snapshots/util.go index e74ff98f31..a484fc3186 100644 --- a/openstack/blockstorage/v3/snapshots/util.go +++ b/openstack/blockstorage/v3/snapshots/util.go @@ -1,14 +1,16 @@ package snapshots import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // WaitForStatus will continually poll the resource, checking for a particular // status. It will do this for the amount of seconds defined. -func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error { +func WaitForStatus(ctx context.Context, c *gophercloud.ServiceClient, id, status string, secs int) error { return gophercloud.WaitFor(secs, func() (bool, error) { - current, err := Get(c, id).Extract() + current, err := Get(ctx, c, id).Extract() if err != nil { return false, err } diff --git a/openstack/blockstorage/v3/volumes/requests.go b/openstack/blockstorage/v3/volumes/requests.go index a989039548..39c12be630 100644 --- a/openstack/blockstorage/v3/volumes/requests.go +++ b/openstack/blockstorage/v3/volumes/requests.go @@ -1,6 +1,8 @@ package volumes import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -52,13 +54,13 @@ func (opts CreateOpts) ToVolumeCreateMap() (map[string]interface{}, error) { // Create will create a new Volume based on the values in CreateOpts. To extract // the Volume object from the response, call the Extract method on the // CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToVolumeCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -85,7 +87,7 @@ func (opts DeleteOpts) ToVolumeDeleteQuery() (string, error) { } // Delete will delete the existing Volume with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder) (r DeleteResult) { +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder) (r DeleteResult) { url := deleteURL(client, id) if opts != nil { query, err := opts.ToVolumeDeleteQuery() @@ -95,15 +97,15 @@ func Delete(client *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder } url += query } - resp, err := client.Delete(url, nil) + resp, err := client.Delete(ctx, url, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves the Volume with the provided ID. To extract the Volume object // from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -192,13 +194,13 @@ func (opts UpdateOpts) ToVolumeUpdateMap() (map[string]interface{}, error) { // Update will update the Volume with provided information. To extract the updated // Volume from the response, call the Extract method on the UpdateResult. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToVolumeUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/blockstorage/v3/volumes/testing/requests_test.go b/openstack/blockstorage/v3/volumes/testing/requests_test.go index bb11d09ce1..beb934d09e 100644 --- a/openstack/blockstorage/v3/volumes/testing/requests_test.go +++ b/openstack/blockstorage/v3/volumes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -20,7 +21,7 @@ func TestListWithExtensions(t *testing.T) { count := 0 - volumes.List(client.ServiceClient(), &volumes.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + volumes.List(client.ServiceClient(), &volumes.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := volumes.ExtractVolumes(page) if err != nil { @@ -107,7 +108,7 @@ func TestListAllWithExtensions(t *testing.T) { volumehost.VolumeHostExt } - allPages, err := volumes.List(client.ServiceClient(), &volumes.ListOpts{}).AllPages() + allPages, err := volumes.List(client.ServiceClient(), &volumes.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) var actual []VolumeWithExt @@ -125,7 +126,7 @@ func TestListAll(t *testing.T) { MockListResponse(t) - allPages, err := volumes.List(client.ServiceClient(), &volumes.ListOpts{}).AllPages() + allPages, err := volumes.List(client.ServiceClient(), &volumes.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := volumes.ExtractVolumes(allPages) th.AssertNoErr(t, err) @@ -197,7 +198,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - v, err := volumes.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() + v, err := volumes.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, v.Name, "vol-001") @@ -211,7 +212,7 @@ func TestCreate(t *testing.T) { MockCreateResponse(t) options := &volumes.CreateOpts{Size: 75, Name: "vol-001"} - n, err := volumes.Create(client.ServiceClient(), options).Extract() + n, err := volumes.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Size, 75) @@ -224,7 +225,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := volumes.Delete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", volumes.DeleteOpts{}) + res := volumes.Delete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", volumes.DeleteOpts{}) th.AssertNoErr(t, res.Err) } @@ -236,7 +237,7 @@ func TestUpdate(t *testing.T) { var name = "vol-002" options := volumes.UpdateOpts{Name: &name} - v, err := volumes.Update(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", options).Extract() + v, err := volumes.Update(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", options).Extract() th.AssertNoErr(t, err) th.CheckEquals(t, "vol-002", v.Name) } @@ -251,12 +252,12 @@ func TestGetWithExtensions(t *testing.T) { volumes.Volume volumetenants.VolumeTenantExt } - err := volumes.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&s) + err := volumes.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "304dc00909ac4d0da6c62d816bcb3459", s.TenantID) th.AssertEquals(t, "centos", s.Volume.VolumeImageMetadata["image_name"]) - err = volumes.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(s) + err = volumes.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(s) if err == nil { t.Errorf("Expected error when providing non-pointer struct") } @@ -273,7 +274,7 @@ func TestCreateFromBackup(t *testing.T) { BackupID: "20c792f0-bb03-434f-b653-06ef238e337e", } - v, err := volumes.Create(client.ServiceClient(), options).Extract() + v, err := volumes.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, v.Size, 30) diff --git a/openstack/blockstorage/v3/volumes/util.go b/openstack/blockstorage/v3/volumes/util.go index f596575e52..d6a76e6c80 100644 --- a/openstack/blockstorage/v3/volumes/util.go +++ b/openstack/blockstorage/v3/volumes/util.go @@ -1,14 +1,16 @@ package volumes import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // WaitForStatus will continually poll the resource, checking for a particular // status. It will do this for the amount of seconds defined. -func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error { +func WaitForStatus(ctx context.Context, c *gophercloud.ServiceClient, id, status string, secs int) error { return gophercloud.WaitFor(secs, func() (bool, error) { - current, err := Get(c, id).Extract() + current, err := Get(ctx, c, id).Extract() if err != nil { return false, err } diff --git a/openstack/blockstorage/v3/volumetypes/requests.go b/openstack/blockstorage/v3/volumetypes/requests.go index 8a9bd20a32..7b5a750af8 100644 --- a/openstack/blockstorage/v3/volumetypes/requests.go +++ b/openstack/blockstorage/v3/volumetypes/requests.go @@ -1,6 +1,8 @@ package volumetypes import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -34,13 +36,13 @@ func (opts CreateOpts) ToVolumeTypeCreateMap() (map[string]interface{}, error) { // Create will create a new Volume Type based on the values in CreateOpts. To extract // the Volume Type object from the response, call the Extract method on the // CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToVolumeTypeCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -48,16 +50,16 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete will delete the existing Volume Type with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves the Volume Type with the provided ID. To extract the Volume Type object // from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -128,13 +130,13 @@ func (opts UpdateOpts) ToVolumeTypeUpdateMap() (map[string]interface{}, error) { // Update will update the Volume Type with provided information. To extract the updated // Volume Type from the response, call the Extract method on the UpdateResult. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToVolumeTypeUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -142,15 +144,15 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder } // ListExtraSpecs requests all the extra-specs for the given volume type ID. -func ListExtraSpecs(client *gophercloud.ServiceClient, volumeTypeID string) (r ListExtraSpecsResult) { - resp, err := client.Get(extraSpecsListURL(client, volumeTypeID), &r.Body, nil) +func ListExtraSpecs(ctx context.Context, client *gophercloud.ServiceClient, volumeTypeID string) (r ListExtraSpecsResult) { + resp, err := client.Get(ctx, extraSpecsListURL(client, volumeTypeID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetExtraSpec requests an extra-spec specified by key for the given volume type ID -func GetExtraSpec(client *gophercloud.ServiceClient, volumeTypeID string, key string) (r GetExtraSpecResult) { - resp, err := client.Get(extraSpecsGetURL(client, volumeTypeID, key), &r.Body, nil) +func GetExtraSpec(ctx context.Context, client *gophercloud.ServiceClient, volumeTypeID string, key string) (r GetExtraSpecResult) { + resp, err := client.Get(ctx, extraSpecsGetURL(client, volumeTypeID, key), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -172,13 +174,13 @@ func (opts ExtraSpecsOpts) ToVolumeTypeExtraSpecsCreateMap() (map[string]interfa // CreateExtraSpecs will create or update the extra-specs key-value pairs for // the specified volume type. -func CreateExtraSpecs(client *gophercloud.ServiceClient, volumeTypeID string, opts CreateExtraSpecsOptsBuilder) (r CreateExtraSpecsResult) { +func CreateExtraSpecs(ctx context.Context, client *gophercloud.ServiceClient, volumeTypeID string, opts CreateExtraSpecsOptsBuilder) (r CreateExtraSpecsResult) { b, err := opts.ToVolumeTypeExtraSpecsCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(extraSpecsCreateURL(client, volumeTypeID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, extraSpecsCreateURL(client, volumeTypeID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -211,13 +213,13 @@ func (opts ExtraSpecsOpts) ToVolumeTypeExtraSpecUpdateMap() (map[string]string, // UpdateExtraSpec will updates the value of the specified volume type's extra spec // for the key in opts. -func UpdateExtraSpec(client *gophercloud.ServiceClient, volumeTypeID string, opts UpdateExtraSpecOptsBuilder) (r UpdateExtraSpecResult) { +func UpdateExtraSpec(ctx context.Context, client *gophercloud.ServiceClient, volumeTypeID string, opts UpdateExtraSpecOptsBuilder) (r UpdateExtraSpecResult) { b, key, err := opts.ToVolumeTypeExtraSpecUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(extraSpecUpdateURL(client, volumeTypeID, key), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, extraSpecUpdateURL(client, volumeTypeID, key), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -226,8 +228,8 @@ func UpdateExtraSpec(client *gophercloud.ServiceClient, volumeTypeID string, opt // DeleteExtraSpec will delete the key-value pair with the given key for the given // volume type ID. -func DeleteExtraSpec(client *gophercloud.ServiceClient, volumeTypeID, key string) (r DeleteExtraSpecResult) { - resp, err := client.Delete(extraSpecDeleteURL(client, volumeTypeID, key), &gophercloud.RequestOpts{ +func DeleteExtraSpec(ctx context.Context, client *gophercloud.ServiceClient, volumeTypeID, key string) (r DeleteExtraSpecResult) { + resp, err := client.Delete(ctx, extraSpecDeleteURL(client, volumeTypeID, key), &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -261,13 +263,13 @@ func (opts AddAccessOpts) ToVolumeTypeAddAccessMap() (map[string]interface{}, er } // AddAccess grants a tenant/project access to a volume type. -func AddAccess(client *gophercloud.ServiceClient, id string, opts AddAccessOptsBuilder) (r AddAccessResult) { +func AddAccess(ctx context.Context, client *gophercloud.ServiceClient, id string, opts AddAccessOptsBuilder) (r AddAccessResult) { b, err := opts.ToVolumeTypeAddAccessMap() if err != nil { r.Err = err return } - resp, err := client.Post(accessActionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, accessActionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -292,13 +294,13 @@ func (opts RemoveAccessOpts) ToVolumeTypeRemoveAccessMap() (map[string]interface } // RemoveAccess removes/revokes a tenant/project access to a volume type. -func RemoveAccess(client *gophercloud.ServiceClient, id string, opts RemoveAccessOptsBuilder) (r RemoveAccessResult) { +func RemoveAccess(ctx context.Context, client *gophercloud.ServiceClient, id string, opts RemoveAccessOptsBuilder) (r RemoveAccessResult) { b, err := opts.ToVolumeTypeRemoveAccessMap() if err != nil { r.Err = err return } - resp, err := client.Post(accessActionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, accessActionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -334,13 +336,13 @@ func (opts CreateEncryptionOpts) ToEncryptionCreateMap() (map[string]interface{} // CreateEncryption will creates an Encryption Type object based on the CreateEncryptionOpts. // To extract the Encryption Type object from the response, call the Extract method on the // EncryptionCreateResult. -func CreateEncryption(client *gophercloud.ServiceClient, id string, opts CreateEncryptionOptsBuilder) (r CreateEncryptionResult) { +func CreateEncryption(ctx context.Context, client *gophercloud.ServiceClient, id string, opts CreateEncryptionOptsBuilder) (r CreateEncryptionResult) { b, err := opts.ToEncryptionCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createEncryptionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createEncryptionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -348,22 +350,22 @@ func CreateEncryption(client *gophercloud.ServiceClient, id string, opts CreateE } // Delete will delete an encryption type for an existing Volume Type with the provided ID. -func DeleteEncryption(client *gophercloud.ServiceClient, id, encryptionID string) (r DeleteEncryptionResult) { - resp, err := client.Delete(deleteEncryptionURL(client, id, encryptionID), nil) +func DeleteEncryption(ctx context.Context, client *gophercloud.ServiceClient, id, encryptionID string) (r DeleteEncryptionResult) { + resp, err := client.Delete(ctx, deleteEncryptionURL(client, id, encryptionID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetEncryption retrieves the encryption type for an existing VolumeType with the provided ID. -func GetEncryption(client *gophercloud.ServiceClient, id string) (r GetEncryptionResult) { - resp, err := client.Get(getEncryptionURL(client, id), &r.Body, nil) +func GetEncryption(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetEncryptionResult) { + resp, err := client.Get(ctx, getEncryptionURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetEncryptionSpecs retrieves the encryption type specs for an existing VolumeType with the provided ID. -func GetEncryptionSpec(client *gophercloud.ServiceClient, id, key string) (r GetEncryptionSpecResult) { - resp, err := client.Get(getEncryptionSpecURL(client, id, key), &r.Body, nil) +func GetEncryptionSpec(ctx context.Context, client *gophercloud.ServiceClient, id, key string) (r GetEncryptionSpecResult) { + resp, err := client.Get(ctx, getEncryptionSpecURL(client, id, key), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -397,13 +399,13 @@ func (opts UpdateEncryptionOpts) ToUpdateEncryptionMap() (map[string]interface{} // Update will update an existing encryption for a Volume Type based on the values in UpdateEncryptionOpts. // To extract the UpdateEncryption Type object from the response, call the Extract method on the // UpdateEncryptionResult. -func UpdateEncryption(client *gophercloud.ServiceClient, id, encryptionID string, opts UpdateEncryptionOptsBuilder) (r UpdateEncryptionResult) { +func UpdateEncryption(ctx context.Context, client *gophercloud.ServiceClient, id, encryptionID string, opts UpdateEncryptionOptsBuilder) (r UpdateEncryptionResult) { b, err := opts.ToUpdateEncryptionMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateEncryptionURL(client, id, encryptionID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateEncryptionURL(client, id, encryptionID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/blockstorage/v3/volumetypes/testing/requests_test.go b/openstack/blockstorage/v3/volumetypes/testing/requests_test.go index 846817208b..56f22632f9 100644 --- a/openstack/blockstorage/v3/volumetypes/testing/requests_test.go +++ b/openstack/blockstorage/v3/volumetypes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "reflect" @@ -18,7 +19,7 @@ func TestListAll(t *testing.T) { MockListResponse(t) pages := 0 - err := volumetypes.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := volumetypes.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := volumetypes.ExtractVolumeTypes(page) if err != nil { @@ -56,7 +57,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - v, err := volumetypes.Get(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() + v, err := volumetypes.Get(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, v.Name, "vol-type-001") @@ -81,7 +82,7 @@ func TestCreate(t *testing.T) { ExtraSpecs: map[string]string{"capabilities": "gpu"}, } - n, err := volumetypes.Create(client.ServiceClient(), options).Extract() + n, err := volumetypes.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, "test_type") @@ -98,7 +99,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := volumetypes.Delete(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") + res := volumetypes.Delete(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22") th.AssertNoErr(t, res.Err) } @@ -115,7 +116,7 @@ func TestUpdate(t *testing.T) { IsPublic: &isPublic, } - v, err := volumetypes.Update(client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", options).Extract() + v, err := volumetypes.Update(context.TODO(), client.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22", options).Extract() th.AssertNoErr(t, err) th.CheckEquals(t, "vol-type-002", v.Name) th.CheckEquals(t, true, v.IsPublic) @@ -127,7 +128,7 @@ func TestVolumeTypeExtraSpecsList(t *testing.T) { HandleExtraSpecsListSuccessfully(t) expected := ExtraSpecs - actual, err := volumetypes.ListExtraSpecs(client.ServiceClient(), "1").Extract() + actual, err := volumetypes.ListExtraSpecs(context.TODO(), client.ServiceClient(), "1").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expected, actual) } @@ -138,7 +139,7 @@ func TestVolumeTypeExtraSpecGet(t *testing.T) { HandleExtraSpecGetSuccessfully(t) expected := ExtraSpec - actual, err := volumetypes.GetExtraSpec(client.ServiceClient(), "1", "capabilities").Extract() + actual, err := volumetypes.GetExtraSpec(context.TODO(), client.ServiceClient(), "1", "capabilities").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expected, actual) } @@ -153,7 +154,7 @@ func TestVolumeTypeExtraSpecsCreate(t *testing.T) { "volume_backend_name": "ssd", } expected := ExtraSpecs - actual, err := volumetypes.CreateExtraSpecs(client.ServiceClient(), "1", createOpts).Extract() + actual, err := volumetypes.CreateExtraSpecs(context.TODO(), client.ServiceClient(), "1", createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expected, actual) } @@ -167,7 +168,7 @@ func TestVolumeTypeExtraSpecUpdate(t *testing.T) { "capabilities": "gpu-2", } expected := UpdatedExtraSpec - actual, err := volumetypes.UpdateExtraSpec(client.ServiceClient(), "1", updateOpts).Extract() + actual, err := volumetypes.UpdateExtraSpec(context.TODO(), client.ServiceClient(), "1", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expected, actual) } @@ -177,7 +178,7 @@ func TestVolumeTypeExtraSpecDelete(t *testing.T) { defer th.TeardownHTTP() HandleExtraSpecDeleteSuccessfully(t) - res := volumetypes.DeleteExtraSpec(client.ServiceClient(), "1", "capabilities") + res := volumetypes.DeleteExtraSpec(context.TODO(), client.ServiceClient(), "1", "capabilities") th.AssertNoErr(t, res.Err) } @@ -208,7 +209,7 @@ func TestVolumeTypeListAccesses(t *testing.T) { }, } - allPages, err := volumetypes.ListAccesses(client.ServiceClient(), "a5082c24-2a27-43a4-b48e-fcec1240e36b").AllPages() + allPages, err := volumetypes.ListAccesses(client.ServiceClient(), "a5082c24-2a27-43a4-b48e-fcec1240e36b").AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := volumetypes.ExtractAccesses(allPages) @@ -243,7 +244,7 @@ func TestVolumeTypeAddAccess(t *testing.T) { Project: "6f70656e737461636b20342065766572", } - err := volumetypes.AddAccess(client.ServiceClient(), "a5082c24-2a27-43a4-b48e-fcec1240e36b", addAccessOpts).ExtractErr() + err := volumetypes.AddAccess(context.TODO(), client.ServiceClient(), "a5082c24-2a27-43a4-b48e-fcec1240e36b", addAccessOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -272,7 +273,7 @@ func TestVolumeTypeRemoveAccess(t *testing.T) { Project: "6f70656e737461636b20342065766572", } - err := volumetypes.RemoveAccess(client.ServiceClient(), "a5082c24-2a27-43a4-b48e-fcec1240e36b", removeAccessOpts).ExtractErr() + err := volumetypes.RemoveAccess(context.TODO(), client.ServiceClient(), "a5082c24-2a27-43a4-b48e-fcec1240e36b", removeAccessOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -290,7 +291,7 @@ func TestCreateEncryption(t *testing.T) { Cipher: "aes-xts-plain64", } id := "a5082c24-2a27-43a4-b48e-fcec1240e36b" - n, err := volumetypes.CreateEncryption(client.ServiceClient(), id, options).Extract() + n, err := volumetypes.CreateEncryption(context.TODO(), client.ServiceClient(), id, options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "a5082c24-2a27-43a4-b48e-fcec1240e36b", n.VolumeTypeID) @@ -307,7 +308,7 @@ func TestDeleteEncryption(t *testing.T) { MockDeleteEncryptionResponse(t) - res := volumetypes.DeleteEncryption(client.ServiceClient(), "a5082c24-2a27-43a4-b48e-fcec1240e36b", "81e069c6-7394-4856-8df7-3b237ca61f74") + res := volumetypes.DeleteEncryption(context.TODO(), client.ServiceClient(), "a5082c24-2a27-43a4-b48e-fcec1240e36b", "81e069c6-7394-4856-8df7-3b237ca61f74") th.AssertNoErr(t, res.Err) } @@ -325,7 +326,7 @@ func TestUpdateEncryption(t *testing.T) { } id := "a5082c24-2a27-43a4-b48e-fcec1240e36b" encryptionID := "81e069c6-7394-4856-8df7-3b237ca61f74" - n, err := volumetypes.UpdateEncryption(client.ServiceClient(), id, encryptionID, options).Extract() + n, err := volumetypes.UpdateEncryption(context.TODO(), client.ServiceClient(), id, encryptionID, options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "front-end", n.ControlLocation) @@ -340,7 +341,7 @@ func TestGetEncryption(t *testing.T) { MockEncryptionGetResponse(t) id := "a5082c24-2a27-43a4-b48e-fcec1240e36b" - n, err := volumetypes.GetEncryption(client.ServiceClient(), id).Extract() + n, err := volumetypes.GetEncryption(context.TODO(), client.ServiceClient(), id).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "a5082c24-2a27-43a4-b48e-fcec1240e36b", n.VolumeTypeID) @@ -361,7 +362,7 @@ func TestGetEncryptionSpec(t *testing.T) { MockEncryptionGetSpecResponse(t) id := "a5082c24-2a27-43a4-b48e-fcec1240e36b" - n, err := volumetypes.GetEncryptionSpec(client.ServiceClient(), id, "cipher").Extract() + n, err := volumetypes.GetEncryptionSpec(context.TODO(), client.ServiceClient(), id, "cipher").Extract() th.AssertNoErr(t, err) key := "cipher" diff --git a/openstack/client.go b/openstack/client.go index ad5026089d..ca3007be07 100644 --- a/openstack/client.go +++ b/openstack/client.go @@ -53,7 +53,7 @@ func NewClient(endpoint string) (*gophercloud.ProviderClient, error) { return p, nil } -// AuthenticatedClientWithContext logs in to an OpenStack cloud found at the identity endpoint +// AuthenticatedClient logs in to an OpenStack cloud found at the identity endpoint // specified by the options, acquires a token, and returns a Provider Client // instance that's ready to operate. // @@ -67,37 +67,32 @@ func NewClient(endpoint string) (*gophercloud.ProviderClient, error) { // Example: // // ao, err := openstack.AuthOptionsFromEnv() -// provider, err := openstack.AuthenticatedClientWithContext(ctx, ao) +// provider, err := openstack.AuthenticatedClient(ctx, ao) // client, err := openstack.NewNetworkV2(provider, gophercloud.EndpointOpts{ // Region: os.Getenv("OS_REGION_NAME"), // }) -func AuthenticatedClientWithContext(ctx context.Context, options gophercloud.AuthOptions) (*gophercloud.ProviderClient, error) { +func AuthenticatedClient(ctx context.Context, options gophercloud.AuthOptions) (*gophercloud.ProviderClient, error) { client, err := NewClient(options.IdentityEndpoint) if err != nil { return nil, err } - err = AuthenticateWithContext(ctx, client, options) + err = Authenticate(ctx, client, options) if err != nil { return nil, err } return client, nil } -// AuthenticatedClient is a compatibility wrapper around AuthenticatedClientWithContext -func AuthenticatedClient(options gophercloud.AuthOptions) (*gophercloud.ProviderClient, error) { - return AuthenticatedClientWithContext(context.Background(), options) -} - -// AuthenticateWithContext authenticates or re-authenticates against the most +// Authenticate authenticates or re-authenticates against the most // recent identity service supported at the provided endpoint. -func AuthenticateWithContext(ctx context.Context, client *gophercloud.ProviderClient, options gophercloud.AuthOptions) error { +func Authenticate(ctx context.Context, client *gophercloud.ProviderClient, options gophercloud.AuthOptions) error { versions := []*utils.Version{ {ID: v2, Priority: 20, Suffix: "/v2.0/"}, {ID: v3, Priority: 30, Suffix: "/v3/"}, } - chosen, endpoint, err := utils.ChooseVersion(client, versions) + chosen, endpoint, err := utils.ChooseVersion(ctx, client, versions) if err != nil { return err } @@ -113,21 +108,11 @@ func AuthenticateWithContext(ctx context.Context, client *gophercloud.ProviderCl } } -// Authenticate is a compatibility wrapper around AuthenticateWithContext. -func Authenticate(client *gophercloud.ProviderClient, options gophercloud.AuthOptions) error { - return AuthenticateWithContext(context.Background(), client, options) -} - -// AuthenticateV2WithContext explicitly authenticates against the identity v2 endpoint. -func AuthenticateV2WithContext(ctx context.Context, client *gophercloud.ProviderClient, options gophercloud.AuthOptions, eo gophercloud.EndpointOpts) error { +// AuthenticateV2 explicitly authenticates against the identity v2 endpoint. +func AuthenticateV2(ctx context.Context, client *gophercloud.ProviderClient, options gophercloud.AuthOptions, eo gophercloud.EndpointOpts) error { return v2auth(ctx, client, "", options, eo) } -// AuthenticateV2 is a compatibility wrapper around AuthenticateV2WithContext. -func AuthenticateV2(client *gophercloud.ProviderClient, options gophercloud.AuthOptions, eo gophercloud.EndpointOpts) error { - return AuthenticateV2WithContext(context.Background(), client, options, eo) -} - func v2auth(ctx context.Context, client *gophercloud.ProviderClient, endpoint string, options gophercloud.AuthOptions, eo gophercloud.EndpointOpts) error { v2Client, err := NewIdentityV2(client, eo) if err != nil { @@ -148,7 +133,7 @@ func v2auth(ctx context.Context, client *gophercloud.ProviderClient, endpoint st TokenID: options.TokenID, } - result := tokens2.CreateWithContext(ctx, v2Client, v2Opts) + result := tokens2.Create(ctx, v2Client, v2Opts) err = client.SetTokenAndAuthResult(result) if err != nil { @@ -186,16 +171,11 @@ func v2auth(ctx context.Context, client *gophercloud.ProviderClient, endpoint st return nil } -// AuthenticateV3WithContext explicitly authenticates against the identity v3 service. -func AuthenticateV3WithContext(ctx context.Context, client *gophercloud.ProviderClient, options tokens3.AuthOptionsBuilder, eo gophercloud.EndpointOpts) error { +// AuthenticateV3 explicitly authenticates against the identity v3 service. +func AuthenticateV3(ctx context.Context, client *gophercloud.ProviderClient, options tokens3.AuthOptionsBuilder, eo gophercloud.EndpointOpts) error { return v3auth(ctx, client, "", options, eo) } -// AuthenticateV3 is a compatibility wrapper around AuthenticateV3WithContext -func AuthenticateV3(client *gophercloud.ProviderClient, options tokens3.AuthOptionsBuilder, eo gophercloud.EndpointOpts) error { - return AuthenticateV3WithContext(context.Background(), client, options, eo) -} - func v3auth(ctx context.Context, client *gophercloud.ProviderClient, endpoint string, opts tokens3.AuthOptionsBuilder, eo gophercloud.EndpointOpts) error { // Override the generated service endpoint with the one returned by the version endpoint. v3Client, err := NewIdentityV3(client, eo) @@ -228,7 +208,7 @@ func v3auth(ctx context.Context, client *gophercloud.ProviderClient, endpoint st } v3Client.SetToken(tokenID) - result := tokens3.Get(v3Client, tokenID) + result := tokens3.Get(ctx, v3Client, tokenID) if result.Err != nil { return result.Err } @@ -246,11 +226,11 @@ func v3auth(ctx context.Context, client *gophercloud.ProviderClient, endpoint st var result tokens3.CreateResult switch opts.(type) { case *ec2tokens.AuthOptions: - result = ec2tokens.CreateWithContext(ctx, v3Client, opts) + result = ec2tokens.Create(ctx, v3Client, opts) case *oauth1.AuthOptions: - result = oauth1.CreateWithContext(ctx, v3Client, opts) + result = oauth1.Create(ctx, v3Client, opts) default: - result = tokens3.CreateWithContext(ctx, v3Client, opts) + result = tokens3.Create(ctx, v3Client, opts) } err = client.SetTokenAndAuthResult(result) diff --git a/openstack/clustering/v1/actions/requests.go b/openstack/clustering/v1/actions/requests.go index efe3e3efd2..7165f63978 100644 --- a/openstack/clustering/v1/actions/requests.go +++ b/openstack/clustering/v1/actions/requests.go @@ -1,6 +1,8 @@ package actions import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -45,8 +47,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get retrieves details of a single action. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/clustering/v1/actions/testing/requests_test.go b/openstack/clustering/v1/actions/testing/requests_test.go index bd75a24109..0fa6ca0e07 100644 --- a/openstack/clustering/v1/actions/testing/requests_test.go +++ b/openstack/clustering/v1/actions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/clustering/v1/actions" @@ -16,7 +17,7 @@ func TestListActions(t *testing.T) { HandleListSuccessfully(t) pageCount := 0 - err := actions.List(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := actions.List(fake.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pageCount++ actual, err := actions.ExtractActions(page) th.AssertNoErr(t, err) @@ -38,7 +39,7 @@ func TestGetAction(t *testing.T) { HandleGetSuccessfully(t, ExpectedAction1.ID) - actual, err := actions.Get(fake.ServiceClient(), ExpectedAction1.ID).Extract() + actual, err := actions.Get(context.TODO(), fake.ServiceClient(), ExpectedAction1.ID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedAction1, *actual) } diff --git a/openstack/clustering/v1/clusters/requests.go b/openstack/clustering/v1/clusters/requests.go index bc5c479419..56ac847345 100644 --- a/openstack/clustering/v1/clusters/requests.go +++ b/openstack/clustering/v1/clusters/requests.go @@ -1,6 +1,7 @@ package clusters import ( + "context" "fmt" "github.com/gophercloud/gophercloud/v2" @@ -49,13 +50,13 @@ func (opts CreateOpts) ToClusterCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new cluster. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToClusterCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -63,8 +64,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Get retrieves details of a single cluster. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -136,13 +137,13 @@ func (opts UpdateOpts) ToClusterUpdateMap() (map[string]interface{}, error) { } // Update will update an existing cluster. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToClusterUpdateMap() if err != nil { r.Err = err return r } - resp, err := client.Patch(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -150,8 +151,8 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder } // Delete deletes the specified cluster ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -192,13 +193,13 @@ func (opts ResizeOpts) ToClusterResizeMap() (map[string]interface{}, error) { return gophercloud.BuildRequestBody(opts, "resize") } -func Resize(client *gophercloud.ServiceClient, id string, opts ResizeOptsBuilder) (r ActionResult) { +func Resize(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ResizeOptsBuilder) (r ActionResult) { b, err := opts.ToClusterResizeMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -222,13 +223,13 @@ func (opts ScaleInOpts) ToClusterScaleInMap() (map[string]interface{}, error) { } // ScaleIn will reduce the capacity of a cluster. -func ScaleIn(client *gophercloud.ServiceClient, id string, opts ScaleInOptsBuilder) (r ActionResult) { +func ScaleIn(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ScaleInOptsBuilder) (r ActionResult) { b, err := opts.ToClusterScaleInMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -252,13 +253,13 @@ func (opts ScaleOutOpts) ToClusterScaleOutMap() (map[string]interface{}, error) } // ScaleOut will increase the capacity of a cluster. -func ScaleOut(client *gophercloud.ServiceClient, id string, opts ScaleOutOptsBuilder) (r ActionResult) { +func ScaleOut(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ScaleOutOptsBuilder) (r ActionResult) { b, err := opts.ToClusterScaleOutMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -283,13 +284,13 @@ func (opts AttachPolicyOpts) ToClusterAttachPolicyMap() (map[string]interface{}, } // Attach Policy will attach a policy to a cluster. -func AttachPolicy(client *gophercloud.ServiceClient, id string, opts AttachPolicyOptsBuilder) (r ActionResult) { +func AttachPolicy(ctx context.Context, client *gophercloud.ServiceClient, id string, opts AttachPolicyOptsBuilder) (r ActionResult) { b, err := opts.ToClusterAttachPolicyMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -314,13 +315,13 @@ func (opts UpdatePolicyOpts) ToClusterUpdatePolicyMap() (map[string]interface{}, } // UpdatePolicy will update a cluster's policy. -func UpdatePolicy(client *gophercloud.ServiceClient, id string, opts UpdatePolicyOptsBuilder) (r ActionResult) { +func UpdatePolicy(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdatePolicyOptsBuilder) (r ActionResult) { b, err := opts.ToClusterUpdatePolicyMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -344,13 +345,13 @@ func (opts DetachPolicyOpts) ToClusterDetachPolicyMap() (map[string]interface{}, } // DetachPolicy will detach a policy from a cluster. -func DetachPolicy(client *gophercloud.ServiceClient, id string, opts DetachPolicyOptsBuilder) (r ActionResult) { +func DetachPolicy(ctx context.Context, client *gophercloud.ServiceClient, id string, opts DetachPolicyOptsBuilder) (r ActionResult) { b, err := opts.ToClusterDetachPolicyMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -394,8 +395,8 @@ func ListPolicies(client *gophercloud.ServiceClient, clusterID string, opts List } // GetPolicy retrieves details of a cluster policy. -func GetPolicy(client *gophercloud.ServiceClient, clusterID string, policyID string) (r GetPolicyResult) { - resp, err := client.Get(getPolicyURL(client, clusterID, policyID), &r.Body, nil) +func GetPolicy(ctx context.Context, client *gophercloud.ServiceClient, clusterID string, policyID string) (r GetPolicyResult) { + resp, err := client.Get(ctx, getPolicyURL(client, clusterID, policyID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -419,13 +420,13 @@ func (opts RecoverOpts) ToClusterRecoverMap() (map[string]interface{}, error) { } // Recover implements cluster recover request. -func Recover(client *gophercloud.ServiceClient, id string, opts RecoverOptsBuilder) (r ActionResult) { +func Recover(ctx context.Context, client *gophercloud.ServiceClient, id string, opts RecoverOptsBuilder) (r ActionResult) { b, err := opts.ToClusterRecoverMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -433,12 +434,12 @@ func Recover(client *gophercloud.ServiceClient, id string, opts RecoverOptsBuild } // Check will perform a health check on a cluster. -func Check(client *gophercloud.ServiceClient, id string) (r ActionResult) { +func Check(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ActionResult) { b := map[string]interface{}{ "check": map[string]interface{}{}, } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -454,14 +455,14 @@ type CompleteLifecycleOpts struct { LifecycleActionTokenID string `json:"lifecycle_action_token" required:"true"` } -func CompleteLifecycle(client *gophercloud.ServiceClient, id string, opts CompleteLifecycleOpts) (r ActionResult) { +func CompleteLifecycle(ctx context.Context, client *gophercloud.ServiceClient, id string, opts CompleteLifecycleOpts) (r ActionResult) { b, err := opts.ToClusterCompleteLifecycleMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -476,13 +477,13 @@ type AddNodesOpts struct { Nodes []string `json:"nodes" required:"true"` } -func AddNodes(client *gophercloud.ServiceClient, id string, opts AddNodesOpts) (r ActionResult) { +func AddNodes(ctx context.Context, client *gophercloud.ServiceClient, id string, opts AddNodesOpts) (r ActionResult) { b, err := opts.ToClusterAddNodeMap() if err != nil { r.Err = err return } - resp, err := client.Post(nodeURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, nodeURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -497,13 +498,13 @@ type RemoveNodesOpts struct { Nodes []string `json:"nodes" required:"true"` } -func RemoveNodes(client *gophercloud.ServiceClient, clusterID string, opts RemoveNodesOpts) (r ActionResult) { +func RemoveNodes(ctx context.Context, client *gophercloud.ServiceClient, clusterID string, opts RemoveNodesOpts) (r ActionResult) { b, err := opts.ToClusterRemoveNodeMap() if err != nil { r.Err = err return } - resp, err := client.Post(nodeURL(client, clusterID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, nodeURL(client, clusterID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -518,13 +519,13 @@ type ReplaceNodesOpts struct { Nodes map[string]string `json:"nodes" required:"true"` } -func ReplaceNodes(client *gophercloud.ServiceClient, id string, opts ReplaceNodesOpts) (r ActionResult) { +func ReplaceNodes(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ReplaceNodesOpts) (r ActionResult) { b, err := opts.ToClusterReplaceNodeMap() if err != nil { r.Err = err return } - resp, err := client.Post(nodeURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, nodeURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -545,13 +546,13 @@ func (opts CollectOpts) ToClusterCollectMap() (string, error) { } // Collect instructs OpenStack to aggregate attribute values across a cluster -func Collect(client *gophercloud.ServiceClient, id string, opts CollectOptsBuilder) (r CollectResult) { +func Collect(ctx context.Context, client *gophercloud.ServiceClient, id string, opts CollectOptsBuilder) (r CollectResult) { query, err := opts.ToClusterCollectMap() if err != nil { r.Err = err return } - resp, err := client.Get(collectURL(client, id, query), &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, collectURL(client, id, query), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -610,13 +611,13 @@ type OperationOpts struct { Params OperationParams `json:"params,omitempty"` } -func Ops(client *gophercloud.ServiceClient, id string, opts OperationOptsBuilder) (r ActionResult) { +func Ops(ctx context.Context, client *gophercloud.ServiceClient, id string, opts OperationOptsBuilder) (r ActionResult) { b, err := opts.ToClusterOperationMap() if err != nil { r.Err = err return } - resp, err := client.Post(opsURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, opsURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/clustering/v1/clusters/testing/requests_test.go b/openstack/clustering/v1/clusters/testing/requests_test.go index bc48af2f6d..a21dff9051 100644 --- a/openstack/clustering/v1/clusters/testing/requests_test.go +++ b/openstack/clustering/v1/clusters/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "strings" "testing" @@ -28,7 +29,7 @@ func TestCreateCluster(t *testing.T) { Config: map[string]interface{}{}, } - res := clusters.Create(fake.ServiceClient(), opts) + res := clusters.Create(context.TODO(), fake.ServiceClient(), opts) th.AssertNoErr(t, res.Err) location := res.Header.Get("Location") @@ -61,7 +62,7 @@ func TestCreateClusterEmptyTime(t *testing.T) { Config: map[string]interface{}{}, } - actual, err := clusters.Create(fake.ServiceClient(), opts).Extract() + actual, err := clusters.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedCluster_EmptyTime, *actual) } @@ -92,7 +93,7 @@ func TestCreateClusterMetadata(t *testing.T) { Config: map[string]interface{}{}, } - actual, err := clusters.Create(fake.ServiceClient(), opts).Extract() + actual, err := clusters.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedCluster_Metadata, *actual) } @@ -103,7 +104,7 @@ func TestGetCluster(t *testing.T) { HandleGetClusterSuccessfully(t) - actual, err := clusters.Get(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15").Extract() + actual, err := clusters.Get(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedCluster, *actual) } @@ -114,7 +115,7 @@ func TestGetClusterEmptyTime(t *testing.T) { HandleGetClusterEmptyTimeSuccessfully(t) - actual, err := clusters.Get(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15").Extract() + actual, err := clusters.Get(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedCluster_EmptyTime, *actual) } @@ -127,7 +128,7 @@ func TestListClusters(t *testing.T) { count := 0 - clusters.List(fake.ServiceClient(), clusters.ListOpts{GlobalProject: new(bool)}).EachPage(func(page pagination.Page) (bool, error) { + clusters.List(fake.ServiceClient(), clusters.ListOpts{GlobalProject: new(bool)}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := clusters.ExtractClusters(page) th.AssertNoErr(t, err) @@ -152,7 +153,7 @@ func TestUpdateCluster(t *testing.T) { ProfileID: "edc63d0a-2ca4-48fa-9854-27926da76a4a", } - actual, err := clusters.Update(fake.ServiceClient(), ExpectedCluster.ID, updateOpts).Extract() + actual, err := clusters.Update(context.TODO(), fake.ServiceClient(), ExpectedCluster.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedCluster, *actual) } @@ -168,7 +169,7 @@ func TestUpdateClusterEmptyTime(t *testing.T) { ProfileID: "edc63d0a-2ca4-48fa-9854-27926da76a4a", } - actual, err := clusters.Update(fake.ServiceClient(), ExpectedCluster_EmptyTime.ID, updateOpts).Extract() + actual, err := clusters.Update(context.TODO(), fake.ServiceClient(), ExpectedCluster_EmptyTime.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedCluster_EmptyTime, *actual) } @@ -179,7 +180,7 @@ func TestDeleteCluster(t *testing.T) { HandleDeleteClusterSuccessfully(t) - err := clusters.Delete(fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee").ExtractErr() + err := clusters.Delete(context.TODO(), fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee").ExtractErr() th.AssertNoErr(t, err) } @@ -201,7 +202,7 @@ func TestResizeCluster(t *testing.T) { Strict: &strict, } - actionID, err := clusters.Resize(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() + actionID, err := clusters.Resize(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ExpectedActionID, actionID) } @@ -285,7 +286,7 @@ func TestClusterScaleIn(t *testing.T) { scaleOpts := clusters.ScaleInOpts{ Count: &count, } - actionID, err := clusters.ScaleIn(fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09", scaleOpts).Extract() + actionID, err := clusters.ScaleIn(context.TODO(), fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09", scaleOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ExpectedActionID, actionID) } @@ -297,7 +298,7 @@ func TestListClusterPolicies(t *testing.T) { HandleListPoliciesSuccessfully(t) pageCount := 0 - err := clusters.ListPolicies(fake.ServiceClient(), ExpectedClusterPolicy.ClusterID, clusters.ListPoliciesOpts{Name: "Test"}).EachPage(func(page pagination.Page) (bool, error) { + err := clusters.ListPolicies(fake.ServiceClient(), ExpectedClusterPolicy.ClusterID, clusters.ListPoliciesOpts{Name: "Test"}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pageCount++ actual, err := clusters.ExtractClusterPolicies(page) th.AssertNoErr(t, err) @@ -316,7 +317,7 @@ func TestGetClusterPolicies(t *testing.T) { HandleGetPolicySuccessfully(t) - actual, err := clusters.GetPolicy(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", "714fe676-a08f-4196-b7af-61d52eeded15").Extract() + actual, err := clusters.GetPolicy(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", "714fe676-a08f-4196-b7af-61d52eeded15").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedClusterPolicy, *actual) } @@ -332,7 +333,7 @@ func TestClusterRecover(t *testing.T) { Check: new(bool), CheckCapacity: new(bool), } - actionID, err := clusters.Recover(fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09", recoverOpts).Extract() + actionID, err := clusters.Recover(context.TODO(), fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09", recoverOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ExpectedActionID, actionID) } @@ -348,7 +349,7 @@ func TestAttachPolicy(t *testing.T) { PolicyID: "policy1", Enabled: &enabled, } - actionID, err := clusters.AttachPolicy(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() + actionID, err := clusters.AttachPolicy(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ExpectedActionID, actionID) } @@ -362,7 +363,7 @@ func TestDetachPolicy(t *testing.T) { opts := clusters.DetachPolicyOpts{ PolicyID: "policy1", } - actionID, err := clusters.DetachPolicy(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() + actionID, err := clusters.DetachPolicy(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ExpectedActionID, actionID) } @@ -378,7 +379,7 @@ func TestUpdatePolicy(t *testing.T) { PolicyID: "policy1", Enabled: &enabled, } - actionID, err := clusters.UpdatePolicy(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() + actionID, err := clusters.UpdatePolicy(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ExpectedActionID, actionID) } @@ -392,7 +393,7 @@ func TestClusterScaleOut(t *testing.T) { scaleOutOpts := clusters.ScaleOutOpts{ Count: 5, } - actionID, err := clusters.ScaleOut(fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09", scaleOutOpts).Extract() + actionID, err := clusters.ScaleOut(context.TODO(), fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09", scaleOutOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ExpectedActionID, actionID) } @@ -403,7 +404,7 @@ func TestClusterCheck(t *testing.T) { HandleCheckSuccessfully(t) - actionID, err := clusters.Check(fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09").Extract() + actionID, err := clusters.Check(context.TODO(), fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ExpectedActionID, actionID) } @@ -418,7 +419,7 @@ func TestLifecycle(t *testing.T) { LifecycleActionTokenID: "976528c6-dcf6-4d8d-9f4c-588f4e675f29", } - res := clusters.CompleteLifecycle(fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09", opts) + res := clusters.CompleteLifecycle(context.TODO(), fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09", opts) location := res.Header.Get("Location") th.AssertEquals(t, "http://senlin.cloud.blizzard.net:8778/v1/actions/2a0ff107-e789-4660-a122-3816c43af703", location) @@ -436,7 +437,7 @@ func TestAddNodes(t *testing.T) { opts := clusters.AddNodesOpts{ Nodes: []string{"node1", "node2", "node3"}, } - result, err := clusters.AddNodes(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() + result, err := clusters.AddNodes(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, result, "2a0ff107-e789-4660-a122-3816c43af703") } @@ -450,7 +451,7 @@ func TestRemoveNodes(t *testing.T) { opts := clusters.RemoveNodesOpts{ Nodes: []string{"node1", "node2", "node3"}, } - result, err := clusters.RemoveNodes(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() + result, err := clusters.RemoveNodes(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, result, "2a0ff107-e789-4660-a122-3816c43af703") } @@ -462,7 +463,7 @@ func TestReplaceNodes(t *testing.T) { opts := clusters.ReplaceNodesOpts{ Nodes: map[string]string{"node-1234": "node-5678"}, } - actionID, err := clusters.ReplaceNodes(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() + actionID, err := clusters.ReplaceNodes(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, actionID, "2a0ff107-e789-4660-a122-3816c43af703") } @@ -474,7 +475,7 @@ func TestClusterCollect(t *testing.T) { opts := clusters.CollectOpts{ Path: "foo.bar", } - attributes, err := clusters.Collect(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() + attributes, err := clusters.Collect(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedCollectAttributes, attributes) } @@ -490,7 +491,7 @@ func TestOperation(t *testing.T) { Filters: clusters.OperationFilters{"role": "slave"}, Params: clusters.OperationParams{"type": "soft"}, } - actual, err := clusters.Ops(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", clusterOpts).Extract() + actual, err := clusters.Ops(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", clusterOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, OperationExpectedActionID, actual) } diff --git a/openstack/clustering/v1/events/requests.go b/openstack/clustering/v1/events/requests.go index 720c20e2b7..164a34efae 100644 --- a/openstack/clustering/v1/events/requests.go +++ b/openstack/clustering/v1/events/requests.go @@ -1,6 +1,8 @@ package events import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -47,8 +49,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get retrieves details of a single event. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/clustering/v1/events/testing/requests_test.go b/openstack/clustering/v1/events/testing/requests_test.go index 86bf6eed07..592aaa81ea 100644 --- a/openstack/clustering/v1/events/testing/requests_test.go +++ b/openstack/clustering/v1/events/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/clustering/v1/events" @@ -17,7 +18,7 @@ func TestListEvents(t *testing.T) { HandleListSuccessfully(t) pageCount := 0 - err := events.List(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := events.List(fake.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pageCount++ actual, err := events.ExtractEvents(page) th.AssertNoErr(t, err) @@ -39,7 +40,7 @@ func TestGetEvent(t *testing.T) { HandleGetSuccessfully(t, ExpectedEvent1.ID) - actual, err := events.Get(fake.ServiceClient(), ExpectedEvent1.ID).Extract() + actual, err := events.Get(context.TODO(), fake.ServiceClient(), ExpectedEvent1.ID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedEvent1, *actual) } diff --git a/openstack/clustering/v1/nodes/requests.go b/openstack/clustering/v1/nodes/requests.go index f12d43e671..b8c8c28130 100644 --- a/openstack/clustering/v1/nodes/requests.go +++ b/openstack/clustering/v1/nodes/requests.go @@ -1,6 +1,8 @@ package nodes import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -26,13 +28,13 @@ func (opts CreateOpts) ToNodeCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new node. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToNodeCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -59,13 +61,13 @@ func (opts UpdateOpts) ToNodeUpdateMap() (map[string]interface{}, error) { } // Update requests the update of a node. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToNodeUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -112,15 +114,15 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Delete deletes the specified node. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get makes a request against senlin to get a details of a node type -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -170,13 +172,13 @@ type OperationOpts struct { Params OperationParams `json:"params,omitempty"` } -func Ops(client *gophercloud.ServiceClient, id string, opts OperationOptsBuilder) (r ActionResult) { +func Ops(ctx context.Context, client *gophercloud.ServiceClient, id string, opts OperationOptsBuilder) (r ActionResult) { b, err := opts.ToNodeOperationMap() if err != nil { r.Err = err return } - resp, err := client.Post(opsURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, opsURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -202,24 +204,24 @@ type RecoverOpts struct { Check *bool `json:"check,omitempty"` } -func Recover(client *gophercloud.ServiceClient, id string, opts RecoverOpts) (r ActionResult) { +func Recover(ctx context.Context, client *gophercloud.ServiceClient, id string, opts RecoverOpts) (r ActionResult) { b, err := opts.ToNodeRecoverMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -func Check(client *gophercloud.ServiceClient, id string) (r ActionResult) { +func Check(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ActionResult) { b := map[string]interface{}{ "check": map[string]interface{}{}, } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/clustering/v1/nodes/testing/requests_test.go b/openstack/clustering/v1/nodes/testing/requests_test.go index f534485cae..c969eb76e7 100644 --- a/openstack/clustering/v1/nodes/testing/requests_test.go +++ b/openstack/clustering/v1/nodes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "strings" "testing" @@ -32,7 +33,7 @@ func TestCreateNode(t *testing.T) { Role: "", } - res := nodes.Create(fake.ServiceClient(), createOpts) + res := nodes.Create(context.TODO(), fake.ServiceClient(), createOpts) th.AssertNoErr(t, res.Err) requestID := res.Header.Get("X-Openstack-Request-Id") @@ -57,7 +58,7 @@ func TestListNodes(t *testing.T) { HandleListSuccessfully(t) count := 0 - err := nodes.List(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := nodes.List(fake.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { actual, err := nodes.ExtractNodes(page) th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedList, actual) @@ -75,7 +76,7 @@ func TestDeleteNode(t *testing.T) { HandleDeleteSuccessfully(t) - deleteResult := nodes.Delete(fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee") + deleteResult := nodes.Delete(context.TODO(), fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee") th.AssertNoErr(t, deleteResult.ExtractErr()) } @@ -85,7 +86,7 @@ func TestGetNode(t *testing.T) { HandleGetSuccessfully(t) - actual, err := nodes.Get(fake.ServiceClient(), "573aa1ba-bf45-49fd-907d-6b5d6e6adfd3").Extract() + actual, err := nodes.Get(context.TODO(), fake.ServiceClient(), "573aa1ba-bf45-49fd-907d-6b5d6e6adfd3").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedGet, *actual) } @@ -99,7 +100,7 @@ func TestUpdateNode(t *testing.T) { nodeOpts := nodes.UpdateOpts{ Name: "node-e395be1e-002", } - actual, err := nodes.Update(fake.ServiceClient(), ExpectedUpdate.ID, nodeOpts).Extract() + actual, err := nodes.Update(context.TODO(), fake.ServiceClient(), ExpectedUpdate.ID, nodeOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedUpdate, *actual) } @@ -113,7 +114,7 @@ func TestOpsNode(t *testing.T) { nodeOpts := nodes.OperationOpts{ Operation: nodes.PauseOperation, } - actual, err := nodes.Ops(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", nodeOpts).Extract() + actual, err := nodes.Ops(context.TODO(), fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", nodeOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, OperationExpectedActionID, actual) } @@ -127,7 +128,7 @@ func TestNodeRecover(t *testing.T) { Operation: nodes.RebuildRecovery, Check: new(bool), } - actionID, err := nodes.Recover(fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09", recoverOpts).Extract() + actionID, err := nodes.Recover(context.TODO(), fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09", recoverOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ExpectedActionID, actionID) } @@ -138,7 +139,7 @@ func TestNodeCheck(t *testing.T) { HandleCheckSuccessfully(t) - actionID, err := nodes.Check(fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09").Extract() + actionID, err := nodes.Check(context.TODO(), fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ExpectedActionID, actionID) } diff --git a/openstack/clustering/v1/policies/requests.go b/openstack/clustering/v1/policies/requests.go index 77e799d092..5196bd71f1 100644 --- a/openstack/clustering/v1/policies/requests.go +++ b/openstack/clustering/v1/policies/requests.go @@ -1,6 +1,8 @@ package policies import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -82,13 +84,13 @@ func (opts CreateOpts) ToPolicyCreateMap() (map[string]interface{}, error) { } // Create makes a request against the API to create a policy -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToPolicyCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(policyCreateURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, policyCreateURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -96,8 +98,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete makes a request against the API to delete a policy. -func Delete(client *gophercloud.ServiceClient, policyID string) (r DeleteResult) { - resp, err := client.Delete(policyDeleteURL(client, policyID), &gophercloud.RequestOpts{ +func Delete(ctx context.Context, client *gophercloud.ServiceClient, policyID string) (r DeleteResult) { + resp, err := client.Delete(ctx, policyDeleteURL(client, policyID), &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -121,13 +123,13 @@ func (opts UpdateOpts) ToPolicyUpdateMap() (map[string]interface{}, error) { } // Update updates a specified policy. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToPolicyUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -151,13 +153,13 @@ func (opts ValidateOpts) ToPolicyValidateMap() (map[string]interface{}, error) { } // Validate policy will validate a specified policy. -func Validate(client *gophercloud.ServiceClient, opts ValidateOptsBuilder) (r ValidateResult) { +func Validate(ctx context.Context, client *gophercloud.ServiceClient, opts ValidateOptsBuilder) (r ValidateResult) { b, err := opts.ToPolicyValidateMap() if err != nil { r.Err = err return } - resp, err := client.Post(validateURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, validateURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -165,9 +167,9 @@ func Validate(client *gophercloud.ServiceClient, opts ValidateOptsBuilder) (r Va } // Get makes a request against the API to get details for a policy. -func Get(client *gophercloud.ServiceClient, policyTypeName string) (r GetResult) { +func Get(ctx context.Context, client *gophercloud.ServiceClient, policyTypeName string) (r GetResult) { url := policyGetURL(client, policyTypeName) - resp, err := client.Get(url, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/clustering/v1/policies/testing/requests_test.go b/openstack/clustering/v1/policies/testing/requests_test.go index e50d82f5cf..ffedb87983 100644 --- a/openstack/clustering/v1/policies/testing/requests_test.go +++ b/openstack/clustering/v1/policies/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/clustering/v1/policies" @@ -20,7 +21,7 @@ func TestListPolicies(t *testing.T) { } count := 0 - err := policies.List(fake.ServiceClient(), listOpts).EachPage(func(page pagination.Page) (bool, error) { + err := policies.List(fake.ServiceClient(), listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { actual, err := policies.ExtractPolicies(page) if err != nil { t.Errorf("Failed to extract policies: %v", err) @@ -53,7 +54,7 @@ func TestCreatePolicy(t *testing.T) { Spec: ExpectedCreatePolicy.Spec, } - actual, err := policies.Create(fake.ServiceClient(), opts).Extract() + actual, err := policies.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expected, actual) @@ -65,7 +66,7 @@ func TestDeletePolicy(t *testing.T) { HandlePolicyDelete(t) - res := policies.Delete(fake.ServiceClient(), PolicyIDtoDelete) + res := policies.Delete(context.TODO(), fake.ServiceClient(), PolicyIDtoDelete) th.AssertNoErr(t, res.ExtractErr()) requestID := res.Header["X-Openstack-Request-Id"][0] @@ -84,7 +85,7 @@ func TestUpdatePolicy(t *testing.T) { Name: ExpectedUpdatePolicy.Name, } - actual, err := policies.Update(fake.ServiceClient(), PolicyIDtoUpdate, opts).Extract() + actual, err := policies.Update(context.TODO(), fake.ServiceClient(), PolicyIDtoUpdate, opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expected, actual) @@ -100,7 +101,7 @@ func TestBadUpdatePolicy(t *testing.T) { Name: ExpectedUpdatePolicy.Name, } - _, err := policies.Update(fake.ServiceClient(), PolicyIDtoUpdate, opts).Extract() + _, err := policies.Update(context.TODO(), fake.ServiceClient(), PolicyIDtoUpdate, opts).Extract() th.AssertEquals(t, false, err == nil) } @@ -116,7 +117,7 @@ func TestValidatePolicy(t *testing.T) { Spec: ExpectedValidatePolicy.Spec, } - actual, err := policies.Validate(fake.ServiceClient(), opts).Extract() + actual, err := policies.Validate(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expected, actual) } @@ -131,7 +132,7 @@ func TestBadValidatePolicy(t *testing.T) { Spec: ExpectedValidatePolicy.Spec, } - _, err := policies.Validate(fake.ServiceClient(), opts).Extract() + _, err := policies.Validate(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertEquals(t, false, err == nil) } @@ -141,7 +142,7 @@ func TestGetPolicy(t *testing.T) { HandlePolicyGet(t) - actual, err := policies.Get(fake.ServiceClient(), PolicyIDtoGet).Extract() + actual, err := policies.Get(context.TODO(), fake.ServiceClient(), PolicyIDtoGet).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedGetPolicy, *actual) diff --git a/openstack/clustering/v1/policytypes/requests.go b/openstack/clustering/v1/policytypes/requests.go index a51e6c7d6a..2da89848fa 100644 --- a/openstack/clustering/v1/policytypes/requests.go +++ b/openstack/clustering/v1/policytypes/requests.go @@ -1,6 +1,8 @@ package policytypes import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -15,10 +17,10 @@ func List(client *gophercloud.ServiceClient) pagination.Pager { } // Get makes a request against the API to get details for a policy type. -func Get(client *gophercloud.ServiceClient, policyTypeName string) (r GetResult) { +func Get(ctx context.Context, client *gophercloud.ServiceClient, policyTypeName string) (r GetResult) { url := policyTypeGetURL(client, policyTypeName) - resp, err := client.Get(url, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/clustering/v1/policytypes/testing/requests_test.go b/openstack/clustering/v1/policytypes/testing/requests_test.go index 7d825e551f..827616df7a 100644 --- a/openstack/clustering/v1/policytypes/testing/requests_test.go +++ b/openstack/clustering/v1/policytypes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/clustering/v1/policytypes" @@ -16,7 +17,7 @@ func TestListPolicyTypes(t *testing.T) { HandlePolicyTypeList(t) count := 0 - err := policytypes.List(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := policytypes.List(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := policytypes.ExtractPolicyTypes(page) @@ -42,7 +43,7 @@ func TestGetPolicyType(t *testing.T) { HandlePolicyTypeGet(t) - actual, err := policytypes.Get(fake.ServiceClient(), FakePolicyTypetoGet).Extract() + actual, err := policytypes.Get(context.TODO(), fake.ServiceClient(), FakePolicyTypetoGet).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedPolicyTypeDetail, actual) diff --git a/openstack/clustering/v1/profiles/requests.go b/openstack/clustering/v1/profiles/requests.go index bb4b596c9f..7673135aee 100644 --- a/openstack/clustering/v1/profiles/requests.go +++ b/openstack/clustering/v1/profiles/requests.go @@ -1,6 +1,8 @@ package profiles import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -24,13 +26,13 @@ func (opts CreateOpts) ToProfileCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new profile on the server. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToProfileCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -38,8 +40,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Get retrieves detail of a single profile. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -102,13 +104,13 @@ func (opts UpdateOpts) ToProfileUpdateMap() (map[string]interface{}, error) { } // Update updates a profile. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToProfileUpdateMap() if err != nil { r.Err = err return r } - resp, err := client.Patch(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -116,8 +118,8 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder } // Delete deletes the specified profile via profile id. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -139,13 +141,13 @@ func (opts ValidateOpts) ToProfileValidateMap() (map[string]interface{}, error) } // Validate profile. -func Validate(client *gophercloud.ServiceClient, opts ValidateOpts) (r ValidateResult) { +func Validate(ctx context.Context, client *gophercloud.ServiceClient, opts ValidateOpts) (r ValidateResult) { b, err := opts.ToProfileValidateMap() if err != nil { r.Err = err return } - resp, err := client.Post(validateURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, validateURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/clustering/v1/profiles/testing/requests_test.go b/openstack/clustering/v1/profiles/testing/requests_test.go index b820bc3252..bb4cd41568 100644 --- a/openstack/clustering/v1/profiles/testing/requests_test.go +++ b/openstack/clustering/v1/profiles/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/clustering/v1/profiles" @@ -36,7 +37,7 @@ func TestCreateProfile(t *testing.T) { }, } - profile, err := profiles.Create(fake.ServiceClient(), createOpts).Extract() + profile, err := profiles.Create(context.TODO(), fake.ServiceClient(), createOpts).Extract() if err != nil { t.Errorf("Failed to extract profile: %v", err) } @@ -50,7 +51,7 @@ func TestGetProfile(t *testing.T) { HandleGetSuccessfully(t) - actual, err := profiles.Get(fake.ServiceClient(), ExpectedGet.ID).Extract() + actual, err := profiles.Get(context.TODO(), fake.ServiceClient(), ExpectedGet.ID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedGet, *actual) } @@ -67,7 +68,7 @@ func TestListProfiles(t *testing.T) { } count := 0 - err := profiles.List(fake.ServiceClient(), listOpts).EachPage(func(page pagination.Page) (bool, error) { + err := profiles.List(fake.ServiceClient(), listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := profiles.ExtractProfiles(page) th.AssertNoErr(t, err) @@ -93,7 +94,7 @@ func TestUpdateProfile(t *testing.T) { Name: "pserver", } - actual, err := profiles.Update(fake.ServiceClient(), ExpectedUpdate.ID, updateOpts).Extract() + actual, err := profiles.Update(context.TODO(), fake.ServiceClient(), ExpectedUpdate.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedUpdate, *actual) } @@ -104,7 +105,7 @@ func TestDeleteProfile(t *testing.T) { HandleDeleteSuccessfully(t) - deleteResult := profiles.Delete(fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee") + deleteResult := profiles.Delete(context.TODO(), fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee") th.AssertNoErr(t, deleteResult.ExtractErr()) } @@ -134,7 +135,7 @@ func TestValidateProfile(t *testing.T) { client.Microversion = "1.2" client.Type = "clustering" - profile, err := profiles.Validate(client, validateOpts).Extract() + profile, err := profiles.Validate(context.TODO(), client, validateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedValidate, *profile) } diff --git a/openstack/clustering/v1/profiletypes/requests.go b/openstack/clustering/v1/profiletypes/requests.go index 22db019ccc..91124bc6de 100644 --- a/openstack/clustering/v1/profiletypes/requests.go +++ b/openstack/clustering/v1/profiletypes/requests.go @@ -1,12 +1,14 @@ package profiletypes import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return diff --git a/openstack/clustering/v1/profiletypes/testing/requests_test.go b/openstack/clustering/v1/profiletypes/testing/requests_test.go index 8e7fa19e68..9dc1c55385 100644 --- a/openstack/clustering/v1/profiletypes/testing/requests_test.go +++ b/openstack/clustering/v1/profiletypes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" @@ -17,7 +18,7 @@ func TestListProfileTypes(t *testing.T) { HandleList1Successfully(t) pageCount := 0 - err := profiletypes.List(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := profiletypes.List(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pageCount++ actual, err := profiletypes.ExtractProfileTypes(page) th.AssertNoErr(t, err) @@ -39,7 +40,7 @@ func TestGetProfileType10(t *testing.T) { HandleGet1Successfully(t, ExpectedProfileType1.Name) - actual, err := profiletypes.Get(fake.ServiceClient(), ExpectedProfileType1.Name).Extract() + actual, err := profiletypes.Get(context.TODO(), fake.ServiceClient(), ExpectedProfileType1.Name).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedProfileType1, *actual) } @@ -50,7 +51,7 @@ func TestGetProfileType15(t *testing.T) { HandleGet15Successfully(t, ExpectedProfileType15.Name) - actual, err := profiletypes.Get(fake.ServiceClient(), ExpectedProfileType15.Name).Extract() + actual, err := profiletypes.Get(context.TODO(), fake.ServiceClient(), ExpectedProfileType15.Name).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedProfileType15, *actual) } @@ -61,7 +62,7 @@ func TestListProfileTypesOps(t *testing.T) { HandleListOpsSuccessfully(t) - allPages, err := profiletypes.ListOps(fake.ServiceClient(), ProfileTypeName).AllPages() + allPages, err := profiletypes.ListOps(fake.ServiceClient(), ProfileTypeName).AllPages(context.TODO()) th.AssertNoErr(t, err) allPolicyTypes, err := profiletypes.ExtractOps(allPages) diff --git a/openstack/clustering/v1/receivers/requests.go b/openstack/clustering/v1/receivers/requests.go index 785c2663cf..99c2cc1e2c 100644 --- a/openstack/clustering/v1/receivers/requests.go +++ b/openstack/clustering/v1/receivers/requests.go @@ -1,6 +1,8 @@ package receivers import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -35,13 +37,13 @@ func (opts CreateOpts) ToReceiverCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new receiver. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToReceiverCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -67,13 +69,13 @@ func (opts UpdateOpts) ToReceiverUpdateMap() (map[string]interface{}, error) { } // Update requests the update of a receiver. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToReceiverUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -81,8 +83,8 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder } // Get retrieves details of a single receiver. Use Extract to convert its result into a Receiver. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -129,15 +131,15 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Delete deletes the specified receiver ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Notify Notifies message type receiver -func Notify(client *gophercloud.ServiceClient, id string) (r NotifyResult) { - resp, err := client.Post(notifyURL(client, id), nil, nil, &gophercloud.RequestOpts{ +func Notify(ctx context.Context, client *gophercloud.ServiceClient, id string) (r NotifyResult) { + resp, err := client.Post(ctx, notifyURL(client, id), nil, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/clustering/v1/receivers/testing/requests_test.go b/openstack/clustering/v1/receivers/testing/requests_test.go index 9e3f261c9a..842f88ed27 100644 --- a/openstack/clustering/v1/receivers/testing/requests_test.go +++ b/openstack/clustering/v1/receivers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/clustering/v1/receivers" @@ -24,7 +25,7 @@ func TestCreateReceiver(t *testing.T) { Params: map[string]interface{}{}, } - actual, err := receivers.Create(fake.ServiceClient(), opts).Extract() + actual, err := receivers.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedReceiver, *actual) } @@ -35,7 +36,7 @@ func TestGetReceivers(t *testing.T) { HandleGetSuccessfully(t) - actual, err := receivers.Get(fake.ServiceClient(), "573aa1ba-bf45-49fd-907d-6b5d6e6adfd3").Extract() + actual, err := receivers.Get(context.TODO(), fake.ServiceClient(), "573aa1ba-bf45-49fd-907d-6b5d6e6adfd3").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedReceiver, *actual) } @@ -53,7 +54,7 @@ func TestUpdateReceiver(t *testing.T) { "count": "2", }, } - actual, err := receivers.Update(fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee", opts).Extract() + actual, err := receivers.Update(context.TODO(), fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee", opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedUpdateReceiver, *actual) } @@ -70,7 +71,7 @@ func TestListReceivers(t *testing.T) { } count := 0 - receivers.List(fake.ServiceClient(), opts).EachPage(func(page pagination.Page) (bool, error) { + receivers.List(fake.ServiceClient(), opts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := receivers.ExtractReceivers(page) th.AssertNoErr(t, err) @@ -89,7 +90,7 @@ func TestDeleteReceiver(t *testing.T) { HandleDeleteSuccessfully(t) - deleteResult := receivers.Delete(fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee") + deleteResult := receivers.Delete(context.TODO(), fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee") th.AssertNoErr(t, deleteResult.ExtractErr()) } @@ -99,7 +100,7 @@ func TestNotifyReceivers(t *testing.T) { HandleNotifySuccessfully(t) - requestID, err := receivers.Notify(fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee").Extract() + requestID, err := receivers.Notify(context.TODO(), fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ExpectedNotifyRequestID, requestID) } diff --git a/openstack/clustering/v1/webhooks/requests.go b/openstack/clustering/v1/webhooks/requests.go index 36048df535..05bbc475b9 100644 --- a/openstack/clustering/v1/webhooks/requests.go +++ b/openstack/clustering/v1/webhooks/requests.go @@ -1,6 +1,7 @@ package webhooks import ( + "context" "fmt" "net/url" @@ -32,7 +33,7 @@ func (opts TriggerOpts) ToWebhookTriggerQuery() (string, error) { } // Trigger an action represented by a webhook. -func Trigger(client *gophercloud.ServiceClient, id string, opts TriggerOptsBuilder) (r TriggerResult) { +func Trigger(ctx context.Context, client *gophercloud.ServiceClient, id string, opts TriggerOptsBuilder) (r TriggerResult) { url := triggerURL(client, id) if opts != nil { query, err := opts.ToWebhookTriggerQuery() @@ -46,7 +47,7 @@ func Trigger(client *gophercloud.ServiceClient, id string, opts TriggerOptsBuild return } - resp, err := client.Post(url, nil, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, url, nil, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/clustering/v1/webhooks/testing/requests_test.go b/openstack/clustering/v1/webhooks/testing/requests_test.go index 24bf532ec1..48033e421b 100644 --- a/openstack/clustering/v1/webhooks/testing/requests_test.go +++ b/openstack/clustering/v1/webhooks/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "encoding/json" "fmt" "net/http" @@ -35,7 +36,7 @@ func TestWebhookTrigger(t *testing.T) { "bar": "baz", }, } - result, err := webhooks.Trigger(fake.ServiceClient(), "f93f83f6-762b-41b6-b757-80507834d394", triggerOpts).Extract() + result, err := webhooks.Trigger(context.TODO(), fake.ServiceClient(), "f93f83f6-762b-41b6-b757-80507834d394", triggerOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, result, "290c44fa-c60f-4d75-a0eb-87433ba982a3") } @@ -80,7 +81,7 @@ func TestWebhooksInvalidAction(t *testing.T) { "bar": "baz", }, } - _, err := webhooks.Trigger(fake.ServiceClient(), "f93f83f6-762b-41b6-b757-80507834d394", triggerOpts).Extract() + _, err := webhooks.Trigger(context.TODO(), fake.ServiceClient(), "f93f83f6-762b-41b6-b757-80507834d394", triggerOpts).Extract() isValid := err.(*json.UnmarshalTypeError) == nil th.AssertEquals(t, false, isValid) } @@ -103,7 +104,7 @@ func TestWebhookTriggerInvalidEmptyOpt(t *testing.T) { }`) }) - _, err := webhooks.Trigger(fake.ServiceClient(), "f93f83f6-762b-41b6-b757-80507834d394", webhooks.TriggerOpts{}).Extract() + _, err := webhooks.Trigger(context.TODO(), fake.ServiceClient(), "f93f83f6-762b-41b6-b757-80507834d394", webhooks.TriggerOpts{}).Extract() if err == nil { t.Errorf("Expected error without V param") } @@ -127,7 +128,7 @@ func TestWebhookTriggerInvalidNilOpt(t *testing.T) { }`) }) - _, err := webhooks.Trigger(fake.ServiceClient(), "f93f83f6-762b-41b6-b757-80507834d394", nil).Extract() + _, err := webhooks.Trigger(context.TODO(), fake.ServiceClient(), "f93f83f6-762b-41b6-b757-80507834d394", nil).Extract() if err == nil { t.Errorf("Expected error with nil param") diff --git a/openstack/common/extensions/requests.go b/openstack/common/extensions/requests.go index 69c84dde99..40e18f3574 100755 --- a/openstack/common/extensions/requests.go +++ b/openstack/common/extensions/requests.go @@ -1,13 +1,15 @@ package extensions import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) // Get retrieves information for a specific extension using its alias. -func Get(c *gophercloud.ServiceClient, alias string) (r GetResult) { - resp, err := c.Get(ExtensionURL(c, alias), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, alias string) (r GetResult) { + resp, err := c.Get(ctx, ExtensionURL(c, alias), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/common/extensions/testing/requests_test.go b/openstack/common/extensions/testing/requests_test.go index 7f35678758..5a0c49ce78 100644 --- a/openstack/common/extensions/testing/requests_test.go +++ b/openstack/common/extensions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" @@ -16,7 +17,7 @@ func TestList(t *testing.T) { count := 0 - extensions.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + extensions.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := extensions.ExtractExtensions(page) th.AssertNoErr(t, err) @@ -33,7 +34,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() HandleGetExtensionSuccessfully(t) - actual, err := extensions.Get(client.ServiceClient(), "agent").Extract() + actual, err := extensions.Get(context.TODO(), client.ServiceClient(), "agent").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SingleExtension, actual) } diff --git a/openstack/compute/apiversions/requests.go b/openstack/compute/apiversions/requests.go index a82c605c10..02dccd30d1 100644 --- a/openstack/compute/apiversions/requests.go +++ b/openstack/compute/apiversions/requests.go @@ -1,6 +1,8 @@ package apiversions import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -13,8 +15,8 @@ func List(c *gophercloud.ServiceClient) pagination.Pager { } // Get will get a specific API version, specified by major ID. -func Get(client *gophercloud.ServiceClient, v string) (r GetResult) { - resp, err := client.Get(getURL(client, v), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, v string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, v), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/apiversions/testing/requests_test.go b/openstack/compute/apiversions/testing/requests_test.go index 86d0deb0a0..737976b750 100644 --- a/openstack/compute/apiversions/testing/requests_test.go +++ b/openstack/compute/apiversions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/apiversions" @@ -14,7 +15,7 @@ func TestListAPIVersions(t *testing.T) { MockListResponse(t) - allVersions, err := apiversions.List(client.ServiceClient()).AllPages() + allVersions, err := apiversions.List(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := apiversions.ExtractAPIVersions(allVersions) @@ -29,7 +30,7 @@ func TestGetAPIVersion(t *testing.T) { MockGetResponse(t) - actual, err := apiversions.Get(client.ServiceClient(), "v2.1").Extract() + actual, err := apiversions.Get(context.TODO(), client.ServiceClient(), "v2.1").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, NovaAPIVersion21Result, *actual) @@ -41,6 +42,6 @@ func TestGetMultipleAPIVersion(t *testing.T) { MockGetMultipleResponses(t) - _, err := apiversions.Get(client.ServiceClient(), "v3").Extract() + _, err := apiversions.Get(context.TODO(), client.ServiceClient(), "v3").Extract() th.AssertEquals(t, err.Error(), "Unable to find requested API version") } diff --git a/openstack/compute/v2/extensions/aggregates/requests.go b/openstack/compute/v2/extensions/aggregates/requests.go index 14779e2c05..9324c4f88a 100644 --- a/openstack/compute/v2/extensions/aggregates/requests.go +++ b/openstack/compute/v2/extensions/aggregates/requests.go @@ -1,6 +1,7 @@ package aggregates import ( + "context" "strconv" "github.com/gophercloud/gophercloud/v2" @@ -30,13 +31,13 @@ func (opts CreateOpts) ToAggregatesCreateMap() (map[string]interface{}, error) { } // Create makes a request against the API to create an aggregate. -func Create(client *gophercloud.ServiceClient, opts CreateOpts) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOpts) (r CreateResult) { b, err := opts.ToAggregatesCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(aggregatesCreateURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, aggregatesCreateURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -44,9 +45,9 @@ func Create(client *gophercloud.ServiceClient, opts CreateOpts) (r CreateResult) } // Delete makes a request against the API to delete an aggregate. -func Delete(client *gophercloud.ServiceClient, aggregateID int) (r DeleteResult) { +func Delete(ctx context.Context, client *gophercloud.ServiceClient, aggregateID int) (r DeleteResult) { v := strconv.Itoa(aggregateID) - resp, err := client.Delete(aggregatesDeleteURL(client, v), &gophercloud.RequestOpts{ + resp, err := client.Delete(ctx, aggregatesDeleteURL(client, v), &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -54,9 +55,9 @@ func Delete(client *gophercloud.ServiceClient, aggregateID int) (r DeleteResult) } // Get makes a request against the API to get details for a specific aggregate. -func Get(client *gophercloud.ServiceClient, aggregateID int) (r GetResult) { +func Get(ctx context.Context, client *gophercloud.ServiceClient, aggregateID int) (r GetResult) { v := strconv.Itoa(aggregateID) - resp, err := client.Get(aggregatesGetURL(client, v), &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, aggregatesGetURL(client, v), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -79,7 +80,7 @@ func (opts UpdateOpts) ToAggregatesUpdateMap() (map[string]interface{}, error) { } // Update makes a request against the API to update a specific aggregate. -func Update(client *gophercloud.ServiceClient, aggregateID int, opts UpdateOpts) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, aggregateID int, opts UpdateOpts) (r UpdateResult) { v := strconv.Itoa(aggregateID) b, err := opts.ToAggregatesUpdateMap() @@ -87,7 +88,7 @@ func Update(client *gophercloud.ServiceClient, aggregateID int, opts UpdateOpts) r.Err = err return } - resp, err := client.Put(aggregatesUpdateURL(client, v), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, aggregatesUpdateURL(client, v), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -104,7 +105,7 @@ func (opts AddHostOpts) ToAggregatesAddHostMap() (map[string]interface{}, error) } // AddHost makes a request against the API to add host to a specific aggregate. -func AddHost(client *gophercloud.ServiceClient, aggregateID int, opts AddHostOpts) (r ActionResult) { +func AddHost(ctx context.Context, client *gophercloud.ServiceClient, aggregateID int, opts AddHostOpts) (r ActionResult) { v := strconv.Itoa(aggregateID) b, err := opts.ToAggregatesAddHostMap() @@ -112,7 +113,7 @@ func AddHost(client *gophercloud.ServiceClient, aggregateID int, opts AddHostOpt r.Err = err return } - resp, err := client.Post(aggregatesAddHostURL(client, v), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, aggregatesAddHostURL(client, v), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -129,7 +130,7 @@ func (opts RemoveHostOpts) ToAggregatesRemoveHostMap() (map[string]interface{}, } // RemoveHost makes a request against the API to remove host from a specific aggregate. -func RemoveHost(client *gophercloud.ServiceClient, aggregateID int, opts RemoveHostOpts) (r ActionResult) { +func RemoveHost(ctx context.Context, client *gophercloud.ServiceClient, aggregateID int, opts RemoveHostOpts) (r ActionResult) { v := strconv.Itoa(aggregateID) b, err := opts.ToAggregatesRemoveHostMap() @@ -137,7 +138,7 @@ func RemoveHost(client *gophercloud.ServiceClient, aggregateID int, opts RemoveH r.Err = err return } - resp, err := client.Post(aggregatesRemoveHostURL(client, v), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, aggregatesRemoveHostURL(client, v), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -153,7 +154,7 @@ func (opts SetMetadataOpts) ToSetMetadataMap() (map[string]interface{}, error) { } // SetMetadata makes a request against the API to set metadata to a specific aggregate. -func SetMetadata(client *gophercloud.ServiceClient, aggregateID int, opts SetMetadataOpts) (r ActionResult) { +func SetMetadata(ctx context.Context, client *gophercloud.ServiceClient, aggregateID int, opts SetMetadataOpts) (r ActionResult) { v := strconv.Itoa(aggregateID) b, err := opts.ToSetMetadataMap() @@ -161,7 +162,7 @@ func SetMetadata(client *gophercloud.ServiceClient, aggregateID int, opts SetMet r.Err = err return } - resp, err := client.Post(aggregatesSetMetadataURL(client, v), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, aggregatesSetMetadataURL(client, v), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/compute/v2/extensions/aggregates/testing/requests_test.go b/openstack/compute/v2/extensions/aggregates/testing/requests_test.go index 4bf950eb10..f0a5c3afc7 100644 --- a/openstack/compute/v2/extensions/aggregates/testing/requests_test.go +++ b/openstack/compute/v2/extensions/aggregates/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/aggregates" @@ -15,7 +16,7 @@ func TestListAggregates(t *testing.T) { HandleListSuccessfully(t) pages := 0 - err := aggregates.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := aggregates.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := aggregates.ExtractAggregates(page) @@ -51,7 +52,7 @@ func TestCreateAggregates(t *testing.T) { AvailabilityZone: "london", } - actual, err := aggregates.Create(client.ServiceClient(), opts).Extract() + actual, err := aggregates.Create(context.TODO(), client.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expected, actual) @@ -62,7 +63,7 @@ func TestDeleteAggregates(t *testing.T) { defer th.TeardownHTTP() HandleDeleteSuccessfully(t) - err := aggregates.Delete(client.ServiceClient(), AggregateIDtoDelete).ExtractErr() + err := aggregates.Delete(context.TODO(), client.ServiceClient(), AggregateIDtoDelete).ExtractErr() th.AssertNoErr(t, err) } @@ -73,7 +74,7 @@ func TestGetAggregates(t *testing.T) { expected := SecondFakeAggregate - actual, err := aggregates.Get(client.ServiceClient(), AggregateIDtoGet).Extract() + actual, err := aggregates.Get(context.TODO(), client.ServiceClient(), AggregateIDtoGet).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expected, actual) @@ -91,7 +92,7 @@ func TestUpdateAggregate(t *testing.T) { AvailabilityZone: "nova2", } - actual, err := aggregates.Update(client.ServiceClient(), expected.ID, opts).Extract() + actual, err := aggregates.Update(context.TODO(), client.ServiceClient(), expected.ID, opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expected, actual) @@ -108,7 +109,7 @@ func TestAddHostAggregate(t *testing.T) { Host: "cmp1", } - actual, err := aggregates.AddHost(client.ServiceClient(), expected.ID, opts).Extract() + actual, err := aggregates.AddHost(context.TODO(), client.ServiceClient(), expected.ID, opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expected, actual) @@ -125,7 +126,7 @@ func TestRemoveHostAggregate(t *testing.T) { Host: "cmp1", } - actual, err := aggregates.RemoveHost(client.ServiceClient(), expected.ID, opts).Extract() + actual, err := aggregates.RemoveHost(context.TODO(), client.ServiceClient(), expected.ID, opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expected, actual) @@ -142,7 +143,7 @@ func TestSetMetadataAggregate(t *testing.T) { Metadata: map[string]interface{}{"key": "value"}, } - actual, err := aggregates.SetMetadata(client.ServiceClient(), expected.ID, opts).Extract() + actual, err := aggregates.SetMetadata(context.TODO(), client.ServiceClient(), expected.ID, opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expected, actual) diff --git a/openstack/compute/v2/extensions/attachinterfaces/requests.go b/openstack/compute/v2/extensions/attachinterfaces/requests.go index 59c07a30cc..6aa1754f80 100644 --- a/openstack/compute/v2/extensions/attachinterfaces/requests.go +++ b/openstack/compute/v2/extensions/attachinterfaces/requests.go @@ -1,6 +1,8 @@ package attachinterfaces import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -13,8 +15,8 @@ func List(client *gophercloud.ServiceClient, serverID string) pagination.Pager { } // Get requests details on a single interface attachment by the server and port IDs. -func Get(client *gophercloud.ServiceClient, serverID, portID string) (r GetResult) { - resp, err := client.Get(getInterfaceURL(client, serverID, portID), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, serverID, portID string) (r GetResult) { + resp, err := client.Get(ctx, getInterfaceURL(client, serverID, portID), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -53,13 +55,13 @@ func (opts CreateOpts) ToAttachInterfacesCreateMap() (map[string]interface{}, er } // Create requests the creation of a new interface attachment on the server. -func Create(client *gophercloud.ServiceClient, serverID string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, serverID string, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToAttachInterfacesCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createInterfaceURL(client, serverID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createInterfaceURL(client, serverID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -68,8 +70,8 @@ func Create(client *gophercloud.ServiceClient, serverID string, opts CreateOptsB // Delete makes a request against the nova API to detach a single interface from the server. // It needs server and port IDs to make a such request. -func Delete(client *gophercloud.ServiceClient, serverID, portID string) (r DeleteResult) { - resp, err := client.Delete(deleteInterfaceURL(client, serverID, portID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, serverID, portID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteInterfaceURL(client, serverID, portID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/attachinterfaces/testing/requests_test.go b/openstack/compute/v2/extensions/attachinterfaces/testing/requests_test.go index 78cfcf6e01..28fa9efb3f 100644 --- a/openstack/compute/v2/extensions/attachinterfaces/testing/requests_test.go +++ b/openstack/compute/v2/extensions/attachinterfaces/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/attachinterfaces" @@ -16,7 +17,7 @@ func TestListInterface(t *testing.T) { expected := ListInterfacesExpected pages := 0 - err := attachinterfaces.List(client.ServiceClient(), "b07e7a3b-d951-4efc-a4f9-ac9f001afb7f").EachPage(func(page pagination.Page) (bool, error) { + err := attachinterfaces.List(client.ServiceClient(), "b07e7a3b-d951-4efc-a4f9-ac9f001afb7f").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := attachinterfaces.ExtractInterfaces(page) @@ -38,7 +39,7 @@ func TestListInterfacesAllPages(t *testing.T) { defer th.TeardownHTTP() HandleInterfaceListSuccessfully(t) - allPages, err := attachinterfaces.List(client.ServiceClient(), "b07e7a3b-d951-4efc-a4f9-ac9f001afb7f").AllPages() + allPages, err := attachinterfaces.List(client.ServiceClient(), "b07e7a3b-d951-4efc-a4f9-ac9f001afb7f").AllPages(context.TODO()) th.AssertNoErr(t, err) _, err = attachinterfaces.ExtractInterfaces(allPages) th.AssertNoErr(t, err) @@ -54,7 +55,7 @@ func TestGetInterface(t *testing.T) { serverID := "b07e7a3b-d951-4efc-a4f9-ac9f001afb7f" interfaceID := "0dde1598-b374-474e-986f-5b8dd1df1d4e" - actual, err := attachinterfaces.Get(client.ServiceClient(), serverID, interfaceID).Extract() + actual, err := attachinterfaces.Get(context.TODO(), client.ServiceClient(), serverID, interfaceID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &expected, actual) } @@ -69,7 +70,7 @@ func TestCreateInterface(t *testing.T) { serverID := "b07e7a3b-d951-4efc-a4f9-ac9f001afb7f" networkID := "8a5fe506-7e9f-4091-899b-96336909d93c" - actual, err := attachinterfaces.Create(client.ServiceClient(), serverID, attachinterfaces.CreateOpts{ + actual, err := attachinterfaces.Create(context.TODO(), client.ServiceClient(), serverID, attachinterfaces.CreateOpts{ NetworkID: networkID, }).Extract() th.AssertNoErr(t, err) @@ -84,6 +85,6 @@ func TestDeleteInterface(t *testing.T) { serverID := "b07e7a3b-d951-4efc-a4f9-ac9f001afb7f" portID := "0dde1598-b374-474e-986f-5b8dd1df1d4e" - err := attachinterfaces.Delete(client.ServiceClient(), serverID, portID).ExtractErr() + err := attachinterfaces.Delete(context.TODO(), client.ServiceClient(), serverID, portID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/availabilityzones/testing/requests_test.go b/openstack/compute/v2/extensions/availabilityzones/testing/requests_test.go index 41c618f063..ff441f7bb5 100644 --- a/openstack/compute/v2/extensions/availabilityzones/testing/requests_test.go +++ b/openstack/compute/v2/extensions/availabilityzones/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" az "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/availabilityzones" @@ -15,7 +16,7 @@ func TestList(t *testing.T) { HandleGetSuccessfully(t) - allPages, err := az.List(client.ServiceClient()).AllPages() + allPages, err := az.List(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := az.ExtractAvailabilityZones(allPages) @@ -31,7 +32,7 @@ func TestListDetail(t *testing.T) { HandleGetDetailSuccessfully(t) - allPages, err := az.ListDetail(client.ServiceClient()).AllPages() + allPages, err := az.ListDetail(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := az.ExtractAvailabilityZones(allPages) diff --git a/openstack/compute/v2/extensions/bootfromvolume/requests.go b/openstack/compute/v2/extensions/bootfromvolume/requests.go index c702ccd803..6d4d75116c 100644 --- a/openstack/compute/v2/extensions/bootfromvolume/requests.go +++ b/openstack/compute/v2/extensions/bootfromvolume/requests.go @@ -1,6 +1,8 @@ package bootfromvolume import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/servers" ) @@ -128,13 +130,13 @@ func (opts CreateOptsExt) ToServerCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a server from the given block device mapping. -func Create(client *gophercloud.ServiceClient, opts servers.CreateOptsBuilder) (r servers.CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts servers.CreateOptsBuilder) (r servers.CreateResult) { b, err := opts.ToServerCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/compute/v2/extensions/defsecrules/requests.go b/openstack/compute/v2/extensions/defsecrules/requests.go index 2fdb577bf5..21c29fb351 100644 --- a/openstack/compute/v2/extensions/defsecrules/requests.go +++ b/openstack/compute/v2/extensions/defsecrules/requests.go @@ -1,6 +1,7 @@ package defsecrules import ( + "context" "strings" "github.com/gophercloud/gophercloud/v2" @@ -50,13 +51,13 @@ func (opts CreateOpts) ToRuleCreateMap() (map[string]interface{}, error) { } // Create is the operation responsible for creating a new default rule. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToRuleCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(rootURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, rootURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -64,15 +65,15 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Get will return details for a particular default rule. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(resourceURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, resourceURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete will permanently delete a rule the project's default security group. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(resourceURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, resourceURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/defsecrules/testing/requests_test.go b/openstack/compute/v2/extensions/defsecrules/testing/requests_test.go index c2678b046a..9b92c8cc83 100644 --- a/openstack/compute/v2/extensions/defsecrules/testing/requests_test.go +++ b/openstack/compute/v2/extensions/defsecrules/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/defsecrules" @@ -20,7 +21,7 @@ func TestList(t *testing.T) { count := 0 - err := defsecrules.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := defsecrules.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := defsecrules.ExtractDefaultRules(page) th.AssertNoErr(t, err) @@ -57,7 +58,7 @@ func TestCreate(t *testing.T) { CIDR: "10.10.12.0/24", } - group, err := defsecrules.Create(client.ServiceClient(), opts).Extract() + group, err := defsecrules.Create(context.TODO(), client.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) expected := &defsecrules.DefaultRule{ @@ -83,7 +84,7 @@ func TestCreateICMPZero(t *testing.T) { CIDR: "10.10.12.0/24", } - group, err := defsecrules.Create(client.ServiceClient(), opts).Extract() + group, err := defsecrules.Create(context.TODO(), client.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) expected := &defsecrules.DefaultRule{ @@ -102,7 +103,7 @@ func TestGet(t *testing.T) { mockGetRuleResponse(t, ruleID) - group, err := defsecrules.Get(client.ServiceClient(), ruleID).Extract() + group, err := defsecrules.Get(context.TODO(), client.ServiceClient(), ruleID).Extract() th.AssertNoErr(t, err) expected := &defsecrules.DefaultRule{ @@ -122,6 +123,6 @@ func TestDelete(t *testing.T) { mockDeleteRuleResponse(t, ruleID) - err := defsecrules.Delete(client.ServiceClient(), ruleID).ExtractErr() + err := defsecrules.Delete(context.TODO(), client.ServiceClient(), ruleID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/delegate.go b/openstack/compute/v2/extensions/delegate.go index 84fe2963fc..8ba5ee4a07 100644 --- a/openstack/compute/v2/extensions/delegate.go +++ b/openstack/compute/v2/extensions/delegate.go @@ -1,6 +1,8 @@ package extensions import ( + "context" + "github.com/gophercloud/gophercloud/v2" common "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" "github.com/gophercloud/gophercloud/v2/pagination" @@ -12,8 +14,8 @@ func ExtractExtensions(page pagination.Page) ([]common.Extension, error) { } // Get retrieves information for a specific extension using its alias. -func Get(c *gophercloud.ServiceClient, alias string) common.GetResult { - return common.Get(c, alias) +func Get(ctx context.Context, c *gophercloud.ServiceClient, alias string) common.GetResult { + return common.Get(ctx, c, alias) } // List returns a Pager which allows you to iterate over the full collection of extensions. diff --git a/openstack/compute/v2/extensions/diagnostics/requests.go b/openstack/compute/v2/extensions/diagnostics/requests.go index d3523f6070..54808a3607 100644 --- a/openstack/compute/v2/extensions/diagnostics/requests.go +++ b/openstack/compute/v2/extensions/diagnostics/requests.go @@ -1,12 +1,14 @@ package diagnostics import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // Diagnostics -func Get(client *gophercloud.ServiceClient, serverId string) (r serverDiagnosticsResult) { - resp, err := client.Get(serverDiagnosticsURL(client, serverId), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, serverId string) (r serverDiagnosticsResult) { + resp, err := client.Get(ctx, serverDiagnosticsURL(client, serverId), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/diagnostics/testing/requests_test.go b/openstack/compute/v2/extensions/diagnostics/testing/requests_test.go index 053dedfa55..05f3d8ca57 100644 --- a/openstack/compute/v2/extensions/diagnostics/testing/requests_test.go +++ b/openstack/compute/v2/extensions/diagnostics/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/diagnostics" @@ -16,7 +17,7 @@ func TestGetDiagnostics(t *testing.T) { expected := map[string]interface{}{"cpu0_time": float64(173), "memory": float64(524288)} - res, err := diagnostics.Get(client.ServiceClient(), "1234asdf").Extract() + res, err := diagnostics.Get(context.TODO(), client.ServiceClient(), "1234asdf").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expected, res) diff --git a/openstack/compute/v2/extensions/evacuate/requests.go b/openstack/compute/v2/extensions/evacuate/requests.go index 66ed220017..52b650c864 100644 --- a/openstack/compute/v2/extensions/evacuate/requests.go +++ b/openstack/compute/v2/extensions/evacuate/requests.go @@ -1,6 +1,8 @@ package evacuate import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions" ) @@ -29,13 +31,13 @@ func (opts EvacuateOpts) ToEvacuateMap() (map[string]interface{}, error) { } // Evacuate will Evacuate a failed instance to another host. -func Evacuate(client *gophercloud.ServiceClient, id string, opts EvacuateOptsBuilder) (r EvacuateResult) { +func Evacuate(ctx context.Context, client *gophercloud.ServiceClient, id string, opts EvacuateOptsBuilder) (r EvacuateResult) { b, err := opts.ToEvacuateMap() if err != nil { r.Err = err return } - resp, err := client.Post(extensions.ActionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, extensions.ActionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/compute/v2/extensions/evacuate/testing/requests_test.go b/openstack/compute/v2/extensions/evacuate/testing/requests_test.go index 07f08ffa12..6a066fc7a7 100644 --- a/openstack/compute/v2/extensions/evacuate/testing/requests_test.go +++ b/openstack/compute/v2/extensions/evacuate/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/evacuate" @@ -15,7 +16,7 @@ func TestEvacuate(t *testing.T) { mockEvacuateResponse(t, serverID) - _, err := evacuate.Evacuate(client.ServiceClient(), serverID, evacuate.EvacuateOpts{ + _, err := evacuate.Evacuate(context.TODO(), client.ServiceClient(), serverID, evacuate.EvacuateOpts{ Host: "derp", AdminPass: "MySecretPass", OnSharedStorage: false, @@ -30,7 +31,7 @@ func TestEvacuateWithHost(t *testing.T) { mockEvacuateResponseWithHost(t, serverID) - _, err := evacuate.Evacuate(client.ServiceClient(), serverID, evacuate.EvacuateOpts{ + _, err := evacuate.Evacuate(context.TODO(), client.ServiceClient(), serverID, evacuate.EvacuateOpts{ Host: "derp", }).ExtractAdminPass() th.AssertNoErr(t, err) @@ -43,7 +44,7 @@ func TestEvacuateWithNoOpts(t *testing.T) { mockEvacuateResponseWithNoOpts(t, serverID) - _, err := evacuate.Evacuate(client.ServiceClient(), serverID, evacuate.EvacuateOpts{}).ExtractAdminPass() + _, err := evacuate.Evacuate(context.TODO(), client.ServiceClient(), serverID, evacuate.EvacuateOpts{}).ExtractAdminPass() th.AssertNoErr(t, err) } @@ -54,7 +55,7 @@ func TestEvacuateAdminpassResponse(t *testing.T) { mockEvacuateAdminpassResponse(t, serverID) - actual, err := evacuate.Evacuate(client.ServiceClient(), serverID, evacuate.EvacuateOpts{}).ExtractAdminPass() + actual, err := evacuate.Evacuate(context.TODO(), client.ServiceClient(), serverID, evacuate.EvacuateOpts{}).ExtractAdminPass() th.CheckEquals(t, "MySecretPass", actual) th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/extendedserverattributes/testing/requests_test.go b/openstack/compute/v2/extensions/extendedserverattributes/testing/requests_test.go index b9ed64df94..fb2752b505 100644 --- a/openstack/compute/v2/extensions/extendedserverattributes/testing/requests_test.go +++ b/openstack/compute/v2/extensions/extendedserverattributes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -30,7 +31,7 @@ func TestServerWithUsageExt(t *testing.T) { var serverWithAttributesExt serverAttributesExt // Extract basic fields. - err := servers.Get(fake.ServiceClient(), "d650a0ce-17c3-497d-961a-43c4af80998a").ExtractInto(&serverWithAttributesExt) + err := servers.Get(context.TODO(), fake.ServiceClient(), "d650a0ce-17c3-497d-961a-43c4af80998a").ExtractInto(&serverWithAttributesExt) th.AssertNoErr(t, err) th.AssertEquals(t, serverWithAttributesExt.Host, "compute01") diff --git a/openstack/compute/v2/extensions/floatingips/requests.go b/openstack/compute/v2/extensions/floatingips/requests.go index c3acec3e50..32306304ba 100644 --- a/openstack/compute/v2/extensions/floatingips/requests.go +++ b/openstack/compute/v2/extensions/floatingips/requests.go @@ -1,6 +1,8 @@ package floatingips import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -30,13 +32,13 @@ func (opts CreateOpts) ToFloatingIPCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new Floating IP. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToFloatingIPCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -44,15 +46,15 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Get returns data about a previously created Floating IP. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete requests the deletion of a previous allocated Floating IP. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -78,13 +80,13 @@ func (opts AssociateOpts) ToFloatingIPAssociateMap() (map[string]interface{}, er } // AssociateInstance pairs an allocated Floating IP with a server. -func AssociateInstance(client *gophercloud.ServiceClient, serverID string, opts AssociateOptsBuilder) (r AssociateResult) { +func AssociateInstance(ctx context.Context, client *gophercloud.ServiceClient, serverID string, opts AssociateOptsBuilder) (r AssociateResult) { b, err := opts.ToFloatingIPAssociateMap() if err != nil { r.Err = err return } - resp, err := client.Post(associateURL(client, serverID), b, nil, nil) + resp, err := client.Post(ctx, associateURL(client, serverID), b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -107,13 +109,13 @@ func (opts DisassociateOpts) ToFloatingIPDisassociateMap() (map[string]interface } // DisassociateInstance decouples an allocated Floating IP from an instance -func DisassociateInstance(client *gophercloud.ServiceClient, serverID string, opts DisassociateOptsBuilder) (r DisassociateResult) { +func DisassociateInstance(ctx context.Context, client *gophercloud.ServiceClient, serverID string, opts DisassociateOptsBuilder) (r DisassociateResult) { b, err := opts.ToFloatingIPDisassociateMap() if err != nil { r.Err = err return } - resp, err := client.Post(disassociateURL(client, serverID), b, nil, nil) + resp, err := client.Post(ctx, disassociateURL(client, serverID), b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/floatingips/testing/requests_test.go b/openstack/compute/v2/extensions/floatingips/testing/requests_test.go index 6b4c4fa84d..757f5b6e91 100644 --- a/openstack/compute/v2/extensions/floatingips/testing/requests_test.go +++ b/openstack/compute/v2/extensions/floatingips/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/floatingips" @@ -15,7 +16,7 @@ func TestList(t *testing.T) { HandleListSuccessfully(t) count := 0 - err := floatingips.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := floatingips.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := floatingips.ExtractFloatingIPs(page) th.AssertNoErr(t, err) @@ -32,7 +33,7 @@ func TestCreate(t *testing.T) { defer th.TeardownHTTP() HandleCreateSuccessfully(t) - actual, err := floatingips.Create(client.ServiceClient(), floatingips.CreateOpts{ + actual, err := floatingips.Create(context.TODO(), client.ServiceClient(), floatingips.CreateOpts{ Pool: "nova", }).Extract() th.AssertNoErr(t, err) @@ -44,7 +45,7 @@ func TestCreateWithNumericID(t *testing.T) { defer th.TeardownHTTP() HandleCreateWithNumericIDSuccessfully(t) - actual, err := floatingips.Create(client.ServiceClient(), floatingips.CreateOpts{ + actual, err := floatingips.Create(context.TODO(), client.ServiceClient(), floatingips.CreateOpts{ Pool: "nova", }).Extract() th.AssertNoErr(t, err) @@ -56,7 +57,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t) - actual, err := floatingips.Get(client.ServiceClient(), "2").Extract() + actual, err := floatingips.Get(context.TODO(), client.ServiceClient(), "2").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &SecondFloatingIP, actual) } @@ -66,7 +67,7 @@ func TestDelete(t *testing.T) { defer th.TeardownHTTP() HandleDeleteSuccessfully(t) - err := floatingips.Delete(client.ServiceClient(), "1").ExtractErr() + err := floatingips.Delete(context.TODO(), client.ServiceClient(), "1").ExtractErr() th.AssertNoErr(t, err) } @@ -79,7 +80,7 @@ func TestAssociate(t *testing.T) { FloatingIP: "10.10.10.2", } - err := floatingips.AssociateInstance(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0", associateOpts).ExtractErr() + err := floatingips.AssociateInstance(context.TODO(), client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0", associateOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -93,7 +94,7 @@ func TestAssociateFixed(t *testing.T) { FixedIP: "166.78.185.201", } - err := floatingips.AssociateInstance(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0", associateOpts).ExtractErr() + err := floatingips.AssociateInstance(context.TODO(), client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0", associateOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -106,6 +107,6 @@ func TestDisassociateInstance(t *testing.T) { FloatingIP: "10.10.10.2", } - err := floatingips.DisassociateInstance(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0", disassociateOpts).ExtractErr() + err := floatingips.DisassociateInstance(context.TODO(), client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0", disassociateOpts).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/hypervisors/requests.go b/openstack/compute/v2/extensions/hypervisors/requests.go index d8446166b9..37ecbee17a 100644 --- a/openstack/compute/v2/extensions/hypervisors/requests.go +++ b/openstack/compute/v2/extensions/hypervisors/requests.go @@ -1,6 +1,8 @@ package hypervisors import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -56,8 +58,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Statistics makes a request against the API to get hypervisors statistics. -func GetStatistics(client *gophercloud.ServiceClient) (r StatisticsResult) { - resp, err := client.Get(hypervisorsStatisticsURL(client), &r.Body, &gophercloud.RequestOpts{ +func GetStatistics(ctx context.Context, client *gophercloud.ServiceClient) (r StatisticsResult) { + resp, err := client.Get(ctx, hypervisorsStatisticsURL(client), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -65,8 +67,8 @@ func GetStatistics(client *gophercloud.ServiceClient) (r StatisticsResult) { } // Get makes a request against the API to get details for specific hypervisor. -func Get(client *gophercloud.ServiceClient, hypervisorID string) (r HypervisorResult) { - resp, err := client.Get(hypervisorsGetURL(client, hypervisorID), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, hypervisorID string) (r HypervisorResult) { + resp, err := client.Get(ctx, hypervisorsGetURL(client, hypervisorID), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -74,8 +76,8 @@ func Get(client *gophercloud.ServiceClient, hypervisorID string) (r HypervisorRe } // GetUptime makes a request against the API to get uptime for specific hypervisor. -func GetUptime(client *gophercloud.ServiceClient, hypervisorID string) (r UptimeResult) { - resp, err := client.Get(hypervisorsUptimeURL(client, hypervisorID), &r.Body, &gophercloud.RequestOpts{ +func GetUptime(ctx context.Context, client *gophercloud.ServiceClient, hypervisorID string) (r UptimeResult) { + resp, err := client.Get(ctx, hypervisorsUptimeURL(client, hypervisorID), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/compute/v2/extensions/hypervisors/testing/requests_test.go b/openstack/compute/v2/extensions/hypervisors/testing/requests_test.go index 8c1296c0c1..6774bc3032 100644 --- a/openstack/compute/v2/extensions/hypervisors/testing/requests_test.go +++ b/openstack/compute/v2/extensions/hypervisors/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/hypervisors" @@ -16,7 +17,7 @@ func TestListHypervisorsPre253(t *testing.T) { pages := 0 err := hypervisors.List(client.ServiceClient(), - hypervisors.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + hypervisors.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := hypervisors.ExtractHypervisors(page) @@ -45,7 +46,7 @@ func TestListAllHypervisorsPre253(t *testing.T) { defer testhelper.TeardownHTTP() HandleHypervisorListPre253Successfully(t) - allPages, err := hypervisors.List(client.ServiceClient(), hypervisors.ListOpts{}).AllPages() + allPages, err := hypervisors.List(client.ServiceClient(), hypervisors.ListOpts{}).AllPages(context.TODO()) testhelper.AssertNoErr(t, err) actual, err := hypervisors.ExtractHypervisors(allPages) testhelper.AssertNoErr(t, err) @@ -60,7 +61,7 @@ func TestListHypervisors(t *testing.T) { pages := 0 err := hypervisors.List(client.ServiceClient(), - hypervisors.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + hypervisors.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := hypervisors.ExtractHypervisors(page) @@ -89,7 +90,7 @@ func TestListAllHypervisors(t *testing.T) { defer testhelper.TeardownHTTP() HandleHypervisorListSuccessfully(t) - allPages, err := hypervisors.List(client.ServiceClient(), hypervisors.ListOpts{}).AllPages() + allPages, err := hypervisors.List(client.ServiceClient(), hypervisors.ListOpts{}).AllPages(context.TODO()) testhelper.AssertNoErr(t, err) actual, err := hypervisors.ExtractHypervisors(allPages) testhelper.AssertNoErr(t, err) @@ -103,7 +104,7 @@ func TestListAllHypervisorsWithParameters(t *testing.T) { HandleHypervisorListWithParametersSuccessfully(t) with_servers := true - allPages, err := hypervisors.List(client.ServiceClient(), hypervisors.ListOpts{WithServers: &with_servers}).AllPages() + allPages, err := hypervisors.List(client.ServiceClient(), hypervisors.ListOpts{WithServers: &with_servers}).AllPages(context.TODO()) testhelper.AssertNoErr(t, err) actual, err := hypervisors.ExtractHypervisors(allPages) testhelper.AssertNoErr(t, err) @@ -118,7 +119,7 @@ func TestHypervisorsStatistics(t *testing.T) { expected := HypervisorsStatisticsExpected - actual, err := hypervisors.GetStatistics(client.ServiceClient()).Extract() + actual, err := hypervisors.GetStatistics(context.TODO(), client.ServiceClient()).Extract() testhelper.AssertNoErr(t, err) testhelper.CheckDeepEquals(t, &expected, actual) } @@ -130,7 +131,7 @@ func TestGetHypervisor(t *testing.T) { expected := HypervisorFake - actual, err := hypervisors.Get(client.ServiceClient(), expected.ID).Extract() + actual, err := hypervisors.Get(context.TODO(), client.ServiceClient(), expected.ID).Extract() testhelper.AssertNoErr(t, err) testhelper.CheckDeepEquals(t, &expected, actual) } @@ -142,7 +143,7 @@ func TestGetHypervisorEmptyCPUInfo(t *testing.T) { expected := HypervisorEmptyCPUInfo - actual, err := hypervisors.Get(client.ServiceClient(), expected.ID).Extract() + actual, err := hypervisors.Get(context.TODO(), client.ServiceClient(), expected.ID).Extract() testhelper.AssertNoErr(t, err) testhelper.CheckDeepEquals(t, &expected, actual) } @@ -154,7 +155,7 @@ func TestHypervisorsUptime(t *testing.T) { expected := HypervisorUptimeExpected - actual, err := hypervisors.GetUptime(client.ServiceClient(), HypervisorFake.ID).Extract() + actual, err := hypervisors.GetUptime(context.TODO(), client.ServiceClient(), HypervisorFake.ID).Extract() testhelper.AssertNoErr(t, err) testhelper.CheckDeepEquals(t, &expected, actual) } diff --git a/openstack/compute/v2/extensions/injectnetworkinfo/requests.go b/openstack/compute/v2/extensions/injectnetworkinfo/requests.go index 91645d01fb..91d51be8fc 100644 --- a/openstack/compute/v2/extensions/injectnetworkinfo/requests.go +++ b/openstack/compute/v2/extensions/injectnetworkinfo/requests.go @@ -1,16 +1,18 @@ package injectnetworkinfo import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions" ) // InjectNetworkInfo will inject the network info into a server -func InjectNetworkInfo(client *gophercloud.ServiceClient, id string) (r InjectNetworkResult) { +func InjectNetworkInfo(ctx context.Context, client *gophercloud.ServiceClient, id string) (r InjectNetworkResult) { b := map[string]interface{}{ "injectNetworkInfo": nil, } - resp, err := client.Post(extensions.ActionURL(client, id), b, nil, nil) + resp, err := client.Post(ctx, extensions.ActionURL(client, id), b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/injectnetworkinfo/testing/requests_test.go b/openstack/compute/v2/extensions/injectnetworkinfo/testing/requests_test.go index 8e5df9fde3..819f2aa0ec 100644 --- a/openstack/compute/v2/extensions/injectnetworkinfo/testing/requests_test.go +++ b/openstack/compute/v2/extensions/injectnetworkinfo/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/injectnetworkinfo" @@ -16,6 +17,6 @@ func TestInjectNetworkInfo(t *testing.T) { mockInjectNetworkInfoResponse(t, serverID) - err := injectnetworkinfo.InjectNetworkInfo(client.ServiceClient(), serverID).ExtractErr() + err := injectnetworkinfo.InjectNetworkInfo(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/instanceactions/request.go b/openstack/compute/v2/extensions/instanceactions/request.go index d6f69f8488..d34090fe3a 100644 --- a/openstack/compute/v2/extensions/instanceactions/request.go +++ b/openstack/compute/v2/extensions/instanceactions/request.go @@ -1,6 +1,7 @@ package instanceactions import ( + "context" "net/url" "time" @@ -71,8 +72,8 @@ func List(client *gophercloud.ServiceClient, id string, opts ListOptsBuilder) pa } // Get makes a request against the API to get a server action. -func Get(client *gophercloud.ServiceClient, serverID, requestID string) (r InstanceActionResult) { - resp, err := client.Get(instanceActionsURL(client, serverID, requestID), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, serverID, requestID string) (r InstanceActionResult) { + resp, err := client.Get(ctx, instanceActionsURL(client, serverID, requestID), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/compute/v2/extensions/instanceactions/testing/request_test.go b/openstack/compute/v2/extensions/instanceactions/testing/request_test.go index 74e8f6b88e..142d8d3014 100644 --- a/openstack/compute/v2/extensions/instanceactions/testing/request_test.go +++ b/openstack/compute/v2/extensions/instanceactions/testing/request_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/instanceactions" @@ -16,7 +17,7 @@ func TestList(t *testing.T) { expected := ListExpected pages := 0 - err := instanceactions.List(client.ServiceClient(), "asdfasdfasdf", nil).EachPage(func(page pagination.Page) (bool, error) { + err := instanceactions.List(client.ServiceClient(), "asdfasdfasdf", nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := instanceactions.ExtractInstanceActions(page) @@ -39,7 +40,7 @@ func TestGet(t *testing.T) { HandleInstanceActionGetSuccessfully(t) client := client.ServiceClient() - actual, err := instanceactions.Get(client, "asdfasdfasdf", "okzeorkmkfs").Extract() + actual, err := instanceactions.Get(context.TODO(), client, "asdfasdfasdf", "okzeorkmkfs").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } diff --git a/openstack/compute/v2/extensions/keypairs/requests.go b/openstack/compute/v2/extensions/keypairs/requests.go index 2435147548..c632f424aa 100644 --- a/openstack/compute/v2/extensions/keypairs/requests.go +++ b/openstack/compute/v2/extensions/keypairs/requests.go @@ -1,6 +1,8 @@ package keypairs import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/servers" "github.com/gophercloud/gophercloud/v2/pagination" @@ -97,13 +99,13 @@ func (opts CreateOpts) ToKeyPairCreateMap() (map[string]interface{}, error) { // Create requests the creation of a new KeyPair on the server, or to import a // pre-existing keypair. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToKeyPairCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -130,7 +132,7 @@ func (opts GetOpts) ToKeyPairGetQuery() (string, error) { } // Get returns public data about a previously uploaded KeyPair. -func Get(client *gophercloud.ServiceClient, name string, opts GetOptsBuilder) (r GetResult) { +func Get(ctx context.Context, client *gophercloud.ServiceClient, name string, opts GetOptsBuilder) (r GetResult) { url := getURL(client, name) if opts != nil { query, err := opts.ToKeyPairGetQuery() @@ -141,7 +143,7 @@ func Get(client *gophercloud.ServiceClient, name string, opts GetOptsBuilder) (r url += query } - resp, err := client.Get(url, &r.Body, nil) + resp, err := client.Get(ctx, url, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -166,7 +168,7 @@ func (opts DeleteOpts) ToKeyPairDeleteQuery() (string, error) { } // Delete requests the deletion of a previous stored KeyPair from the server. -func Delete(client *gophercloud.ServiceClient, name string, opts DeleteOptsBuilder) (r DeleteResult) { +func Delete(ctx context.Context, client *gophercloud.ServiceClient, name string, opts DeleteOptsBuilder) (r DeleteResult) { url := deleteURL(client, name) if opts != nil { query, err := opts.ToKeyPairDeleteQuery() @@ -177,7 +179,7 @@ func Delete(client *gophercloud.ServiceClient, name string, opts DeleteOptsBuild url += query } - resp, err := client.Delete(url, nil) + resp, err := client.Delete(ctx, url, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/keypairs/testing/requests_test.go b/openstack/compute/v2/extensions/keypairs/testing/requests_test.go index c368bfa94b..c6c4dc0045 100644 --- a/openstack/compute/v2/extensions/keypairs/testing/requests_test.go +++ b/openstack/compute/v2/extensions/keypairs/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/keypairs" @@ -15,7 +16,7 @@ func TestList(t *testing.T) { HandleListSuccessfully(t) count := 0 - err := keypairs.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := keypairs.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := keypairs.ExtractKeyPairs(page) th.AssertNoErr(t, err) @@ -32,7 +33,7 @@ func TestCreate(t *testing.T) { defer th.TeardownHTTP() HandleCreateSuccessfully(t) - actual, err := keypairs.Create(client.ServiceClient(), keypairs.CreateOpts{ + actual, err := keypairs.Create(context.TODO(), client.ServiceClient(), keypairs.CreateOpts{ Name: "createdkey", }).Extract() th.AssertNoErr(t, err) @@ -44,7 +45,7 @@ func TestCreateOtherUser(t *testing.T) { defer th.TeardownHTTP() HandleCreateSuccessfullyOtherUser(t) - actual, err := keypairs.Create(client.ServiceClient(), keypairs.CreateOpts{ + actual, err := keypairs.Create(context.TODO(), client.ServiceClient(), keypairs.CreateOpts{ Name: "createdkey", UserID: "fake2", }).Extract() @@ -57,7 +58,7 @@ func TestImport(t *testing.T) { defer th.TeardownHTTP() HandleImportSuccessfully(t) - actual, err := keypairs.Create(client.ServiceClient(), keypairs.CreateOpts{ + actual, err := keypairs.Create(context.TODO(), client.ServiceClient(), keypairs.CreateOpts{ Name: "importedkey", PublicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova", }).Extract() @@ -70,7 +71,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t) - actual, err := keypairs.Get(client.ServiceClient(), "firstkey", nil).Extract() + actual, err := keypairs.Get(context.TODO(), client.ServiceClient(), "firstkey", nil).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &FirstKeyPair, actual) } @@ -84,7 +85,7 @@ func TestGetOtherUser(t *testing.T) { UserID: "fake2", } - actual, err := keypairs.Get(client.ServiceClient(), "firstkey", getOpts).Extract() + actual, err := keypairs.Get(context.TODO(), client.ServiceClient(), "firstkey", getOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &FirstKeyPairOtherUser, actual) } @@ -94,7 +95,7 @@ func TestDelete(t *testing.T) { defer th.TeardownHTTP() HandleDeleteSuccessfully(t) - err := keypairs.Delete(client.ServiceClient(), "deletedkey", nil).ExtractErr() + err := keypairs.Delete(context.TODO(), client.ServiceClient(), "deletedkey", nil).ExtractErr() th.AssertNoErr(t, err) } @@ -107,6 +108,6 @@ func TestDeleteOtherUser(t *testing.T) { UserID: "fake2", } - err := keypairs.Delete(client.ServiceClient(), "deletedkey", deleteOpts).ExtractErr() + err := keypairs.Delete(context.TODO(), client.ServiceClient(), "deletedkey", deleteOpts).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/limits/requests.go b/openstack/compute/v2/extensions/limits/requests.go index 946e80d5d7..67223016f4 100644 --- a/openstack/compute/v2/extensions/limits/requests.go +++ b/openstack/compute/v2/extensions/limits/requests.go @@ -1,6 +1,8 @@ package limits import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) @@ -23,7 +25,7 @@ func (opts GetOpts) ToLimitsQuery() (string, error) { } // Get returns the limits about the currently scoped tenant. -func Get(client *gophercloud.ServiceClient, opts GetOptsBuilder) (r GetResult) { +func Get(ctx context.Context, client *gophercloud.ServiceClient, opts GetOptsBuilder) (r GetResult) { url := getURL(client) if opts != nil { query, err := opts.ToLimitsQuery() @@ -34,7 +36,7 @@ func Get(client *gophercloud.ServiceClient, opts GetOptsBuilder) (r GetResult) { url += query } - resp, err := client.Get(url, &r.Body, nil) + resp, err := client.Get(ctx, url, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/limits/testing/requests_test.go b/openstack/compute/v2/extensions/limits/testing/requests_test.go index d4196c0087..33dbbdc5ce 100644 --- a/openstack/compute/v2/extensions/limits/testing/requests_test.go +++ b/openstack/compute/v2/extensions/limits/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/limits" @@ -17,7 +18,7 @@ func TestGet(t *testing.T) { TenantID: TenantID, } - actual, err := limits.Get(client.ServiceClient(), getOpts).Extract() + actual, err := limits.Get(context.TODO(), client.ServiceClient(), getOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &LimitsResult, actual) } diff --git a/openstack/compute/v2/extensions/lockunlock/requests.go b/openstack/compute/v2/extensions/lockunlock/requests.go index 1d7c070994..dd88824303 100644 --- a/openstack/compute/v2/extensions/lockunlock/requests.go +++ b/openstack/compute/v2/extensions/lockunlock/requests.go @@ -1,20 +1,22 @@ package lockunlock import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions" ) // Lock is the operation responsible for locking a Compute server. -func Lock(client *gophercloud.ServiceClient, id string) (r LockResult) { - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"lock": nil}, nil, nil) +func Lock(ctx context.Context, client *gophercloud.ServiceClient, id string) (r LockResult) { + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"lock": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Unlock is the operation responsible for unlocking a Compute server. -func Unlock(client *gophercloud.ServiceClient, id string) (r UnlockResult) { - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"unlock": nil}, nil, nil) +func Unlock(ctx context.Context, client *gophercloud.ServiceClient, id string) (r UnlockResult) { + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"unlock": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/lockunlock/testing/request_test.go b/openstack/compute/v2/extensions/lockunlock/testing/request_test.go index 8e8ef4996e..7d1a982d8a 100644 --- a/openstack/compute/v2/extensions/lockunlock/testing/request_test.go +++ b/openstack/compute/v2/extensions/lockunlock/testing/request_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/lockunlock" @@ -16,7 +17,7 @@ func TestLock(t *testing.T) { mockStartServerResponse(t, serverID) - err := lockunlock.Lock(client.ServiceClient(), serverID).ExtractErr() + err := lockunlock.Lock(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } @@ -26,6 +27,6 @@ func TestUnlock(t *testing.T) { mockStopServerResponse(t, serverID) - err := lockunlock.Unlock(client.ServiceClient(), serverID).ExtractErr() + err := lockunlock.Unlock(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/migrate/requests.go b/openstack/compute/v2/extensions/migrate/requests.go index 429f50425b..d28bd179c4 100644 --- a/openstack/compute/v2/extensions/migrate/requests.go +++ b/openstack/compute/v2/extensions/migrate/requests.go @@ -1,13 +1,15 @@ package migrate import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions" ) // Migrate will initiate a migration of the instance to another host. -func Migrate(client *gophercloud.ServiceClient, id string) (r MigrateResult) { - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"migrate": nil}, nil, nil) +func Migrate(ctx context.Context, client *gophercloud.ServiceClient, id string) (r MigrateResult) { + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"migrate": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -41,13 +43,13 @@ func (opts LiveMigrateOpts) ToLiveMigrateMap() (map[string]interface{}, error) { } // LiveMigrate will initiate a live-migration (without rebooting) of the instance to another host. -func LiveMigrate(client *gophercloud.ServiceClient, id string, opts LiveMigrateOptsBuilder) (r MigrateResult) { +func LiveMigrate(ctx context.Context, client *gophercloud.ServiceClient, id string, opts LiveMigrateOptsBuilder) (r MigrateResult) { b, err := opts.ToLiveMigrateMap() if err != nil { r.Err = err return } - resp, err := client.Post(extensions.ActionURL(client, id), b, nil, nil) + resp, err := client.Post(ctx, extensions.ActionURL(client, id), b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/migrate/testing/requests_test.go b/openstack/compute/v2/extensions/migrate/testing/requests_test.go index 2d21cd73a5..c57687f001 100644 --- a/openstack/compute/v2/extensions/migrate/testing/requests_test.go +++ b/openstack/compute/v2/extensions/migrate/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/migrate" @@ -16,7 +17,7 @@ func TestMigrate(t *testing.T) { mockMigrateResponse(t, serverID) - err := migrate.Migrate(client.ServiceClient(), serverID).ExtractErr() + err := migrate.Migrate(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } @@ -36,6 +37,6 @@ func TestLiveMigrate(t *testing.T) { DiskOverCommit: &diskOverCommit, } - err := migrate.LiveMigrate(client.ServiceClient(), serverID, migrationOpts).ExtractErr() + err := migrate.LiveMigrate(context.TODO(), client.ServiceClient(), serverID, migrationOpts).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/networks/requests.go b/openstack/compute/v2/extensions/networks/requests.go index b1309d49ab..3957a6faf2 100644 --- a/openstack/compute/v2/extensions/networks/requests.go +++ b/openstack/compute/v2/extensions/networks/requests.go @@ -1,6 +1,8 @@ package networks import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -13,8 +15,8 @@ func List(client *gophercloud.ServiceClient) pagination.Pager { } // Get returns data about a previously created Network. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/networks/testing/requests_test.go b/openstack/compute/v2/extensions/networks/testing/requests_test.go index 080de3b284..2fbc9503bf 100644 --- a/openstack/compute/v2/extensions/networks/testing/requests_test.go +++ b/openstack/compute/v2/extensions/networks/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/networks" @@ -15,7 +16,7 @@ func TestList(t *testing.T) { HandleListSuccessfully(t) count := 0 - err := networks.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := networks.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := networks.ExtractNetworks(page) th.AssertNoErr(t, err) @@ -32,7 +33,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t) - actual, err := networks.Get(client.ServiceClient(), "20c8acc0-f747-4d71-a389-46d078ebf000").Extract() + actual, err := networks.Get(context.TODO(), client.ServiceClient(), "20c8acc0-f747-4d71-a389-46d078ebf000").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &SecondNetwork, actual) } diff --git a/openstack/compute/v2/extensions/pauseunpause/requests.go b/openstack/compute/v2/extensions/pauseunpause/requests.go index 10edf4d649..8e17792f46 100644 --- a/openstack/compute/v2/extensions/pauseunpause/requests.go +++ b/openstack/compute/v2/extensions/pauseunpause/requests.go @@ -1,20 +1,22 @@ package pauseunpause import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions" ) // Pause is the operation responsible for pausing a Compute server. -func Pause(client *gophercloud.ServiceClient, id string) (r PauseResult) { - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"pause": nil}, nil, nil) +func Pause(ctx context.Context, client *gophercloud.ServiceClient, id string) (r PauseResult) { + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"pause": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Unpause is the operation responsible for unpausing a Compute server. -func Unpause(client *gophercloud.ServiceClient, id string) (r UnpauseResult) { - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"unpause": nil}, nil, nil) +func Unpause(ctx context.Context, client *gophercloud.ServiceClient, id string) (r UnpauseResult) { + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"unpause": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/pauseunpause/testing/requests_test.go b/openstack/compute/v2/extensions/pauseunpause/testing/requests_test.go index 6fbf5d41df..61185bb730 100644 --- a/openstack/compute/v2/extensions/pauseunpause/testing/requests_test.go +++ b/openstack/compute/v2/extensions/pauseunpause/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/pauseunpause" @@ -16,7 +17,7 @@ func TestPause(t *testing.T) { mockPauseServerResponse(t, serverID) - err := pauseunpause.Pause(client.ServiceClient(), serverID).ExtractErr() + err := pauseunpause.Pause(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } @@ -26,6 +27,6 @@ func TestUnpause(t *testing.T) { mockUnpauseServerResponse(t, serverID) - err := pauseunpause.Unpause(client.ServiceClient(), serverID).ExtractErr() + err := pauseunpause.Unpause(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/quotasets/requests.go b/openstack/compute/v2/extensions/quotasets/requests.go index ade73d8e86..a7ff87c4d2 100644 --- a/openstack/compute/v2/extensions/quotasets/requests.go +++ b/openstack/compute/v2/extensions/quotasets/requests.go @@ -1,39 +1,41 @@ package quotasets import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // Get returns public data about a previously created QuotaSet. -func Get(client *gophercloud.ServiceClient, tenantID string) (r GetResult) { - resp, err := client.Get(getURL(client, tenantID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, tenantID string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, tenantID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetDetail returns detailed public data about a previously created QuotaSet. -func GetDetail(client *gophercloud.ServiceClient, tenantID string) (r GetDetailResult) { - resp, err := client.Get(getDetailURL(client, tenantID), &r.Body, nil) +func GetDetail(ctx context.Context, client *gophercloud.ServiceClient, tenantID string) (r GetDetailResult) { + resp, err := client.Get(ctx, getDetailURL(client, tenantID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Updates the quotas for the given tenantID and returns the new QuotaSet. -func Update(client *gophercloud.ServiceClient, tenantID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, tenantID string, opts UpdateOptsBuilder) (r UpdateResult) { reqBody, err := opts.ToComputeQuotaUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, tenantID), reqBody, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) + resp, err := client.Put(ctx, updateURL(client, tenantID), reqBody, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Resets the quotas for the given tenant to their default values. -func Delete(client *gophercloud.ServiceClient, tenantID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, tenantID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, tenantID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, tenantID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/quotasets/testing/requests_test.go b/openstack/compute/v2/extensions/quotasets/testing/requests_test.go index e9ec586454..75f1364b74 100644 --- a/openstack/compute/v2/extensions/quotasets/testing/requests_test.go +++ b/openstack/compute/v2/extensions/quotasets/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "errors" "testing" @@ -14,7 +15,7 @@ func TestGet(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandleGetSuccessfully(t) - actual, err := quotasets.Get(client.ServiceClient(), FirstTenantID).Extract() + actual, err := quotasets.Get(context.TODO(), client.ServiceClient(), FirstTenantID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &FirstQuotaSet, actual) } @@ -23,7 +24,7 @@ func TestGetDetail(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandleGetDetailSuccessfully(t) - actual, err := quotasets.GetDetail(client.ServiceClient(), FirstTenantID).Extract() + actual, err := quotasets.GetDetail(context.TODO(), client.ServiceClient(), FirstTenantID).Extract() th.CheckDeepEquals(t, FirstQuotaDetailsSet, actual) th.AssertNoErr(t, err) } @@ -32,7 +33,7 @@ func TestUpdate(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandlePutSuccessfully(t) - actual, err := quotasets.Update(client.ServiceClient(), FirstTenantID, UpdatedQuotaSet).Extract() + actual, err := quotasets.Update(context.TODO(), client.ServiceClient(), FirstTenantID, UpdatedQuotaSet).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &FirstQuotaSet, actual) } @@ -42,7 +43,7 @@ func TestPartialUpdate(t *testing.T) { defer th.TeardownHTTP() HandlePartialPutSuccessfully(t) opts := quotasets.UpdateOpts{Cores: gophercloud.IntToPointer(200), Force: true} - actual, err := quotasets.Update(client.ServiceClient(), FirstTenantID, opts).Extract() + actual, err := quotasets.Update(context.TODO(), client.ServiceClient(), FirstTenantID, opts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &FirstQuotaSet, actual) } @@ -51,7 +52,7 @@ func TestDelete(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandleDeleteSuccessfully(t) - _, err := quotasets.Delete(client.ServiceClient(), FirstTenantID).Extract() + _, err := quotasets.Delete(context.TODO(), client.ServiceClient(), FirstTenantID).Extract() th.AssertNoErr(t, err) } @@ -66,7 +67,7 @@ func TestErrorInToComputeQuotaUpdateMap(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandlePutSuccessfully(t) - _, err := quotasets.Update(client.ServiceClient(), FirstTenantID, opts).Extract() + _, err := quotasets.Update(context.TODO(), client.ServiceClient(), FirstTenantID, opts).Extract() if err == nil { t.Fatal("Error handling failed") } diff --git a/openstack/compute/v2/extensions/remoteconsoles/requests.go b/openstack/compute/v2/extensions/remoteconsoles/requests.go index 88dc6dbc8a..7b26b9e42d 100644 --- a/openstack/compute/v2/extensions/remoteconsoles/requests.go +++ b/openstack/compute/v2/extensions/remoteconsoles/requests.go @@ -1,6 +1,8 @@ package remoteconsoles import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) @@ -69,14 +71,14 @@ func (opts CreateOpts) ToRemoteConsoleCreateMap() (map[string]interface{}, error } // Create requests the creation of a new remote console on the specified server. -func Create(client *gophercloud.ServiceClient, serverID string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, serverID string, opts CreateOptsBuilder) (r CreateResult) { reqBody, err := opts.ToRemoteConsoleCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client, serverID), reqBody, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client, serverID), reqBody, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/compute/v2/extensions/remoteconsoles/testing/requests_test.go b/openstack/compute/v2/extensions/remoteconsoles/testing/requests_test.go index ed53447636..04b7546dd7 100644 --- a/openstack/compute/v2/extensions/remoteconsoles/testing/requests_test.go +++ b/openstack/compute/v2/extensions/remoteconsoles/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -31,7 +32,7 @@ func TestCreate(t *testing.T) { Protocol: remoteconsoles.ConsoleProtocolVNC, Type: remoteconsoles.ConsoleTypeNoVNC, } - s, err := remoteconsoles.Create(fake.ServiceClient(), "b16ba811-199d-4ffd-8839-ba96c1185a67", opts).Extract() + s, err := remoteconsoles.Create(context.TODO(), fake.ServiceClient(), "b16ba811-199d-4ffd-8839-ba96c1185a67", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Protocol, string(remoteconsoles.ConsoleProtocolVNC)) diff --git a/openstack/compute/v2/extensions/rescueunrescue/requests.go b/openstack/compute/v2/extensions/rescueunrescue/requests.go index 82ac651662..26614dbc47 100644 --- a/openstack/compute/v2/extensions/rescueunrescue/requests.go +++ b/openstack/compute/v2/extensions/rescueunrescue/requests.go @@ -1,6 +1,8 @@ package rescueunrescue import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions" ) @@ -32,13 +34,13 @@ func (opts RescueOpts) ToServerRescueMap() (map[string]interface{}, error) { } // Rescue instructs the provider to place the server into RESCUE mode. -func Rescue(client *gophercloud.ServiceClient, id string, opts RescueOptsBuilder) (r RescueResult) { +func Rescue(ctx context.Context, client *gophercloud.ServiceClient, id string, opts RescueOptsBuilder) (r RescueResult) { b, err := opts.ToServerRescueMap() if err != nil { r.Err = err return } - resp, err := client.Post(extensions.ActionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, extensions.ActionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -46,8 +48,8 @@ func Rescue(client *gophercloud.ServiceClient, id string, opts RescueOptsBuilder } // Unrescue instructs the provider to return the server from RESCUE mode. -func Unrescue(client *gophercloud.ServiceClient, id string) (r UnrescueResult) { - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"unrescue": nil}, nil, nil) +func Unrescue(ctx context.Context, client *gophercloud.ServiceClient, id string) (r UnrescueResult) { + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"unrescue": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/rescueunrescue/testing/requests_test.go b/openstack/compute/v2/extensions/rescueunrescue/testing/requests_test.go index 852018eb4b..a69982ffcd 100644 --- a/openstack/compute/v2/extensions/rescueunrescue/testing/requests_test.go +++ b/openstack/compute/v2/extensions/rescueunrescue/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -23,7 +24,7 @@ func TestRescue(t *testing.T) { fmt.Fprintf(w, RescueResult) }) - s, err := rescueunrescue.Rescue(fake.ServiceClient(), "3f54d05f-3430-4d80-aa07-63e6af9e2488", rescueunrescue.RescueOpts{ + s, err := rescueunrescue.Rescue(context.TODO(), fake.ServiceClient(), "3f54d05f-3430-4d80-aa07-63e6af9e2488", rescueunrescue.RescueOpts{ AdminPass: "aUPtawPzE9NU", RescueImageRef: "115e5c5b-72f0-4a0a-9067-60706545248c", }).Extract() @@ -44,6 +45,6 @@ func TestUnrescue(t *testing.T) { w.WriteHeader(http.StatusAccepted) }) - err := rescueunrescue.Unrescue(fake.ServiceClient(), "3f54d05f-3430-4d80-aa07-63e6af9e2488").ExtractErr() + err := rescueunrescue.Unrescue(context.TODO(), fake.ServiceClient(), "3f54d05f-3430-4d80-aa07-63e6af9e2488").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/resetnetwork/requests.go b/openstack/compute/v2/extensions/resetnetwork/requests.go index 222807eca3..55092f32f1 100644 --- a/openstack/compute/v2/extensions/resetnetwork/requests.go +++ b/openstack/compute/v2/extensions/resetnetwork/requests.go @@ -1,16 +1,18 @@ package resetnetwork import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions" ) // ResetNetwork will reset the network of a server -func ResetNetwork(client *gophercloud.ServiceClient, id string) (r ResetResult) { +func ResetNetwork(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ResetResult) { b := map[string]interface{}{ "resetNetwork": nil, } - resp, err := client.Post(extensions.ActionURL(client, id), b, nil, nil) + resp, err := client.Post(ctx, extensions.ActionURL(client, id), b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/resetnetwork/testing/requests_test.go b/openstack/compute/v2/extensions/resetnetwork/testing/requests_test.go index 1ae35531bb..29979eab32 100644 --- a/openstack/compute/v2/extensions/resetnetwork/testing/requests_test.go +++ b/openstack/compute/v2/extensions/resetnetwork/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/resetnetwork" @@ -16,6 +17,6 @@ func TestResetNetwork(t *testing.T) { mockResetNetworkResponse(t, serverID) - err := resetnetwork.ResetNetwork(client.ServiceClient(), serverID).ExtractErr() + err := resetnetwork.ResetNetwork(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/resetstate/requests.go b/openstack/compute/v2/extensions/resetstate/requests.go index 6b49d32ec2..2a63f26f70 100644 --- a/openstack/compute/v2/extensions/resetstate/requests.go +++ b/openstack/compute/v2/extensions/resetstate/requests.go @@ -1,6 +1,8 @@ package resetstate import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions" ) @@ -17,9 +19,9 @@ const ( ) // ResetState will reset the state of a server -func ResetState(client *gophercloud.ServiceClient, id string, state ServerState) (r ResetResult) { +func ResetState(ctx context.Context, client *gophercloud.ServiceClient, id string, state ServerState) (r ResetResult) { stateMap := map[string]interface{}{"state": state} - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"os-resetState": stateMap}, nil, nil) + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"os-resetState": stateMap}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/resetstate/testing/requests_test.go b/openstack/compute/v2/extensions/resetstate/testing/requests_test.go index a3f35ca19b..7ae25169df 100644 --- a/openstack/compute/v2/extensions/resetstate/testing/requests_test.go +++ b/openstack/compute/v2/extensions/resetstate/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/resetstate" @@ -16,6 +17,6 @@ func TestResetState(t *testing.T) { mockResetStateResponse(t, serverID, "active") - err := resetstate.ResetState(client.ServiceClient(), serverID, "active").ExtractErr() + err := resetstate.ResetState(context.TODO(), client.ServiceClient(), serverID, "active").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/secgroups/requests.go b/openstack/compute/v2/extensions/secgroups/requests.go index b5df71f756..5c9102e1a0 100644 --- a/openstack/compute/v2/extensions/secgroups/requests.go +++ b/openstack/compute/v2/extensions/secgroups/requests.go @@ -1,6 +1,8 @@ package secgroups import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -43,13 +45,13 @@ func (opts CreateOpts) ToSecGroupCreateMap() (map[string]interface{}, error) { } // Create will create a new security group. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToSecGroupCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(rootURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, rootURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -77,13 +79,13 @@ func (opts UpdateOpts) ToSecGroupUpdateMap() (map[string]interface{}, error) { // Update will modify the mutable properties of a security group, notably its // name and description. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToSecGroupUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(resourceURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, resourceURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -91,15 +93,15 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder } // Get will return details for a particular security group. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(resourceURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, resourceURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete will permanently delete a security group from the project. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(resourceURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, resourceURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -149,13 +151,13 @@ func (opts CreateRuleOpts) ToRuleCreateMap() (map[string]interface{}, error) { // CreateRule will add a new rule to an existing security group (whose ID is // specified in CreateRuleOpts). You have the option of controlling inbound // traffic from either an IP range (CIDR) or from another security group. -func CreateRule(client *gophercloud.ServiceClient, opts CreateRuleOptsBuilder) (r CreateRuleResult) { +func CreateRule(ctx context.Context, client *gophercloud.ServiceClient, opts CreateRuleOptsBuilder) (r CreateRuleResult) { b, err := opts.ToRuleCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(rootRuleURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, rootRuleURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -163,8 +165,8 @@ func CreateRule(client *gophercloud.ServiceClient, opts CreateRuleOptsBuilder) ( } // DeleteRule will permanently delete a rule from a security group. -func DeleteRule(client *gophercloud.ServiceClient, id string) (r DeleteRuleResult) { - resp, err := client.Delete(resourceRuleURL(client, id), nil) +func DeleteRule(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteRuleResult) { + resp, err := client.Delete(ctx, resourceRuleURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -177,15 +179,15 @@ func actionMap(prefix, groupName string) map[string]map[string]string { // AddServer will associate a server and a security group, enforcing the // rules of the group on the server. -func AddServer(client *gophercloud.ServiceClient, serverID, groupName string) (r AddServerResult) { - resp, err := client.Post(serverActionURL(client, serverID), actionMap("add", groupName), nil, nil) +func AddServer(ctx context.Context, client *gophercloud.ServiceClient, serverID, groupName string) (r AddServerResult) { + resp, err := client.Post(ctx, serverActionURL(client, serverID), actionMap("add", groupName), nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // RemoveServer will disassociate a server from a security group. -func RemoveServer(client *gophercloud.ServiceClient, serverID, groupName string) (r RemoveServerResult) { - resp, err := client.Post(serverActionURL(client, serverID), actionMap("remove", groupName), nil, nil) +func RemoveServer(ctx context.Context, client *gophercloud.ServiceClient, serverID, groupName string) (r RemoveServerResult) { + resp, err := client.Post(ctx, serverActionURL(client, serverID), actionMap("remove", groupName), nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/secgroups/testing/requests_test.go b/openstack/compute/v2/extensions/secgroups/testing/requests_test.go index 0f7d2cedea..73dc1f1fe7 100644 --- a/openstack/compute/v2/extensions/secgroups/testing/requests_test.go +++ b/openstack/compute/v2/extensions/secgroups/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/secgroups" @@ -23,7 +24,7 @@ func TestList(t *testing.T) { count := 0 - err := secgroups.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := secgroups.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := secgroups.ExtractSecurityGroups(page) if err != nil { @@ -58,7 +59,7 @@ func TestListByServer(t *testing.T) { count := 0 - err := secgroups.ListByServer(client.ServiceClient(), serverID).EachPage(func(page pagination.Page) (bool, error) { + err := secgroups.ListByServer(client.ServiceClient(), serverID).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := secgroups.ExtractSecurityGroups(page) if err != nil { @@ -96,7 +97,7 @@ func TestCreate(t *testing.T) { Description: "something", } - group, err := secgroups.Create(client.ServiceClient(), opts).Extract() + group, err := secgroups.Create(context.TODO(), client.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) expected := &secgroups.SecurityGroup{ @@ -121,7 +122,7 @@ func TestUpdate(t *testing.T) { Description: &description, } - group, err := secgroups.Update(client.ServiceClient(), groupID, opts).Extract() + group, err := secgroups.Update(context.TODO(), client.ServiceClient(), groupID, opts).Extract() th.AssertNoErr(t, err) expected := &secgroups.SecurityGroup{ @@ -140,7 +141,7 @@ func TestGet(t *testing.T) { mockGetGroupsResponse(t, groupID) - group, err := secgroups.Get(client.ServiceClient(), groupID).Extract() + group, err := secgroups.Get(context.TODO(), client.ServiceClient(), groupID).Extract() th.AssertNoErr(t, err) expected := &secgroups.SecurityGroup{ @@ -172,7 +173,7 @@ func TestGetNumericID(t *testing.T) { mockGetNumericIDGroupResponse(t, numericGroupID) - group, err := secgroups.Get(client.ServiceClient(), "12345").Extract() + group, err := secgroups.Get(context.TODO(), client.ServiceClient(), "12345").Extract() th.AssertNoErr(t, err) expected := &secgroups.SecurityGroup{ID: "12345"} @@ -187,7 +188,7 @@ func TestGetNumericRuleID(t *testing.T) { mockGetNumericIDGroupRuleResponse(t, numericGroupID) - group, err := secgroups.Get(client.ServiceClient(), "12345").Extract() + group, err := secgroups.Get(context.TODO(), client.ServiceClient(), "12345").Extract() th.AssertNoErr(t, err) expected := &secgroups.SecurityGroup{ @@ -208,7 +209,7 @@ func TestDelete(t *testing.T) { mockDeleteGroupResponse(t, groupID) - err := secgroups.Delete(client.ServiceClient(), groupID).ExtractErr() + err := secgroups.Delete(context.TODO(), client.ServiceClient(), groupID).ExtractErr() th.AssertNoErr(t, err) } @@ -226,7 +227,7 @@ func TestAddRule(t *testing.T) { CIDR: "0.0.0.0/0", } - rule, err := secgroups.CreateRule(client.ServiceClient(), opts).Extract() + rule, err := secgroups.CreateRule(context.TODO(), client.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) expected := &secgroups.Rule{ @@ -256,7 +257,7 @@ func TestAddRuleICMPZero(t *testing.T) { CIDR: "0.0.0.0/0", } - rule, err := secgroups.CreateRule(client.ServiceClient(), opts).Extract() + rule, err := secgroups.CreateRule(context.TODO(), client.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) expected := &secgroups.Rule{ @@ -278,7 +279,7 @@ func TestDeleteRule(t *testing.T) { mockDeleteRuleResponse(t, ruleID) - err := secgroups.DeleteRule(client.ServiceClient(), ruleID).ExtractErr() + err := secgroups.DeleteRule(context.TODO(), client.ServiceClient(), ruleID).ExtractErr() th.AssertNoErr(t, err) } @@ -288,7 +289,7 @@ func TestAddServer(t *testing.T) { mockAddServerToGroupResponse(t, serverID) - err := secgroups.AddServer(client.ServiceClient(), serverID, "test").ExtractErr() + err := secgroups.AddServer(context.TODO(), client.ServiceClient(), serverID, "test").ExtractErr() th.AssertNoErr(t, err) } @@ -298,6 +299,6 @@ func TestRemoveServer(t *testing.T) { mockRemoveServerFromGroupResponse(t, serverID) - err := secgroups.RemoveServer(client.ServiceClient(), serverID, "test").ExtractErr() + err := secgroups.RemoveServer(context.TODO(), client.ServiceClient(), serverID, "test").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/servergroups/requests.go b/openstack/compute/v2/extensions/servergroups/requests.go index eac23c2ad2..2fd10d4d34 100644 --- a/openstack/compute/v2/extensions/servergroups/requests.go +++ b/openstack/compute/v2/extensions/servergroups/requests.go @@ -1,6 +1,8 @@ package servergroups import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -72,13 +74,13 @@ func (opts CreateOpts) ToServerGroupCreateMap() (map[string]interface{}, error) } // Create requests the creation of a new Server Group. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToServerGroupCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -86,15 +88,15 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Get returns data about a previously created ServerGroup. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete requests the deletion of a previously allocated ServerGroup. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/servergroups/testing/requests_test.go b/openstack/compute/v2/extensions/servergroups/testing/requests_test.go index ec80002fc6..3557f81079 100644 --- a/openstack/compute/v2/extensions/servergroups/testing/requests_test.go +++ b/openstack/compute/v2/extensions/servergroups/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/servergroups" @@ -15,7 +16,7 @@ func TestList(t *testing.T) { HandleListSuccessfully(t) count := 0 - err := servergroups.List(client.ServiceClient(), &servergroups.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := servergroups.List(client.ServiceClient(), &servergroups.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := servergroups.ExtractServerGroups(page) th.AssertNoErr(t, err) @@ -32,7 +33,7 @@ func TestCreate(t *testing.T) { defer th.TeardownHTTP() HandleCreateSuccessfully(t) - actual, err := servergroups.Create(client.ServiceClient(), servergroups.CreateOpts{ + actual, err := servergroups.Create(context.TODO(), client.ServiceClient(), servergroups.CreateOpts{ Name: "test", Policies: []string{"anti-affinity"}, }).Extract() @@ -52,7 +53,7 @@ func TestCreateMicroversion(t *testing.T) { CreatedServerGroup.Policy = &policy CreatedServerGroup.Rules = &rules - result := servergroups.Create(client.ServiceClient(), servergroups.CreateOpts{ + result := servergroups.Create(context.TODO(), client.ServiceClient(), servergroups.CreateOpts{ Name: "test", Policies: []string{"anti-affinity"}, Policy: policy, @@ -69,7 +70,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t) - actual, err := servergroups.Get(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0").Extract() + actual, err := servergroups.Get(context.TODO(), client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &FirstServerGroup, actual) } @@ -86,7 +87,7 @@ func TestGetMicroversion(t *testing.T) { FirstServerGroup.Policy = &policy FirstServerGroup.Rules = &rules - result := servergroups.Get(client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0") + result := servergroups.Get(context.TODO(), client.ServiceClient(), "4d8c3732-a248-40ed-bebc-539a6ffd25c0") // Extract basic fields. actual, err := result.Extract() @@ -99,6 +100,6 @@ func TestDelete(t *testing.T) { defer th.TeardownHTTP() HandleDeleteSuccessfully(t) - err := servergroups.Delete(client.ServiceClient(), "616fb98f-46ca-475e-917e-2563e5a8cd19").ExtractErr() + err := servergroups.Delete(context.TODO(), client.ServiceClient(), "616fb98f-46ca-475e-917e-2563e5a8cd19").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/serverusage/testing/requests_test.go b/openstack/compute/v2/extensions/serverusage/testing/requests_test.go index a7afc30d16..c81b4553f0 100644 --- a/openstack/compute/v2/extensions/serverusage/testing/requests_test.go +++ b/openstack/compute/v2/extensions/serverusage/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -29,7 +30,7 @@ func TestServerWithUsageExt(t *testing.T) { serverusage.UsageExt } var serverWithUsageExt serverUsageExt - err := servers.Get(fake.ServiceClient(), "d650a0ce-17c3-497d-961a-43c4af80998a").ExtractInto(&serverWithUsageExt) + err := servers.Get(context.TODO(), fake.ServiceClient(), "d650a0ce-17c3-497d-961a-43c4af80998a").ExtractInto(&serverWithUsageExt) th.AssertNoErr(t, err) th.AssertEquals(t, serverWithUsageExt.LaunchedAt, time.Date(2018, 07, 27, 9, 15, 55, 0, time.UTC)) diff --git a/openstack/compute/v2/extensions/services/requests.go b/openstack/compute/v2/extensions/services/requests.go index d7a8dccc7c..f979dd5dee 100644 --- a/openstack/compute/v2/extensions/services/requests.go +++ b/openstack/compute/v2/extensions/services/requests.go @@ -1,6 +1,8 @@ package services import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -68,13 +70,13 @@ func (opts UpdateOpts) ToServiceUpdateMap() (map[string]interface{}, error) { } // Update requests that various attributes of the indicated service be changed. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { b, err := opts.ToServiceUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -82,8 +84,8 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOpts) (r Up } // Delete will delete the existing service with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(updateURL(client, id), &gophercloud.RequestOpts{ +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, updateURL(client, id), &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/compute/v2/extensions/services/testing/requests_test.go b/openstack/compute/v2/extensions/services/testing/requests_test.go index f3a34dd919..3bbcb478c2 100644 --- a/openstack/compute/v2/extensions/services/testing/requests_test.go +++ b/openstack/compute/v2/extensions/services/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/services" @@ -15,7 +16,7 @@ func TestListServicesPre253(t *testing.T) { HandleListPre253Successfully(t) pages := 0 - err := services.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := services.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := services.ExtractServices(page) @@ -51,7 +52,7 @@ func TestListServices(t *testing.T) { Binary: "fake-binary", Host: "host123", } - err := services.List(client.ServiceClient(), opts).EachPage(func(page pagination.Page) (bool, error) { + err := services.List(client.ServiceClient(), opts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := services.ExtractServices(page) @@ -83,7 +84,7 @@ func TestUpdateService(t *testing.T) { HandleUpdateSuccessfully(t) client := client.ServiceClient() - actual, err := services.Update(client, "fake-service-id", services.UpdateOpts{Status: services.ServiceDisabled}).Extract() + actual, err := services.Update(context.TODO(), client, "fake-service-id", services.UpdateOpts{Status: services.ServiceDisabled}).Extract() if err != nil { t.Fatalf("Unexpected Update error: %v", err) } @@ -97,7 +98,7 @@ func TestDeleteService(t *testing.T) { HandleDeleteSuccessfully(t) client := client.ServiceClient() - res := services.Delete(client, "fake-service-id") + res := services.Delete(context.TODO(), client, "fake-service-id") testhelper.AssertNoErr(t, res.Err) } diff --git a/openstack/compute/v2/extensions/shelveunshelve/requests.go b/openstack/compute/v2/extensions/shelveunshelve/requests.go index 438debb9e8..2f5551c0b4 100644 --- a/openstack/compute/v2/extensions/shelveunshelve/requests.go +++ b/openstack/compute/v2/extensions/shelveunshelve/requests.go @@ -1,20 +1,22 @@ package shelveunshelve import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions" ) // Shelve is the operation responsible for shelving a Compute server. -func Shelve(client *gophercloud.ServiceClient, id string) (r ShelveResult) { - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"shelve": nil}, nil, nil) +func Shelve(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ShelveResult) { + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"shelve": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // ShelveOffload is the operation responsible for Shelve-Offload a Compute server. -func ShelveOffload(client *gophercloud.ServiceClient, id string) (r ShelveOffloadResult) { - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"shelveOffload": nil}, nil, nil) +func ShelveOffload(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ShelveOffloadResult) { + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"shelveOffload": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -48,13 +50,13 @@ func (opts UnshelveOpts) ToUnshelveMap() (map[string]interface{}, error) { } // Unshelve is the operation responsible for unshelve a Compute server. -func Unshelve(client *gophercloud.ServiceClient, id string, opts UnshelveOptsBuilder) (r UnshelveResult) { +func Unshelve(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UnshelveOptsBuilder) (r UnshelveResult) { b, err := opts.ToUnshelveMap() if err != nil { r.Err = err return } - resp, err := client.Post(extensions.ActionURL(client, id), b, nil, nil) + resp, err := client.Post(ctx, extensions.ActionURL(client, id), b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/shelveunshelve/testing/requests_test.go b/openstack/compute/v2/extensions/shelveunshelve/testing/requests_test.go index 45f1b27035..60f9304d1f 100644 --- a/openstack/compute/v2/extensions/shelveunshelve/testing/requests_test.go +++ b/openstack/compute/v2/extensions/shelveunshelve/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/shelveunshelve" @@ -17,7 +18,7 @@ func TestShelve(t *testing.T) { mockShelveServerResponse(t, serverID) - err := shelveunshelve.Shelve(client.ServiceClient(), serverID).ExtractErr() + err := shelveunshelve.Shelve(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } @@ -27,7 +28,7 @@ func TestShelveOffload(t *testing.T) { mockShelveOffloadServerResponse(t, serverID) - err := shelveunshelve.ShelveOffload(client.ServiceClient(), serverID).ExtractErr() + err := shelveunshelve.ShelveOffload(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } @@ -39,7 +40,7 @@ func TestUnshelveNoAvailabilityZone(t *testing.T) { mockUnshelveServerResponseNoAvailabilityZone(t, serverID) - err := shelveunshelve.Unshelve(client.ServiceClient(), serverID, unshelveOpts).ExtractErr() + err := shelveunshelve.Unshelve(context.TODO(), client.ServiceClient(), serverID, unshelveOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -53,6 +54,6 @@ func TestUnshelveWithAvailabilityZone(t *testing.T) { mockUnshelveServerResponseWithAvailabilityZone(t, serverID, availabilityZone) - err := shelveunshelve.Unshelve(client.ServiceClient(), serverID, unshelveOpts).ExtractErr() + err := shelveunshelve.Unshelve(context.TODO(), client.ServiceClient(), serverID, unshelveOpts).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/startstop/requests.go b/openstack/compute/v2/extensions/startstop/requests.go index b30c8f5738..9b430ef7d7 100644 --- a/openstack/compute/v2/extensions/startstop/requests.go +++ b/openstack/compute/v2/extensions/startstop/requests.go @@ -1,20 +1,22 @@ package startstop import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions" ) // Start is the operation responsible for starting a Compute server. -func Start(client *gophercloud.ServiceClient, id string) (r StartResult) { - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"os-start": nil}, nil, nil) +func Start(ctx context.Context, client *gophercloud.ServiceClient, id string) (r StartResult) { + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"os-start": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Stop is the operation responsible for stopping a Compute server. -func Stop(client *gophercloud.ServiceClient, id string) (r StopResult) { - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"os-stop": nil}, nil, nil) +func Stop(ctx context.Context, client *gophercloud.ServiceClient, id string) (r StopResult) { + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"os-stop": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/startstop/testing/requests_test.go b/openstack/compute/v2/extensions/startstop/testing/requests_test.go index 1d1a66f75b..fc65e76ed2 100644 --- a/openstack/compute/v2/extensions/startstop/testing/requests_test.go +++ b/openstack/compute/v2/extensions/startstop/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/startstop" @@ -16,7 +17,7 @@ func TestStart(t *testing.T) { mockStartServerResponse(t, serverID) - err := startstop.Start(client.ServiceClient(), serverID).ExtractErr() + err := startstop.Start(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } @@ -26,6 +27,6 @@ func TestStop(t *testing.T) { mockStopServerResponse(t, serverID) - err := startstop.Stop(client.ServiceClient(), serverID).ExtractErr() + err := startstop.Stop(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/suspendresume/requests.go b/openstack/compute/v2/extensions/suspendresume/requests.go index 8959d4416b..0ffd5f14fc 100644 --- a/openstack/compute/v2/extensions/suspendresume/requests.go +++ b/openstack/compute/v2/extensions/suspendresume/requests.go @@ -1,20 +1,22 @@ package suspendresume import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions" ) // Suspend is the operation responsible for suspending a Compute server. -func Suspend(client *gophercloud.ServiceClient, id string) (r SuspendResult) { - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"suspend": nil}, nil, nil) +func Suspend(ctx context.Context, client *gophercloud.ServiceClient, id string) (r SuspendResult) { + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"suspend": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Resume is the operation responsible for resuming a Compute server. -func Resume(client *gophercloud.ServiceClient, id string) (r UnsuspendResult) { - resp, err := client.Post(extensions.ActionURL(client, id), map[string]interface{}{"resume": nil}, nil, nil) +func Resume(ctx context.Context, client *gophercloud.ServiceClient, id string) (r UnsuspendResult) { + resp, err := client.Post(ctx, extensions.ActionURL(client, id), map[string]interface{}{"resume": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/suspendresume/testing/requests_test.go b/openstack/compute/v2/extensions/suspendresume/testing/requests_test.go index 1ae7c80662..27f13aa592 100644 --- a/openstack/compute/v2/extensions/suspendresume/testing/requests_test.go +++ b/openstack/compute/v2/extensions/suspendresume/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/suspendresume" @@ -16,7 +17,7 @@ func TestSuspend(t *testing.T) { mockSuspendServerResponse(t, serverID) - err := suspendresume.Suspend(client.ServiceClient(), serverID).ExtractErr() + err := suspendresume.Suspend(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } @@ -26,6 +27,6 @@ func TestResume(t *testing.T) { mockResumeServerResponse(t, serverID) - err := suspendresume.Resume(client.ServiceClient(), serverID).ExtractErr() + err := suspendresume.Resume(context.TODO(), client.ServiceClient(), serverID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/tags/requests.go b/openstack/compute/v2/extensions/tags/requests.go index bdea66b4c6..759b579d3d 100644 --- a/openstack/compute/v2/extensions/tags/requests.go +++ b/openstack/compute/v2/extensions/tags/requests.go @@ -1,11 +1,15 @@ package tags -import "github.com/gophercloud/gophercloud/v2" +import ( + "context" + + "github.com/gophercloud/gophercloud/v2" +) // List all tags on a server. -func List(client *gophercloud.ServiceClient, serverID string) (r ListResult) { +func List(ctx context.Context, client *gophercloud.ServiceClient, serverID string) (r ListResult) { url := listURL(client, serverID) - resp, err := client.Get(url, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -13,9 +17,9 @@ func List(client *gophercloud.ServiceClient, serverID string) (r ListResult) { } // Check if a tag exists on a server. -func Check(client *gophercloud.ServiceClient, serverID, tag string) (r CheckResult) { +func Check(ctx context.Context, client *gophercloud.ServiceClient, serverID, tag string) (r CheckResult) { url := checkURL(client, serverID, tag) - resp, err := client.Get(url, nil, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -38,14 +42,14 @@ func (opts ReplaceAllOpts) ToTagsReplaceAllMap() (map[string]interface{}, error) } // ReplaceAll replaces all Tags on a server. -func ReplaceAll(client *gophercloud.ServiceClient, serverID string, opts ReplaceAllOptsBuilder) (r ReplaceAllResult) { +func ReplaceAll(ctx context.Context, client *gophercloud.ServiceClient, serverID string, opts ReplaceAllOptsBuilder) (r ReplaceAllResult) { b, err := opts.ToTagsReplaceAllMap() url := replaceAllURL(client, serverID) if err != nil { r.Err = err return } - resp, err := client.Put(url, &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, url, &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -53,9 +57,9 @@ func ReplaceAll(client *gophercloud.ServiceClient, serverID string, opts Replace } // Add adds a new Tag on a server. -func Add(client *gophercloud.ServiceClient, serverID, tag string) (r AddResult) { +func Add(ctx context.Context, client *gophercloud.ServiceClient, serverID, tag string) (r AddResult) { url := addURL(client, serverID, tag) - resp, err := client.Put(url, nil, nil, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, url, nil, nil, &gophercloud.RequestOpts{ OkCodes: []int{201, 204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -63,9 +67,9 @@ func Add(client *gophercloud.ServiceClient, serverID, tag string) (r AddResult) } // Delete removes a tag from a server. -func Delete(client *gophercloud.ServiceClient, serverID, tag string) (r DeleteResult) { +func Delete(ctx context.Context, client *gophercloud.ServiceClient, serverID, tag string) (r DeleteResult) { url := deleteURL(client, serverID, tag) - resp, err := client.Delete(url, &gophercloud.RequestOpts{ + resp, err := client.Delete(ctx, url, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -73,9 +77,9 @@ func Delete(client *gophercloud.ServiceClient, serverID, tag string) (r DeleteRe } // DeleteAll removes all tag from a server. -func DeleteAll(client *gophercloud.ServiceClient, serverID string) (r DeleteResult) { +func DeleteAll(ctx context.Context, client *gophercloud.ServiceClient, serverID string) (r DeleteResult) { url := deleteAllURL(client, serverID) - resp, err := client.Delete(url, &gophercloud.RequestOpts{ + resp, err := client.Delete(ctx, url, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/compute/v2/extensions/tags/testing/requests_test.go b/openstack/compute/v2/extensions/tags/testing/requests_test.go index 8cb219f175..f106b44769 100644 --- a/openstack/compute/v2/extensions/tags/testing/requests_test.go +++ b/openstack/compute/v2/extensions/tags/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -26,7 +27,7 @@ func TestList(t *testing.T) { }) expected := []string{"foo", "bar", "baz"} - actual, err := tags.List(client.ServiceClient(), "uuid1").Extract() + actual, err := tags.List(context.TODO(), client.ServiceClient(), "uuid1").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expected, actual) @@ -44,7 +45,7 @@ func TestCheckOk(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - exists, err := tags.Check(client.ServiceClient(), "uuid1", "foo").Extract() + exists, err := tags.Check(context.TODO(), client.ServiceClient(), "uuid1", "foo").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, true, exists) } @@ -61,7 +62,7 @@ func TestCheckFail(t *testing.T) { w.WriteHeader(http.StatusNotFound) }) - exists, err := tags.Check(client.ServiceClient(), "uuid1", "bar").Extract() + exists, err := tags.Check(context.TODO(), client.ServiceClient(), "uuid1", "bar").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, false, exists) } @@ -82,7 +83,7 @@ func TestReplaceAll(t *testing.T) { }) expected := []string{"tag1", "tag2", "tag3"} - actual, err := tags.ReplaceAll(client.ServiceClient(), "uuid1", tags.ReplaceAllOpts{Tags: []string{"tag1", "tag2", "tag3"}}).Extract() + actual, err := tags.ReplaceAll(context.TODO(), client.ServiceClient(), "uuid1", tags.ReplaceAllOpts{Tags: []string{"tag1", "tag2", "tag3"}}).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expected, actual) @@ -100,7 +101,7 @@ func TestAddCreated(t *testing.T) { w.WriteHeader(http.StatusCreated) }) - err := tags.Add(client.ServiceClient(), "uuid1", "foo").ExtractErr() + err := tags.Add(context.TODO(), client.ServiceClient(), "uuid1", "foo").ExtractErr() th.AssertNoErr(t, err) } @@ -116,7 +117,7 @@ func TestAddExists(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - err := tags.Add(client.ServiceClient(), "uuid1", "foo").ExtractErr() + err := tags.Add(context.TODO(), client.ServiceClient(), "uuid1", "foo").ExtractErr() th.AssertNoErr(t, err) } @@ -132,7 +133,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - err := tags.Delete(client.ServiceClient(), "uuid1", "foo").ExtractErr() + err := tags.Delete(context.TODO(), client.ServiceClient(), "uuid1", "foo").ExtractErr() th.AssertNoErr(t, err) } @@ -148,6 +149,6 @@ func TestDeleteAll(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - err := tags.DeleteAll(client.ServiceClient(), "uuid1").ExtractErr() + err := tags.DeleteAll(context.TODO(), client.ServiceClient(), "uuid1").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/extensions/tenantnetworks/requests.go b/openstack/compute/v2/extensions/tenantnetworks/requests.go index 79574a31e4..bbc825a227 100644 --- a/openstack/compute/v2/extensions/tenantnetworks/requests.go +++ b/openstack/compute/v2/extensions/tenantnetworks/requests.go @@ -1,6 +1,8 @@ package tenantnetworks import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -13,8 +15,8 @@ func List(client *gophercloud.ServiceClient) pagination.Pager { } // Get returns data about a previously created Network. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/tenantnetworks/testing/requests_test.go b/openstack/compute/v2/extensions/tenantnetworks/testing/requests_test.go index a5427e930b..092c391aca 100644 --- a/openstack/compute/v2/extensions/tenantnetworks/testing/requests_test.go +++ b/openstack/compute/v2/extensions/tenantnetworks/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/tenantnetworks" @@ -15,7 +16,7 @@ func TestList(t *testing.T) { HandleListSuccessfully(t) count := 0 - err := tenantnetworks.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := tenantnetworks.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := tenantnetworks.ExtractNetworks(page) th.AssertNoErr(t, err) @@ -32,7 +33,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t) - actual, err := tenantnetworks.Get(client.ServiceClient(), "20c8acc0-f747-4d71-a389-46d078ebf000").Extract() + actual, err := tenantnetworks.Get(context.TODO(), client.ServiceClient(), "20c8acc0-f747-4d71-a389-46d078ebf000").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &SecondNetwork, actual) } diff --git a/openstack/compute/v2/extensions/testing/delegate_test.go b/openstack/compute/v2/extensions/testing/delegate_test.go index b776a66e6e..c0897a16c7 100644 --- a/openstack/compute/v2/extensions/testing/delegate_test.go +++ b/openstack/compute/v2/extensions/testing/delegate_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" common "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" @@ -17,7 +18,7 @@ func TestList(t *testing.T) { HandleListExtensionsSuccessfully(t) count := 0 - extensions.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + extensions.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := extensions.ExtractExtensions(page) th.AssertNoErr(t, err) @@ -45,7 +46,7 @@ func TestGet(t *testing.T) { HandleGetExtensionsSuccessfully(t) - ext, err := extensions.Get(client.ServiceClient(), "agent").Extract() + ext, err := extensions.Get(context.TODO(), client.ServiceClient(), "agent").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ext.Updated, "2013-02-03T10:00:00-00:00") diff --git a/openstack/compute/v2/extensions/usage/testing/requests_test.go b/openstack/compute/v2/extensions/usage/testing/requests_test.go index 464b650507..2aeab1199c 100644 --- a/openstack/compute/v2/extensions/usage/testing/requests_test.go +++ b/openstack/compute/v2/extensions/usage/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/usage" @@ -15,7 +16,7 @@ func TestGetTenant(t *testing.T) { HandleGetSingleTenantSuccessfully(t) count := 0 - err := usage.SingleTenant(client.ServiceClient(), FirstTenantID, nil).EachPage(func(page pagination.Page) (bool, error) { + err := usage.SingleTenant(client.ServiceClient(), FirstTenantID, nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := usage.ExtractSingleTenant(page) @@ -38,7 +39,7 @@ func TestAllTenants(t *testing.T) { } count := 0 - err := usage.AllTenants(client.ServiceClient(), getOpts).EachPage(func(page pagination.Page) (bool, error) { + err := usage.AllTenants(client.ServiceClient(), getOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := usage.ExtractAllTenants(page) diff --git a/openstack/compute/v2/extensions/volumeattach/requests.go b/openstack/compute/v2/extensions/volumeattach/requests.go index 09d5eb529f..12b70aae68 100644 --- a/openstack/compute/v2/extensions/volumeattach/requests.go +++ b/openstack/compute/v2/extensions/volumeattach/requests.go @@ -1,6 +1,8 @@ package volumeattach import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -42,13 +44,13 @@ func (opts CreateOpts) ToVolumeAttachmentCreateMap() (map[string]interface{}, er } // Create requests the creation of a new volume attachment on the server. -func Create(client *gophercloud.ServiceClient, serverID string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, serverID string, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToVolumeAttachmentCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client, serverID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client, serverID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -56,16 +58,16 @@ func Create(client *gophercloud.ServiceClient, serverID string, opts CreateOptsB } // Get returns public data about a previously created VolumeAttachment. -func Get(client *gophercloud.ServiceClient, serverID, attachmentID string) (r GetResult) { - resp, err := client.Get(getURL(client, serverID, attachmentID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, serverID, attachmentID string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, serverID, attachmentID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete requests the deletion of a previous stored VolumeAttachment from // the server. -func Delete(client *gophercloud.ServiceClient, serverID, attachmentID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, serverID, attachmentID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, serverID, attachmentID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, serverID, attachmentID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/extensions/volumeattach/testing/requests_test.go b/openstack/compute/v2/extensions/volumeattach/testing/requests_test.go index 79e5913e68..1d0884a073 100644 --- a/openstack/compute/v2/extensions/volumeattach/testing/requests_test.go +++ b/openstack/compute/v2/extensions/volumeattach/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/compute/v2/extensions/volumeattach" @@ -51,7 +52,7 @@ func TestList(t *testing.T) { serverID := "4d8c3732-a248-40ed-bebc-539a6ffd25c0" count := 0 - err := volumeattach.List(client.ServiceClient(), serverID).EachPage(func(page pagination.Page) (bool, error) { + err := volumeattach.List(client.ServiceClient(), serverID).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := volumeattach.ExtractVolumeAttachments(page) th.AssertNoErr(t, err) @@ -71,7 +72,7 @@ func TestCreate(t *testing.T) { serverID := "4d8c3732-a248-40ed-bebc-539a6ffd25c0" - actual, err := volumeattach.Create(client.ServiceClient(), serverID, volumeattach.CreateOpts{ + actual, err := volumeattach.Create(context.TODO(), client.ServiceClient(), serverID, volumeattach.CreateOpts{ Device: "/dev/vdc", VolumeID: "a26887c6-c47b-4654-abb5-dfadf7d3f804", Tag: iTag, @@ -90,7 +91,7 @@ func TestGet(t *testing.T) { aID := "a26887c6-c47b-4654-abb5-dfadf7d3f804" serverID := "4d8c3732-a248-40ed-bebc-539a6ffd25c0" - actual, err := volumeattach.Get(client.ServiceClient(), serverID, aID).Extract() + actual, err := volumeattach.Get(context.TODO(), client.ServiceClient(), serverID, aID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &SecondVolumeAttachment, actual) } @@ -104,6 +105,6 @@ func TestDelete(t *testing.T) { aID := "a26887c6-c47b-4654-abb5-dfadf7d3f804" serverID := "4d8c3732-a248-40ed-bebc-539a6ffd25c0" - err := volumeattach.Delete(client.ServiceClient(), serverID, aID).ExtractErr() + err := volumeattach.Delete(context.TODO(), client.ServiceClient(), serverID, aID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/compute/v2/flavors/requests.go b/openstack/compute/v2/flavors/requests.go index 8694977be9..26bc4f71a8 100644 --- a/openstack/compute/v2/flavors/requests.go +++ b/openstack/compute/v2/flavors/requests.go @@ -1,6 +1,8 @@ package flavors import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -141,13 +143,13 @@ func (opts CreateOpts) ToFlavorCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new flavor. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToFlavorCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -172,13 +174,13 @@ func (opts UpdateOpts) ToFlavorUpdateMap() (map[string]interface{}, error) { } // Update requests the update of a new flavor. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToFlavorUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -187,15 +189,15 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder // Get retrieves details of a single flavor. Use Extract to convert its // result into a Flavor. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete deletes the specified flavor ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -227,13 +229,13 @@ func (opts AddAccessOpts) ToFlavorAddAccessMap() (map[string]interface{}, error) } // AddAccess grants a tenant/project access to a flavor. -func AddAccess(client *gophercloud.ServiceClient, id string, opts AddAccessOptsBuilder) (r AddAccessResult) { +func AddAccess(ctx context.Context, client *gophercloud.ServiceClient, id string, opts AddAccessOptsBuilder) (r AddAccessResult) { b, err := opts.ToFlavorAddAccessMap() if err != nil { r.Err = err return } - resp, err := client.Post(accessActionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, accessActionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -258,13 +260,13 @@ func (opts RemoveAccessOpts) ToFlavorRemoveAccessMap() (map[string]interface{}, } // RemoveAccess removes/revokes a tenant/project access to a flavor. -func RemoveAccess(client *gophercloud.ServiceClient, id string, opts RemoveAccessOptsBuilder) (r RemoveAccessResult) { +func RemoveAccess(ctx context.Context, client *gophercloud.ServiceClient, id string, opts RemoveAccessOptsBuilder) (r RemoveAccessResult) { b, err := opts.ToFlavorRemoveAccessMap() if err != nil { r.Err = err return } - resp, err := client.Post(accessActionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, accessActionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -272,14 +274,14 @@ func RemoveAccess(client *gophercloud.ServiceClient, id string, opts RemoveAcces } // ExtraSpecs requests all the extra-specs for the given flavor ID. -func ListExtraSpecs(client *gophercloud.ServiceClient, flavorID string) (r ListExtraSpecsResult) { - resp, err := client.Get(extraSpecsListURL(client, flavorID), &r.Body, nil) +func ListExtraSpecs(ctx context.Context, client *gophercloud.ServiceClient, flavorID string) (r ListExtraSpecsResult) { + resp, err := client.Get(ctx, extraSpecsListURL(client, flavorID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -func GetExtraSpec(client *gophercloud.ServiceClient, flavorID string, key string) (r GetExtraSpecResult) { - resp, err := client.Get(extraSpecsGetURL(client, flavorID, key), &r.Body, nil) +func GetExtraSpec(ctx context.Context, client *gophercloud.ServiceClient, flavorID string, key string) (r GetExtraSpecResult) { + resp, err := client.Get(ctx, extraSpecsGetURL(client, flavorID, key), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -301,13 +303,13 @@ func (opts ExtraSpecsOpts) ToFlavorExtraSpecsCreateMap() (map[string]interface{} // CreateExtraSpecs will create or update the extra-specs key-value pairs for // the specified Flavor. -func CreateExtraSpecs(client *gophercloud.ServiceClient, flavorID string, opts CreateExtraSpecsOptsBuilder) (r CreateExtraSpecsResult) { +func CreateExtraSpecs(ctx context.Context, client *gophercloud.ServiceClient, flavorID string, opts CreateExtraSpecsOptsBuilder) (r CreateExtraSpecsResult) { b, err := opts.ToFlavorExtraSpecsCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(extraSpecsCreateURL(client, flavorID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, extraSpecsCreateURL(client, flavorID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -340,13 +342,13 @@ func (opts ExtraSpecsOpts) ToFlavorExtraSpecUpdateMap() (map[string]string, stri // UpdateExtraSpec will updates the value of the specified flavor's extra spec // for the key in opts. -func UpdateExtraSpec(client *gophercloud.ServiceClient, flavorID string, opts UpdateExtraSpecOptsBuilder) (r UpdateExtraSpecResult) { +func UpdateExtraSpec(ctx context.Context, client *gophercloud.ServiceClient, flavorID string, opts UpdateExtraSpecOptsBuilder) (r UpdateExtraSpecResult) { b, key, err := opts.ToFlavorExtraSpecUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(extraSpecUpdateURL(client, flavorID, key), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, extraSpecUpdateURL(client, flavorID, key), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -355,8 +357,8 @@ func UpdateExtraSpec(client *gophercloud.ServiceClient, flavorID string, opts Up // DeleteExtraSpec will delete the key-value pair with the given key for the given // flavor ID. -func DeleteExtraSpec(client *gophercloud.ServiceClient, flavorID, key string) (r DeleteExtraSpecResult) { - resp, err := client.Delete(extraSpecDeleteURL(client, flavorID, key), &gophercloud.RequestOpts{ +func DeleteExtraSpec(ctx context.Context, client *gophercloud.ServiceClient, flavorID, key string) (r DeleteExtraSpecResult) { + resp, err := client.Delete(ctx, extraSpecDeleteURL(client, flavorID, key), &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/compute/v2/flavors/testing/requests_test.go b/openstack/compute/v2/flavors/testing/requests_test.go index 7608832c13..fa328680eb 100644 --- a/openstack/compute/v2/flavors/testing/requests_test.go +++ b/openstack/compute/v2/flavors/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "reflect" @@ -83,7 +84,7 @@ func TestListFlavors(t *testing.T) { pages := 0 // Get public and private flavors - err := flavors.ListDetail(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := flavors.ListDetail(fake.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := flavors.ExtractFlavors(page) @@ -139,7 +140,7 @@ func TestGetFlavor(t *testing.T) { `) }) - actual, err := flavors.Get(fake.ServiceClient(), "12345").Extract() + actual, err := flavors.Get(context.TODO(), fake.ServiceClient(), "12345").Extract() if err != nil { t.Fatalf("Unable to get flavor: %v", err) } @@ -195,7 +196,7 @@ func TestCreateFlavor(t *testing.T) { RxTxFactor: 1.0, Description: "foo", } - actual, err := flavors.Create(fake.ServiceClient(), opts).Extract() + actual, err := flavors.Create(context.TODO(), fake.ServiceClient(), opts).Extract() if err != nil { t.Fatalf("Unable to create flavor: %v", err) } @@ -243,7 +244,7 @@ func TestUpdateFlavor(t *testing.T) { opts := &flavors.UpdateOpts{ Description: "foo", } - actual, err := flavors.Update(fake.ServiceClient(), "12345678", opts).Extract() + actual, err := flavors.Update(context.TODO(), fake.ServiceClient(), "12345678", opts).Extract() if err != nil { t.Fatalf("Unable to update flavor: %v", err) } @@ -275,7 +276,7 @@ func TestDeleteFlavor(t *testing.T) { w.WriteHeader(http.StatusAccepted) }) - res := flavors.Delete(fake.ServiceClient(), "12345678") + res := flavors.Delete(context.TODO(), fake.ServiceClient(), "12345678") th.AssertNoErr(t, res.Err) } @@ -306,7 +307,7 @@ func TestFlavorAccessesList(t *testing.T) { }, } - allPages, err := flavors.ListAccesses(fake.ServiceClient(), "12345678").AllPages() + allPages, err := flavors.ListAccesses(fake.ServiceClient(), "12345678").AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := flavors.ExtractAccesses(allPages) @@ -358,7 +359,7 @@ func TestFlavorAccessAdd(t *testing.T) { Tenant: "2f954bcf047c4ee9b09a37d49ae6db54", } - actual, err := flavors.AddAccess(fake.ServiceClient(), "12345678", addAccessOpts).Extract() + actual, err := flavors.AddAccess(context.TODO(), fake.ServiceClient(), "12345678", addAccessOpts).Extract() th.AssertNoErr(t, err) if !reflect.DeepEqual(expected, actual) { @@ -396,7 +397,7 @@ func TestFlavorAccessRemove(t *testing.T) { Tenant: "2f954bcf047c4ee9b09a37d49ae6db54", } - actual, err := flavors.RemoveAccess(fake.ServiceClient(), "12345678", removeAccessOpts).Extract() + actual, err := flavors.RemoveAccess(context.TODO(), fake.ServiceClient(), "12345678", removeAccessOpts).Extract() th.AssertNoErr(t, err) if !reflect.DeepEqual(expected, actual) { @@ -410,7 +411,7 @@ func TestFlavorExtraSpecsList(t *testing.T) { HandleExtraSpecsListSuccessfully(t) expected := ExtraSpecs - actual, err := flavors.ListExtraSpecs(fake.ServiceClient(), "1").Extract() + actual, err := flavors.ListExtraSpecs(context.TODO(), fake.ServiceClient(), "1").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expected, actual) } @@ -421,7 +422,7 @@ func TestFlavorExtraSpecGet(t *testing.T) { HandleExtraSpecGetSuccessfully(t) expected := ExtraSpec - actual, err := flavors.GetExtraSpec(fake.ServiceClient(), "1", "hw:cpu_policy").Extract() + actual, err := flavors.GetExtraSpec(context.TODO(), fake.ServiceClient(), "1", "hw:cpu_policy").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expected, actual) } @@ -436,7 +437,7 @@ func TestFlavorExtraSpecsCreate(t *testing.T) { "hw:cpu_thread_policy": "CPU-THREAD-POLICY", } expected := ExtraSpecs - actual, err := flavors.CreateExtraSpecs(fake.ServiceClient(), "1", createOpts).Extract() + actual, err := flavors.CreateExtraSpecs(context.TODO(), fake.ServiceClient(), "1", createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expected, actual) } @@ -450,7 +451,7 @@ func TestFlavorExtraSpecUpdate(t *testing.T) { "hw:cpu_policy": "CPU-POLICY-2", } expected := UpdatedExtraSpec - actual, err := flavors.UpdateExtraSpec(fake.ServiceClient(), "1", updateOpts).Extract() + actual, err := flavors.UpdateExtraSpec(context.TODO(), fake.ServiceClient(), "1", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expected, actual) } @@ -460,6 +461,6 @@ func TestFlavorExtraSpecDelete(t *testing.T) { defer th.TeardownHTTP() HandleExtraSpecDeleteSuccessfully(t) - res := flavors.DeleteExtraSpec(fake.ServiceClient(), "1", "hw:cpu_policy") + res := flavors.DeleteExtraSpec(context.TODO(), fake.ServiceClient(), "1", "hw:cpu_policy") th.AssertNoErr(t, res.Err) } diff --git a/openstack/compute/v2/images/requests.go b/openstack/compute/v2/images/requests.go index 6cfbdb43ed..ac93d6de61 100644 --- a/openstack/compute/v2/images/requests.go +++ b/openstack/compute/v2/images/requests.go @@ -1,6 +1,8 @@ package images import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -58,15 +60,15 @@ func ListDetail(client *gophercloud.ServiceClient, opts ListOptsBuilder) paginat } // Get returns data about a specific image by its ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete deletes the specified image ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/compute/v2/images/testing/requests_test.go b/openstack/compute/v2/images/testing/requests_test.go index 3cf546fa4c..91bc4da6cd 100644 --- a/openstack/compute/v2/images/testing/requests_test.go +++ b/openstack/compute/v2/images/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "encoding/json" "fmt" "net/http" @@ -72,7 +73,7 @@ func TestListImages(t *testing.T) { pages := 0 options := &images.ListOpts{Limit: 2} - err := images.ListDetail(fake.ServiceClient(), options).EachPage(func(page pagination.Page) (bool, error) { + err := images.ListDetail(fake.ServiceClient(), options).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := images.ExtractImages(page) @@ -162,7 +163,7 @@ func TestGetImage(t *testing.T) { `) }) - actual, err := images.Get(fake.ServiceClient(), "12345678").Extract() + actual, err := images.Get(context.TODO(), fake.ServiceClient(), "12345678").Extract() if err != nil { t.Fatalf("Unexpected error from Get: %v", err) } @@ -220,6 +221,6 @@ func TestDeleteImage(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := images.Delete(fake.ServiceClient(), "12345678") + res := images.Delete(context.TODO(), fake.ServiceClient(), "12345678") th.AssertNoErr(t, res.Err) } diff --git a/openstack/compute/v2/servers/requests.go b/openstack/compute/v2/servers/requests.go index 5155f5dd40..df2df35ce0 100644 --- a/openstack/compute/v2/servers/requests.go +++ b/openstack/compute/v2/servers/requests.go @@ -1,6 +1,7 @@ package servers import ( + "context" "encoding/base64" "encoding/json" "fmt" @@ -309,35 +310,35 @@ func (opts CreateOpts) ToServerCreateMap() (map[string]interface{}, error) { } // Create requests a server to be provisioned to the user in the current tenant. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { reqBody, err := opts.ToServerCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(listURL(client), reqBody, &r.Body, nil) + resp, err := client.Post(ctx, listURL(client), reqBody, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete requests that a server previously provisioned be removed from your // account. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // ForceDelete forces the deletion of a server. -func ForceDelete(client *gophercloud.ServiceClient, id string) (r ActionResult) { - resp, err := client.Post(actionURL(client, id), map[string]interface{}{"forceDelete": ""}, nil, nil) +func ForceDelete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ActionResult) { + resp, err := client.Post(ctx, actionURL(client, id), map[string]interface{}{"forceDelete": ""}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get requests details on a single server, by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 203}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -371,13 +372,13 @@ func (opts UpdateOpts) ToServerUpdateMap() (map[string]interface{}, error) { } // Update requests that various attributes of the indicated server be changed. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToServerUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -386,13 +387,13 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder // ChangeAdminPassword alters the administrator or root password for a specified // server. -func ChangeAdminPassword(client *gophercloud.ServiceClient, id, newPassword string) (r ActionResult) { +func ChangeAdminPassword(ctx context.Context, client *gophercloud.ServiceClient, id, newPassword string) (r ActionResult) { b := map[string]interface{}{ "changePassword": map[string]string{ "adminPass": newPassword, }, } - resp, err := client.Post(actionURL(client, id), b, nil, nil) + resp, err := client.Post(ctx, actionURL(client, id), b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -441,13 +442,13 @@ procedure. E.g., in Linux, asking it to enter runlevel 6, or executing "sudo shutdown -r now", or by asking Windows to rtart the machine. */ -func Reboot(client *gophercloud.ServiceClient, id string, opts RebootOptsBuilder) (r ActionResult) { +func Reboot(ctx context.Context, client *gophercloud.ServiceClient, id string, opts RebootOptsBuilder) (r ActionResult) { b, err := opts.ToServerRebootMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, nil) + resp, err := client.Post(ctx, actionURL(client, id), b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -497,13 +498,13 @@ func (opts RebuildOpts) ToServerRebuildMap() (map[string]interface{}, error) { // Rebuild will reprovision the server according to the configuration options // provided in the RebuildOpts struct. -func Rebuild(client *gophercloud.ServiceClient, id string, opts RebuildOptsBuilder) (r RebuildResult) { +func Rebuild(ctx context.Context, client *gophercloud.ServiceClient, id string, opts RebuildOptsBuilder) (r RebuildResult) { b, err := opts.ToServerRebuildMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, nil) + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -536,21 +537,21 @@ func (opts ResizeOpts) ToServerResizeMap() (map[string]interface{}, error) { // While in this state, you can explore the use of the new server's // configuration. If you like it, call ConfirmResize() to commit the resize // permanently. Otherwise, call RevertResize() to restore the old configuration. -func Resize(client *gophercloud.ServiceClient, id string, opts ResizeOptsBuilder) (r ActionResult) { +func Resize(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ResizeOptsBuilder) (r ActionResult) { b, err := opts.ToServerResizeMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, nil) + resp, err := client.Post(ctx, actionURL(client, id), b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // ConfirmResize confirms a previous resize operation on a server. // See Resize() for more details. -func ConfirmResize(client *gophercloud.ServiceClient, id string) (r ActionResult) { - resp, err := client.Post(actionURL(client, id), map[string]interface{}{"confirmResize": nil}, nil, &gophercloud.RequestOpts{ +func ConfirmResize(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ActionResult) { + resp, err := client.Post(ctx, actionURL(client, id), map[string]interface{}{"confirmResize": nil}, nil, &gophercloud.RequestOpts{ OkCodes: []int{201, 202, 204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -559,8 +560,8 @@ func ConfirmResize(client *gophercloud.ServiceClient, id string) (r ActionResult // RevertResize cancels a previous resize operation on a server. // See Resize() for more details. -func RevertResize(client *gophercloud.ServiceClient, id string) (r ActionResult) { - resp, err := client.Post(actionURL(client, id), map[string]interface{}{"revertResize": nil}, nil, nil) +func RevertResize(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ActionResult) { + resp, err := client.Post(ctx, actionURL(client, id), map[string]interface{}{"revertResize": nil}, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -591,13 +592,13 @@ func (opts MetadataOpts) ToMetadataUpdateMap() (map[string]interface{}, error) { // Note: Using this operation will erase any already-existing metadata and // create the new metadata provided. To keep any already-existing metadata, // use the UpdateMetadatas or UpdateMetadata function. -func ResetMetadata(client *gophercloud.ServiceClient, id string, opts ResetMetadataOptsBuilder) (r ResetMetadataResult) { +func ResetMetadata(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ResetMetadataOptsBuilder) (r ResetMetadataResult) { b, err := opts.ToMetadataResetMap() if err != nil { r.Err = err return } - resp, err := client.Put(metadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, metadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -605,8 +606,8 @@ func ResetMetadata(client *gophercloud.ServiceClient, id string, opts ResetMetad } // Metadata requests all the metadata for the given server ID. -func Metadata(client *gophercloud.ServiceClient, id string) (r GetMetadataResult) { - resp, err := client.Get(metadataURL(client, id), &r.Body, nil) +func Metadata(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetMetadataResult) { + resp, err := client.Get(ctx, metadataURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -620,13 +621,13 @@ type UpdateMetadataOptsBuilder interface { // UpdateMetadata updates (or creates) all the metadata specified by opts for // the given server ID. This operation does not affect already-existing metadata // that is not specified by opts. -func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) (r UpdateMetadataResult) { +func UpdateMetadata(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) (r UpdateMetadataResult) { b, err := opts.ToMetadataUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Post(metadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, metadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -661,13 +662,13 @@ func (opts MetadatumOpts) ToMetadatumCreateMap() (map[string]interface{}, string // CreateMetadatum will create or update the key-value pair with the given key // for the given server ID. -func CreateMetadatum(client *gophercloud.ServiceClient, id string, opts MetadatumOptsBuilder) (r CreateMetadatumResult) { +func CreateMetadatum(ctx context.Context, client *gophercloud.ServiceClient, id string, opts MetadatumOptsBuilder) (r CreateMetadatumResult) { b, key, err := opts.ToMetadatumCreateMap() if err != nil { r.Err = err return } - resp, err := client.Put(metadatumURL(client, id, key), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, metadatumURL(client, id, key), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -676,16 +677,16 @@ func CreateMetadatum(client *gophercloud.ServiceClient, id string, opts Metadatu // Metadatum requests the key-value pair with the given key for the given // server ID. -func Metadatum(client *gophercloud.ServiceClient, id, key string) (r GetMetadatumResult) { - resp, err := client.Get(metadatumURL(client, id, key), &r.Body, nil) +func Metadatum(ctx context.Context, client *gophercloud.ServiceClient, id, key string) (r GetMetadatumResult) { + resp, err := client.Get(ctx, metadatumURL(client, id, key), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // DeleteMetadatum will delete the key-value pair with the given key for the // given server ID. -func DeleteMetadatum(client *gophercloud.ServiceClient, id, key string) (r DeleteMetadatumResult) { - resp, err := client.Delete(metadatumURL(client, id, key), nil) +func DeleteMetadatum(ctx context.Context, client *gophercloud.ServiceClient, id, key string) (r DeleteMetadatumResult) { + resp, err := client.Delete(ctx, metadatumURL(client, id, key), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -730,13 +731,13 @@ func (opts CreateImageOpts) ToServerCreateImageMap() (map[string]interface{}, er // CreateImage makes a request against the nova API to schedule an image to be // created of the server -func CreateImage(client *gophercloud.ServiceClient, id string, opts CreateImageOptsBuilder) (r CreateImageResult) { +func CreateImage(ctx context.Context, client *gophercloud.ServiceClient, id string, opts CreateImageOptsBuilder) (r CreateImageResult) { b, err := opts.ToServerCreateImageMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -745,8 +746,8 @@ func CreateImage(client *gophercloud.ServiceClient, id string, opts CreateImageO // GetPassword makes a request against the nova API to get the encrypted // administrative password. -func GetPassword(client *gophercloud.ServiceClient, serverId string) (r GetPasswordResult) { - resp, err := client.Get(passwordURL(client, serverId), &r.Body, nil) +func GetPassword(ctx context.Context, client *gophercloud.ServiceClient, serverId string) (r GetPasswordResult) { + resp, err := client.Get(ctx, passwordURL(client, serverId), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -770,13 +771,13 @@ func (opts ShowConsoleOutputOpts) ToServerShowConsoleOutputMap() (map[string]int } // ShowConsoleOutput makes a request against the nova API to get console log from the server -func ShowConsoleOutput(client *gophercloud.ServiceClient, id string, opts ShowConsoleOutputOptsBuilder) (r ShowConsoleOutputResult) { +func ShowConsoleOutput(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ShowConsoleOutputOptsBuilder) (r ShowConsoleOutputResult) { b, err := opts.ToServerShowConsoleOutputMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/compute/v2/servers/testing/requests_test.go b/openstack/compute/v2/servers/testing/requests_test.go index 745bf13685..19868ca3bd 100644 --- a/openstack/compute/v2/servers/testing/requests_test.go +++ b/openstack/compute/v2/servers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "encoding/base64" "encoding/json" "net/http" @@ -21,7 +22,7 @@ func TestListServers(t *testing.T) { HandleServerListSuccessfully(t) pages := 0 - err := servers.List(client.ServiceClient(), servers.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := servers.List(client.ServiceClient(), servers.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := servers.ExtractServers(page) @@ -51,7 +52,7 @@ func TestListAllServers(t *testing.T) { defer th.TeardownHTTP() HandleServerListSimpleSuccessfully(t) - allPages, err := servers.ListSimple(client.ServiceClient(), servers.ListOpts{}).AllPages() + allPages, err := servers.ListSimple(client.ServiceClient(), servers.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := servers.ExtractServers(allPages) th.AssertNoErr(t, err) @@ -71,7 +72,7 @@ func TestListAllServersWithExtensions(t *testing.T) { diskconfig.ServerDiskConfigExt } - allPages, err := servers.List(client.ServiceClient(), servers.ListOpts{}).AllPages() + allPages, err := servers.List(client.ServiceClient(), servers.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) var actual []ServerWithExt @@ -90,7 +91,7 @@ func TestCreateServer(t *testing.T) { defer th.TeardownHTTP() HandleServerCreationSuccessfully(t, SingleServerBody) - actual, err := servers.Create(client.ServiceClient(), servers.CreateOpts{ + actual, err := servers.Create(context.TODO(), client.ServiceClient(), servers.CreateOpts{ Name: "derp", ImageRef: "f90f6034-2570-4974-8351-6b49732ef2eb", FlavorRef: "1", @@ -105,7 +106,7 @@ func TestCreateServerNoNetwork(t *testing.T) { defer th.TeardownHTTP() HandleServerNoNetworkCreationSuccessfully(t, SingleServerBody) - actual, err := servers.Create(client.ServiceClient(), servers.CreateOpts{ + actual, err := servers.Create(context.TODO(), client.ServiceClient(), servers.CreateOpts{ Name: "derp", ImageRef: "f90f6034-2570-4974-8351-6b49732ef2eb", FlavorRef: "1", @@ -121,7 +122,7 @@ func TestCreateServers(t *testing.T) { defer th.TeardownHTTP() HandleServersCreationSuccessfully(t, SingleServerBody) - actual, err := servers.Create(client.ServiceClient(), servers.CreateOpts{ + actual, err := servers.Create(context.TODO(), client.ServiceClient(), servers.CreateOpts{ Name: "derp", ImageRef: "f90f6034-2570-4974-8351-6b49732ef2eb", FlavorRef: "1", @@ -138,7 +139,7 @@ func TestCreateServerWithCustomField(t *testing.T) { defer th.TeardownHTTP() HandleServerCreationWithCustomFieldSuccessfully(t, SingleServerBody) - actual, err := servers.Create(client.ServiceClient(), CreateOptsWithCustomField{ + actual, err := servers.Create(context.TODO(), client.ServiceClient(), CreateOptsWithCustomField{ CreateOpts: servers.CreateOpts{ Name: "derp", ImageRef: "f90f6034-2570-4974-8351-6b49732ef2eb", @@ -156,7 +157,7 @@ func TestCreateServerWithMetadata(t *testing.T) { defer th.TeardownHTTP() HandleServerCreationWithMetadata(t, SingleServerBody) - actual, err := servers.Create(client.ServiceClient(), servers.CreateOpts{ + actual, err := servers.Create(context.TODO(), client.ServiceClient(), servers.CreateOpts{ Name: "derp", ImageRef: "f90f6034-2570-4974-8351-6b49732ef2eb", FlavorRef: "1", @@ -174,7 +175,7 @@ func TestCreateServerWithUserdataString(t *testing.T) { defer th.TeardownHTTP() HandleServerCreationWithUserdata(t, SingleServerBody) - actual, err := servers.Create(client.ServiceClient(), servers.CreateOpts{ + actual, err := servers.Create(context.TODO(), client.ServiceClient(), servers.CreateOpts{ Name: "derp", ImageRef: "f90f6034-2570-4974-8351-6b49732ef2eb", FlavorRef: "1", @@ -192,7 +193,7 @@ func TestCreateServerWithUserdataEncoded(t *testing.T) { encoded := base64.StdEncoding.EncodeToString([]byte("userdata string")) - actual, err := servers.Create(client.ServiceClient(), servers.CreateOpts{ + actual, err := servers.Create(context.TODO(), client.ServiceClient(), servers.CreateOpts{ Name: "derp", ImageRef: "f90f6034-2570-4974-8351-6b49732ef2eb", FlavorRef: "1", @@ -208,7 +209,7 @@ func TestDeleteServer(t *testing.T) { defer th.TeardownHTTP() HandleServerDeletionSuccessfully(t) - res := servers.Delete(client.ServiceClient(), "asdfasdfasdf") + res := servers.Delete(context.TODO(), client.ServiceClient(), "asdfasdfasdf") th.AssertNoErr(t, res.Err) } @@ -217,7 +218,7 @@ func TestForceDeleteServer(t *testing.T) { defer th.TeardownHTTP() HandleServerForceDeletionSuccessfully(t) - res := servers.ForceDelete(client.ServiceClient(), "asdfasdfasdf") + res := servers.ForceDelete(context.TODO(), client.ServiceClient(), "asdfasdfasdf") th.AssertNoErr(t, res.Err) } @@ -227,7 +228,7 @@ func TestGetServer(t *testing.T) { HandleServerGetSuccessfully(t) client := client.ServiceClient() - actual, err := servers.Get(client, "1234asdf").Extract() + actual, err := servers.Get(context.TODO(), client, "1234asdf").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -241,7 +242,7 @@ func TestGetFaultyServer(t *testing.T) { HandleServerGetFaultSuccessfully(t) client := client.ServiceClient() - actual, err := servers.Get(client, "1234asdf").Extract() + actual, err := servers.Get(context.TODO(), client, "1234asdf").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -263,7 +264,7 @@ func TestGetServerWithExtensions(t *testing.T) { diskconfig.ServerDiskConfigExt } - err := servers.Get(client.ServiceClient(), "1234asdf").ExtractInto(&s) + err := servers.Get(context.TODO(), client.ServiceClient(), "1234asdf").ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "nova", s.AvailabilityZone) th.AssertEquals(t, "RUNNING", s.PowerState.String()) @@ -271,7 +272,7 @@ func TestGetServerWithExtensions(t *testing.T) { th.AssertEquals(t, "active", s.VmState) th.AssertEquals(t, diskconfig.Manual, s.DiskConfig) - err = servers.Get(client.ServiceClient(), "1234asdf").ExtractInto(s) + err = servers.Get(context.TODO(), client.ServiceClient(), "1234asdf").ExtractInto(s) if err == nil { t.Errorf("Expected error when providing non-pointer struct") } @@ -283,7 +284,7 @@ func TestUpdateServer(t *testing.T) { HandleServerUpdateSuccessfully(t) client := client.ServiceClient() - actual, err := servers.Update(client, "1234asdf", servers.UpdateOpts{Name: "new-name"}).Extract() + actual, err := servers.Update(context.TODO(), client, "1234asdf", servers.UpdateOpts{Name: "new-name"}).Extract() if err != nil { t.Fatalf("Unexpected Update error: %v", err) } @@ -296,7 +297,7 @@ func TestChangeServerAdminPassword(t *testing.T) { defer th.TeardownHTTP() HandleAdminPasswordChangeSuccessfully(t) - res := servers.ChangeAdminPassword(client.ServiceClient(), "1234asdf", "new-password") + res := servers.ChangeAdminPassword(context.TODO(), client.ServiceClient(), "1234asdf", "new-password") th.AssertNoErr(t, res.Err) } @@ -308,7 +309,7 @@ func TestShowConsoleOutput(t *testing.T) { outputOpts := &servers.ShowConsoleOutputOpts{ Length: 50, } - actual, err := servers.ShowConsoleOutput(client.ServiceClient(), "1234asdf", outputOpts).Extract() + actual, err := servers.ShowConsoleOutput(context.TODO(), client.ServiceClient(), "1234asdf", outputOpts).Extract() th.AssertNoErr(t, err) th.AssertByteArrayEquals(t, []byte(ConsoleOutput), []byte(actual)) @@ -319,7 +320,7 @@ func TestGetPassword(t *testing.T) { defer th.TeardownHTTP() HandlePasswordGetSuccessfully(t) - res := servers.GetPassword(client.ServiceClient(), "1234asdf") + res := servers.GetPassword(context.TODO(), client.ServiceClient(), "1234asdf") th.AssertNoErr(t, res.Err) } @@ -328,7 +329,7 @@ func TestRebootServer(t *testing.T) { defer th.TeardownHTTP() HandleRebootSuccessfully(t) - res := servers.Reboot(client.ServiceClient(), "1234asdf", servers.RebootOpts{ + res := servers.Reboot(context.TODO(), client.ServiceClient(), "1234asdf", servers.RebootOpts{ Type: servers.SoftReboot, }) th.AssertNoErr(t, res.Err) @@ -346,7 +347,7 @@ func TestRebuildServer(t *testing.T) { AccessIPv4: "1.2.3.4", } - actual, err := servers.Rebuild(client.ServiceClient(), "1234asdf", opts).Extract() + actual, err := servers.Rebuild(context.TODO(), client.ServiceClient(), "1234asdf", opts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, ServerDerp, *actual) @@ -364,7 +365,7 @@ func TestResizeServer(t *testing.T) { w.WriteHeader(http.StatusAccepted) }) - res := servers.Resize(client.ServiceClient(), "1234asdf", servers.ResizeOpts{FlavorRef: "2"}) + res := servers.Resize(context.TODO(), client.ServiceClient(), "1234asdf", servers.ResizeOpts{FlavorRef: "2"}) th.AssertNoErr(t, res.Err) } @@ -380,7 +381,7 @@ func TestConfirmResize(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := servers.ConfirmResize(client.ServiceClient(), "1234asdf") + res := servers.ConfirmResize(context.TODO(), client.ServiceClient(), "1234asdf") th.AssertNoErr(t, res.Err) } @@ -396,7 +397,7 @@ func TestRevertResize(t *testing.T) { w.WriteHeader(http.StatusAccepted) }) - res := servers.RevertResize(client.ServiceClient(), "1234asdf") + res := servers.RevertResize(context.TODO(), client.ServiceClient(), "1234asdf") th.AssertNoErr(t, res.Err) } @@ -407,7 +408,7 @@ func TestGetMetadatum(t *testing.T) { HandleMetadatumGetSuccessfully(t) expected := map[string]string{"foo": "bar"} - actual, err := servers.Metadatum(client.ServiceClient(), "1234asdf", "foo").Extract() + actual, err := servers.Metadatum(context.TODO(), client.ServiceClient(), "1234asdf", "foo").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expected, actual) } @@ -419,7 +420,7 @@ func TestCreateMetadatum(t *testing.T) { HandleMetadatumCreateSuccessfully(t) expected := map[string]string{"foo": "bar"} - actual, err := servers.CreateMetadatum(client.ServiceClient(), "1234asdf", servers.MetadatumOpts{"foo": "bar"}).Extract() + actual, err := servers.CreateMetadatum(context.TODO(), client.ServiceClient(), "1234asdf", servers.MetadatumOpts{"foo": "bar"}).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expected, actual) } @@ -430,7 +431,7 @@ func TestDeleteMetadatum(t *testing.T) { HandleMetadatumDeleteSuccessfully(t) - err := servers.DeleteMetadatum(client.ServiceClient(), "1234asdf", "foo").ExtractErr() + err := servers.DeleteMetadatum(context.TODO(), client.ServiceClient(), "1234asdf", "foo").ExtractErr() th.AssertNoErr(t, err) } @@ -441,7 +442,7 @@ func TestGetMetadata(t *testing.T) { HandleMetadataGetSuccessfully(t) expected := map[string]string{"foo": "bar", "this": "that"} - actual, err := servers.Metadata(client.ServiceClient(), "1234asdf").Extract() + actual, err := servers.Metadata(context.TODO(), client.ServiceClient(), "1234asdf").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expected, actual) } @@ -453,7 +454,7 @@ func TestResetMetadata(t *testing.T) { HandleMetadataResetSuccessfully(t) expected := map[string]string{"foo": "bar", "this": "that"} - actual, err := servers.ResetMetadata(client.ServiceClient(), "1234asdf", servers.MetadataOpts{ + actual, err := servers.ResetMetadata(context.TODO(), client.ServiceClient(), "1234asdf", servers.MetadataOpts{ "foo": "bar", "this": "that", }).Extract() @@ -468,7 +469,7 @@ func TestUpdateMetadata(t *testing.T) { HandleMetadataUpdateSuccessfully(t) expected := map[string]string{"foo": "baz", "this": "those"} - actual, err := servers.UpdateMetadata(client.ServiceClient(), "1234asdf", servers.MetadataOpts{ + actual, err := servers.UpdateMetadata(context.TODO(), client.ServiceClient(), "1234asdf", servers.MetadataOpts{ "foo": "baz", "this": "those", }).Extract() @@ -483,7 +484,7 @@ func TestListAddresses(t *testing.T) { expected := ListAddressesExpected pages := 0 - err := servers.ListAddresses(client.ServiceClient(), "asdfasdfasdf").EachPage(func(page pagination.Page) (bool, error) { + err := servers.ListAddresses(client.ServiceClient(), "asdfasdfasdf").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := servers.ExtractAddresses(page) @@ -507,7 +508,7 @@ func TestListAddressesByNetwork(t *testing.T) { expected := ListNetworkAddressesExpected pages := 0 - err := servers.ListAddressesByNetwork(client.ServiceClient(), "asdfasdfasdf", "public").EachPage(func(page pagination.Page) (bool, error) { + err := servers.ListAddressesByNetwork(client.ServiceClient(), "asdfasdfasdf", "public").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := servers.ExtractNetworkAddresses(page) @@ -529,7 +530,7 @@ func TestCreateServerImage(t *testing.T) { defer th.TeardownHTTP() HandleCreateServerImageSuccessfully(t) - _, err := servers.CreateImage(client.ServiceClient(), "serverimage", servers.CreateImageOpts{Name: "test"}).ExtractImageID() + _, err := servers.CreateImage(context.TODO(), client.ServiceClient(), "serverimage", servers.CreateImageOpts{Name: "test"}).ExtractImageID() th.AssertNoErr(t, err) } @@ -586,7 +587,7 @@ func TestCreateServerWithTags(t *testing.T) { FlavorRef: "1", Tags: tags, } - res := servers.Create(c, createOpts) + res := servers.Create(context.TODO(), c, createOpts) th.AssertNoErr(t, res.Err) actualServer, err := res.Extract() th.AssertNoErr(t, err) diff --git a/openstack/compute/v2/servers/testing/results_test.go b/openstack/compute/v2/servers/testing/results_test.go index f66fdb6827..517d9e4868 100644 --- a/openstack/compute/v2/servers/testing/results_test.go +++ b/openstack/compute/v2/servers/testing/results_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "crypto/rsa" "encoding/json" "fmt" @@ -105,7 +106,7 @@ func TestListAddressesAllPages(t *testing.T) { defer th.TeardownHTTP() HandleAddressListSuccessfully(t) - allPages, err := servers.ListAddresses(client.ServiceClient(), "asdfasdfasdf").AllPages() + allPages, err := servers.ListAddresses(client.ServiceClient(), "asdfasdfasdf").AllPages(context.TODO()) th.AssertNoErr(t, err) _, err = servers.ExtractAddresses(allPages) th.AssertNoErr(t, err) diff --git a/openstack/compute/v2/servers/util.go b/openstack/compute/v2/servers/util.go index aa08b5934e..37537d178f 100644 --- a/openstack/compute/v2/servers/util.go +++ b/openstack/compute/v2/servers/util.go @@ -1,13 +1,17 @@ package servers -import "github.com/gophercloud/gophercloud/v2" +import ( + "context" + + "github.com/gophercloud/gophercloud/v2" +) // WaitForStatus will continually poll a server until it successfully // transitions to a specified status. It will do this for at most the number // of seconds specified. -func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error { +func WaitForStatus(ctx context.Context, c *gophercloud.ServiceClient, id, status string, secs int) error { return gophercloud.WaitFor(secs, func() (bool, error) { - current, err := Get(c, id).Extract() + current, err := Get(ctx, c, id).Extract() if err != nil { return false, err } diff --git a/openstack/config/provider_client.go b/openstack/config/provider_client.go index 842c75adc6..c163dbe51e 100644 --- a/openstack/config/provider_client.go +++ b/openstack/config/provider_client.go @@ -62,7 +62,7 @@ func NewProviderClient(ctx context.Context, authOptions gophercloud.AuthOptions, } client.HTTPClient = options.httpClient - err = openstack.AuthenticateWithContext(ctx, client, authOptions) + err = openstack.Authenticate(ctx, client, authOptions) if err != nil { return nil, err } diff --git a/openstack/container/v1/capsules/requests.go b/openstack/container/v1/capsules/requests.go index 74f17559ae..7d572d4f30 100644 --- a/openstack/container/v1/capsules/requests.go +++ b/openstack/container/v1/capsules/requests.go @@ -1,6 +1,8 @@ package capsules import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -20,8 +22,8 @@ type ListOptsBuilder interface { } // Get requests details on a single capsule, by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 203}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -53,13 +55,13 @@ func (opts CreateOpts) ToCapsuleCreateMap() (map[string]interface{}, error) { } // Create implements create capsule request. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToCapsuleCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{202}}) + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{202}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -98,8 +100,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Delete implements Capsule delete request. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/container/v1/capsules/testing/requests_test.go b/openstack/container/v1/capsules/testing/requests_test.go index 1f4baa49e0..2925f93ecc 100644 --- a/openstack/container/v1/capsules/testing/requests_test.go +++ b/openstack/container/v1/capsules/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -27,7 +28,7 @@ func TestGetCapsule_OldTime(t *testing.T) { ExpectedCapsule.Containers[0].UpdatedAt = updatedAt ExpectedCapsule.Containers[0].StartedAt = startedAt - actualCapsule, err := capsules.Get(fakeclient.ServiceClient(), ExpectedCapsule.UUID).Extract() + actualCapsule, err := capsules.Get(context.TODO(), fakeclient.ServiceClient(), ExpectedCapsule.UUID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &ExpectedCapsule, actualCapsule) @@ -49,7 +50,7 @@ func TestGetCapsule_NewTime(t *testing.T) { ExpectedCapsule.Containers[0].UpdatedAt = updatedAt ExpectedCapsule.Containers[0].StartedAt = startedAt - actualCapsule, err := capsules.Get(fakeclient.ServiceClient(), ExpectedCapsule.UUID).Extract() + actualCapsule, err := capsules.Get(context.TODO(), fakeclient.ServiceClient(), ExpectedCapsule.UUID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &ExpectedCapsule, actualCapsule) @@ -66,7 +67,7 @@ func TestCreateCapsule(t *testing.T) { createOpts := capsules.CreateOpts{ TemplateOpts: template, } - actualCapsule, err := capsules.Create(fakeclient.ServiceClient(), createOpts).Extract() + actualCapsule, err := capsules.Create(context.TODO(), fakeclient.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &ExpectedCapsule, actualCapsule) @@ -91,7 +92,7 @@ func TestListCapsule(t *testing.T) { count := 0 results := capsules.List(fakeclient.ServiceClient(), nil) - err := results.EachPage(func(page pagination.Page) (bool, error) { + err := results.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := capsules.ExtractCapsules(page) if err != nil { @@ -129,7 +130,7 @@ func TestListCapsuleV132(t *testing.T) { count := 0 results := capsules.List(fakeclient.ServiceClient(), nil) - err := results.EachPage(func(page pagination.Page) (bool, error) { + err := results.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := capsules.ExtractCapsules(page) if err != nil { @@ -154,6 +155,6 @@ func TestDelete(t *testing.T) { HandleCapsuleDeleteSuccessfully(t) - res := capsules.Delete(fakeclient.ServiceClient(), "963a239d-3946-452b-be5a-055eab65a421") + res := capsules.Delete(context.TODO(), fakeclient.ServiceClient(), "963a239d-3946-452b-be5a-055eab65a421") th.AssertNoErr(t, res.Err) } diff --git a/openstack/containerinfra/apiversions/requests.go b/openstack/containerinfra/apiversions/requests.go index a82c605c10..02dccd30d1 100644 --- a/openstack/containerinfra/apiversions/requests.go +++ b/openstack/containerinfra/apiversions/requests.go @@ -1,6 +1,8 @@ package apiversions import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -13,8 +15,8 @@ func List(c *gophercloud.ServiceClient) pagination.Pager { } // Get will get a specific API version, specified by major ID. -func Get(client *gophercloud.ServiceClient, v string) (r GetResult) { - resp, err := client.Get(getURL(client, v), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, v string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, v), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/containerinfra/apiversions/testing/requests_test.go b/openstack/containerinfra/apiversions/testing/requests_test.go index 6800739f9b..175be19c74 100644 --- a/openstack/containerinfra/apiversions/testing/requests_test.go +++ b/openstack/containerinfra/apiversions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "testing" @@ -15,7 +16,7 @@ func TestListAPIVersions(t *testing.T) { MockListResponse(t) - allVersions, err := apiversions.List(client.ServiceClient()).AllPages() + allVersions, err := apiversions.List(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := apiversions.ExtractAPIVersions(allVersions) @@ -30,7 +31,7 @@ func TestGetAPIVersion(t *testing.T) { MockGetResponse(t) - actual, err := apiversions.Get(client.ServiceClient(), "v1").Extract() + actual, err := apiversions.Get(context.TODO(), client.ServiceClient(), "v1").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, MagnumAPIVersion1Result, *actual) diff --git a/openstack/containerinfra/v1/certificates/requests.go b/openstack/containerinfra/v1/certificates/requests.go index 0a286989aa..b98b0005b8 100644 --- a/openstack/containerinfra/v1/certificates/requests.go +++ b/openstack/containerinfra/v1/certificates/requests.go @@ -1,6 +1,8 @@ package certificates import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) @@ -23,9 +25,9 @@ func (opts CreateOpts) ToCertificateCreateMap() (map[string]interface{}, error) } // Get makes a request against the API to get details for a certificate. -func Get(client *gophercloud.ServiceClient, clusterID string) (r GetResult) { +func Get(ctx context.Context, client *gophercloud.ServiceClient, clusterID string) (r GetResult) { url := getURL(client, clusterID) - resp, err := client.Get(url, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -33,13 +35,13 @@ func Get(client *gophercloud.ServiceClient, clusterID string) (r GetResult) { } // Create requests the creation of a new certificate. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToCertificateCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -47,8 +49,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Update will rotate the CA certificate for a cluster -func Update(client *gophercloud.ServiceClient, clusterID string) (r UpdateResult) { - resp, err := client.Patch(updateURL(client, clusterID), nil, &r.Body, &gophercloud.RequestOpts{ +func Update(ctx context.Context, client *gophercloud.ServiceClient, clusterID string) (r UpdateResult) { + resp, err := client.Patch(ctx, updateURL(client, clusterID), nil, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/containerinfra/v1/certificates/testing/requests_test.go b/openstack/containerinfra/v1/certificates/testing/requests_test.go index b93861da15..25a287e401 100644 --- a/openstack/containerinfra/v1/certificates/testing/requests_test.go +++ b/openstack/containerinfra/v1/certificates/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/containerinfra/v1/certificates" @@ -17,7 +18,7 @@ func TestGetCertificates(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - actual, err := certificates.Get(sc, "d564b18a-2890-4152-be3d-e05d784ff72").Extract() + actual, err := certificates.Get(context.TODO(), sc, "d564b18a-2890-4152-be3d-e05d784ff72").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedCertificate, *actual) } @@ -36,7 +37,7 @@ func TestCreateCertificates(t *testing.T) { CSR: "FAKE_CERTIFICATE_CSR", } - actual, err := certificates.Create(sc, opts).Extract() + actual, err := certificates.Create(context.TODO(), sc, opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedCreateCertificateResponse, *actual) } @@ -50,6 +51,6 @@ func TestUpdateCertificates(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - err := certificates.Update(sc, "d564b18a-2890-4152-be3d-e05d784ff72").ExtractErr() + err := certificates.Update(context.TODO(), sc, "d564b18a-2890-4152-be3d-e05d784ff72").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/containerinfra/v1/clusters/requests.go b/openstack/containerinfra/v1/clusters/requests.go index 1860f1016f..9ed06cc4f2 100644 --- a/openstack/containerinfra/v1/clusters/requests.go +++ b/openstack/containerinfra/v1/clusters/requests.go @@ -1,6 +1,8 @@ package clusters import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -36,13 +38,13 @@ func (opts CreateOpts) ToClusterCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new cluster. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToClusterCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -50,15 +52,15 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Get retrieves a specific clusters based on its unique ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete deletes the specified cluster ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -148,7 +150,7 @@ func (opts UpdateOpts) ToClustersUpdateMap() (map[string]interface{}, error) { } // Update implements cluster updated request. -func Update(client *gophercloud.ServiceClient, id string, opts []UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts []UpdateOptsBuilder) (r UpdateResult) { var o []map[string]interface{} for _, opt := range opts { b, err := opt.ToClustersUpdateMap() @@ -158,7 +160,7 @@ func Update(client *gophercloud.ServiceClient, id string, opts []UpdateOptsBuild } o = append(o, b) } - resp, err := client.Patch(updateURL(client, id), o, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), o, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -187,14 +189,14 @@ func (opts UpgradeOpts) ToClustersUpgradeMap() (map[string]interface{}, error) { } // Upgrade implements cluster upgrade request. -func Upgrade(client *gophercloud.ServiceClient, id string, opts UpgradeOptsBuilder) (r UpgradeResult) { +func Upgrade(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpgradeOptsBuilder) (r UpgradeResult) { b, err := opts.ToClustersUpgradeMap() if err != nil { r.Err = err return } - resp, err := client.Post(upgradeURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, upgradeURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -220,13 +222,13 @@ func (opts ResizeOpts) ToClusterResizeMap() (map[string]interface{}, error) { } // Resize an existing cluster node count. -func Resize(client *gophercloud.ServiceClient, id string, opts ResizeOptsBuilder) (r ResizeResult) { +func Resize(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ResizeOptsBuilder) (r ResizeResult) { b, err := opts.ToClusterResizeMap() if err != nil { r.Err = err return } - resp, err := client.Post(resizeURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, resizeURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/containerinfra/v1/clusters/testing/requests_test.go b/openstack/containerinfra/v1/clusters/testing/requests_test.go index f1dc6d2dfd..fef218410d 100644 --- a/openstack/containerinfra/v1/clusters/testing/requests_test.go +++ b/openstack/containerinfra/v1/clusters/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -40,7 +41,7 @@ func TestCreateCluster(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - res := clusters.Create(sc, opts) + res := clusters.Create(context.TODO(), sc, opts) th.AssertNoErr(t, res.Err) requestID := res.Header.Get("X-OpenStack-Request-Id") @@ -60,7 +61,7 @@ func TestGetCluster(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - actual, err := clusters.Get(sc, "746e779a-751a-456b-a3e9-c883d734946f").Extract() + actual, err := clusters.Get(context.TODO(), sc, "746e779a-751a-456b-a3e9-c883d734946f").Extract() th.AssertNoErr(t, err) actual.CreatedAt = actual.CreatedAt.UTC() actual.UpdatedAt = actual.UpdatedAt.UTC() @@ -76,7 +77,7 @@ func TestListClusters(t *testing.T) { count := 0 sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - clusters.List(sc, clusters.ListOpts{Limit: 2}).EachPage(func(page pagination.Page) (bool, error) { + clusters.List(sc, clusters.ListOpts{Limit: 2}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := clusters.ExtractClusters(page) th.AssertNoErr(t, err) @@ -103,7 +104,7 @@ func TestListDetailClusters(t *testing.T) { count := 0 sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - clusters.ListDetail(sc, clusters.ListOpts{Limit: 2}).EachPage(func(page pagination.Page) (bool, error) { + clusters.ListDetail(sc, clusters.ListOpts{Limit: 2}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := clusters.ExtractClusters(page) th.AssertNoErr(t, err) @@ -142,7 +143,7 @@ func TestUpdateCluster(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - res := clusters.Update(sc, clusterUUID, updateOpts) + res := clusters.Update(context.TODO(), sc, clusterUUID, updateOpts) th.AssertNoErr(t, res.Err) requestID := res.Header.Get("X-OpenStack-Request-Id") @@ -167,7 +168,7 @@ func TestUpgradeCluster(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - res := clusters.Upgrade(sc, clusterUUID, opts) + res := clusters.Upgrade(context.TODO(), sc, clusterUUID, opts) th.AssertNoErr(t, res.Err) requestID := res.Header.Get("X-OpenStack-Request-Id") @@ -187,7 +188,7 @@ func TestDeleteCluster(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - r := clusters.Delete(sc, clusterUUID) + r := clusters.Delete(context.TODO(), sc, clusterUUID) err := r.ExtractErr() th.AssertNoErr(t, err) @@ -220,7 +221,7 @@ func TestResizeCluster(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - res := clusters.Resize(sc, clusterUUID, opts) + res := clusters.Resize(context.TODO(), sc, clusterUUID, opts) th.AssertNoErr(t, res.Err) requestID := res.Header.Get("X-OpenStack-Request-Id") diff --git a/openstack/containerinfra/v1/clustertemplates/requests.go b/openstack/containerinfra/v1/clustertemplates/requests.go index 141f07d53a..6d88e6f948 100644 --- a/openstack/containerinfra/v1/clustertemplates/requests.go +++ b/openstack/containerinfra/v1/clustertemplates/requests.go @@ -1,6 +1,8 @@ package clustertemplates import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -47,13 +49,13 @@ func (opts CreateOpts) ToClusterCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new cluster. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToClusterCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -61,8 +63,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete deletes the specified cluster ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -108,8 +110,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get retrieves a specific cluster-template based on its unique ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -146,7 +148,7 @@ func (opts UpdateOpts) ToClusterTemplateUpdateMap() (map[string]interface{}, err } // Update implements cluster updated request. -func Update(client *gophercloud.ServiceClient, id string, opts []UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts []UpdateOptsBuilder) (r UpdateResult) { var o []map[string]interface{} for _, opt := range opts { b, err := opt.ToClusterTemplateUpdateMap() @@ -156,7 +158,7 @@ func Update(client *gophercloud.ServiceClient, id string, opts []UpdateOptsBuild } o = append(o, b) } - resp, err := client.Patch(updateURL(client, id), o, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), o, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/containerinfra/v1/clustertemplates/testing/requests_test.go b/openstack/containerinfra/v1/clustertemplates/testing/requests_test.go index 50adcd53db..3e9cb717a9 100644 --- a/openstack/containerinfra/v1/clustertemplates/testing/requests_test.go +++ b/openstack/containerinfra/v1/clustertemplates/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/containerinfra/v1/clustertemplates" @@ -47,7 +48,7 @@ func TestCreateClusterTemplate(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - res := clustertemplates.Create(sc, opts) + res := clustertemplates.Create(context.TODO(), sc, opts) th.AssertNoErr(t, res.Err) requestID := res.Header.Get("X-OpenStack-Request-Id") @@ -68,7 +69,7 @@ func TestDeleteClusterTemplate(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - res := clustertemplates.Delete(sc, "6dc6d336e3fc4c0a951b5698cd1236ee") + res := clustertemplates.Delete(context.TODO(), sc, "6dc6d336e3fc4c0a951b5698cd1236ee") th.AssertNoErr(t, res.Err) requestID := res.Header["X-Openstack-Request-Id"][0] th.AssertEquals(t, "req-781e9bdc-4163-46eb-91c9-786c53188bbb", requestID) @@ -84,7 +85,7 @@ func TestListClusterTemplates(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - clustertemplates.List(sc, clustertemplates.ListOpts{Limit: 2}).EachPage(func(page pagination.Page) (bool, error) { + clustertemplates.List(sc, clustertemplates.ListOpts{Limit: 2}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := clustertemplates.ExtractClusterTemplates(page) th.AssertNoErr(t, err) @@ -109,7 +110,7 @@ func TestGetClusterTemplate(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - actual, err := clustertemplates.Get(sc, "7d85f602-a948-4a30-afd4-e84f47471c15").Extract() + actual, err := clustertemplates.Get(context.TODO(), sc, "7d85f602-a948-4a30-afd4-e84f47471c15").Extract() th.AssertNoErr(t, err) actual.CreatedAt = actual.CreatedAt.UTC() th.AssertDeepEquals(t, ExpectedClusterTemplate, *actual) @@ -123,7 +124,7 @@ func TestGetClusterTemplateEmptyTime(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - actual, err := clustertemplates.Get(sc, "7d85f602-a948-4a30-afd4-e84f47471c15").Extract() + actual, err := clustertemplates.Get(context.TODO(), sc, "7d85f602-a948-4a30-afd4-e84f47471c15").Extract() th.AssertNoErr(t, err) actual.CreatedAt = actual.CreatedAt.UTC() th.AssertDeepEquals(t, ExpectedClusterTemplate_EmptyTime, *actual) @@ -150,7 +151,7 @@ func TestUpdateClusterTemplate(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - res := clustertemplates.Update(sc, "7d85f602-a948-4a30-afd4-e84f47471c15", updateOpts) + res := clustertemplates.Update(context.TODO(), sc, "7d85f602-a948-4a30-afd4-e84f47471c15", updateOpts) th.AssertNoErr(t, res.Err) actual, err := res.Extract() @@ -180,7 +181,7 @@ func TestUpdateClusterTemplateEmptyTime(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - actual, err := clustertemplates.Update(sc, "7d85f602-a948-4a30-afd4-e84f47471c15", updateOpts).Extract() + actual, err := clustertemplates.Update(context.TODO(), sc, "7d85f602-a948-4a30-afd4-e84f47471c15", updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedUpdateClusterTemplate_EmptyTime, *actual) } @@ -208,6 +209,6 @@ func TestUpdateClusterTemplateInvalidUpdate(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - _, err := clustertemplates.Update(sc, "7d85f602-a948-4a30-afd4-e84f47471c15", updateOpts).Extract() + _, err := clustertemplates.Update(context.TODO(), sc, "7d85f602-a948-4a30-afd4-e84f47471c15", updateOpts).Extract() th.AssertEquals(t, true, err != nil) } diff --git a/openstack/containerinfra/v1/nodegroups/requests.go b/openstack/containerinfra/v1/nodegroups/requests.go index 0c9955f123..91686bff80 100644 --- a/openstack/containerinfra/v1/nodegroups/requests.go +++ b/openstack/containerinfra/v1/nodegroups/requests.go @@ -1,6 +1,8 @@ package nodegroups import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -9,8 +11,8 @@ import ( // with the given ID/name belonging to the given cluster. // Use the Extract method of the returned GetResult to extract the // node group from the result. -func Get(client *gophercloud.ServiceClient, clusterID, nodeGroupID string) (r GetResult) { - resp, err := client.Get(getURL(client, clusterID, nodeGroupID), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) +func Get(ctx context.Context, client *gophercloud.ServiceClient, clusterID, nodeGroupID string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, clusterID, nodeGroupID), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -99,13 +101,13 @@ func (opts CreateOpts) ToNodeGroupCreateMap() (map[string]interface{}, error) { // for the the given cluster. // Use the Extract method of the returned CreateResult to extract the // returned node group. -func Create(client *gophercloud.ServiceClient, clusterID string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, clusterID string, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToNodeGroupCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client, clusterID), b, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{202}}) + resp, err := client.Post(ctx, createURL(client, clusterID), b, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{202}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -141,7 +143,7 @@ func (opts UpdateOpts) ToResourceUpdateMap() (map[string]interface{}, error) { // one UpdateOpts can be passed at a time. // Use the Extract method of the returned UpdateResult to extract the // updated node group from the result. -func Update(client *gophercloud.ServiceClient, clusterID string, nodeGroupID string, opts []UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, clusterID string, nodeGroupID string, opts []UpdateOptsBuilder) (r UpdateResult) { var o []map[string]interface{} for _, opt := range opts { b, err := opt.ToResourceUpdateMap() @@ -151,14 +153,14 @@ func Update(client *gophercloud.ServiceClient, clusterID string, nodeGroupID str } o = append(o, b) } - resp, err := client.Patch(updateURL(client, clusterID, nodeGroupID), o, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{202}}) + resp, err := client.Patch(ctx, updateURL(client, clusterID, nodeGroupID), o, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{202}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete makes a request to the Magnum API to delete a node group. -func Delete(client *gophercloud.ServiceClient, clusterID, nodeGroupID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, clusterID, nodeGroupID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, clusterID, nodeGroupID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, clusterID, nodeGroupID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/containerinfra/v1/nodegroups/testing/requests_test.go b/openstack/containerinfra/v1/nodegroups/testing/requests_test.go index d6c92c8e2e..bf4a4f8d6d 100644 --- a/openstack/containerinfra/v1/nodegroups/testing/requests_test.go +++ b/openstack/containerinfra/v1/nodegroups/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -19,7 +20,7 @@ func TestGetNodeGroupSuccess(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - ng, err := nodegroups.Get(sc, clusterUUID, nodeGroup1UUID).Extract() + ng, err := nodegroups.Get(context.TODO(), sc, clusterUUID, nodeGroup1UUID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expectedNodeGroup1, *ng) @@ -35,7 +36,7 @@ func TestGetNodeGroupNotFound(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - _, err := nodegroups.Get(sc, clusterUUID, badNodeGroupUUID).Extract() + _, err := nodegroups.Get(context.TODO(), sc, clusterUUID, badNodeGroupUUID).Extract() th.AssertEquals(t, true, err != nil) _, isNotFound := err.(gophercloud.ErrDefault404) @@ -53,7 +54,7 @@ func TestGetNodeGroupClusterNotFound(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - _, err := nodegroups.Get(sc, badClusterUUID, badNodeGroupUUID).Extract() + _, err := nodegroups.Get(context.TODO(), sc, badClusterUUID, badNodeGroupUUID).Extract() th.AssertEquals(t, true, err != nil) _, isNotFound := err.(gophercloud.ErrDefault404) @@ -70,7 +71,7 @@ func TestListNodeGroupsSuccess(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - ngPages, err := nodegroups.List(sc, clusterUUID, nodegroups.ListOpts{}).AllPages() + ngPages, err := nodegroups.List(sc, clusterUUID, nodegroups.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) ngs, err := nodegroups.ExtractNodeGroups(ngPages) @@ -93,7 +94,7 @@ func TestListNodeGroupsLimitSuccess(t *testing.T) { sc.Endpoint = sc.Endpoint + "v1/" listOpts := nodegroups.ListOpts{Limit: 1} - ngPages, err := nodegroups.List(sc, clusterUUID, listOpts).AllPages() + ngPages, err := nodegroups.List(sc, clusterUUID, listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) ngs, err := nodegroups.ExtractNodeGroups(ngPages) @@ -114,7 +115,7 @@ func TestListNodeGroupsClusterNotFound(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - _, err := nodegroups.List(sc, clusterUUID, nodegroups.ListOpts{}).AllPages() + _, err := nodegroups.List(sc, clusterUUID, nodegroups.ListOpts{}).AllPages(context.TODO()) th.AssertEquals(t, true, err != nil) _, isNotFound := err.(gophercloud.ErrDefault404) @@ -136,7 +137,7 @@ func TestCreateNodeGroupSuccess(t *testing.T) { MergeLabels: gophercloud.Enabled, } - ng, err := nodegroups.Create(sc, clusterUUID, createOpts).Extract() + ng, err := nodegroups.Create(context.TODO(), sc, clusterUUID, createOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expectedCreatedNodeGroup, *ng) } @@ -156,7 +157,7 @@ func TestCreateNodeGroupDuplicate(t *testing.T) { Name: "default-worker", } - _, err := nodegroups.Create(sc, clusterUUID, createOpts).Extract() + _, err := nodegroups.Create(context.TODO(), sc, clusterUUID, createOpts).Extract() th.AssertEquals(t, true, err != nil) _, isNotAccepted := err.(gophercloud.ErrDefault409) th.AssertEquals(t, true, isNotAccepted) @@ -178,7 +179,7 @@ func TestCreateNodeGroupMaster(t *testing.T) { Role: "master", } - _, err := nodegroups.Create(sc, clusterUUID, createOpts).Extract() + _, err := nodegroups.Create(context.TODO(), sc, clusterUUID, createOpts).Extract() th.AssertEquals(t, true, err != nil) _, isBadRequest := err.(gophercloud.ErrDefault400) th.AssertEquals(t, true, isBadRequest) @@ -202,7 +203,7 @@ func TestCreateNodeGroupBadSizes(t *testing.T) { MaxNodeCount: &maxNodes, } - _, err := nodegroups.Create(sc, clusterUUID, createOpts).Extract() + _, err := nodegroups.Create(context.TODO(), sc, clusterUUID, createOpts).Extract() th.AssertEquals(t, true, err != nil) _, isNotAccepted := err.(gophercloud.ErrDefault409) th.AssertEquals(t, true, isNotAccepted) @@ -226,7 +227,7 @@ func TestUpdateNodeGroupSuccess(t *testing.T) { }, } - ng, err := nodegroups.Update(sc, clusterUUID, nodeGroup2UUID, updateOpts).Extract() + ng, err := nodegroups.Update(context.TODO(), sc, clusterUUID, nodeGroup2UUID, updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expectedUpdatedNodeGroup, *ng) } @@ -250,7 +251,7 @@ func TestUpdateNodeGroupInternal(t *testing.T) { }, } - _, err := nodegroups.Update(sc, clusterUUID, nodeGroup2UUID, updateOpts).Extract() + _, err := nodegroups.Update(context.TODO(), sc, clusterUUID, nodeGroup2UUID, updateOpts).Extract() th.AssertEquals(t, true, err != nil) _, isBadRequest := err.(gophercloud.ErrDefault400) th.AssertEquals(t, true, isBadRequest) @@ -275,7 +276,7 @@ func TestUpdateNodeGroupBadField(t *testing.T) { }, } - _, err := nodegroups.Update(sc, clusterUUID, nodeGroup2UUID, updateOpts).Extract() + _, err := nodegroups.Update(context.TODO(), sc, clusterUUID, nodeGroup2UUID, updateOpts).Extract() th.AssertEquals(t, true, err != nil) _, isBadRequest := err.(gophercloud.ErrDefault400) th.AssertEquals(t, true, isBadRequest) @@ -300,7 +301,7 @@ func TestUpdateNodeGroupBadMin(t *testing.T) { }, } - _, err := nodegroups.Update(sc, clusterUUID, nodeGroup2UUID, updateOpts).Extract() + _, err := nodegroups.Update(context.TODO(), sc, clusterUUID, nodeGroup2UUID, updateOpts).Extract() th.AssertEquals(t, true, err != nil) _, isNotAccepted := err.(gophercloud.ErrDefault409) th.AssertEquals(t, true, isNotAccepted) @@ -316,7 +317,7 @@ func TestDeleteNodeGroupSuccess(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - err := nodegroups.Delete(sc, clusterUUID, nodeGroup2UUID).ExtractErr() + err := nodegroups.Delete(context.TODO(), sc, clusterUUID, nodeGroup2UUID).ExtractErr() th.AssertNoErr(t, err) } @@ -330,7 +331,7 @@ func TestDeleteNodeGroupNotFound(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - err := nodegroups.Delete(sc, clusterUUID, badNodeGroupUUID).ExtractErr() + err := nodegroups.Delete(context.TODO(), sc, clusterUUID, badNodeGroupUUID).ExtractErr() _, isNotFound := err.(gophercloud.ErrDefault404) th.AssertEquals(t, true, isNotFound) } @@ -345,7 +346,7 @@ func TestDeleteNodeGroupClusterNotFound(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - err := nodegroups.Delete(sc, badClusterUUID, badNodeGroupUUID).ExtractErr() + err := nodegroups.Delete(context.TODO(), sc, badClusterUUID, badNodeGroupUUID).ExtractErr() _, isNotFound := err.(gophercloud.ErrDefault404) th.AssertEquals(t, true, isNotFound) } @@ -360,7 +361,7 @@ func TestDeleteNodeGroupDefault(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - err := nodegroups.Delete(sc, clusterUUID, nodeGroup2UUID).ExtractErr() + err := nodegroups.Delete(context.TODO(), sc, clusterUUID, nodeGroup2UUID).ExtractErr() _, isBadRequest := err.(gophercloud.ErrDefault400) th.AssertEquals(t, true, isBadRequest) } diff --git a/openstack/containerinfra/v1/quotas/requests.go b/openstack/containerinfra/v1/quotas/requests.go index b3ecfb6f07..274aaaa775 100644 --- a/openstack/containerinfra/v1/quotas/requests.go +++ b/openstack/containerinfra/v1/quotas/requests.go @@ -1,6 +1,8 @@ package quotas import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) @@ -22,13 +24,13 @@ func (opts CreateOpts) ToQuotaCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new quota. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToQuotaCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/containerinfra/v1/quotas/testing/requests_test.go b/openstack/containerinfra/v1/quotas/testing/requests_test.go index 1e64eac2fe..75dde3000f 100644 --- a/openstack/containerinfra/v1/quotas/testing/requests_test.go +++ b/openstack/containerinfra/v1/quotas/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/containerinfra/v1/quotas" @@ -23,7 +24,7 @@ func TestCreateQuota(t *testing.T) { sc := fake.ServiceClient() sc.Endpoint = sc.Endpoint + "v1/" - res := quotas.Create(sc, opts) + res := quotas.Create(context.TODO(), sc, opts) th.AssertNoErr(t, res.Err) requestID := res.Header.Get("X-OpenStack-Request-Id") diff --git a/openstack/db/v1/configurations/requests.go b/openstack/db/v1/configurations/requests.go index 94dedc271a..18066ffe30 100644 --- a/openstack/db/v1/configurations/requests.go +++ b/openstack/db/v1/configurations/requests.go @@ -1,6 +1,8 @@ package configurations import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/db/v1/instances" "github.com/gophercloud/gophercloud/v2/pagination" @@ -47,20 +49,20 @@ func (opts CreateOpts) ToConfigCreateMap() (map[string]interface{}, error) { } // Create will create a new configuration group. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToConfigCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(baseURL(client), &b, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) + resp, err := client.Post(ctx, baseURL(client), &b, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get will retrieve the details for a specified configuration group. -func Get(client *gophercloud.ServiceClient, configID string) (r GetResult) { - resp, err := client.Get(resourceURL(client, configID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, configID string) (r GetResult) { + resp, err := client.Get(ctx, resourceURL(client, configID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -93,13 +95,13 @@ func (opts UpdateOpts) ToConfigUpdateMap() (map[string]interface{}, error) { // Update will modify an existing configuration group by performing a merge // between new and existing values. If the key already exists, the new value // will overwrite. All other keys will remain unaffected. -func Update(client *gophercloud.ServiceClient, configID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, configID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToConfigUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(resourceURL(client, configID), &b, nil, nil) + resp, err := client.Patch(ctx, resourceURL(client, configID), &b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -107,13 +109,13 @@ func Update(client *gophercloud.ServiceClient, configID string, opts UpdateOptsB // Replace will modify an existing configuration group by overwriting the // entire parameter group with the new values provided. Any existing keys not // included in UpdateOptsBuilder will be deleted. -func Replace(client *gophercloud.ServiceClient, configID string, opts UpdateOptsBuilder) (r ReplaceResult) { +func Replace(ctx context.Context, client *gophercloud.ServiceClient, configID string, opts UpdateOptsBuilder) (r ReplaceResult) { b, err := opts.ToConfigUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(resourceURL(client, configID), &b, nil, nil) + resp, err := client.Put(ctx, resourceURL(client, configID), &b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -121,8 +123,8 @@ func Replace(client *gophercloud.ServiceClient, configID string, opts UpdateOpts // Delete will permanently delete a configuration group. Please note that // config groups cannot be deleted whilst still attached to running instances - // you must detach and then delete them. -func Delete(client *gophercloud.ServiceClient, configID string) (r DeleteResult) { - resp, err := client.Delete(resourceURL(client, configID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, configID string) (r DeleteResult) { + resp, err := client.Delete(ctx, resourceURL(client, configID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -151,8 +153,8 @@ func ListDatastoreParams(client *gophercloud.ServiceClient, datastoreID, version // "innodb_file_per_table" configuration param for MySQL datastores. You will // need the param's ID first, which can be attained by using the ListDatastoreParams // operation. -func GetDatastoreParam(client *gophercloud.ServiceClient, datastoreID, versionID, paramID string) (r ParamResult) { - resp, err := client.Get(getDSParamURL(client, datastoreID, versionID, paramID), &r.Body, nil) +func GetDatastoreParam(ctx context.Context, client *gophercloud.ServiceClient, datastoreID, versionID, paramID string) (r ParamResult) { + resp, err := client.Get(ctx, getDSParamURL(client, datastoreID, versionID, paramID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -167,8 +169,8 @@ func ListGlobalParams(client *gophercloud.ServiceClient, versionID string) pagin // GetGlobalParam is similar to GetDatastoreParam but does not require a // DatastoreID. -func GetGlobalParam(client *gophercloud.ServiceClient, versionID, paramID string) (r ParamResult) { - resp, err := client.Get(getGlobalParamURL(client, versionID, paramID), &r.Body, nil) +func GetGlobalParam(ctx context.Context, client *gophercloud.ServiceClient, versionID, paramID string) (r ParamResult) { + resp, err := client.Get(ctx, getGlobalParamURL(client, versionID, paramID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/db/v1/configurations/testing/requests_test.go b/openstack/db/v1/configurations/testing/requests_test.go index e7a9ba6229..4694e0b73d 100644 --- a/openstack/db/v1/configurations/testing/requests_test.go +++ b/openstack/db/v1/configurations/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/db/v1/configurations" @@ -31,7 +32,7 @@ func TestList(t *testing.T) { fixture.SetupHandler(t, _baseURL, "GET", "", ListConfigsJSON, 200) count := 0 - err := configurations.List(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := configurations.List(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := configurations.ExtractConfigs(page) th.AssertNoErr(t, err) @@ -51,7 +52,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() fixture.SetupHandler(t, resURL, "GET", "", GetConfigJSON, 200) - config, err := configurations.Get(fake.ServiceClient(), configID).Extract() + config, err := configurations.Get(context.TODO(), fake.ServiceClient(), configID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &ExampleConfig, config) } @@ -74,7 +75,7 @@ func TestCreate(t *testing.T) { }, } - config, err := configurations.Create(fake.ServiceClient(), opts).Extract() + config, err := configurations.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &ExampleConfigWithValues, config) } @@ -90,7 +91,7 @@ func TestUpdate(t *testing.T) { }, } - err := configurations.Update(fake.ServiceClient(), configID, opts).ExtractErr() + err := configurations.Update(context.TODO(), fake.ServiceClient(), configID, opts).ExtractErr() th.AssertNoErr(t, err) } @@ -105,7 +106,7 @@ func TestReplace(t *testing.T) { }, } - err := configurations.Replace(fake.ServiceClient(), configID, opts).ExtractErr() + err := configurations.Replace(context.TODO(), fake.ServiceClient(), configID, opts).ExtractErr() th.AssertNoErr(t, err) } @@ -114,7 +115,7 @@ func TestDelete(t *testing.T) { defer th.TeardownHTTP() fixture.SetupHandler(t, resURL, "DELETE", "", "", 202) - err := configurations.Delete(fake.ServiceClient(), configID).ExtractErr() + err := configurations.Delete(context.TODO(), fake.ServiceClient(), configID).ExtractErr() th.AssertNoErr(t, err) } @@ -129,7 +130,7 @@ func TestListInstances(t *testing.T) { } pages := 0 - err := configurations.ListInstances(fake.ServiceClient(), configID).EachPage(func(page pagination.Page) (bool, error) { + err := configurations.ListInstances(fake.ServiceClient(), configID).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := instances.ExtractInstances(page) @@ -152,7 +153,7 @@ func TestListDSParams(t *testing.T) { fixture.SetupHandler(t, dsParamListURL, "GET", "", ListParamsJSON, 200) pages := 0 - err := configurations.ListDatastoreParams(fake.ServiceClient(), dsID, versionID).EachPage(func(page pagination.Page) (bool, error) { + err := configurations.ListDatastoreParams(fake.ServiceClient(), dsID, versionID).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := configurations.ExtractParams(page) @@ -181,7 +182,7 @@ func TestGetDSParam(t *testing.T) { defer th.TeardownHTTP() fixture.SetupHandler(t, dsParamGetURL, "GET", "", GetParamJSON, 200) - param, err := configurations.GetDatastoreParam(fake.ServiceClient(), dsID, versionID, paramID).Extract() + param, err := configurations.GetDatastoreParam(context.TODO(), fake.ServiceClient(), dsID, versionID, paramID).Extract() th.AssertNoErr(t, err) expected := &configurations.Param{ @@ -197,7 +198,7 @@ func TestListGlobalParams(t *testing.T) { fixture.SetupHandler(t, globalParamListURL, "GET", "", ListParamsJSON, 200) pages := 0 - err := configurations.ListGlobalParams(fake.ServiceClient(), versionID).EachPage(func(page pagination.Page) (bool, error) { + err := configurations.ListGlobalParams(fake.ServiceClient(), versionID).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := configurations.ExtractParams(page) @@ -226,7 +227,7 @@ func TestGetGlobalParam(t *testing.T) { defer th.TeardownHTTP() fixture.SetupHandler(t, globalParamGetURL, "GET", "", GetParamJSON, 200) - param, err := configurations.GetGlobalParam(fake.ServiceClient(), versionID, paramID).Extract() + param, err := configurations.GetGlobalParam(context.TODO(), fake.ServiceClient(), versionID, paramID).Extract() th.AssertNoErr(t, err) expected := &configurations.Param{ diff --git a/openstack/db/v1/databases/requests.go b/openstack/db/v1/databases/requests.go index 92450538c4..bea255e48c 100644 --- a/openstack/db/v1/databases/requests.go +++ b/openstack/db/v1/databases/requests.go @@ -1,6 +1,8 @@ package databases import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -62,13 +64,13 @@ func (opts BatchCreateOpts) ToDBCreateMap() (map[string]interface{}, error) { // Create will create a new database within the specified instance. If the // specified instance does not exist, a 404 error will be returned. -func Create(client *gophercloud.ServiceClient, instanceID string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, instanceID string, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToDBCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(baseURL(client, instanceID), &b, nil, nil) + resp, err := client.Post(ctx, baseURL(client, instanceID), &b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -84,8 +86,8 @@ func List(client *gophercloud.ServiceClient, instanceID string) pagination.Pager // Delete will permanently delete the database within a specified instance. // All contained data inside the database will also be permanently deleted. -func Delete(client *gophercloud.ServiceClient, instanceID, dbName string) (r DeleteResult) { - resp, err := client.Delete(dbURL(client, instanceID, dbName), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, instanceID, dbName string) (r DeleteResult) { + resp, err := client.Delete(ctx, dbURL(client, instanceID, dbName), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/db/v1/databases/testing/requests_test.go b/openstack/db/v1/databases/testing/requests_test.go index f6a9798405..d509a7f1a9 100644 --- a/openstack/db/v1/databases/testing/requests_test.go +++ b/openstack/db/v1/databases/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/db/v1/databases" @@ -19,7 +20,7 @@ func TestCreate(t *testing.T) { databases.CreateOpts{Name: "sampledb"}, } - res := databases.Create(fake.ServiceClient(), instanceID, opts) + res := databases.Create(context.TODO(), fake.ServiceClient(), instanceID, opts) th.AssertNoErr(t, res.Err) } @@ -37,7 +38,7 @@ func TestList(t *testing.T) { } pages := 0 - err := databases.List(fake.ServiceClient(), instanceID).EachPage(func(page pagination.Page) (bool, error) { + err := databases.List(fake.ServiceClient(), instanceID).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := databases.ExtractDBs(page) @@ -62,6 +63,6 @@ func TestDelete(t *testing.T) { defer th.TeardownHTTP() HandleDelete(t) - err := databases.Delete(fake.ServiceClient(), instanceID, "{dbName}").ExtractErr() + err := databases.Delete(context.TODO(), fake.ServiceClient(), instanceID, "{dbName}").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/db/v1/datastores/requests.go b/openstack/db/v1/datastores/requests.go index c0dc9f1b4c..16bc5bde36 100644 --- a/openstack/db/v1/datastores/requests.go +++ b/openstack/db/v1/datastores/requests.go @@ -1,6 +1,8 @@ package datastores import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -13,8 +15,8 @@ func List(client *gophercloud.ServiceClient) pagination.Pager { } // Get will retrieve the details of a specified datastore type. -func Get(client *gophercloud.ServiceClient, datastoreID string) (r GetResult) { - resp, err := client.Get(resourceURL(client, datastoreID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, datastoreID string) (r GetResult) { + resp, err := client.Get(ctx, resourceURL(client, datastoreID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -28,8 +30,8 @@ func ListVersions(client *gophercloud.ServiceClient, datastoreID string) paginat } // GetVersion will retrieve the details of a specified datastore version. -func GetVersion(client *gophercloud.ServiceClient, datastoreID, versionID string) (r GetVersionResult) { - resp, err := client.Get(versionURL(client, datastoreID, versionID), &r.Body, nil) +func GetVersion(ctx context.Context, client *gophercloud.ServiceClient, datastoreID, versionID string) (r GetVersionResult) { + resp, err := client.Get(ctx, versionURL(client, datastoreID, versionID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/db/v1/datastores/testing/requests_test.go b/openstack/db/v1/datastores/testing/requests_test.go index e0d55d946c..47e3dbfae4 100644 --- a/openstack/db/v1/datastores/testing/requests_test.go +++ b/openstack/db/v1/datastores/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/db/v1/datastores" @@ -17,7 +18,7 @@ func TestList(t *testing.T) { pages := 0 - err := datastores.List(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := datastores.List(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := datastores.ExtractDatastores(page) @@ -39,7 +40,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() fixture.SetupHandler(t, "/datastores/{dsID}", "GET", "", GetDSResp, 200) - ds, err := datastores.Get(fake.ServiceClient(), "{dsID}").Extract() + ds, err := datastores.Get(context.TODO(), fake.ServiceClient(), "{dsID}").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &ExampleDatastore, ds) } @@ -51,7 +52,7 @@ func TestListVersions(t *testing.T) { pages := 0 - err := datastores.ListVersions(fake.ServiceClient(), "{dsID}").EachPage(func(page pagination.Page) (bool, error) { + err := datastores.ListVersions(fake.ServiceClient(), "{dsID}").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := datastores.ExtractVersions(page) @@ -73,7 +74,7 @@ func TestGetVersion(t *testing.T) { defer th.TeardownHTTP() fixture.SetupHandler(t, "/datastores/{dsID}/versions/{versionID}", "GET", "", GetVersionResp, 200) - ds, err := datastores.GetVersion(fake.ServiceClient(), "{dsID}", "{versionID}").Extract() + ds, err := datastores.GetVersion(context.TODO(), fake.ServiceClient(), "{dsID}", "{versionID}").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &ExampleVersion1, ds) } diff --git a/openstack/db/v1/flavors/requests.go b/openstack/db/v1/flavors/requests.go index 1f9bab8af3..740fe60aa8 100644 --- a/openstack/db/v1/flavors/requests.go +++ b/openstack/db/v1/flavors/requests.go @@ -1,6 +1,8 @@ package flavors import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -15,8 +17,8 @@ func List(client *gophercloud.ServiceClient) pagination.Pager { } // Get will retrieve information for a specified hardware flavor. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/db/v1/flavors/testing/requests_test.go b/openstack/db/v1/flavors/testing/requests_test.go index cf95072695..c4a419627a 100644 --- a/openstack/db/v1/flavors/testing/requests_test.go +++ b/openstack/db/v1/flavors/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -16,7 +17,7 @@ func TestListFlavors(t *testing.T) { HandleList(t) pages := 0 - err := flavors.List(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := flavors.List(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := flavors.ExtractFlavors(page) @@ -90,7 +91,7 @@ func TestGetFlavor(t *testing.T) { defer th.TeardownHTTP() HandleGet(t) - actual, err := flavors.Get(fake.ServiceClient(), flavorID).Extract() + actual, err := flavors.Get(context.TODO(), fake.ServiceClient(), flavorID).Extract() th.AssertNoErr(t, err) expected := &flavors.Flavor{ diff --git a/openstack/db/v1/instances/requests.go b/openstack/db/v1/instances/requests.go index c8eb604997..4d93b6b67a 100644 --- a/openstack/db/v1/instances/requests.go +++ b/openstack/db/v1/instances/requests.go @@ -1,6 +1,8 @@ package instances import ( + "context" + "github.com/gophercloud/gophercloud/v2" db "github.com/gophercloud/gophercloud/v2/openstack/db/v1/databases" "github.com/gophercloud/gophercloud/v2/openstack/db/v1/users" @@ -151,13 +153,13 @@ func (opts CreateOpts) ToInstanceCreateMap() (map[string]interface{}, error) { // Although this call only allows the creation of 1 instance per request, you // can create an instance with multiple databases and users. The default // binding for a MySQL instance is port 3306. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToInstanceCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(baseURL(client), &b, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) + resp, err := client.Post(ctx, baseURL(client), &b, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -170,23 +172,23 @@ func List(client *gophercloud.ServiceClient) pagination.Pager { } // Get retrieves the status and information for a specified database instance. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(resourceURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, resourceURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete permanently destroys the database instance. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(resourceURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, resourceURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // EnableRootUser enables the login from any host for the root user and // provides the user with a generated root password. -func EnableRootUser(client *gophercloud.ServiceClient, id string) (r EnableRootUserResult) { - resp, err := client.Post(userRootURL(client, id), nil, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) +func EnableRootUser(ctx context.Context, client *gophercloud.ServiceClient, id string) (r EnableRootUserResult) { + resp, err := client.Post(ctx, userRootURL(client, id), nil, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -194,8 +196,8 @@ func EnableRootUser(client *gophercloud.ServiceClient, id string) (r EnableRootU // IsRootEnabled checks an instance to see if root access is enabled. It returns // True if root user is enabled for the specified database instance or False // otherwise. -func IsRootEnabled(client *gophercloud.ServiceClient, id string) (r IsRootEnabledResult) { - resp, err := client.Get(userRootURL(client, id), &r.Body, nil) +func IsRootEnabled(ctx context.Context, client *gophercloud.ServiceClient, id string) (r IsRootEnabledResult) { + resp, err := client.Get(ctx, userRootURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -203,18 +205,18 @@ func IsRootEnabled(client *gophercloud.ServiceClient, id string) (r IsRootEnable // Restart will restart only the MySQL Instance. Restarting MySQL will // erase any dynamic configuration settings that you have made within MySQL. // The MySQL service will be unavailable until the instance restarts. -func Restart(client *gophercloud.ServiceClient, id string) (r ActionResult) { +func Restart(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ActionResult) { b := map[string]interface{}{"restart": struct{}{}} - resp, err := client.Post(actionURL(client, id), &b, nil, nil) + resp, err := client.Post(ctx, actionURL(client, id), &b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Resize changes the memory size of the instance, assuming a valid // flavorRef is provided. It will also restart the MySQL service. -func Resize(client *gophercloud.ServiceClient, id, flavorRef string) (r ActionResult) { +func Resize(ctx context.Context, client *gophercloud.ServiceClient, id, flavorRef string) (r ActionResult) { b := map[string]interface{}{"resize": map[string]string{"flavorRef": flavorRef}} - resp, err := client.Post(actionURL(client, id), &b, nil, nil) + resp, err := client.Post(ctx, actionURL(client, id), &b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -222,25 +224,25 @@ func Resize(client *gophercloud.ServiceClient, id, flavorRef string) (r ActionRe // ResizeVolume will resize the attached volume for an instance. It supports // only increasing the volume size and does not support decreasing the size. // The volume size is in gigabytes (GB) and must be an integer. -func ResizeVolume(client *gophercloud.ServiceClient, id string, size int) (r ActionResult) { +func ResizeVolume(ctx context.Context, client *gophercloud.ServiceClient, id string, size int) (r ActionResult) { b := map[string]interface{}{"resize": map[string]interface{}{"volume": map[string]int{"size": size}}} - resp, err := client.Post(actionURL(client, id), &b, nil, nil) + resp, err := client.Post(ctx, actionURL(client, id), &b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // AttachConfigurationGroup will attach configuration group to the instance -func AttachConfigurationGroup(client *gophercloud.ServiceClient, instanceID string, configID string) (r ConfigurationResult) { +func AttachConfigurationGroup(ctx context.Context, client *gophercloud.ServiceClient, instanceID string, configID string) (r ConfigurationResult) { b := map[string]interface{}{"instance": map[string]interface{}{"configuration": configID}} - resp, err := client.Put(resourceURL(client, instanceID), &b, nil, &gophercloud.RequestOpts{OkCodes: []int{202}}) + resp, err := client.Put(ctx, resourceURL(client, instanceID), &b, nil, &gophercloud.RequestOpts{OkCodes: []int{202}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // DetachConfigurationGroup will dettach configuration group from the instance -func DetachConfigurationGroup(client *gophercloud.ServiceClient, instanceID string) (r ConfigurationResult) { +func DetachConfigurationGroup(ctx context.Context, client *gophercloud.ServiceClient, instanceID string) (r ConfigurationResult) { b := map[string]interface{}{"instance": map[string]interface{}{}} - resp, err := client.Put(resourceURL(client, instanceID), &b, nil, &gophercloud.RequestOpts{OkCodes: []int{202}}) + resp, err := client.Put(ctx, resourceURL(client, instanceID), &b, nil, &gophercloud.RequestOpts{OkCodes: []int{202}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/db/v1/instances/testing/requests_test.go b/openstack/db/v1/instances/testing/requests_test.go index a9ca418e93..0af243c99e 100644 --- a/openstack/db/v1/instances/testing/requests_test.go +++ b/openstack/db/v1/instances/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" db "github.com/gophercloud/gophercloud/v2/openstack/db/v1/databases" @@ -37,7 +38,7 @@ func TestCreate(t *testing.T) { VolumeType: "ssd", } - instance, err := instances.Create(fake.ServiceClient(), opts).Extract() + instance, err := instances.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expectedInstance, instance) @@ -69,7 +70,7 @@ func TestCreateWithFault(t *testing.T) { VolumeType: "ssd", } - instance, err := instances.Create(fake.ServiceClient(), opts).Extract() + instance, err := instances.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expectedInstanceWithFault, instance) @@ -81,7 +82,7 @@ func TestInstanceList(t *testing.T) { HandleList(t) pages := 0 - err := instances.List(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := instances.List(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := instances.ExtractInstances(page) @@ -102,7 +103,7 @@ func TestGetInstance(t *testing.T) { defer th.TeardownHTTP() HandleGet(t) - instance, err := instances.Get(fake.ServiceClient(), instanceID).Extract() + instance, err := instances.Get(context.TODO(), fake.ServiceClient(), instanceID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expectedGetInstance, instance) @@ -113,7 +114,7 @@ func TestDeleteInstance(t *testing.T) { defer th.TeardownHTTP() HandleDelete(t) - res := instances.Delete(fake.ServiceClient(), instanceID) + res := instances.Delete(context.TODO(), fake.ServiceClient(), instanceID) th.AssertNoErr(t, res.Err) } @@ -123,7 +124,7 @@ func TestEnableRootUser(t *testing.T) { HandleEnableRoot(t) expected := &users.User{Name: "root", Password: "secretsecret"} - user, err := instances.EnableRootUser(fake.ServiceClient(), instanceID).Extract() + user, err := instances.EnableRootUser(context.TODO(), fake.ServiceClient(), instanceID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expected, user) @@ -134,7 +135,7 @@ func TestIsRootEnabled(t *testing.T) { defer th.TeardownHTTP() HandleIsRootEnabled(t) - isEnabled, err := instances.IsRootEnabled(fake.ServiceClient(), instanceID).Extract() + isEnabled, err := instances.IsRootEnabled(context.TODO(), fake.ServiceClient(), instanceID).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, true, isEnabled) @@ -145,7 +146,7 @@ func TestRestart(t *testing.T) { defer th.TeardownHTTP() HandleRestart(t) - res := instances.Restart(fake.ServiceClient(), instanceID) + res := instances.Restart(context.TODO(), fake.ServiceClient(), instanceID) th.AssertNoErr(t, res.Err) } @@ -154,7 +155,7 @@ func TestResize(t *testing.T) { defer th.TeardownHTTP() HandleResize(t) - res := instances.Resize(fake.ServiceClient(), instanceID, "2") + res := instances.Resize(context.TODO(), fake.ServiceClient(), instanceID, "2") th.AssertNoErr(t, res.Err) } @@ -163,7 +164,7 @@ func TestResizeVolume(t *testing.T) { defer th.TeardownHTTP() HandleResizeVol(t) - res := instances.ResizeVolume(fake.ServiceClient(), instanceID, 4) + res := instances.ResizeVolume(context.TODO(), fake.ServiceClient(), instanceID, 4) th.AssertNoErr(t, res.Err) } @@ -172,7 +173,7 @@ func TestAttachConfigurationGroup(t *testing.T) { defer th.TeardownHTTP() HandleAttachConfigurationGroup(t) - res := instances.AttachConfigurationGroup(fake.ServiceClient(), instanceID, configGroupID) + res := instances.AttachConfigurationGroup(context.TODO(), fake.ServiceClient(), instanceID, configGroupID) th.AssertNoErr(t, res.Err) } @@ -181,6 +182,6 @@ func TestDetachConfigurationGroup(t *testing.T) { defer th.TeardownHTTP() HandleDetachConfigurationGroup(t) - res := instances.DetachConfigurationGroup(fake.ServiceClient(), instanceID) + res := instances.DetachConfigurationGroup(context.TODO(), fake.ServiceClient(), instanceID) th.AssertNoErr(t, res.Err) } diff --git a/openstack/db/v1/users/requests.go b/openstack/db/v1/users/requests.go index 094403fce4..d83bdc3c57 100644 --- a/openstack/db/v1/users/requests.go +++ b/openstack/db/v1/users/requests.go @@ -1,6 +1,8 @@ package users import ( + "context" + "github.com/gophercloud/gophercloud/v2" db "github.com/gophercloud/gophercloud/v2/openstack/db/v1/databases" "github.com/gophercloud/gophercloud/v2/pagination" @@ -65,13 +67,13 @@ func (opts BatchCreateOpts) ToUserCreateMap() (map[string]interface{}, error) { // instance based on the configuration defined in CreateOpts. If databases are // assigned for a particular user, the user will be granted all privileges // for those specified databases. "root" is a reserved name and cannot be used. -func Create(client *gophercloud.ServiceClient, instanceID string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, instanceID string, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToUserCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(baseURL(client, instanceID), &b, nil, nil) + resp, err := client.Post(ctx, baseURL(client, instanceID), &b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -86,8 +88,8 @@ func List(client *gophercloud.ServiceClient, instanceID string) pagination.Pager } // Delete will permanently delete a user from a specified database instance. -func Delete(client *gophercloud.ServiceClient, instanceID, userName string) (r DeleteResult) { - resp, err := client.Delete(userURL(client, instanceID, userName), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, instanceID, userName string) (r DeleteResult) { + resp, err := client.Delete(ctx, userURL(client, instanceID, userName), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/db/v1/users/testing/requests_test.go b/openstack/db/v1/users/testing/requests_test.go index 2a15f811a9..40713f5446 100644 --- a/openstack/db/v1/users/testing/requests_test.go +++ b/openstack/db/v1/users/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" db "github.com/gophercloud/gophercloud/v2/openstack/db/v1/databases" @@ -33,7 +34,7 @@ func TestCreate(t *testing.T) { }, } - res := users.Create(fake.ServiceClient(), instanceID, opts) + res := users.Create(context.TODO(), fake.ServiceClient(), instanceID, opts) th.AssertNoErr(t, res.Err) } @@ -59,7 +60,7 @@ func TestUserList(t *testing.T) { } pages := 0 - err := users.List(fake.ServiceClient(), instanceID).EachPage(func(page pagination.Page) (bool, error) { + err := users.List(fake.ServiceClient(), instanceID).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := users.ExtractUsers(page) @@ -80,6 +81,6 @@ func TestDelete(t *testing.T) { defer th.TeardownHTTP() HandleDelete(t) - res := users.Delete(fake.ServiceClient(), instanceID, "{userName}") + res := users.Delete(context.TODO(), fake.ServiceClient(), instanceID, "{userName}") th.AssertNoErr(t, res.Err) } diff --git a/openstack/dns/v2/recordsets/requests.go b/openstack/dns/v2/recordsets/requests.go index 36534bfa45..a89bc8134a 100644 --- a/openstack/dns/v2/recordsets/requests.go +++ b/openstack/dns/v2/recordsets/requests.go @@ -1,6 +1,8 @@ package recordsets import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -56,8 +58,8 @@ func ListByZone(client *gophercloud.ServiceClient, zoneID string, opts ListOptsB } // Get implements the recordset Get request. -func Get(client *gophercloud.ServiceClient, zoneID string, rrsetID string) (r GetResult) { - resp, err := client.Get(rrsetURL(client, zoneID, rrsetID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, zoneID string, rrsetID string) (r GetResult) { + resp, err := client.Get(ctx, rrsetURL(client, zoneID, rrsetID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -98,13 +100,13 @@ func (opts CreateOpts) ToRecordSetCreateMap() (map[string]interface{}, error) { } // Create creates a recordset in a given zone. -func Create(client *gophercloud.ServiceClient, zoneID string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, zoneID string, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToRecordSetCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(baseURL(client, zoneID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, baseURL(client, zoneID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -154,13 +156,13 @@ func (opts UpdateOpts) ToRecordSetUpdateMap() (map[string]interface{}, error) { } // Update updates a recordset in a given zone -func Update(client *gophercloud.ServiceClient, zoneID string, rrsetID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, zoneID string, rrsetID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToRecordSetUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(rrsetURL(client, zoneID, rrsetID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, rrsetURL(client, zoneID, rrsetID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -168,8 +170,8 @@ func Update(client *gophercloud.ServiceClient, zoneID string, rrsetID string, op } // Delete removes an existing RecordSet. -func Delete(client *gophercloud.ServiceClient, zoneID string, rrsetID string) (r DeleteResult) { - resp, err := client.Delete(rrsetURL(client, zoneID, rrsetID), &gophercloud.RequestOpts{ +func Delete(ctx context.Context, client *gophercloud.ServiceClient, zoneID string, rrsetID string) (r DeleteResult) { + resp, err := client.Delete(ctx, rrsetURL(client, zoneID, rrsetID), &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/dns/v2/recordsets/testing/requests_test.go b/openstack/dns/v2/recordsets/testing/requests_test.go index 6624e242b7..05dde60ed3 100644 --- a/openstack/dns/v2/recordsets/testing/requests_test.go +++ b/openstack/dns/v2/recordsets/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "encoding/json" "testing" @@ -16,7 +17,7 @@ func TestListByZone(t *testing.T) { HandleListByZoneSuccessfully(t) count := 0 - err := recordsets.ListByZone(client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", nil).EachPage(func(page pagination.Page) (bool, error) { + err := recordsets.ListByZone(client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := recordsets.ExtractRecordSets(page) th.AssertNoErr(t, err) @@ -38,7 +39,7 @@ func TestListByZoneLimited(t *testing.T) { Limit: 1, Marker: "f7b10e9b-0cae-4a91-b162-562bc6096648", } - err := recordsets.ListByZone(client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", listOpts).EachPage(func(page pagination.Page) (bool, error) { + err := recordsets.ListByZone(client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := recordsets.ExtractRecordSets(page) th.AssertNoErr(t, err) @@ -55,7 +56,7 @@ func TestListByZoneAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListByZoneSuccessfully(t) - allPages, err := recordsets.ListByZone(client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", nil).AllPages() + allPages, err := recordsets.ListByZone(client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allRecordSets, err := recordsets.ExtractRecordSets(allPages) th.AssertNoErr(t, err) @@ -67,7 +68,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t) - actual, err := recordsets.Get(client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", "f7b10e9b-0cae-4a91-b162-562bc6096648").Extract() + actual, err := recordsets.Get(context.TODO(), client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", "f7b10e9b-0cae-4a91-b162-562bc6096648").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &FirstRecordSet, actual) } @@ -99,7 +100,7 @@ func TestCreate(t *testing.T) { Records: []string{"10.1.0.2"}, } - actual, err := recordsets.Create(client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", createOpts).Extract() + actual, err := recordsets.Create(context.TODO(), client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &CreatedRecordSet, actual) } @@ -124,7 +125,7 @@ func TestUpdate(t *testing.T) { UpdatedRecordSet.Records = []string{"10.1.0.2", "10.1.0.3"} UpdatedRecordSet.Version = 2 - actual, err := recordsets.Update(client.ServiceClient(), UpdatedRecordSet.ZoneID, UpdatedRecordSet.ID, updateOpts).Extract() + actual, err := recordsets.Update(context.TODO(), client.ServiceClient(), UpdatedRecordSet.ZoneID, UpdatedRecordSet.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &UpdatedRecordSet, actual) } @@ -141,7 +142,7 @@ func TestDelete(t *testing.T) { DeletedRecordSet.Records = []string{"10.1.0.2", "10.1.0.3"} DeletedRecordSet.Version = 2 - err := recordsets.Delete(client.ServiceClient(), DeletedRecordSet.ZoneID, DeletedRecordSet.ID).ExtractErr() + err := recordsets.Delete(context.TODO(), client.ServiceClient(), DeletedRecordSet.ZoneID, DeletedRecordSet.ID).ExtractErr() th.AssertNoErr(t, err) //th.CheckDeepEquals(t, &DeletedZone, actual) } diff --git a/openstack/dns/v2/transfer/accept/requests.go b/openstack/dns/v2/transfer/accept/requests.go index dc98e6d10e..ff4112dc29 100644 --- a/openstack/dns/v2/transfer/accept/requests.go +++ b/openstack/dns/v2/transfer/accept/requests.go @@ -1,6 +1,7 @@ package accept import ( + "context" "net/http" "github.com/gophercloud/gophercloud/v2" @@ -42,8 +43,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get returns information about a transfer accept, given its ID. -func Get(client *gophercloud.ServiceClient, transferAcceptID string) (r GetResult) { - resp, err := client.Get(resourceURL(client, transferAcceptID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, transferAcceptID string) (r GetResult) { + resp, err := client.Get(ctx, resourceURL(client, transferAcceptID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -74,13 +75,13 @@ func (opts CreateOpts) ToTransferAcceptCreateMap() (map[string]interface{}, erro } // Create implements a transfer accept create request. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToTransferAcceptCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(baseURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, baseURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{http.StatusCreated, http.StatusAccepted}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/dns/v2/transfer/accept/testing/accepts_test.go b/openstack/dns/v2/transfer/accept/testing/accepts_test.go index 49e5e75380..db868bd779 100644 --- a/openstack/dns/v2/transfer/accept/testing/accepts_test.go +++ b/openstack/dns/v2/transfer/accept/testing/accepts_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" transferAccepts "github.com/gophercloud/gophercloud/v2/openstack/dns/v2/transfer/accept" @@ -16,7 +17,8 @@ func TestList(t *testing.T) { count := 0 err := transferAccepts.List(client.ServiceClient(), nil).EachPage( - func(page pagination.Page) (bool, error) { + context.TODO(), + func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := transferAccepts.ExtractTransferAccepts(page) th.AssertNoErr(t, err) @@ -36,7 +38,7 @@ func TestListWithOpts(t *testing.T) { Status: "ACTIVE", } - allPages, err := transferAccepts.List(client.ServiceClient(), listOpts).AllPages() + allPages, err := transferAccepts.List(client.ServiceClient(), listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allTransferAccepts, err := transferAccepts.ExtractTransferAccepts(allPages) th.AssertNoErr(t, err) @@ -48,7 +50,7 @@ func TestListAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListSuccessfully(t) - allPages, err := transferAccepts.List(client.ServiceClient(), nil).AllPages() + allPages, err := transferAccepts.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allTransferAccepts, err := transferAccepts.ExtractTransferAccepts(allPages) th.AssertNoErr(t, err) @@ -61,7 +63,7 @@ func TestGet(t *testing.T) { HandleGetSuccessfully(t) actual, err := transferAccepts.Get( - client.ServiceClient(), "92236f39-0fad-4f8f-bf25-fbdf027de34d").Extract() + context.TODO(), client.ServiceClient(), "92236f39-0fad-4f8f-bf25-fbdf027de34d").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &FirstTransferAccept, actual) } @@ -77,7 +79,7 @@ func TestCreate(t *testing.T) { } actual, err := transferAccepts.Create( - client.ServiceClient(), createOpts).Extract() + context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &CreatedTransferAccept, actual) } diff --git a/openstack/dns/v2/transfer/request/requests.go b/openstack/dns/v2/transfer/request/requests.go index 46eaf9473b..55c4823591 100644 --- a/openstack/dns/v2/transfer/request/requests.go +++ b/openstack/dns/v2/transfer/request/requests.go @@ -1,6 +1,7 @@ package request import ( + "context" "net/http" "github.com/gophercloud/gophercloud/v2" @@ -42,8 +43,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get returns information about a transfer request, given its ID. -func Get(client *gophercloud.ServiceClient, transferRequestID string) (r GetResult) { - resp, err := client.Get(resourceURL(client, transferRequestID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, transferRequestID string) (r GetResult) { + resp, err := client.Get(ctx, resourceURL(client, transferRequestID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -74,13 +75,13 @@ func (opts CreateOpts) ToTransferRequestCreateMap() (map[string]interface{}, err } // Create implements a transfer request create request. -func Create(client *gophercloud.ServiceClient, zoneID string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, zoneID string, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToTransferRequestCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client, zoneID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client, zoneID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{http.StatusCreated, http.StatusAccepted}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -113,13 +114,13 @@ func (opts UpdateOpts) ToTransferRequestUpdateMap() (map[string]interface{}, err } // Update implements a transfer request update request. -func Update(client *gophercloud.ServiceClient, transferID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, transferID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToTransferRequestUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(resourceURL(client, transferID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, resourceURL(client, transferID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{http.StatusOK, http.StatusAccepted}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -127,8 +128,8 @@ func Update(client *gophercloud.ServiceClient, transferID string, opts UpdateOpt } // Delete implements a transfer request delete request. -func Delete(client *gophercloud.ServiceClient, transferID string) (r DeleteResult) { - resp, err := client.Delete(resourceURL(client, transferID), &gophercloud.RequestOpts{ +func Delete(ctx context.Context, client *gophercloud.ServiceClient, transferID string) (r DeleteResult) { + resp, err := client.Delete(ctx, resourceURL(client, transferID), &gophercloud.RequestOpts{ OkCodes: []int{http.StatusNoContent}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/dns/v2/transfer/request/testing/requests_test.go b/openstack/dns/v2/transfer/request/testing/requests_test.go index c7ebe5832d..daad13b664 100644 --- a/openstack/dns/v2/transfer/request/testing/requests_test.go +++ b/openstack/dns/v2/transfer/request/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" transferRequests "github.com/gophercloud/gophercloud/v2/openstack/dns/v2/transfer/request" @@ -16,7 +17,8 @@ func TestList(t *testing.T) { count := 0 err := transferRequests.List(client.ServiceClient(), nil).EachPage( - func(page pagination.Page) (bool, error) { + context.TODO(), + func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := transferRequests.ExtractTransferRequests(page) th.AssertNoErr(t, err) @@ -36,7 +38,7 @@ func TestListWithOpts(t *testing.T) { Status: "ACTIVE", } - allPages, err := transferRequests.List(client.ServiceClient(), listOpts).AllPages() + allPages, err := transferRequests.List(client.ServiceClient(), listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allTransferRequests, err := transferRequests.ExtractTransferRequests(allPages) th.AssertNoErr(t, err) @@ -48,7 +50,7 @@ func TestListAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListSuccessfully(t) - allPages, err := transferRequests.List(client.ServiceClient(), nil).AllPages() + allPages, err := transferRequests.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allTransferRequests, err := transferRequests.ExtractTransferRequests(allPages) th.AssertNoErr(t, err) @@ -61,7 +63,7 @@ func TestGet(t *testing.T) { HandleGetSuccessfully(t) actual, err := transferRequests.Get( - client.ServiceClient(), "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3").Extract() + context.TODO(), client.ServiceClient(), "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &FirstTransferRequest, actual) } @@ -77,7 +79,7 @@ func TestCreate(t *testing.T) { } actual, err := transferRequests.Create( - client.ServiceClient(), FirstTransferRequest.ZoneID, createOpts).Extract() + context.TODO(), client.ServiceClient(), FirstTransferRequest.ZoneID, createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &CreatedTransferRequest, actual) } @@ -96,7 +98,7 @@ func TestUpdate(t *testing.T) { UpdatedTransferRequest.Description = "Updated Description" actual, err := transferRequests.Update( - client.ServiceClient(), UpdatedTransferRequest.ID, updateOpts).Extract() + context.TODO(), client.ServiceClient(), UpdatedTransferRequest.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &UpdatedTransferRequest, actual) } @@ -108,6 +110,6 @@ func TestDelete(t *testing.T) { DeletedZone := CreatedTransferRequest - err := transferRequests.Delete(client.ServiceClient(), DeletedZone.ID).ExtractErr() + err := transferRequests.Delete(context.TODO(), client.ServiceClient(), DeletedZone.ID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/dns/v2/zones/requests.go b/openstack/dns/v2/zones/requests.go index 08da3d80a3..aa6844f600 100644 --- a/openstack/dns/v2/zones/requests.go +++ b/openstack/dns/v2/zones/requests.go @@ -1,6 +1,8 @@ package zones import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -54,8 +56,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get returns information about a zone, given its ID. -func Get(client *gophercloud.ServiceClient, zoneID string) (r GetResult) { - resp, err := client.Get(zoneURL(client, zoneID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, zoneID string) (r GetResult) { + resp, err := client.Get(ctx, zoneURL(client, zoneID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -105,13 +107,13 @@ func (opts CreateOpts) ToZoneCreateMap() (map[string]interface{}, error) { } // Create implements a zone create request. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToZoneCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(baseURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, baseURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -154,13 +156,13 @@ func (opts UpdateOpts) ToZoneUpdateMap() (map[string]interface{}, error) { } // Update implements a zone update request. -func Update(client *gophercloud.ServiceClient, zoneID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, zoneID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToZoneUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(zoneURL(client, zoneID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, zoneURL(client, zoneID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -168,8 +170,8 @@ func Update(client *gophercloud.ServiceClient, zoneID string, opts UpdateOptsBui } // Delete implements a zone delete request. -func Delete(client *gophercloud.ServiceClient, zoneID string) (r DeleteResult) { - resp, err := client.Delete(zoneURL(client, zoneID), &gophercloud.RequestOpts{ +func Delete(ctx context.Context, client *gophercloud.ServiceClient, zoneID string) (r DeleteResult) { + resp, err := client.Delete(ctx, zoneURL(client, zoneID), &gophercloud.RequestOpts{ OkCodes: []int{202}, JSONResponse: &r.Body, }) diff --git a/openstack/dns/v2/zones/testing/requests_test.go b/openstack/dns/v2/zones/testing/requests_test.go index 2283c1b955..0b64e81ecf 100644 --- a/openstack/dns/v2/zones/testing/requests_test.go +++ b/openstack/dns/v2/zones/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/dns/v2/zones" @@ -15,7 +16,7 @@ func TestList(t *testing.T) { HandleListSuccessfully(t) count := 0 - err := zones.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := zones.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := zones.ExtractZones(page) th.AssertNoErr(t, err) @@ -32,7 +33,7 @@ func TestListAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListSuccessfully(t) - allPages, err := zones.List(client.ServiceClient(), nil).AllPages() + allPages, err := zones.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) allZones, err := zones.ExtractZones(allPages) th.AssertNoErr(t, err) @@ -44,7 +45,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t) - actual, err := zones.Get(client.ServiceClient(), "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3").Extract() + actual, err := zones.Get(context.TODO(), client.ServiceClient(), "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &FirstZone, actual) } @@ -62,7 +63,7 @@ func TestCreate(t *testing.T) { Description: "This is an example zone.", } - actual, err := zones.Create(client.ServiceClient(), createOpts).Extract() + actual, err := zones.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &CreatedZone, actual) } @@ -84,7 +85,7 @@ func TestUpdate(t *testing.T) { UpdatedZone.TTL = 600 UpdatedZone.Description = "Updated Description" - actual, err := zones.Update(client.ServiceClient(), UpdatedZone.ID, updateOpts).Extract() + actual, err := zones.Update(context.TODO(), client.ServiceClient(), UpdatedZone.ID, updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &UpdatedZone, actual) } @@ -100,7 +101,7 @@ func TestDelete(t *testing.T) { DeletedZone.TTL = 600 DeletedZone.Description = "Updated Description" - actual, err := zones.Delete(client.ServiceClient(), DeletedZone.ID).Extract() + actual, err := zones.Delete(context.TODO(), client.ServiceClient(), DeletedZone.ID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &DeletedZone, actual) } diff --git a/openstack/identity/v2/extensions/admin/roles/requests.go b/openstack/identity/v2/extensions/admin/roles/requests.go index abaed4ba80..c5c1140c16 100644 --- a/openstack/identity/v2/extensions/admin/roles/requests.go +++ b/openstack/identity/v2/extensions/admin/roles/requests.go @@ -1,6 +1,8 @@ package roles import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -16,8 +18,8 @@ func List(client *gophercloud.ServiceClient) pagination.Pager { // AddUser is the operation responsible for assigning a particular role to // a user. This is confined to the scope of the user's tenant - so the tenant // ID is a required argument. -func AddUser(client *gophercloud.ServiceClient, tenantID, userID, roleID string) (r UserRoleResult) { - resp, err := client.Put(userRoleURL(client, tenantID, userID, roleID), nil, nil, &gophercloud.RequestOpts{ +func AddUser(ctx context.Context, client *gophercloud.ServiceClient, tenantID, userID, roleID string) (r UserRoleResult) { + resp, err := client.Put(ctx, userRoleURL(client, tenantID, userID, roleID), nil, nil, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -27,8 +29,8 @@ func AddUser(client *gophercloud.ServiceClient, tenantID, userID, roleID string) // DeleteUser is the operation responsible for deleting a particular role // from a user. This is confined to the scope of the user's tenant - so the // tenant ID is a required argument. -func DeleteUser(client *gophercloud.ServiceClient, tenantID, userID, roleID string) (r UserRoleResult) { - resp, err := client.Delete(userRoleURL(client, tenantID, userID, roleID), nil) +func DeleteUser(ctx context.Context, client *gophercloud.ServiceClient, tenantID, userID, roleID string) (r UserRoleResult) { + resp, err := client.Delete(ctx, userRoleURL(client, tenantID, userID, roleID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v2/extensions/admin/roles/testing/requests_test.go b/openstack/identity/v2/extensions/admin/roles/testing/requests_test.go index 12703aa216..ce14915671 100644 --- a/openstack/identity/v2/extensions/admin/roles/testing/requests_test.go +++ b/openstack/identity/v2/extensions/admin/roles/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v2/extensions/admin/roles" @@ -17,7 +18,7 @@ func TestRole(t *testing.T) { count := 0 - err := roles.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := roles.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := roles.ExtractRoles(page) if err != nil { @@ -48,7 +49,7 @@ func TestAddUser(t *testing.T) { MockAddUserRoleResponse(t) - err := roles.AddUser(client.ServiceClient(), "{tenant_id}", "{user_id}", "{role_id}").ExtractErr() + err := roles.AddUser(context.TODO(), client.ServiceClient(), "{tenant_id}", "{user_id}", "{role_id}").ExtractErr() th.AssertNoErr(t, err) } @@ -59,7 +60,7 @@ func TestDeleteUser(t *testing.T) { MockDeleteUserRoleResponse(t) - err := roles.DeleteUser(client.ServiceClient(), "{tenant_id}", "{user_id}", "{role_id}").ExtractErr() + err := roles.DeleteUser(context.TODO(), client.ServiceClient(), "{tenant_id}", "{user_id}", "{role_id}").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/identity/v2/extensions/delegate.go b/openstack/identity/v2/extensions/delegate.go index 870ee9929b..e918cf6a4d 100644 --- a/openstack/identity/v2/extensions/delegate.go +++ b/openstack/identity/v2/extensions/delegate.go @@ -1,6 +1,8 @@ package extensions import ( + "context" + "github.com/gophercloud/gophercloud/v2" common "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" "github.com/gophercloud/gophercloud/v2/pagination" @@ -31,8 +33,8 @@ func ExtractExtensions(page pagination.Page) ([]common.Extension, error) { } // Get retrieves information for a specific extension using its alias. -func Get(c *gophercloud.ServiceClient, alias string) common.GetResult { - return common.Get(c, alias) +func Get(ctx context.Context, c *gophercloud.ServiceClient, alias string) common.GetResult { + return common.Get(ctx, c, alias) } // List returns a Pager which allows you to iterate over the full collection of extensions. diff --git a/openstack/identity/v2/extensions/testing/delegate_test.go b/openstack/identity/v2/extensions/testing/delegate_test.go index 51be73f115..53c10ab169 100644 --- a/openstack/identity/v2/extensions/testing/delegate_test.go +++ b/openstack/identity/v2/extensions/testing/delegate_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" common "github.com/gophercloud/gophercloud/v2/openstack/common/extensions/testing" @@ -16,7 +17,7 @@ func TestList(t *testing.T) { HandleListExtensionsSuccessfully(t) count := 0 - err := extensions.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := extensions.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := extensions.ExtractExtensions(page) th.AssertNoErr(t, err) @@ -33,7 +34,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() common.HandleGetExtensionSuccessfully(t) - actual, err := extensions.Get(client.ServiceClient(), "agent").Extract() + actual, err := extensions.Get(context.TODO(), client.ServiceClient(), "agent").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, common.SingleExtension, actual) } diff --git a/openstack/identity/v2/tenants/requests.go b/openstack/identity/v2/tenants/requests.go index f6de7839d4..4a986b890a 100644 --- a/openstack/identity/v2/tenants/requests.go +++ b/openstack/identity/v2/tenants/requests.go @@ -1,6 +1,8 @@ package tenants import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -54,13 +56,13 @@ func (opts CreateOpts) ToTenantCreateMap() (map[string]interface{}, error) { } // Create is the operation responsible for creating new tenant. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToTenantCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -68,8 +70,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Get requests details on a single tenant by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -99,13 +101,13 @@ func (opts UpdateOpts) ToTenantUpdateMap() (map[string]interface{}, error) { } // Update is the operation responsible for updating exist tenants by their TenantID. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToTenantUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -113,8 +115,8 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder } // Delete is the operation responsible for permanently deleting a tenant. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v2/tenants/testing/requests_test.go b/openstack/identity/v2/tenants/testing/requests_test.go index 1d75a09a2e..1e3e05ce3c 100644 --- a/openstack/identity/v2/tenants/testing/requests_test.go +++ b/openstack/identity/v2/tenants/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -16,7 +17,7 @@ func TestListTenants(t *testing.T) { HandleListTenantsSuccessfully(t) count := 0 - err := tenants.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := tenants.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := tenants.ExtractTenants(page) @@ -42,7 +43,7 @@ func TestCreateTenant(t *testing.T) { Enabled: gophercloud.Enabled, } - tenant, err := tenants.Create(client.ServiceClient(), opts).Extract() + tenant, err := tenants.Create(context.TODO(), client.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) @@ -62,7 +63,7 @@ func TestDeleteTenant(t *testing.T) { mockDeleteTenantResponse(t) - err := tenants.Delete(client.ServiceClient(), "2466f69cd4714d89a548a68ed97ffcd4").ExtractErr() + err := tenants.Delete(context.TODO(), client.ServiceClient(), "2466f69cd4714d89a548a68ed97ffcd4").ExtractErr() th.AssertNoErr(t, err) } @@ -80,7 +81,7 @@ func TestUpdateTenant(t *testing.T) { Enabled: gophercloud.Enabled, } - tenant, err := tenants.Update(client.ServiceClient(), id, opts).Extract() + tenant, err := tenants.Update(context.TODO(), client.ServiceClient(), id, opts).Extract() th.AssertNoErr(t, err) @@ -100,7 +101,7 @@ func TestGetTenant(t *testing.T) { mockGetTenantResponse(t) - tenant, err := tenants.Get(client.ServiceClient(), "5c62ef576dc7444cbb73b1fe84b97648").Extract() + tenant, err := tenants.Get(context.TODO(), client.ServiceClient(), "5c62ef576dc7444cbb73b1fe84b97648").Extract() th.AssertNoErr(t, err) expected := &tenants.Tenant{ diff --git a/openstack/identity/v2/tokens/requests.go b/openstack/identity/v2/tokens/requests.go index 9e7b7512e1..03b602ca42 100644 --- a/openstack/identity/v2/tokens/requests.go +++ b/openstack/identity/v2/tokens/requests.go @@ -81,17 +81,17 @@ func (opts AuthOptions) ToTokenV2CreateMap() (map[string]interface{}, error) { return b, nil } -// CreateWithContext authenticates to the identity service and attempts to acquire a Token. +// Create authenticates to the identity service and attempts to acquire a Token. // Generally, rather than interact with this call directly, end users should // call openstack.AuthenticatedClient(), which abstracts all of the gory details // about navigating service catalogs and such. -func CreateWithContext(ctx context.Context, client *gophercloud.ServiceClient, auth AuthOptionsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, auth AuthOptionsBuilder) (r CreateResult) { b, err := auth.ToTokenV2CreateMap() if err != nil { r.Err = err return } - resp, err := client.PostWithContext(ctx, CreateURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, CreateURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 203}, OmitHeaders: []string{"X-Auth-Token"}, }) @@ -99,21 +99,11 @@ func CreateWithContext(ctx context.Context, client *gophercloud.ServiceClient, a return } -// Create is a compatibility wrapper around CreateWithContext -func Create(client *gophercloud.ServiceClient, auth AuthOptionsBuilder) (r CreateResult) { - return CreateWithContext(context.Background(), client, auth) -} - -// GetWithContext validates and retrieves information for user's token. -func GetWithContext(ctx context.Context, client *gophercloud.ServiceClient, token string) (r GetResult) { - resp, err := client.Get(GetURL(client, token), &r.Body, &gophercloud.RequestOpts{ +// Get validates and retrieves information for user's token. +func Get(ctx context.Context, client *gophercloud.ServiceClient, token string) (r GetResult) { + resp, err := client.Get(ctx, GetURL(client, token), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 203}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } - -// Get is a compatibility wrapper around GetWithContext -func Get(client *gophercloud.ServiceClient, token string) (r GetResult) { - return GetWithContext(context.Background(), client, token) -} diff --git a/openstack/identity/v2/tokens/testing/requests_test.go b/openstack/identity/v2/tokens/testing/requests_test.go index ecf53870c0..a688369d65 100644 --- a/openstack/identity/v2/tokens/testing/requests_test.go +++ b/openstack/identity/v2/tokens/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -14,7 +15,7 @@ func tokenPost(t *testing.T, options gophercloud.AuthOptions, requestJSON string defer th.TeardownHTTP() HandleTokenPost(t, requestJSON) - return tokens.Create(client.ServiceClient(), options) + return tokens.Create(context.TODO(), client.ServiceClient(), options) } func tokenPostErr(t *testing.T, options gophercloud.AuthOptions, expectedErr error) { @@ -22,7 +23,7 @@ func tokenPostErr(t *testing.T, options gophercloud.AuthOptions, expectedErr err defer th.TeardownHTTP() HandleTokenPost(t, "") - actualErr := tokens.Create(client.ServiceClient(), options).Err + actualErr := tokens.Create(context.TODO(), client.ServiceClient(), options).Err th.CheckDeepEquals(t, expectedErr, actualErr) } @@ -96,7 +97,7 @@ func tokenGet(t *testing.T, tokenId string) tokens.GetResult { th.SetupHTTP() defer th.TeardownHTTP() HandleTokenGet(t, tokenId) - return tokens.Get(client.ServiceClient(), tokenId) + return tokens.Get(context.TODO(), client.ServiceClient(), tokenId) } func TestGetWithToken(t *testing.T) { diff --git a/openstack/identity/v2/users/requests.go b/openstack/identity/v2/users/requests.go index 7bb60a7c62..4f47a7eed9 100644 --- a/openstack/identity/v2/users/requests.go +++ b/openstack/identity/v2/users/requests.go @@ -1,6 +1,8 @@ package users import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -53,13 +55,13 @@ func (opts CreateOpts) ToUserCreateMap() (map[string]interface{}, error) { } // Create is the operation responsible for creating new users. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToUserCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(rootURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, rootURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -67,8 +69,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Get requests details on a single user, either by ID or Name. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(ResourceURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, ResourceURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -89,13 +91,13 @@ func (opts UpdateOpts) ToUserUpdateMap() (map[string]interface{}, error) { } // Update is the operation responsible for updating exist users by their ID. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToUserUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(ResourceURL(client, id), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, ResourceURL(client, id), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -103,8 +105,8 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder } // Delete is the operation responsible for permanently deleting a User. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(ResourceURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, ResourceURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v2/users/testing/requests_test.go b/openstack/identity/v2/users/testing/requests_test.go index 53060a776f..c66207d0c3 100644 --- a/openstack/identity/v2/users/testing/requests_test.go +++ b/openstack/identity/v2/users/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -18,7 +19,7 @@ func TestList(t *testing.T) { count := 0 - err := users.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := users.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := users.ExtractUsers(page) th.AssertNoErr(t, err) @@ -61,7 +62,7 @@ func TestCreateUser(t *testing.T) { Email: "new_user@foo.com", } - user, err := users.Create(client.ServiceClient(), opts).Extract() + user, err := users.Create(context.TODO(), client.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) @@ -82,7 +83,7 @@ func TestGetUser(t *testing.T) { mockGetUserResponse(t) - user, err := users.Get(client.ServiceClient(), "new_user").Extract() + user, err := users.Get(context.TODO(), client.ServiceClient(), "new_user").Extract() th.AssertNoErr(t, err) expected := &users.User{ @@ -109,7 +110,7 @@ func TestUpdateUser(t *testing.T) { Email: "new_email@foo.com", } - user, err := users.Update(client.ServiceClient(), id, opts).Extract() + user, err := users.Update(context.TODO(), client.ServiceClient(), id, opts).Extract() th.AssertNoErr(t, err) @@ -130,7 +131,7 @@ func TestDeleteUser(t *testing.T) { mockDeleteUserResponse(t) - res := users.Delete(client.ServiceClient(), "c39e3de9be2d4c779f1dfd6abacc176d") + res := users.Delete(context.TODO(), client.ServiceClient(), "c39e3de9be2d4c779f1dfd6abacc176d") th.AssertNoErr(t, res.Err) } @@ -143,7 +144,7 @@ func TestListingUserRoles(t *testing.T) { tenantID := "1d8b6120dcc640fda4fc9194ffc80273" userID := "c39e3de9be2d4c779f1dfd6abacc176d" - err := users.ListRoles(client.ServiceClient(), tenantID, userID).EachPage(func(page pagination.Page) (bool, error) { + err := users.ListRoles(client.ServiceClient(), tenantID, userID).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { actual, err := users.ExtractRoles(page) th.AssertNoErr(t, err) diff --git a/openstack/identity/v3/applicationcredentials/requests.go b/openstack/identity/v3/applicationcredentials/requests.go index 5b503092e4..bb8d3b4d3b 100644 --- a/openstack/identity/v3/applicationcredentials/requests.go +++ b/openstack/identity/v3/applicationcredentials/requests.go @@ -1,6 +1,7 @@ package applicationcredentials import ( + "context" "time" "github.com/gophercloud/gophercloud/v2" @@ -41,8 +42,8 @@ func List(client *gophercloud.ServiceClient, userID string, opts ListOptsBuilder } // Get retrieves details on a single user, by ID. -func Get(client *gophercloud.ServiceClient, userID string, id string) (r GetResult) { - resp, err := client.Get(getURL(client, userID, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, userID string, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, userID, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -93,13 +94,13 @@ func (opts CreateOpts) ToApplicationCredentialCreateMap() (map[string]interface{ } // Create creates a new ApplicationCredential. -func Create(client *gophercloud.ServiceClient, userID string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, userID string, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToApplicationCredentialCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client, userID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client, userID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -107,8 +108,8 @@ func Create(client *gophercloud.ServiceClient, userID string, opts CreateOptsBui } // Delete deletes an application credential. -func Delete(client *gophercloud.ServiceClient, userID string, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, userID, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, userID string, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, userID, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -122,15 +123,15 @@ func ListAccessRules(client *gophercloud.ServiceClient, userID string) paginatio } // GetAccessRule retrieves details on a single access rule by ID. -func GetAccessRule(client *gophercloud.ServiceClient, userID string, id string) (r GetAccessRuleResult) { - resp, err := client.Get(getAccessRuleURL(client, userID, id), &r.Body, nil) +func GetAccessRule(ctx context.Context, client *gophercloud.ServiceClient, userID string, id string) (r GetAccessRuleResult) { + resp, err := client.Get(ctx, getAccessRuleURL(client, userID, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // DeleteAccessRule deletes an access rule. -func DeleteAccessRule(client *gophercloud.ServiceClient, userID string, id string) (r DeleteResult) { - resp, err := client.Delete(deleteAccessRuleURL(client, userID, id), nil) +func DeleteAccessRule(ctx context.Context, client *gophercloud.ServiceClient, userID string, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteAccessRuleURL(client, userID, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v3/applicationcredentials/testing/requests_test.go b/openstack/identity/v3/applicationcredentials/testing/requests_test.go index 8a305f028e..11d863609f 100644 --- a/openstack/identity/v3/applicationcredentials/testing/requests_test.go +++ b/openstack/identity/v3/applicationcredentials/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/applicationcredentials" @@ -15,7 +16,7 @@ func TestListApplicationCredentials(t *testing.T) { HandleListApplicationCredentialsSuccessfully(t) count := 0 - err := applicationcredentials.List(client.ServiceClient(), userID, nil).EachPage(func(page pagination.Page) (bool, error) { + err := applicationcredentials.List(client.ServiceClient(), userID, nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := applicationcredentials.ExtractApplicationCredentials(page) @@ -34,7 +35,7 @@ func TestListApplicationCredentialsAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListApplicationCredentialsSuccessfully(t) - allPages, err := applicationcredentials.List(client.ServiceClient(), userID, nil).AllPages() + allPages, err := applicationcredentials.List(client.ServiceClient(), userID, nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := applicationcredentials.ExtractApplicationCredentials(allPages) th.AssertNoErr(t, err) @@ -48,7 +49,7 @@ func TestGetApplicationCredential(t *testing.T) { defer th.TeardownHTTP() HandleGetApplicationCredentialSuccessfully(t) - actual, err := applicationcredentials.Get(client.ServiceClient(), userID, applicationCredentialID).Extract() + actual, err := applicationcredentials.Get(context.TODO(), client.ServiceClient(), userID, applicationCredentialID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, ApplicationCredential, *actual) } @@ -76,7 +77,7 @@ func TestCreateApplicationCredential(t *testing.T) { ApplicationCredentialResponse := ApplicationCredential ApplicationCredentialResponse.Secret = "mysecret" - actual, err := applicationcredentials.Create(client.ServiceClient(), userID, createOpts).Extract() + actual, err := applicationcredentials.Create(context.TODO(), client.ServiceClient(), userID, createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, ApplicationCredentialResponse, *actual) } @@ -93,7 +94,7 @@ func TestCreateNoSecretApplicationCredential(t *testing.T) { }, } - actual, err := applicationcredentials.Create(client.ServiceClient(), userID, createOpts).Extract() + actual, err := applicationcredentials.Create(context.TODO(), client.ServiceClient(), userID, createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, ApplicationCredentialNoSecretResponse, *actual) } @@ -116,7 +117,7 @@ func TestCreateUnrestrictedApplicationCredential(t *testing.T) { UnrestrictedApplicationCredentialResponse := UnrestrictedApplicationCredential UnrestrictedApplicationCredentialResponse.Secret = "generated_secret" - actual, err := applicationcredentials.Create(client.ServiceClient(), userID, createOpts).Extract() + actual, err := applicationcredentials.Create(context.TODO(), client.ServiceClient(), userID, createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, UnrestrictedApplicationCredentialResponse, *actual) } @@ -126,7 +127,7 @@ func TestDeleteApplicationCredential(t *testing.T) { defer th.TeardownHTTP() HandleDeleteApplicationCredentialSuccessfully(t) - res := applicationcredentials.Delete(client.ServiceClient(), userID, applicationCredentialID) + res := applicationcredentials.Delete(context.TODO(), client.ServiceClient(), userID, applicationCredentialID) th.AssertNoErr(t, res.Err) } @@ -136,7 +137,7 @@ func TestListAccessRules(t *testing.T) { HandleListAccessRulesSuccessfully(t) count := 0 - err := applicationcredentials.ListAccessRules(client.ServiceClient(), userID).EachPage(func(page pagination.Page) (bool, error) { + err := applicationcredentials.ListAccessRules(client.ServiceClient(), userID).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := applicationcredentials.ExtractAccessRules(page) @@ -155,7 +156,7 @@ func TestGetAccessRule(t *testing.T) { defer th.TeardownHTTP() HandleGetAccessRuleSuccessfully(t) - actual, err := applicationcredentials.GetAccessRule(client.ServiceClient(), userID, accessRuleID).Extract() + actual, err := applicationcredentials.GetAccessRule(context.TODO(), client.ServiceClient(), userID, accessRuleID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, AccessRule, *actual) } @@ -165,6 +166,6 @@ func TestDeleteAccessRule(t *testing.T) { defer th.TeardownHTTP() HandleDeleteAccessRuleSuccessfully(t) - res := applicationcredentials.DeleteAccessRule(client.ServiceClient(), userID, accessRuleID) + res := applicationcredentials.DeleteAccessRule(context.TODO(), client.ServiceClient(), userID, accessRuleID) th.AssertNoErr(t, res.Err) } diff --git a/openstack/identity/v3/catalog/testing/catalog_test.go b/openstack/identity/v3/catalog/testing/catalog_test.go index 0753fdb2c1..4b055081f9 100644 --- a/openstack/identity/v3/catalog/testing/catalog_test.go +++ b/openstack/identity/v3/catalog/testing/catalog_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/catalog" @@ -15,7 +16,7 @@ func TestListCatalog(t *testing.T) { HandleListCatalogSuccessfully(t) count := 0 - err := catalog.List(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := catalog.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := catalog.ExtractServiceCatalog(page) diff --git a/openstack/identity/v3/credentials/requests.go b/openstack/identity/v3/credentials/requests.go index c5b9fcb803..978748d156 100644 --- a/openstack/identity/v3/credentials/requests.go +++ b/openstack/identity/v3/credentials/requests.go @@ -1,6 +1,8 @@ package credentials import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -41,8 +43,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get retrieves details on a single user, by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -71,13 +73,13 @@ func (opts CreateOpts) ToCredentialCreateMap() (map[string]interface{}, error) { } // Create creates a new Credential. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToCredentialCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -85,8 +87,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete deletes a credential. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -115,13 +117,13 @@ func (opts UpdateOpts) ToCredentialsUpdateMap() (map[string]interface{}, error) } // Update modifies the attributes of a Credential. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToCredentialsUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/identity/v3/credentials/testing/requests_test.go b/openstack/identity/v3/credentials/testing/requests_test.go index 2e7f5995b0..7b90817c59 100644 --- a/openstack/identity/v3/credentials/testing/requests_test.go +++ b/openstack/identity/v3/credentials/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/credentials" @@ -15,7 +16,7 @@ func TestListCredentials(t *testing.T) { HandleListCredentialsSuccessfully(t) count := 0 - err := credentials.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := credentials.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := credentials.ExtractCredentials(page) @@ -34,7 +35,7 @@ func TestListCredentialsAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListCredentialsSuccessfully(t) - allPages, err := credentials.List(client.ServiceClient(), nil).AllPages() + allPages, err := credentials.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := credentials.ExtractCredentials(allPages) th.AssertNoErr(t, err) @@ -48,7 +49,7 @@ func TestGetCredential(t *testing.T) { defer th.TeardownHTTP() HandleGetCredentialSuccessfully(t) - actual, err := credentials.Get(client.ServiceClient(), credentialID).Extract() + actual, err := credentials.Get(context.TODO(), client.ServiceClient(), credentialID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, Credential, *actual) } @@ -67,7 +68,7 @@ func TestCreateCredential(t *testing.T) { CredentialResponse := Credential - actual, err := credentials.Create(client.ServiceClient(), createOpts).Extract() + actual, err := credentials.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, CredentialResponse, *actual) } @@ -77,7 +78,7 @@ func TestDeleteCredential(t *testing.T) { defer th.TeardownHTTP() HandleDeleteCredentialSuccessfully(t) - res := credentials.Delete(client.ServiceClient(), credentialID) + res := credentials.Delete(context.TODO(), client.ServiceClient(), credentialID) th.AssertNoErr(t, res.Err) } @@ -93,7 +94,7 @@ func TestUpdateCredential(t *testing.T) { Blob: "{\"access\":\"181920\",\"secret\":\"secretKey\"}", } - actual, err := credentials.Update(client.ServiceClient(), "2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609", updateOpts).Extract() + actual, err := credentials.Update(context.TODO(), client.ServiceClient(), "2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondCredentialUpdated, *actual) } diff --git a/openstack/identity/v3/domains/requests.go b/openstack/identity/v3/domains/requests.go index 377a241d6c..723c511c76 100644 --- a/openstack/identity/v3/domains/requests.go +++ b/openstack/identity/v3/domains/requests.go @@ -1,6 +1,8 @@ package domains import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -50,8 +52,8 @@ func ListAvailable(client *gophercloud.ServiceClient) pagination.Pager { } // Get retrieves details on a single domain, by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -80,13 +82,13 @@ func (opts CreateOpts) ToDomainCreateMap() (map[string]interface{}, error) { } // Create creates a new Domain. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToDomainCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -94,8 +96,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete deletes a domain. -func Delete(client *gophercloud.ServiceClient, domainID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, domainID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, domainID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, domainID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -124,13 +126,13 @@ func (opts UpdateOpts) ToDomainUpdateMap() (map[string]interface{}, error) { } // Update modifies the attributes of a domain. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToDomainUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/identity/v3/domains/testing/requests_test.go b/openstack/identity/v3/domains/testing/requests_test.go index d47b1a178e..1e0f5ef8f4 100644 --- a/openstack/identity/v3/domains/testing/requests_test.go +++ b/openstack/identity/v3/domains/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/domains" @@ -15,7 +16,7 @@ func TestListAvailableDomains(t *testing.T) { HandleListAvailableDomainsSuccessfully(t) count := 0 - err := domains.ListAvailable(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := domains.ListAvailable(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := domains.ExtractDomains(page) @@ -35,7 +36,7 @@ func TestListDomains(t *testing.T) { HandleListDomainsSuccessfully(t) count := 0 - err := domains.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := domains.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := domains.ExtractDomains(page) @@ -54,7 +55,7 @@ func TestListDomainsAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListDomainsSuccessfully(t) - allPages, err := domains.List(client.ServiceClient(), nil).AllPages() + allPages, err := domains.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := domains.ExtractDomains(allPages) th.AssertNoErr(t, err) @@ -66,7 +67,7 @@ func TestGetDomain(t *testing.T) { defer th.TeardownHTTP() HandleGetDomainSuccessfully(t) - actual, err := domains.Get(client.ServiceClient(), "9fe1d3").Extract() + actual, err := domains.Get(context.TODO(), client.ServiceClient(), "9fe1d3").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondDomain, *actual) } @@ -80,7 +81,7 @@ func TestCreateDomain(t *testing.T) { Name: "domain two", } - actual, err := domains.Create(client.ServiceClient(), createOpts).Extract() + actual, err := domains.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondDomain, *actual) } @@ -90,7 +91,7 @@ func TestDeleteDomain(t *testing.T) { defer th.TeardownHTTP() HandleDeleteDomainSuccessfully(t) - res := domains.Delete(client.ServiceClient(), "9fe1d3") + res := domains.Delete(context.TODO(), client.ServiceClient(), "9fe1d3") th.AssertNoErr(t, res.Err) } @@ -104,7 +105,7 @@ func TestUpdateDomain(t *testing.T) { Description: &description, } - actual, err := domains.Update(client.ServiceClient(), "9fe1d3", updateOpts).Extract() + actual, err := domains.Update(context.TODO(), client.ServiceClient(), "9fe1d3", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondDomainUpdated, *actual) } diff --git a/openstack/identity/v3/endpoints/requests.go b/openstack/identity/v3/endpoints/requests.go index d34de44b27..7cb347f787 100644 --- a/openstack/identity/v3/endpoints/requests.go +++ b/openstack/identity/v3/endpoints/requests.go @@ -1,6 +1,8 @@ package endpoints import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -36,13 +38,13 @@ func (opts CreateOpts) ToEndpointCreateMap() (map[string]interface{}, error) { } // Create inserts a new Endpoint into the service catalog. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToEndpointCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(listURL(client), &b, &r.Body, nil) + resp, err := client.Post(ctx, listURL(client), &b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -120,20 +122,20 @@ func (opts UpdateOpts) ToEndpointUpdateMap() (map[string]interface{}, error) { } // Update changes an existing endpoint with new data. -func Update(client *gophercloud.ServiceClient, endpointID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, endpointID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToEndpointUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(endpointURL(client, endpointID), &b, &r.Body, nil) + resp, err := client.Patch(ctx, endpointURL(client, endpointID), &b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete removes an endpoint from the service catalog. -func Delete(client *gophercloud.ServiceClient, endpointID string) (r DeleteResult) { - resp, err := client.Delete(endpointURL(client, endpointID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, endpointID string) (r DeleteResult) { + resp, err := client.Delete(ctx, endpointURL(client, endpointID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v3/endpoints/testing/requests_test.go b/openstack/identity/v3/endpoints/testing/requests_test.go index 8b01cb4a7c..457a6c08ed 100644 --- a/openstack/identity/v3/endpoints/testing/requests_test.go +++ b/openstack/identity/v3/endpoints/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -50,7 +51,7 @@ func TestCreateSuccessful(t *testing.T) { `) }) - actual, err := endpoints.Create(client.ServiceClient(), endpoints.CreateOpts{ + actual, err := endpoints.Create(context.TODO(), client.ServiceClient(), endpoints.CreateOpts{ Availability: gophercloud.AvailabilityPublic, Name: "the-endiest-of-points", Region: "underground", @@ -118,7 +119,7 @@ func TestListEndpoints(t *testing.T) { }) count := 0 - endpoints.List(client.ServiceClient(), endpoints.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + endpoints.List(client.ServiceClient(), endpoints.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := endpoints.ExtractEndpoints(page) if err != nil { @@ -186,7 +187,7 @@ func TestUpdateEndpoint(t *testing.T) { `) }) - actual, err := endpoints.Update(client.ServiceClient(), "12", endpoints.UpdateOpts{ + actual, err := endpoints.Update(context.TODO(), client.ServiceClient(), "12", endpoints.UpdateOpts{ Name: "renamed", Region: "somewhere-else", }).Extract() @@ -217,6 +218,6 @@ func TestDeleteEndpoint(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := endpoints.Delete(client.ServiceClient(), "34") + res := endpoints.Delete(context.TODO(), client.ServiceClient(), "34") th.AssertNoErr(t, res.Err) } diff --git a/openstack/identity/v3/extensions/ec2credentials/requests.go b/openstack/identity/v3/extensions/ec2credentials/requests.go index 15990e6e8d..cf33069172 100644 --- a/openstack/identity/v3/extensions/ec2credentials/requests.go +++ b/openstack/identity/v3/extensions/ec2credentials/requests.go @@ -1,6 +1,8 @@ package ec2credentials import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -14,8 +16,8 @@ func List(client *gophercloud.ServiceClient, userID string) pagination.Pager { } // Get retrieves details on a single EC2 credential by ID. -func Get(client *gophercloud.ServiceClient, userID string, id string) (r GetResult) { - resp, err := client.Get(getURL(client, userID, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, userID string, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, userID, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -32,13 +34,13 @@ func (opts CreateOpts) ToCredentialCreateMap() (map[string]interface{}, error) { } // Create creates a new EC2 Credential. -func Create(client *gophercloud.ServiceClient, userID string, opts CreateOpts) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, userID string, opts CreateOpts) (r CreateResult) { b, err := opts.ToCredentialCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client, userID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client, userID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -46,8 +48,8 @@ func Create(client *gophercloud.ServiceClient, userID string, opts CreateOpts) ( } // Delete deletes an EC2 credential. -func Delete(client *gophercloud.ServiceClient, userID string, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, userID, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, userID string, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, userID, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v3/extensions/ec2credentials/testing/requests_test.go b/openstack/identity/v3/extensions/ec2credentials/testing/requests_test.go index 0a47fe3a30..a5e35c8ed6 100644 --- a/openstack/identity/v3/extensions/ec2credentials/testing/requests_test.go +++ b/openstack/identity/v3/extensions/ec2credentials/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/extensions/ec2credentials" @@ -15,7 +16,7 @@ func TestListEC2Credentials(t *testing.T) { HandleListEC2CredentialsSuccessfully(t) count := 0 - err := ec2credentials.List(client.ServiceClient(), userID).EachPage(func(page pagination.Page) (bool, error) { + err := ec2credentials.List(client.ServiceClient(), userID).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := ec2credentials.ExtractCredentials(page) @@ -34,7 +35,7 @@ func TestListEC2CredentialsAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListEC2CredentialsSuccessfully(t) - allPages, err := ec2credentials.List(client.ServiceClient(), userID).AllPages() + allPages, err := ec2credentials.List(client.ServiceClient(), userID).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := ec2credentials.ExtractCredentials(allPages) th.AssertNoErr(t, err) @@ -46,7 +47,7 @@ func TestGetEC2Credential(t *testing.T) { defer th.TeardownHTTP() HandleGetEC2CredentialSuccessfully(t) - actual, err := ec2credentials.Get(client.ServiceClient(), userID, credentialID).Extract() + actual, err := ec2credentials.Get(context.TODO(), client.ServiceClient(), userID, credentialID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, EC2Credential, *actual) } @@ -60,7 +61,7 @@ func TestCreateEC2Credential(t *testing.T) { TenantID: "6238dee2fec940a6bf31e49e9faf995a", } - actual, err := ec2credentials.Create(client.ServiceClient(), userID, createOpts).Extract() + actual, err := ec2credentials.Create(context.TODO(), client.ServiceClient(), userID, createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, EC2Credential, *actual) } @@ -70,6 +71,6 @@ func TestDeleteEC2Credential(t *testing.T) { defer th.TeardownHTTP() HandleDeleteEC2CredentialSuccessfully(t) - res := ec2credentials.Delete(client.ServiceClient(), userID, credentialID) + res := ec2credentials.Delete(context.TODO(), client.ServiceClient(), userID, credentialID) th.AssertNoErr(t, res.Err) } diff --git a/openstack/identity/v3/extensions/ec2tokens/requests.go b/openstack/identity/v3/extensions/ec2tokens/requests.go index befb4c4fab..bd1c1293f5 100644 --- a/openstack/identity/v3/extensions/ec2tokens/requests.go +++ b/openstack/identity/v3/extensions/ec2tokens/requests.go @@ -288,8 +288,8 @@ func (opts *AuthOptions) ToTokenV3CreateMap(map[string]interface{}) (map[string] return b, nil } -// CreateWithContext authenticates and either generates a new token from EC2 credentials -func CreateWithContext(ctx context.Context, c *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult) { +// Create authenticates and either generates a new token from EC2 credentials +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult) { b, err := opts.ToTokenV3CreateMap(nil) if err != nil { r.Err = err @@ -299,7 +299,7 @@ func CreateWithContext(ctx context.Context, c *gophercloud.ServiceClient, opts t // delete "token" element, since it is used in s3tokens deleteBodyElements(b, "token") - resp, err := c.PostWithContext(ctx, ec2tokensURL(c), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Post(ctx, ec2tokensURL(c), b, &r.Body, &gophercloud.RequestOpts{ MoreHeaders: map[string]string{"X-Auth-Token": ""}, OkCodes: []int{200}, }) @@ -307,15 +307,9 @@ func CreateWithContext(ctx context.Context, c *gophercloud.ServiceClient, opts t return } -// Create is a compatibility wrapper around CreateWithContext -func Create(c *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult) { - return CreateWithContext(context.Background(), c, opts) -} - -// ValidateS3TokenWithContext authenticates an S3 request using EC2 -// credentials. Doesn't generate a new token ID, but returns a -// tokens.CreateResult. -func ValidateS3TokenWithContext(ctx context.Context, c *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult) { +// ValidateS3Token authenticates an S3 request using EC2 credentials. Doesn't +// generate a new token ID, but returns a tokens.CreateResult. +func ValidateS3Token(ctx context.Context, c *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult) { b, err := opts.ToTokenV3CreateMap(nil) if err != nil { r.Err = err @@ -325,7 +319,7 @@ func ValidateS3TokenWithContext(ctx context.Context, c *gophercloud.ServiceClien // delete unused element, since it is used in ec2tokens only deleteBodyElements(b, "body_hash", "headers", "host", "params", "path", "verb") - resp, err := c.PostWithContext(ctx, s3tokensURL(c), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Post(ctx, s3tokensURL(c), b, &r.Body, &gophercloud.RequestOpts{ MoreHeaders: map[string]string{"X-Auth-Token": ""}, OkCodes: []int{200}, }) @@ -333,11 +327,6 @@ func ValidateS3TokenWithContext(ctx context.Context, c *gophercloud.ServiceClien return } -// ValidateS3Token is a compatibility wrapper around ValidateS3TokenWithContext -func ValidateS3Token(c *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult) { - return ValidateS3TokenWithContext(context.Background(), c, opts) -} - // The following are small helper functions used to help build the signature. // sumHMAC1 is a func to implement the HMAC SHA1 signature method. diff --git a/openstack/identity/v3/extensions/ec2tokens/testing/requests_test.go b/openstack/identity/v3/extensions/ec2tokens/testing/requests_test.go index d5ee9d4a0e..4c502d7628 100644 --- a/openstack/identity/v3/extensions/ec2tokens/testing/requests_test.go +++ b/openstack/identity/v3/extensions/ec2tokens/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "encoding/hex" "fmt" "net/http" @@ -38,7 +39,7 @@ func authTokenPost(t *testing.T, options ec2tokens.AuthOptions, requestJSON stri ExpiresAt: time.Date(2017, 6, 3, 2, 19, 49, 0, time.UTC), } - actual, err := ec2tokens.Create(&client, &options).Extract() + actual, err := ec2tokens.Create(context.TODO(), &client, &options).Extract() testhelper.AssertNoErr(t, err) testhelper.CheckDeepEquals(t, expected, actual) } diff --git a/openstack/identity/v3/extensions/federation/requests.go b/openstack/identity/v3/extensions/federation/requests.go index 6d3b512dd4..e80383b28a 100644 --- a/openstack/identity/v3/extensions/federation/requests.go +++ b/openstack/identity/v3/extensions/federation/requests.go @@ -1,6 +1,8 @@ package federation import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -30,13 +32,13 @@ func (opts CreateMappingOpts) ToMappingCreateMap() (map[string]interface{}, erro } // CreateMapping creates a new Mapping. -func CreateMapping(client *gophercloud.ServiceClient, mappingID string, opts CreateMappingOptsBuilder) (r CreateMappingResult) { +func CreateMapping(ctx context.Context, client *gophercloud.ServiceClient, mappingID string, opts CreateMappingOptsBuilder) (r CreateMappingResult) { b, err := opts.ToMappingCreateMap() if err != nil { r.Err = err return } - resp, err := client.Put(mappingsResourceURL(client, mappingID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, mappingsResourceURL(client, mappingID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -44,8 +46,8 @@ func CreateMapping(client *gophercloud.ServiceClient, mappingID string, opts Cre } // GetMapping retrieves details on a single mapping, by ID. -func GetMapping(client *gophercloud.ServiceClient, mappingID string) (r GetMappingResult) { - resp, err := client.Get(mappingsResourceURL(client, mappingID), &r.Body, nil) +func GetMapping(ctx context.Context, client *gophercloud.ServiceClient, mappingID string) (r GetMappingResult) { + resp, err := client.Get(ctx, mappingsResourceURL(client, mappingID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -68,13 +70,13 @@ func (opts UpdateMappingOpts) ToMappingUpdateMap() (map[string]interface{}, erro } // UpdateMapping updates an existing mapping. -func UpdateMapping(client *gophercloud.ServiceClient, mappingID string, opts UpdateMappingOptsBuilder) (r UpdateMappingResult) { +func UpdateMapping(ctx context.Context, client *gophercloud.ServiceClient, mappingID string, opts UpdateMappingOptsBuilder) (r UpdateMappingResult) { b, err := opts.ToMappingUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(mappingsResourceURL(client, mappingID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, mappingsResourceURL(client, mappingID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -82,8 +84,8 @@ func UpdateMapping(client *gophercloud.ServiceClient, mappingID string, opts Upd } // DeleteMapping deletes a mapping. -func DeleteMapping(client *gophercloud.ServiceClient, mappingID string) (r DeleteMappingResult) { - resp, err := client.Delete(mappingsResourceURL(client, mappingID), nil) +func DeleteMapping(ctx context.Context, client *gophercloud.ServiceClient, mappingID string) (r DeleteMappingResult) { + resp, err := client.Delete(ctx, mappingsResourceURL(client, mappingID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v3/extensions/federation/testing/requests_test.go b/openstack/identity/v3/extensions/federation/testing/requests_test.go index 836cf78939..fe62d8e658 100644 --- a/openstack/identity/v3/extensions/federation/testing/requests_test.go +++ b/openstack/identity/v3/extensions/federation/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/extensions/federation" @@ -15,7 +16,7 @@ func TestListMappings(t *testing.T) { HandleListMappingsSuccessfully(t) count := 0 - err := federation.ListMappings(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := federation.ListMappings(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := federation.ExtractMappings(page) @@ -34,7 +35,7 @@ func TestListMappingsAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListMappingsSuccessfully(t) - allPages, err := federation.ListMappings(client.ServiceClient()).AllPages() + allPages, err := federation.ListMappings(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := federation.ExtractMappings(allPages) th.AssertNoErr(t, err) @@ -77,7 +78,7 @@ func TestCreateMappings(t *testing.T) { }, } - actual, err := federation.CreateMapping(client.ServiceClient(), "ACME", createOpts).Extract() + actual, err := federation.CreateMapping(context.TODO(), client.ServiceClient(), "ACME", createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, MappingACME, *actual) } @@ -87,7 +88,7 @@ func TestGetMapping(t *testing.T) { defer th.TeardownHTTP() HandleGetMappingSuccessfully(t) - actual, err := federation.GetMapping(client.ServiceClient(), "ACME").Extract() + actual, err := federation.GetMapping(context.TODO(), client.ServiceClient(), "ACME").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, MappingACME, *actual) } @@ -128,7 +129,7 @@ func TestUpdateMapping(t *testing.T) { }, } - actual, err := federation.UpdateMapping(client.ServiceClient(), "ACME", updateOpts).Extract() + actual, err := federation.UpdateMapping(context.TODO(), client.ServiceClient(), "ACME", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, MappingUpdated, *actual) } @@ -138,6 +139,6 @@ func TestDeleteMapping(t *testing.T) { defer th.TeardownHTTP() HandleDeleteMappingSuccessfully(t) - res := federation.DeleteMapping(client.ServiceClient(), "ACME") + res := federation.DeleteMapping(context.TODO(), client.ServiceClient(), "ACME") th.AssertNoErr(t, res.Err) } diff --git a/openstack/identity/v3/extensions/oauth1/requests.go b/openstack/identity/v3/extensions/oauth1/requests.go index 571f3465e9..43cdc59e7d 100644 --- a/openstack/identity/v3/extensions/oauth1/requests.go +++ b/openstack/identity/v3/extensions/oauth1/requests.go @@ -134,9 +134,9 @@ func (opts AuthOptions) ToTokenV3CreateMap(map[string]interface{}) (map[string]i return gophercloud.BuildRequestBody(req, "") } -// CreateWithContext authenticates and either generates a new OpenStack token +// Create authenticates and either generates a new OpenStack token // from an OAuth1 token. -func CreateWithContext(ctx context.Context, client *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult) { b, err := opts.ToTokenV3CreateMap(nil) if err != nil { r.Err = err @@ -154,7 +154,7 @@ func CreateWithContext(ctx context.Context, client *gophercloud.ServiceClient, o return } - resp, err := client.PostWithContext(ctx, authURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, authURL(client), b, &r.Body, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{201}, }) @@ -162,11 +162,6 @@ func CreateWithContext(ctx context.Context, client *gophercloud.ServiceClient, o return } -// Create is a compatibility wrapper around CreateWithContext. -func Create(client *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult) { - return CreateWithContext(context.Background(), client, opts) -} - // CreateConsumerOptsBuilder allows extensions to add additional parameters to // the CreateConsumer request. type CreateConsumerOptsBuilder interface { @@ -184,37 +179,27 @@ func (opts CreateConsumerOpts) ToOAuth1CreateConsumerMap() (map[string]interface return gophercloud.BuildRequestBody(opts, "consumer") } -// CreateConsumerWithContext creates a new Consumer. -func CreateConsumerWithContext(ctx context.Context, client *gophercloud.ServiceClient, opts CreateConsumerOptsBuilder) (r CreateConsumerResult) { +// CreateConsumer creates a new Consumer. +func CreateConsumer(ctx context.Context, client *gophercloud.ServiceClient, opts CreateConsumerOptsBuilder) (r CreateConsumerResult) { b, err := opts.ToOAuth1CreateConsumerMap() if err != nil { r.Err = err return } - resp, err := client.PostWithContext(ctx, consumersURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, consumersURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -// CreateConsumer is a compatibility wrapper around CreateConsumerWithContext. -func CreateConsumer(client *gophercloud.ServiceClient, opts CreateConsumerOptsBuilder) (r CreateConsumerResult) { - return CreateConsumerWithContext(context.Background(), client, opts) -} - -// DeleteConsumerWithContext deletes a Consumer. -func DeleteConsumerWithContext(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteConsumerResult) { - resp, err := client.DeleteWithContext(ctx, consumerURL(client, id), nil) +// DeleteConsumer deletes a Consumer. +func DeleteConsumer(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteConsumerResult) { + resp, err := client.Delete(ctx, consumerURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -// DeleteConsumer is a compatibility wrapper around DeleteConsumerWithContext. -func DeleteConsumer(client *gophercloud.ServiceClient, id string) (r DeleteConsumerResult) { - return DeleteConsumerWithContext(context.Background(), client, id) -} - // List enumerates Consumers. func ListConsumers(client *gophercloud.ServiceClient) pagination.Pager { return pagination.NewPager(client, consumersURL(client), func(r pagination.PageResult) pagination.Page { @@ -222,18 +207,13 @@ func ListConsumers(client *gophercloud.ServiceClient) pagination.Pager { }) } -// GetConsumerWithContext retrieves details on a single Consumer by ID. -func GetConsumerWithContext(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetConsumerResult) { - resp, err := client.GetWithContext(ctx, consumerURL(client, id), &r.Body, nil) +// GetConsumer retrieves details on a single Consumer by ID. +func GetConsumer(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetConsumerResult) { + resp, err := client.Get(ctx, consumerURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -// GetConsumer is a compatibility wrapper around GetConsumerWithContext. -func GetConsumer(client *gophercloud.ServiceClient, id string) (r GetConsumerResult) { - return GetConsumerWithContext(context.Background(), client, id) -} - // UpdateConsumerOpts provides options used to update a consumer. type UpdateConsumerOpts struct { // Description is the consumer description. @@ -246,25 +226,20 @@ func (opts UpdateConsumerOpts) ToOAuth1UpdateConsumerMap() (map[string]interface return gophercloud.BuildRequestBody(opts, "consumer") } -// UpdateConsumerWithContext updates an existing Consumer. -func UpdateConsumerWithContext(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateConsumerOpts) (r UpdateConsumerResult) { +// UpdateConsumer updates an existing Consumer. +func UpdateConsumer(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateConsumerOpts) (r UpdateConsumerResult) { b, err := opts.ToOAuth1UpdateConsumerMap() if err != nil { r.Err = err return } - resp, err := client.PatchWithContext(ctx, consumerURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, consumerURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -// UpdateConsumer is a compatibility wrapper around UpdateConsumerWithContext. -func UpdateConsumer(client *gophercloud.ServiceClient, id string, opts UpdateConsumerOpts) (r UpdateConsumerResult) { - return UpdateConsumerWithContext(context.Background(), client, id, opts) -} - // RequestTokenOptsBuilder allows extensions to add additional parameters to the // RequestToken request. type RequestTokenOptsBuilder interface { @@ -323,15 +298,15 @@ func (opts RequestTokenOpts) ToOAuth1RequestTokenHeaders(method, u string) (map[ return h, nil } -// RequestTokenWithContext requests an unauthorized OAuth1 Token. -func RequestTokenWithContext(ctx context.Context, client *gophercloud.ServiceClient, opts RequestTokenOptsBuilder) (r TokenResult) { +// RequestToken requests an unauthorized OAuth1 Token. +func RequestToken(ctx context.Context, client *gophercloud.ServiceClient, opts RequestTokenOptsBuilder) (r TokenResult) { h, err := opts.ToOAuth1RequestTokenHeaders("POST", requestTokenURL(client)) if err != nil { r.Err = err return } - resp, err := client.PostWithContext(ctx, requestTokenURL(client), nil, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, requestTokenURL(client), nil, nil, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{201}, KeepResponseBody: true, @@ -349,11 +324,6 @@ func RequestTokenWithContext(ctx context.Context, client *gophercloud.ServiceCli return } -// RequestToken is a compatibility wrapper around RequestTokenWithContext. -func RequestToken(client *gophercloud.ServiceClient, opts RequestTokenOptsBuilder) (r TokenResult) { - return RequestTokenWithContext(context.Background(), client, opts) -} - // AuthorizeTokenOptsBuilder allows extensions to add additional parameters to // the AuthorizeToken request. type AuthorizeTokenOptsBuilder interface { @@ -382,25 +352,20 @@ func (opts AuthorizeTokenOpts) ToOAuth1AuthorizeTokenMap() (map[string]interface return gophercloud.BuildRequestBody(opts, "") } -// AuthorizeTokenWithContext authorizes an unauthorized consumer token. -func AuthorizeTokenWithContext(ctx context.Context, client *gophercloud.ServiceClient, id string, opts AuthorizeTokenOptsBuilder) (r AuthorizeTokenResult) { +// AuthorizeToken authorizes an unauthorized consumer token. +func AuthorizeToken(ctx context.Context, client *gophercloud.ServiceClient, id string, opts AuthorizeTokenOptsBuilder) (r AuthorizeTokenResult) { b, err := opts.ToOAuth1AuthorizeTokenMap() if err != nil { r.Err = err return } - resp, err := client.PutWithContext(ctx, authorizeTokenURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, authorizeTokenURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -// AuthorizeToken is a compatibility wrapper around AuthorizeTokenWithContext. -func AuthorizeToken(client *gophercloud.ServiceClient, id string, opts AuthorizeTokenOptsBuilder) (r AuthorizeTokenResult) { - return AuthorizeTokenWithContext(context.Background(), client, id, opts) -} - // CreateAccessTokenOptsBuilder allows extensions to add additional parameters // to the CreateAccessToken request. type CreateAccessTokenOptsBuilder interface { @@ -461,15 +426,15 @@ func (opts CreateAccessTokenOpts) ToOAuth1CreateAccessTokenHeaders(method, u str return headers, nil } -// CreateAccessTokenWithContext creates a new OAuth1 Access Token -func CreateAccessTokenWithContext(ctx context.Context, client *gophercloud.ServiceClient, opts CreateAccessTokenOptsBuilder) (r TokenResult) { +// CreateAccessToken creates a new OAuth1 Access Token +func CreateAccessToken(ctx context.Context, client *gophercloud.ServiceClient, opts CreateAccessTokenOptsBuilder) (r TokenResult) { h, err := opts.ToOAuth1CreateAccessTokenHeaders("POST", createAccessTokenURL(client)) if err != nil { r.Err = err return } - resp, err := client.PostWithContext(ctx, createAccessTokenURL(client), nil, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createAccessTokenURL(client), nil, nil, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{201}, KeepResponseBody: true, @@ -487,35 +452,20 @@ func CreateAccessTokenWithContext(ctx context.Context, client *gophercloud.Servi return } -// CreateAccessToken is a compatibility wrapper around CreateAccessTokenWithContext. -func CreateAccessToken(client *gophercloud.ServiceClient, opts CreateAccessTokenOptsBuilder) (r TokenResult) { - return CreateAccessTokenWithContext(context.Background(), client, opts) -} - -// GetAccessTokenWithContext retrieves details on a single OAuth1 access token by an ID. -func GetAccessTokenWithContext(ctx context.Context, client *gophercloud.ServiceClient, userID string, id string) (r GetAccessTokenResult) { - resp, err := client.GetWithContext(ctx, userAccessTokenURL(client, userID, id), &r.Body, nil) +// GetAccessToken retrieves details on a single OAuth1 access token by an ID. +func GetAccessToken(ctx context.Context, client *gophercloud.ServiceClient, userID string, id string) (r GetAccessTokenResult) { + resp, err := client.Get(ctx, userAccessTokenURL(client, userID, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -// GetAccessToken is a compatibility wrapper around GetAccessTokenWithContext. -func GetAccessToken(client *gophercloud.ServiceClient, userID string, id string) (r GetAccessTokenResult) { - return GetAccessTokenWithContext(context.Background(), client, userID, id) -} - -// RevokeAccessTokenWithContext revokes an OAuth1 access token. -func RevokeAccessTokenWithContext(ctx context.Context, client *gophercloud.ServiceClient, userID string, id string) (r RevokeAccessTokenResult) { - resp, err := client.DeleteWithContext(ctx, userAccessTokenURL(client, userID, id), nil) +// RevokeAccessToken revokes an OAuth1 access token. +func RevokeAccessToken(ctx context.Context, client *gophercloud.ServiceClient, userID string, id string) (r RevokeAccessTokenResult) { + resp, err := client.Delete(ctx, userAccessTokenURL(client, userID, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -// RevokeAccessToken is a compatibility wrapper around RevokeAccessTokenWithContext. -func RevokeAccessToken(client *gophercloud.ServiceClient, userID string, id string) (r RevokeAccessTokenResult) { - return RevokeAccessTokenWithContext(context.Background(), client, userID, id) -} - // ListAccessTokens enumerates authorized access tokens. func ListAccessTokens(client *gophercloud.ServiceClient, userID string) pagination.Pager { url := userAccessTokensURL(client, userID) @@ -532,19 +482,14 @@ func ListAccessTokenRoles(client *gophercloud.ServiceClient, userID string, id s }) } -// GetAccessTokenRoleWithContext retrieves details on a single OAuth1 access token role by +// GetAccessTokenRole retrieves details on a single OAuth1 access token role by // an ID. -func GetAccessTokenRoleWithContext(ctx context.Context, client *gophercloud.ServiceClient, userID string, id string, roleID string) (r GetAccessTokenRoleResult) { - resp, err := client.GetWithContext(ctx, userAccessTokenRoleURL(client, userID, id, roleID), &r.Body, nil) +func GetAccessTokenRole(ctx context.Context, client *gophercloud.ServiceClient, userID string, id string, roleID string) (r GetAccessTokenRoleResult) { + resp, err := client.Get(ctx, userAccessTokenRoleURL(client, userID, id, roleID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -// GetAccessTokenRole is a compatibility wrapper around GetAccessTokenRoleWithContext. -func GetAccessTokenRole(client *gophercloud.ServiceClient, userID string, id string, roleID string) (r GetAccessTokenRoleResult) { - return GetAccessTokenRoleWithContext(context.Background(), client, userID, id, roleID) -} - // The following are small helper functions used to help build the signature. // buildOAuth1QueryString builds a URLEncoded parameters string specific for diff --git a/openstack/identity/v3/extensions/oauth1/testing/requests_test.go b/openstack/identity/v3/extensions/oauth1/testing/requests_test.go index 99c5d82dfd..4c78cc2461 100644 --- a/openstack/identity/v3/extensions/oauth1/testing/requests_test.go +++ b/openstack/identity/v3/extensions/oauth1/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -16,7 +17,7 @@ func TestCreateConsumer(t *testing.T) { defer th.TeardownHTTP() HandleCreateConsumer(t) - consumer, err := oauth1.CreateConsumer(client.ServiceClient(), oauth1.CreateConsumerOpts{ + consumer, err := oauth1.CreateConsumer(context.TODO(), client.ServiceClient(), oauth1.CreateConsumerOpts{ Description: "My consumer", }).Extract() th.AssertNoErr(t, err) @@ -29,7 +30,7 @@ func TestUpdateConsumer(t *testing.T) { defer th.TeardownHTTP() HandleUpdateConsumer(t) - consumer, err := oauth1.UpdateConsumer(client.ServiceClient(), "7fea2d", oauth1.UpdateConsumerOpts{ + consumer, err := oauth1.UpdateConsumer(context.TODO(), client.ServiceClient(), "7fea2d", oauth1.UpdateConsumerOpts{ Description: "My new consumer", }).Extract() th.AssertNoErr(t, err) @@ -42,7 +43,7 @@ func TestDeleteConsumer(t *testing.T) { defer th.TeardownHTTP() HandleDeleteConsumer(t) - err := oauth1.DeleteConsumer(client.ServiceClient(), "7fea2d").ExtractErr() + err := oauth1.DeleteConsumer(context.TODO(), client.ServiceClient(), "7fea2d").ExtractErr() th.AssertNoErr(t, err) } @@ -51,7 +52,7 @@ func TestGetConsumer(t *testing.T) { defer th.TeardownHTTP() HandleGetConsumer(t) - consumer, err := oauth1.GetConsumer(client.ServiceClient(), "7fea2d").Extract() + consumer, err := oauth1.GetConsumer(context.TODO(), client.ServiceClient(), "7fea2d").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, FirstConsumer, *consumer) @@ -63,7 +64,7 @@ func TestListConsumers(t *testing.T) { HandleListConsumers(t) count := 0 - err := oauth1.ListConsumers(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := oauth1.ListConsumers(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := oauth1.ExtractConsumers(page) @@ -82,7 +83,7 @@ func TestListConsumersAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListConsumers(t) - allPages, err := oauth1.ListConsumers(client.ServiceClient()).AllPages() + allPages, err := oauth1.ListConsumers(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := oauth1.ExtractConsumers(allPages) th.AssertNoErr(t, err) @@ -95,7 +96,7 @@ func TestRequestToken(t *testing.T) { HandleRequestToken(t) ts := time.Unix(0, 0) - token, err := oauth1.RequestToken(client.ServiceClient(), oauth1.RequestTokenOpts{ + token, err := oauth1.RequestToken(context.TODO(), client.ServiceClient(), oauth1.RequestTokenOpts{ OAuthConsumerKey: Consumer.ID, OAuthConsumerSecret: Consumer.Secret, OAuthSignatureMethod: oauth1.HMACSHA1, @@ -113,7 +114,7 @@ func TestAuthorizeToken(t *testing.T) { defer th.TeardownHTTP() HandleAuthorizeToken(t) - token, err := oauth1.AuthorizeToken(client.ServiceClient(), "29971f", oauth1.AuthorizeTokenOpts{ + token, err := oauth1.AuthorizeToken(context.TODO(), client.ServiceClient(), "29971f", oauth1.AuthorizeTokenOpts{ Roles: []oauth1.Role{ { ID: "a3b29b", @@ -134,7 +135,7 @@ func TestCreateAccessToken(t *testing.T) { HandleCreateAccessToken(t) ts := time.Unix(1586804894, 0) - token, err := oauth1.CreateAccessToken(client.ServiceClient(), oauth1.CreateAccessTokenOpts{ + token, err := oauth1.CreateAccessToken(context.TODO(), client.ServiceClient(), oauth1.CreateAccessTokenOpts{ OAuthConsumerKey: Consumer.ID, OAuthConsumerSecret: Consumer.Secret, OAuthToken: Token.OAuthToken, @@ -154,7 +155,7 @@ func TestGetAccessToken(t *testing.T) { defer th.TeardownHTTP() HandleGetAccessToken(t) - token, err := oauth1.GetAccessToken(client.ServiceClient(), "ce9e07", "6be26a").Extract() + token, err := oauth1.GetAccessToken(context.TODO(), client.ServiceClient(), "ce9e07", "6be26a").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, UserAccessToken, *token) @@ -165,7 +166,7 @@ func TestRevokeAccessToken(t *testing.T) { defer th.TeardownHTTP() HandleRevokeAccessToken(t) - err := oauth1.RevokeAccessToken(client.ServiceClient(), "ce9e07", "6be26a").ExtractErr() + err := oauth1.RevokeAccessToken(context.TODO(), client.ServiceClient(), "ce9e07", "6be26a").ExtractErr() th.AssertNoErr(t, err) } @@ -175,7 +176,7 @@ func TestListAccessTokens(t *testing.T) { HandleListAccessTokens(t) count := 0 - err := oauth1.ListAccessTokens(client.ServiceClient(), "ce9e07").EachPage(func(page pagination.Page) (bool, error) { + err := oauth1.ListAccessTokens(client.ServiceClient(), "ce9e07").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := oauth1.ExtractAccessTokens(page) @@ -194,7 +195,7 @@ func TestListAccessTokensAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListAccessTokens(t) - allPages, err := oauth1.ListAccessTokens(client.ServiceClient(), "ce9e07").AllPages() + allPages, err := oauth1.ListAccessTokens(client.ServiceClient(), "ce9e07").AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := oauth1.ExtractAccessTokens(allPages) th.AssertNoErr(t, err) @@ -207,7 +208,7 @@ func TestListAccessTokenRoles(t *testing.T) { HandleListAccessTokenRoles(t) count := 0 - err := oauth1.ListAccessTokenRoles(client.ServiceClient(), "ce9e07", "6be26a").EachPage(func(page pagination.Page) (bool, error) { + err := oauth1.ListAccessTokenRoles(client.ServiceClient(), "ce9e07", "6be26a").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := oauth1.ExtractAccessTokenRoles(page) @@ -226,7 +227,7 @@ func TestListAccessTokenRolesAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListAccessTokenRoles(t) - allPages, err := oauth1.ListAccessTokenRoles(client.ServiceClient(), "ce9e07", "6be26a").AllPages() + allPages, err := oauth1.ListAccessTokenRoles(client.ServiceClient(), "ce9e07", "6be26a").AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := oauth1.ExtractAccessTokenRoles(allPages) th.AssertNoErr(t, err) @@ -238,7 +239,7 @@ func TestGetAccessTokenRole(t *testing.T) { defer th.TeardownHTTP() HandleGetAccessTokenRole(t) - role, err := oauth1.GetAccessTokenRole(client.ServiceClient(), "ce9e07", "6be26a", "5ad150").Extract() + role, err := oauth1.GetAccessTokenRole(context.TODO(), client.ServiceClient(), "ce9e07", "6be26a", "5ad150").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, UserAccessTokenRole, *role) @@ -264,7 +265,7 @@ func TestAuthenticate(t *testing.T) { OAuthNonce: "66148873158553341551586804894", } - actual, err := oauth1.Create(client.ServiceClient(), options).Extract() + actual, err := oauth1.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expected, actual) } diff --git a/openstack/identity/v3/extensions/projectendpoints/requests.go b/openstack/identity/v3/extensions/projectendpoints/requests.go index 58350b7b02..83bda977e4 100644 --- a/openstack/identity/v3/extensions/projectendpoints/requests.go +++ b/openstack/identity/v3/extensions/projectendpoints/requests.go @@ -1,6 +1,8 @@ package projectendpoints import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -10,8 +12,8 @@ type CreateOptsBuilder interface { } // Create inserts a new Endpoint association to a project. -func Create(client *gophercloud.ServiceClient, projectID, endpointID string) (r CreateResult) { - resp, err := client.Put(createURL(client, projectID, endpointID), nil, nil, &gophercloud.RequestOpts{OkCodes: []int{204}}) +func Create(ctx context.Context, client *gophercloud.ServiceClient, projectID, endpointID string) (r CreateResult) { + resp, err := client.Put(ctx, createURL(client, projectID, endpointID), nil, nil, &gophercloud.RequestOpts{OkCodes: []int{204}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -26,8 +28,8 @@ func List(client *gophercloud.ServiceClient, projectID string) pagination.Pager } // Delete removes an endpoint from the service catalog. -func Delete(client *gophercloud.ServiceClient, projectID string, endpointID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, projectID, endpointID), &gophercloud.RequestOpts{OkCodes: []int{204}}) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, projectID string, endpointID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, projectID, endpointID), &gophercloud.RequestOpts{OkCodes: []int{204}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v3/extensions/projectendpoints/testing/requests_test.go b/openstack/identity/v3/extensions/projectendpoints/testing/requests_test.go index cb451fd01d..9833e01643 100644 --- a/openstack/identity/v3/extensions/projectendpoints/testing/requests_test.go +++ b/openstack/identity/v3/extensions/projectendpoints/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -23,7 +24,7 @@ func TestCreateSuccessful(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - err := projectendpoints.Create(client.ServiceClient(), "project-id", "endpoint-id").Err + err := projectendpoints.Create(context.TODO(), client.ServiceClient(), "project-id", "endpoint-id").Err th.AssertNoErr(t, err) } @@ -70,7 +71,7 @@ func TestListEndpoints(t *testing.T) { }) count := 0 - projectendpoints.List(client.ServiceClient(), "project-id").EachPage(func(page pagination.Page) (bool, error) { + projectendpoints.List(client.ServiceClient(), "project-id").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := projectendpoints.ExtractEndpoints(page) if err != nil { @@ -111,6 +112,6 @@ func TestDeleteEndpoint(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := projectendpoints.Delete(client.ServiceClient(), "project-id", "endpoint-id") + res := projectendpoints.Delete(context.TODO(), client.ServiceClient(), "project-id", "endpoint-id") th.AssertNoErr(t, res.Err) } diff --git a/openstack/identity/v3/extensions/trusts/requests.go b/openstack/identity/v3/extensions/trusts/requests.go index 76d4605513..e8d6b6441f 100644 --- a/openstack/identity/v3/extensions/trusts/requests.go +++ b/openstack/identity/v3/extensions/trusts/requests.go @@ -1,6 +1,7 @@ package trusts import ( + "context" "time" "github.com/gophercloud/gophercloud/v2" @@ -117,13 +118,13 @@ func (opts ListOpts) ToTrustListQuery() (string, error) { } // Create creates a new Trust. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToTrustCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -131,8 +132,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete deletes a Trust. -func Delete(client *gophercloud.ServiceClient, trustID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, trustID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, trustID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, trustID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -153,8 +154,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get retrieves details on a single Trust, by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(resourceURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, resourceURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -168,15 +169,15 @@ func ListRoles(client *gophercloud.ServiceClient, id string) pagination.Pager { } // GetRole retrieves details on a single role delegated by a Trust. -func GetRole(client *gophercloud.ServiceClient, id string, roleID string) (r GetRoleResult) { - resp, err := client.Get(getRoleURL(client, id, roleID), &r.Body, nil) +func GetRole(ctx context.Context, client *gophercloud.ServiceClient, id string, roleID string) (r GetRoleResult) { + resp, err := client.Get(ctx, getRoleURL(client, id, roleID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // CheckRole checks whether a role ID is delegated by a Trust. -func CheckRole(client *gophercloud.ServiceClient, id string, roleID string) (r CheckRoleResult) { - resp, err := client.Head(getRoleURL(client, id, roleID), nil) +func CheckRole(ctx context.Context, client *gophercloud.ServiceClient, id string, roleID string) (r CheckRoleResult) { + resp, err := client.Head(ctx, getRoleURL(client, id, roleID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v3/extensions/trusts/testing/requests_test.go b/openstack/identity/v3/extensions/trusts/testing/requests_test.go index adb7239f7f..d63184ebc2 100644 --- a/openstack/identity/v3/extensions/trusts/testing/requests_test.go +++ b/openstack/identity/v3/extensions/trusts/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -44,7 +45,7 @@ func TestCreateUserIDPasswordTrustID(t *testing.T) { tokens.Token trusts.TokenExt } - err := tokens.Create(client.ServiceClient(), ao).ExtractInto(&actual) + err := tokens.Create(context.TODO(), client.ServiceClient(), ao).ExtractInto(&actual) if err != nil { t.Errorf("Create returned an error: %v", err) } @@ -74,7 +75,7 @@ func TestCreateTrust(t *testing.T) { HandleCreateTrust(t) expiresAt := time.Date(2019, 12, 1, 14, 0, 0, 0, time.UTC) - result, err := trusts.Create(client.ServiceClient(), trusts.CreateOpts{ + result, err := trusts.Create(context.TODO(), client.ServiceClient(), trusts.CreateOpts{ ExpiresAt: &expiresAt, AllowRedelegation: true, ProjectID: "9b71012f5a4a4aef9193f1995fe159b2", @@ -96,7 +97,7 @@ func TestCreateTrustNoExpire(t *testing.T) { defer th.TeardownHTTP() HandleCreateTrustNoExpire(t) - result, err := trusts.Create(client.ServiceClient(), trusts.CreateOpts{ + result, err := trusts.Create(context.TODO(), client.ServiceClient(), trusts.CreateOpts{ AllowRedelegation: true, ProjectID: "9b71012f5a4a4aef9193f1995fe159b2", Roles: []trusts.Role{ @@ -117,7 +118,7 @@ func TestDeleteTrust(t *testing.T) { defer th.TeardownHTTP() HandleDeleteTrust(t) - res := trusts.Delete(client.ServiceClient(), "3422b7c113894f5d90665e1a79655e23") + res := trusts.Delete(context.TODO(), client.ServiceClient(), "3422b7c113894f5d90665e1a79655e23") th.AssertNoErr(t, res.Err) } @@ -126,7 +127,7 @@ func TestGetTrust(t *testing.T) { defer th.TeardownHTTP() HandleGetTrustSuccessfully(t) - res := trusts.Get(client.ServiceClient(), "987fe8") + res := trusts.Get(context.TODO(), client.ServiceClient(), "987fe8") th.AssertNoErr(t, res.Err) } @@ -136,7 +137,7 @@ func TestListTrusts(t *testing.T) { HandleListTrustsSuccessfully(t) count := 0 - err := trusts.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := trusts.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := trusts.ExtractTrusts(page) @@ -155,7 +156,7 @@ func TestListTrustsAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListTrustsSuccessfully(t) - allPages, err := trusts.List(client.ServiceClient(), nil).AllPages() + allPages, err := trusts.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := trusts.ExtractTrusts(allPages) th.AssertNoErr(t, err) @@ -169,7 +170,7 @@ func TestListTrustsFiltered(t *testing.T) { trustsListOpts := trusts.ListOpts{ TrustorUserID: "86c0d5", } - allPages, err := trusts.List(client.ServiceClient(), trustsListOpts).AllPages() + allPages, err := trusts.List(client.ServiceClient(), trustsListOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := trusts.ExtractTrusts(allPages) th.AssertNoErr(t, err) @@ -182,7 +183,7 @@ func TestListTrustRoles(t *testing.T) { HandleListTrustRolesSuccessfully(t) count := 0 - err := trusts.ListRoles(client.ServiceClient(), "987fe8").EachPage(func(page pagination.Page) (bool, error) { + err := trusts.ListRoles(client.ServiceClient(), "987fe8").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := trusts.ExtractRoles(page) @@ -201,7 +202,7 @@ func TestListTrustRolesAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListTrustRolesSuccessfully(t) - allPages, err := trusts.ListRoles(client.ServiceClient(), "987fe8").AllPages() + allPages, err := trusts.ListRoles(client.ServiceClient(), "987fe8").AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := trusts.ExtractRoles(allPages) th.AssertNoErr(t, err) @@ -213,7 +214,7 @@ func TestGetTrustRole(t *testing.T) { defer th.TeardownHTTP() HandleGetTrustRoleSuccessfully(t) - role, err := trusts.GetRole(client.ServiceClient(), "987fe8", "c1648e").Extract() + role, err := trusts.GetRole(context.TODO(), client.ServiceClient(), "987fe8", "c1648e").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, FirstRole, *role) @@ -224,6 +225,6 @@ func TestCheckTrustRole(t *testing.T) { defer th.TeardownHTTP() HandleCheckTrustRoleSuccessfully(t) - err := trusts.CheckRole(client.ServiceClient(), "987fe8", "c1648e").ExtractErr() + err := trusts.CheckRole(context.TODO(), client.ServiceClient(), "987fe8", "c1648e").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/identity/v3/groups/requests.go b/openstack/identity/v3/groups/requests.go index 4ba5adecbe..528244f1ba 100644 --- a/openstack/identity/v3/groups/requests.go +++ b/openstack/identity/v3/groups/requests.go @@ -1,6 +1,7 @@ package groups import ( + "context" "net/url" "strings" @@ -64,8 +65,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get retrieves details on a single group, by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -110,13 +111,13 @@ func (opts CreateOpts) ToGroupCreateMap() (map[string]interface{}, error) { } // Create creates a new Group. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToGroupCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -163,13 +164,13 @@ func (opts UpdateOpts) ToGroupUpdateMap() (map[string]interface{}, error) { } // Update updates an existing Group. -func Update(client *gophercloud.ServiceClient, groupID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, groupID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToGroupUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(updateURL(client, groupID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, groupID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -177,8 +178,8 @@ func Update(client *gophercloud.ServiceClient, groupID string, opts UpdateOptsBu } // Delete deletes a group. -func Delete(client *gophercloud.ServiceClient, groupID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, groupID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, groupID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, groupID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v3/groups/testing/requests_test.go b/openstack/identity/v3/groups/testing/requests_test.go index 9656ca8dd2..47035d3aa8 100644 --- a/openstack/identity/v3/groups/testing/requests_test.go +++ b/openstack/identity/v3/groups/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/groups" @@ -15,7 +16,7 @@ func TestListGroups(t *testing.T) { HandleListGroupsSuccessfully(t) count := 0 - err := groups.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := groups.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := groups.ExtractGroups(page) @@ -34,7 +35,7 @@ func TestListGroupsAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListGroupsSuccessfully(t) - allPages, err := groups.List(client.ServiceClient(), nil).AllPages() + allPages, err := groups.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := groups.ExtractGroups(allPages) th.AssertNoErr(t, err) @@ -80,7 +81,7 @@ func TestGetGroup(t *testing.T) { defer th.TeardownHTTP() HandleGetGroupSuccessfully(t) - actual, err := groups.Get(client.ServiceClient(), "9fe1d3").Extract() + actual, err := groups.Get(context.TODO(), client.ServiceClient(), "9fe1d3").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondGroup, *actual) @@ -101,7 +102,7 @@ func TestCreateGroup(t *testing.T) { }, } - actual, err := groups.Create(client.ServiceClient(), createOpts).Extract() + actual, err := groups.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondGroup, *actual) } @@ -119,7 +120,7 @@ func TestUpdateGroup(t *testing.T) { }, } - actual, err := groups.Update(client.ServiceClient(), "9fe1d3", updateOpts).Extract() + actual, err := groups.Update(context.TODO(), client.ServiceClient(), "9fe1d3", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondGroupUpdated, *actual) } @@ -129,6 +130,6 @@ func TestDeleteGroup(t *testing.T) { defer th.TeardownHTTP() HandleDeleteGroupSuccessfully(t) - res := groups.Delete(client.ServiceClient(), "9fe1d3") + res := groups.Delete(context.TODO(), client.ServiceClient(), "9fe1d3") th.AssertNoErr(t, res.Err) } diff --git a/openstack/identity/v3/limits/requests.go b/openstack/identity/v3/limits/requests.go index 9908a99a5f..babf82f707 100644 --- a/openstack/identity/v3/limits/requests.go +++ b/openstack/identity/v3/limits/requests.go @@ -1,13 +1,15 @@ package limits import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) // Get retrieves details on a single limit, by ID. -func GetEnforcementModel(client *gophercloud.ServiceClient) (r EnforcementModelResult) { - resp, err := client.Get(enforcementModelURL(client), &r.Body, nil) +func GetEnforcementModel(ctx context.Context, client *gophercloud.ServiceClient) (r EnforcementModelResult) { + resp, err := client.Get(ctx, enforcementModelURL(client), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -107,13 +109,13 @@ func (opts CreateOpts) ToMap() (map[string]interface{}, error) { } // BatchCreate creates new Limits. -func BatchCreate(client *gophercloud.ServiceClient, opts BatchCreateOptsBuilder) (r CreateResult) { +func BatchCreate(ctx context.Context, client *gophercloud.ServiceClient, opts BatchCreateOptsBuilder) (r CreateResult) { b, err := opts.ToLimitsCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(rootURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, rootURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -121,8 +123,8 @@ func BatchCreate(client *gophercloud.ServiceClient, opts BatchCreateOptsBuilder) } // Get retrieves details on a single limit, by ID. -func Get(client *gophercloud.ServiceClient, limitID string) (r GetResult) { - resp, err := client.Get(resourceURL(client, limitID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, limitID string) (r GetResult) { + resp, err := client.Get(ctx, resourceURL(client, limitID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -148,13 +150,13 @@ func (opts UpdateOpts) ToLimitUpdateMap() (map[string]interface{}, error) { } // Update modifies the attributes of a limit. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToLimitUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(resourceURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, resourceURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -162,8 +164,8 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder } // Delete deletes a limit. -func Delete(client *gophercloud.ServiceClient, limitID string) (r DeleteResult) { - resp, err := client.Delete(resourceURL(client, limitID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, limitID string) (r DeleteResult) { + resp, err := client.Delete(ctx, resourceURL(client, limitID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v3/limits/testing/requests_test.go b/openstack/identity/v3/limits/testing/requests_test.go index 743acd3cbb..15cf4dbb8e 100644 --- a/openstack/identity/v3/limits/testing/requests_test.go +++ b/openstack/identity/v3/limits/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/limits" @@ -14,7 +15,7 @@ func TestGetEnforcementModel(t *testing.T) { defer th.TeardownHTTP() HandleGetEnforcementModelSuccessfully(t) - actual, err := limits.GetEnforcementModel(client.ServiceClient()).Extract() + actual, err := limits.GetEnforcementModel(context.TODO(), client.ServiceClient()).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, Model, *actual) } @@ -25,7 +26,7 @@ func TestListLimits(t *testing.T) { HandleListLimitsSuccessfully(t) count := 0 - err := limits.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := limits.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := limits.ExtractLimits(page) @@ -44,7 +45,7 @@ func TestListLimitsAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListLimitsSuccessfully(t) - allPages, err := limits.List(client.ServiceClient(), nil).AllPages() + allPages, err := limits.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := limits.ExtractLimits(allPages) th.AssertNoErr(t, err) @@ -73,7 +74,7 @@ func TestCreateLimits(t *testing.T) { }, } - actual, err := limits.BatchCreate(client.ServiceClient(), createOpts).Extract() + actual, err := limits.BatchCreate(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, ExpectedLimitsSlice, actual) } @@ -83,7 +84,7 @@ func TestGetLimit(t *testing.T) { defer th.TeardownHTTP() HandleGetLimitSuccessfully(t) - actual, err := limits.Get(client.ServiceClient(), "25a04c7a065c430590881c646cdcdd58").Extract() + actual, err := limits.Get(context.TODO(), client.ServiceClient(), "25a04c7a065c430590881c646cdcdd58").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, FirstLimit, *actual) } @@ -100,7 +101,7 @@ func TestUpdateLimit(t *testing.T) { ResourceLimit: &resourceLimit, } - actual, err := limits.Update(client.ServiceClient(), "3229b3849f584faea483d6851f7aab05", updateOpts).Extract() + actual, err := limits.Update(context.TODO(), client.ServiceClient(), "3229b3849f584faea483d6851f7aab05", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondLimitUpdated, *actual) } @@ -110,6 +111,6 @@ func TestDeleteLimit(t *testing.T) { defer th.TeardownHTTP() HandleDeleteLimitSuccessfully(t) - err := limits.Delete(client.ServiceClient(), "3229b3849f584faea483d6851f7aab05").ExtractErr() + err := limits.Delete(context.TODO(), client.ServiceClient(), "3229b3849f584faea483d6851f7aab05").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/identity/v3/osinherit/requests.go b/openstack/identity/v3/osinherit/requests.go index f527651b4c..bcb667e531 100644 --- a/openstack/identity/v3/osinherit/requests.go +++ b/openstack/identity/v3/osinherit/requests.go @@ -1,6 +1,10 @@ package osinherit -import "github.com/gophercloud/gophercloud/v2" +import ( + "context" + + "github.com/gophercloud/gophercloud/v2" +) // AssignOpts provides options to assign an inherited role type AssignOpts struct { @@ -61,7 +65,7 @@ type UnassignOpts struct { // Assign is the operation responsible for assigning an inherited role // to a user/group on a project/domain. -func Assign(client *gophercloud.ServiceClient, roleID string, opts AssignOpts) (r AssignmentResult) { +func Assign(ctx context.Context, client *gophercloud.ServiceClient, roleID string, opts AssignOpts) (r AssignmentResult) { // Check xor conditions _, err := gophercloud.BuildRequestBody(opts, "") if err != nil { @@ -90,7 +94,7 @@ func Assign(client *gophercloud.ServiceClient, roleID string, opts AssignOpts) ( actorType = "groups" } - resp, err := client.Put(assignURL(client, targetType, targetID, actorType, actorID, roleID), nil, nil, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, assignURL(client, targetType, targetID, actorType, actorID, roleID), nil, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -99,7 +103,7 @@ func Assign(client *gophercloud.ServiceClient, roleID string, opts AssignOpts) ( // Validate is the operation responsible for validating an inherited role // of a user/group on a project/domain. -func Validate(client *gophercloud.ServiceClient, roleID string, opts ValidateOpts) (r ValidateResult) { +func Validate(ctx context.Context, client *gophercloud.ServiceClient, roleID string, opts ValidateOpts) (r ValidateResult) { // Check xor conditions _, err := gophercloud.BuildRequestBody(opts, "") if err != nil { @@ -128,7 +132,7 @@ func Validate(client *gophercloud.ServiceClient, roleID string, opts ValidateOpt actorType = "groups" } - resp, err := client.Head(assignURL(client, targetType, targetID, actorType, actorID, roleID), &gophercloud.RequestOpts{ + resp, err := client.Head(ctx, assignURL(client, targetType, targetID, actorType, actorID, roleID), &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -137,7 +141,7 @@ func Validate(client *gophercloud.ServiceClient, roleID string, opts ValidateOpt // Unassign is the operation responsible for unassigning an inherited // role to a user/group on a project/domain. -func Unassign(client *gophercloud.ServiceClient, roleID string, opts UnassignOpts) (r UnassignmentResult) { +func Unassign(ctx context.Context, client *gophercloud.ServiceClient, roleID string, opts UnassignOpts) (r UnassignmentResult) { // Check xor conditions _, err := gophercloud.BuildRequestBody(opts, "") if err != nil { @@ -166,7 +170,7 @@ func Unassign(client *gophercloud.ServiceClient, roleID string, opts UnassignOpt actorType = "groups" } - resp, err := client.Delete(assignURL(client, targetType, targetID, actorType, actorID, roleID), &gophercloud.RequestOpts{ + resp, err := client.Delete(ctx, assignURL(client, targetType, targetID, actorType, actorID, roleID), &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/identity/v3/osinherit/testing/requests_test.go b/openstack/identity/v3/osinherit/testing/requests_test.go index 8f8aa01db5..7901a689c7 100644 --- a/openstack/identity/v3/osinherit/testing/requests_test.go +++ b/openstack/identity/v3/osinherit/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/osinherit" @@ -13,37 +14,37 @@ func TestAssign(t *testing.T) { defer th.TeardownHTTP() HandleAssignSuccessfully(t) - err := osinherit.Assign(client.ServiceClient(), "{role_id}", osinherit.AssignOpts{ + err := osinherit.Assign(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.AssignOpts{ UserID: "{user_id}", ProjectID: "{project_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = osinherit.Assign(client.ServiceClient(), "{role_id}", osinherit.AssignOpts{ + err = osinherit.Assign(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.AssignOpts{ UserID: "{user_id}", DomainID: "{domain_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = osinherit.Assign(client.ServiceClient(), "{role_id}", osinherit.AssignOpts{ + err = osinherit.Assign(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.AssignOpts{ GroupID: "{group_id}", ProjectID: "{project_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = osinherit.Assign(client.ServiceClient(), "{role_id}", osinherit.AssignOpts{ + err = osinherit.Assign(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.AssignOpts{ GroupID: "{group_id}", DomainID: "{domain_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = osinherit.Assign(client.ServiceClient(), "{role_id}", osinherit.AssignOpts{ + err = osinherit.Assign(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.AssignOpts{ GroupID: "{group_id}", UserID: "{user_id}", }).ExtractErr() th.AssertErr(t, err) - err = osinherit.Assign(client.ServiceClient(), "{role_id}", osinherit.AssignOpts{ + err = osinherit.Assign(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.AssignOpts{ ProjectID: "{project_id}", DomainID: "{domain_id}", }).ExtractErr() @@ -55,37 +56,37 @@ func TestValidate(t *testing.T) { defer th.TeardownHTTP() HandleValidateSuccessfully(t) - err := osinherit.Validate(client.ServiceClient(), "{role_id}", osinherit.ValidateOpts{ + err := osinherit.Validate(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.ValidateOpts{ UserID: "{user_id}", ProjectID: "{project_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = osinherit.Validate(client.ServiceClient(), "{role_id}", osinherit.ValidateOpts{ + err = osinherit.Validate(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.ValidateOpts{ UserID: "{user_id}", DomainID: "{domain_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = osinherit.Validate(client.ServiceClient(), "{role_id}", osinherit.ValidateOpts{ + err = osinherit.Validate(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.ValidateOpts{ GroupID: "{group_id}", ProjectID: "{project_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = osinherit.Validate(client.ServiceClient(), "{role_id}", osinherit.ValidateOpts{ + err = osinherit.Validate(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.ValidateOpts{ GroupID: "{group_id}", DomainID: "{domain_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = osinherit.Validate(client.ServiceClient(), "{role_id}", osinherit.ValidateOpts{ + err = osinherit.Validate(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.ValidateOpts{ GroupID: "{group_id}", UserID: "{user_id}", }).ExtractErr() th.AssertErr(t, err) - err = osinherit.Validate(client.ServiceClient(), "{role_id}", osinherit.ValidateOpts{ + err = osinherit.Validate(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.ValidateOpts{ ProjectID: "{project_id}", DomainID: "{domain_id}", }).ExtractErr() @@ -97,37 +98,37 @@ func TestUnassign(t *testing.T) { defer th.TeardownHTTP() HandleUnassignSuccessfully(t) - err := osinherit.Unassign(client.ServiceClient(), "{role_id}", osinherit.UnassignOpts{ + err := osinherit.Unassign(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.UnassignOpts{ UserID: "{user_id}", ProjectID: "{project_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = osinherit.Unassign(client.ServiceClient(), "{role_id}", osinherit.UnassignOpts{ + err = osinherit.Unassign(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.UnassignOpts{ UserID: "{user_id}", DomainID: "{domain_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = osinherit.Unassign(client.ServiceClient(), "{role_id}", osinherit.UnassignOpts{ + err = osinherit.Unassign(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.UnassignOpts{ GroupID: "{group_id}", ProjectID: "{project_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = osinherit.Unassign(client.ServiceClient(), "{role_id}", osinherit.UnassignOpts{ + err = osinherit.Unassign(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.UnassignOpts{ GroupID: "{group_id}", DomainID: "{domain_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = osinherit.Unassign(client.ServiceClient(), "{role_id}", osinherit.UnassignOpts{ + err = osinherit.Unassign(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.UnassignOpts{ GroupID: "{group_id}", UserID: "{user_id}", }).ExtractErr() th.AssertErr(t, err) - err = osinherit.Unassign(client.ServiceClient(), "{role_id}", osinherit.UnassignOpts{ + err = osinherit.Unassign(context.TODO(), client.ServiceClient(), "{role_id}", osinherit.UnassignOpts{ ProjectID: "{project_id}", DomainID: "{domain_id}", }).ExtractErr() diff --git a/openstack/identity/v3/policies/requests.go b/openstack/identity/v3/policies/requests.go index 8f96692891..3b8340e7ec 100644 --- a/openstack/identity/v3/policies/requests.go +++ b/openstack/identity/v3/policies/requests.go @@ -1,6 +1,7 @@ package policies import ( + "context" "net/url" "strings" @@ -110,13 +111,13 @@ func (opts CreateOpts) ToPolicyCreateMap() (map[string]interface{}, error) { } // Create creates a new Policy. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToPolicyCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -124,8 +125,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Get retrieves details on a single policy, by ID. -func Get(client *gophercloud.ServiceClient, policyID string) (r GetResult) { - resp, err := client.Get(getURL(client, policyID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, policyID string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, policyID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -178,13 +179,13 @@ func (opts UpdateOpts) ToPolicyUpdateMap() (map[string]interface{}, error) { } // Update updates an existing Role. -func Update(client *gophercloud.ServiceClient, policyID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, policyID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToPolicyUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(updateURL(client, policyID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, policyID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -192,8 +193,8 @@ func Update(client *gophercloud.ServiceClient, policyID string, opts UpdateOptsB } // Delete deletes a policy. -func Delete(client *gophercloud.ServiceClient, policyID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, policyID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, policyID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, policyID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v3/policies/testing/requests_test.go b/openstack/identity/v3/policies/testing/requests_test.go index 5cefb7775b..81709d4adf 100644 --- a/openstack/identity/v3/policies/testing/requests_test.go +++ b/openstack/identity/v3/policies/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "testing" @@ -16,7 +17,7 @@ func TestListPolicies(t *testing.T) { HandleListPoliciesSuccessfully(t) count := 0 - err := policies.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := policies.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := policies.ExtractPolicies(page) @@ -35,7 +36,7 @@ func TestListPoliciesAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListPoliciesSuccessfully(t) - allPages, err := policies.List(client.ServiceClient(), nil).AllPages() + allPages, err := policies.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := policies.ExtractPolicies(allPages) th.AssertNoErr(t, err) @@ -50,7 +51,7 @@ func TestListPoliciesWithFilter(t *testing.T) { listOpts := policies.ListOpts{ Type: "application/json", } - allPages, err := policies.List(client.ServiceClient(), listOpts).AllPages() + allPages, err := policies.List(client.ServiceClient(), listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := policies.ExtractPolicies(allPages) th.AssertNoErr(t, err) @@ -102,7 +103,7 @@ func TestCreatePolicy(t *testing.T) { }, } - actual, err := policies.Create(client.ServiceClient(), createOpts).Extract() + actual, err := policies.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondPolicy, *actual) } @@ -156,7 +157,7 @@ func TestGetPolicy(t *testing.T) { HandleGetPolicySuccessfully(t) id := "b49884da9d31494ea02aff38d4b4e701" - actual, err := policies.Get(client.ServiceClient(), id).Extract() + actual, err := policies.Get(context.TODO(), client.ServiceClient(), id).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondPolicy, *actual) @@ -174,7 +175,7 @@ func TestUpdatePolicy(t *testing.T) { } id := "b49884da9d31494ea02aff38d4b4e701" - actual, err := policies.Update(client.ServiceClient(), id, updateOpts).Extract() + actual, err := policies.Update(context.TODO(), client.ServiceClient(), id, updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondPolicyUpdated, *actual) } @@ -224,6 +225,6 @@ func TestDeletePolicy(t *testing.T) { defer th.TeardownHTTP() HandleDeletePolicySuccessfully(t) - res := policies.Delete(client.ServiceClient(), "9fe1d3") + res := policies.Delete(context.TODO(), client.ServiceClient(), "9fe1d3") th.AssertNoErr(t, res.Err) } diff --git a/openstack/identity/v3/projects/requests.go b/openstack/identity/v3/projects/requests.go index 0b81fd548d..2d9d5eaa39 100644 --- a/openstack/identity/v3/projects/requests.go +++ b/openstack/identity/v3/projects/requests.go @@ -1,6 +1,7 @@ package projects import ( + "context" "net/url" "strings" @@ -94,8 +95,8 @@ func ListAvailable(client *gophercloud.ServiceClient) pagination.Pager { } // Get retrieves details on a single project, by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -156,20 +157,20 @@ func (opts CreateOpts) ToProjectCreateMap() (map[string]interface{}, error) { } // Create creates a new Project. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToProjectCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, nil) + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete deletes a project. -func Delete(client *gophercloud.ServiceClient, projectID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, projectID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, projectID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, projectID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -230,13 +231,13 @@ func (opts UpdateOpts) ToProjectUpdateMap() (map[string]interface{}, error) { } // Update modifies the attributes of a project. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToProjectUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/identity/v3/projects/testing/requests_test.go b/openstack/identity/v3/projects/testing/requests_test.go index a45eb24a37..3ca4898123 100644 --- a/openstack/identity/v3/projects/testing/requests_test.go +++ b/openstack/identity/v3/projects/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/projects" @@ -15,7 +16,7 @@ func TestListAvailableProjects(t *testing.T) { HandleListAvailableProjectsSuccessfully(t) count := 0 - err := projects.ListAvailable(client.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := projects.ListAvailable(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := projects.ExtractProjects(page) @@ -35,7 +36,7 @@ func TestListProjects(t *testing.T) { HandleListProjectsSuccessfully(t) count := 0 - err := projects.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := projects.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := projects.ExtractProjects(page) @@ -86,7 +87,7 @@ func TestGetProject(t *testing.T) { defer th.TeardownHTTP() HandleGetProjectSuccessfully(t) - actual, err := projects.Get(client.ServiceClient(), "1234").Extract() + actual, err := projects.Get(context.TODO(), client.ServiceClient(), "1234").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, RedTeam, *actual) } @@ -103,7 +104,7 @@ func TestCreateProject(t *testing.T) { Extra: map[string]interface{}{"test": "old"}, } - actual, err := projects.Create(client.ServiceClient(), createOpts).Extract() + actual, err := projects.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, RedTeam, *actual) } @@ -113,7 +114,7 @@ func TestDeleteProject(t *testing.T) { defer th.TeardownHTTP() HandleDeleteProjectSuccessfully(t) - res := projects.Delete(client.ServiceClient(), "1234") + res := projects.Delete(context.TODO(), client.ServiceClient(), "1234") th.AssertNoErr(t, res.Err) } @@ -130,7 +131,7 @@ func TestUpdateProject(t *testing.T) { Extra: map[string]interface{}{"test": "new"}, } - actual, err := projects.Update(client.ServiceClient(), "1234", updateOpts).Extract() + actual, err := projects.Update(context.TODO(), client.ServiceClient(), "1234", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, UpdatedRedTeam, *actual) } diff --git a/openstack/identity/v3/regions/requests.go b/openstack/identity/v3/regions/requests.go index 2cc3dd252e..fd8b5374bc 100644 --- a/openstack/identity/v3/regions/requests.go +++ b/openstack/identity/v3/regions/requests.go @@ -1,6 +1,8 @@ package regions import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -39,8 +41,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get retrieves details on a single region, by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -85,13 +87,13 @@ func (opts CreateOpts) ToRegionCreateMap() (map[string]interface{}, error) { } // Create creates a new Region. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToRegionCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -147,13 +149,13 @@ func (opts UpdateOpts) ToRegionUpdateMap() (map[string]interface{}, error) { } // Update updates an existing Region. -func Update(client *gophercloud.ServiceClient, regionID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, regionID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToRegionUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(updateURL(client, regionID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, regionID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -161,8 +163,8 @@ func Update(client *gophercloud.ServiceClient, regionID string, opts UpdateOptsB } // Delete deletes a region. -func Delete(client *gophercloud.ServiceClient, regionID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, regionID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, regionID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, regionID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v3/regions/testing/requests_test.go b/openstack/identity/v3/regions/testing/requests_test.go index e89450d42c..8860b8721a 100644 --- a/openstack/identity/v3/regions/testing/requests_test.go +++ b/openstack/identity/v3/regions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/regions" @@ -15,7 +16,7 @@ func TestListRegions(t *testing.T) { HandleListRegionsSuccessfully(t) count := 0 - err := regions.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := regions.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := regions.ExtractRegions(page) @@ -34,7 +35,7 @@ func TestListRegionsAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListRegionsSuccessfully(t) - allPages, err := regions.List(client.ServiceClient(), nil).AllPages() + allPages, err := regions.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := regions.ExtractRegions(allPages) th.AssertNoErr(t, err) @@ -47,7 +48,7 @@ func TestGetRegion(t *testing.T) { defer th.TeardownHTTP() HandleGetRegionSuccessfully(t) - actual, err := regions.Get(client.ServiceClient(), "RegionOne-West").Extract() + actual, err := regions.Get(context.TODO(), client.ServiceClient(), "RegionOne-West").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondRegion, *actual) @@ -67,7 +68,7 @@ func TestCreateRegion(t *testing.T) { ParentRegionID: "RegionOne", } - actual, err := regions.Create(client.ServiceClient(), createOpts).Extract() + actual, err := regions.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondRegion, *actual) } @@ -91,7 +92,7 @@ func TestUpdateRegion(t *testing.T) { */ } - actual, err := regions.Update(client.ServiceClient(), "RegionOne-West", updateOpts).Extract() + actual, err := regions.Update(context.TODO(), client.ServiceClient(), "RegionOne-West", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondRegionUpdated, *actual) } @@ -101,6 +102,6 @@ func TestDeleteRegion(t *testing.T) { defer th.TeardownHTTP() HandleDeleteRegionSuccessfully(t) - res := regions.Delete(client.ServiceClient(), "RegionOne-West") + res := regions.Delete(context.TODO(), client.ServiceClient(), "RegionOne-West") th.AssertNoErr(t, res.Err) } diff --git a/openstack/identity/v3/registeredlimits/requests.go b/openstack/identity/v3/registeredlimits/requests.go index 8785611e10..232b32e2a5 100644 --- a/openstack/identity/v3/registeredlimits/requests.go +++ b/openstack/identity/v3/registeredlimits/requests.go @@ -1,6 +1,8 @@ package registeredlimits import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -88,13 +90,13 @@ func (opts CreateOpts) ToMap() (map[string]interface{}, error) { } // BatchCreate creates new Limits. -func BatchCreate(client *gophercloud.ServiceClient, opts BatchCreateOptsBuilder) (r CreateResult) { +func BatchCreate(ctx context.Context, client *gophercloud.ServiceClient, opts BatchCreateOptsBuilder) (r CreateResult) { b, err := opts.ToRegisteredLimitsCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(rootURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, rootURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -102,8 +104,8 @@ func BatchCreate(client *gophercloud.ServiceClient, opts BatchCreateOptsBuilder) } // Get retrieves details on a single registered_limit, by ID. -func Get(client *gophercloud.ServiceClient, registeredLimitID string) (r GetResult) { - resp, err := client.Get(resourceURL(client, registeredLimitID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, registeredLimitID string) (r GetResult) { + resp, err := client.Get(ctx, resourceURL(client, registeredLimitID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -139,13 +141,13 @@ func (opts UpdateOpts) ToRegisteredLimitUpdateMap() (map[string]interface{}, err } // Update modifies the attributes of a registered limit. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToRegisteredLimitUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(resourceURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, resourceURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -153,8 +155,8 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder } // Delete deletes a registered_limit. -func Delete(client *gophercloud.ServiceClient, registeredLimitID string) (r DeleteResult) { - resp, err := client.Delete(resourceURL(client, registeredLimitID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, registeredLimitID string) (r DeleteResult) { + resp, err := client.Delete(ctx, resourceURL(client, registeredLimitID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v3/registeredlimits/testing/requests_test.go b/openstack/identity/v3/registeredlimits/testing/requests_test.go index 1a93ee09e9..ad2a30cb3f 100644 --- a/openstack/identity/v3/registeredlimits/testing/requests_test.go +++ b/openstack/identity/v3/registeredlimits/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/registeredlimits" @@ -15,7 +16,7 @@ func TestListRegisteredLimits(t *testing.T) { HandleListRegisteredLimitsSuccessfully(t) count := 0 - err := registeredlimits.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := registeredlimits.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := registeredlimits.ExtractRegisteredLimits(page) @@ -34,7 +35,7 @@ func TestListRegisteredLimitsAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListRegisteredLimitsSuccessfully(t) - allPages, err := registeredlimits.List(client.ServiceClient(), nil).AllPages() + allPages, err := registeredlimits.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := registeredlimits.ExtractRegisteredLimits(allPages) th.AssertNoErr(t, err) @@ -62,7 +63,7 @@ func TestCreateRegisteredLimits(t *testing.T) { }, } - actual, err := registeredlimits.BatchCreate(client.ServiceClient(), createOpts).Extract() + actual, err := registeredlimits.BatchCreate(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, ExpectedRegisteredLimitsSlice, actual) } @@ -72,7 +73,7 @@ func TestGetRegisteredLimit(t *testing.T) { defer th.TeardownHTTP() HandleGetRegisteredLimitSuccessfully(t) - actual, err := registeredlimits.Get(client.ServiceClient(), "3229b3849f584faea483d6851f7aab05").Extract() + actual, err := registeredlimits.Get(context.TODO(), client.ServiceClient(), "3229b3849f584faea483d6851f7aab05").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondRegisteredLimit, *actual) } @@ -82,7 +83,7 @@ func TestDeleteRegisteredLimit(t *testing.T) { defer th.TeardownHTTP() HandleDeleteRegisteredLimitSuccessfully(t) - res := registeredlimits.Delete(client.ServiceClient(), "3229b3849f584faea483d6851f7aab05") + res := registeredlimits.Delete(context.TODO(), client.ServiceClient(), "3229b3849f584faea483d6851f7aab05") th.AssertNoErr(t, res.Err) } @@ -98,7 +99,7 @@ func TestUpdateRegisteredLimit(t *testing.T) { DefaultLimit: &defaultLimit, } - actual, err := registeredlimits.Update(client.ServiceClient(), "3229b3849f584faea483d6851f7aab05", updateOpts).Extract() + actual, err := registeredlimits.Update(context.TODO(), client.ServiceClient(), "3229b3849f584faea483d6851f7aab05", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, UpdatedSecondRegisteredLimit, *actual) } diff --git a/openstack/identity/v3/roles/requests.go b/openstack/identity/v3/roles/requests.go index e8248a0e1d..ac6d1bfea4 100644 --- a/openstack/identity/v3/roles/requests.go +++ b/openstack/identity/v3/roles/requests.go @@ -1,6 +1,7 @@ package roles import ( + "context" "net/url" "strings" @@ -65,8 +66,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get retrieves details on a single role, by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -108,13 +109,13 @@ func (opts CreateOpts) ToRoleCreateMap() (map[string]interface{}, error) { } // Create creates a new Role. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToRoleCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -155,13 +156,13 @@ func (opts UpdateOpts) ToRoleUpdateMap() (map[string]interface{}, error) { } // Update updates an existing Role. -func Update(client *gophercloud.ServiceClient, roleID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, roleID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToRoleUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(updateURL(client, roleID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, roleID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -169,8 +170,8 @@ func Update(client *gophercloud.ServiceClient, roleID string, opts UpdateOptsBui } // Delete deletes a role. -func Delete(client *gophercloud.ServiceClient, roleID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, roleID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, roleID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, roleID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -332,7 +333,7 @@ func ListAssignmentsOnResource(client *gophercloud.ServiceClient, opts ListAssig // Assign is the operation responsible for assigning a role // to a user/group on a project/domain. -func Assign(client *gophercloud.ServiceClient, roleID string, opts AssignOpts) (r AssignmentResult) { +func Assign(ctx context.Context, client *gophercloud.ServiceClient, roleID string, opts AssignOpts) (r AssignmentResult) { // Check xor conditions _, err := gophercloud.BuildRequestBody(opts, "") if err != nil { @@ -361,7 +362,7 @@ func Assign(client *gophercloud.ServiceClient, roleID string, opts AssignOpts) ( actorType = "groups" } - resp, err := client.Put(assignURL(client, targetType, targetID, actorType, actorID, roleID), nil, nil, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, assignURL(client, targetType, targetID, actorType, actorID, roleID), nil, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -370,7 +371,7 @@ func Assign(client *gophercloud.ServiceClient, roleID string, opts AssignOpts) ( // Unassign is the operation responsible for unassigning a role // from a user/group on a project/domain. -func Unassign(client *gophercloud.ServiceClient, roleID string, opts UnassignOpts) (r UnassignmentResult) { +func Unassign(ctx context.Context, client *gophercloud.ServiceClient, roleID string, opts UnassignOpts) (r UnassignmentResult) { // Check xor conditions _, err := gophercloud.BuildRequestBody(opts, "") if err != nil { @@ -399,7 +400,7 @@ func Unassign(client *gophercloud.ServiceClient, roleID string, opts UnassignOpt actorType = "groups" } - resp, err := client.Delete(assignURL(client, targetType, targetID, actorType, actorID, roleID), &gophercloud.RequestOpts{ + resp, err := client.Delete(ctx, assignURL(client, targetType, targetID, actorType, actorID, roleID), &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/identity/v3/roles/testing/requests_test.go b/openstack/identity/v3/roles/testing/requests_test.go index 0bbf10d5b2..ce41285bb7 100644 --- a/openstack/identity/v3/roles/testing/requests_test.go +++ b/openstack/identity/v3/roles/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/roles" @@ -15,7 +16,7 @@ func TestListRoles(t *testing.T) { HandleListRolesSuccessfully(t) count := 0 - err := roles.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := roles.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := roles.ExtractRoles(page) @@ -34,7 +35,7 @@ func TestListRolesAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListRolesSuccessfully(t) - allPages, err := roles.List(client.ServiceClient(), nil).AllPages() + allPages, err := roles.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := roles.ExtractRoles(allPages) th.AssertNoErr(t, err) @@ -79,7 +80,7 @@ func TestGetRole(t *testing.T) { defer th.TeardownHTTP() HandleGetRoleSuccessfully(t) - actual, err := roles.Get(client.ServiceClient(), "9fe1d3").Extract() + actual, err := roles.Get(context.TODO(), client.ServiceClient(), "9fe1d3").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondRole, *actual) @@ -98,7 +99,7 @@ func TestCreateRole(t *testing.T) { }, } - actual, err := roles.Create(client.ServiceClient(), createOpts).Extract() + actual, err := roles.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondRole, *actual) } @@ -114,7 +115,7 @@ func TestUpdateRole(t *testing.T) { }, } - actual, err := roles.Update(client.ServiceClient(), "9fe1d3", updateOpts).Extract() + actual, err := roles.Update(context.TODO(), client.ServiceClient(), "9fe1d3", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondRoleUpdated, *actual) } @@ -124,7 +125,7 @@ func TestDeleteRole(t *testing.T) { defer th.TeardownHTTP() HandleDeleteRoleSuccessfully(t) - res := roles.Delete(client.ServiceClient(), "9fe1d3") + res := roles.Delete(context.TODO(), client.ServiceClient(), "9fe1d3") th.AssertNoErr(t, res.Err) } @@ -134,7 +135,7 @@ func TestListAssignmentsSinglePage(t *testing.T) { HandleListRoleAssignmentsSuccessfully(t) count := 0 - err := roles.ListAssignments(client.ServiceClient(), roles.ListAssignmentsOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := roles.ListAssignments(client.ServiceClient(), roles.ListAssignmentsOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := roles.ExtractRoleAssignments(page) th.AssertNoErr(t, err) @@ -158,7 +159,7 @@ func TestListAssignmentsWithNamesSinglePage(t *testing.T) { } count := 0 - err := roles.ListAssignments(client.ServiceClient(), listOpts).EachPage(func(page pagination.Page) (bool, error) { + err := roles.ListAssignments(client.ServiceClient(), listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := roles.ExtractRoleAssignments(page) th.AssertNoErr(t, err) @@ -182,7 +183,7 @@ func TestListAssignmentsWithSubtreeSinglePage(t *testing.T) { } count := 0 - err := roles.ListAssignments(client.ServiceClient(), listOpts).EachPage(func(page pagination.Page) (bool, error) { + err := roles.ListAssignments(client.ServiceClient(), listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := roles.ExtractRoleAssignments(page) th.AssertNoErr(t, err) @@ -204,7 +205,7 @@ func TestListAssignmentsOnResource_ProjectsUsers(t *testing.T) { err := roles.ListAssignmentsOnResource(client.ServiceClient(), roles.ListAssignmentsOnResourceOpts{ UserID: "{user_id}", ProjectID: "{project_id}", - }).EachPage(func(page pagination.Page) (bool, error) { + }).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := roles.ExtractRoles(page) @@ -226,7 +227,7 @@ func TestListAssignmentsOnResource_DomainsUsers(t *testing.T) { err := roles.ListAssignmentsOnResource(client.ServiceClient(), roles.ListAssignmentsOnResourceOpts{ UserID: "{user_id}", DomainID: "{domain_id}", - }).EachPage(func(page pagination.Page) (bool, error) { + }).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := roles.ExtractRoles(page) @@ -248,7 +249,7 @@ func TestListAssignmentsOnResource_ProjectsGroups(t *testing.T) { err := roles.ListAssignmentsOnResource(client.ServiceClient(), roles.ListAssignmentsOnResourceOpts{ GroupID: "{group_id}", ProjectID: "{project_id}", - }).EachPage(func(page pagination.Page) (bool, error) { + }).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := roles.ExtractRoles(page) @@ -270,7 +271,7 @@ func TestListAssignmentsOnResource_DomainsGroups(t *testing.T) { err := roles.ListAssignmentsOnResource(client.ServiceClient(), roles.ListAssignmentsOnResourceOpts{ GroupID: "{group_id}", DomainID: "{domain_id}", - }).EachPage(func(page pagination.Page) (bool, error) { + }).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := roles.ExtractRoles(page) @@ -288,25 +289,25 @@ func TestAssign(t *testing.T) { defer th.TeardownHTTP() HandleAssignSuccessfully(t) - err := roles.Assign(client.ServiceClient(), "{role_id}", roles.AssignOpts{ + err := roles.Assign(context.TODO(), client.ServiceClient(), "{role_id}", roles.AssignOpts{ UserID: "{user_id}", ProjectID: "{project_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = roles.Assign(client.ServiceClient(), "{role_id}", roles.AssignOpts{ + err = roles.Assign(context.TODO(), client.ServiceClient(), "{role_id}", roles.AssignOpts{ UserID: "{user_id}", DomainID: "{domain_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = roles.Assign(client.ServiceClient(), "{role_id}", roles.AssignOpts{ + err = roles.Assign(context.TODO(), client.ServiceClient(), "{role_id}", roles.AssignOpts{ GroupID: "{group_id}", ProjectID: "{project_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = roles.Assign(client.ServiceClient(), "{role_id}", roles.AssignOpts{ + err = roles.Assign(context.TODO(), client.ServiceClient(), "{role_id}", roles.AssignOpts{ GroupID: "{group_id}", DomainID: "{domain_id}", }).ExtractErr() @@ -318,25 +319,25 @@ func TestUnassign(t *testing.T) { defer th.TeardownHTTP() HandleUnassignSuccessfully(t) - err := roles.Unassign(client.ServiceClient(), "{role_id}", roles.UnassignOpts{ + err := roles.Unassign(context.TODO(), client.ServiceClient(), "{role_id}", roles.UnassignOpts{ UserID: "{user_id}", ProjectID: "{project_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = roles.Unassign(client.ServiceClient(), "{role_id}", roles.UnassignOpts{ + err = roles.Unassign(context.TODO(), client.ServiceClient(), "{role_id}", roles.UnassignOpts{ UserID: "{user_id}", DomainID: "{domain_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = roles.Unassign(client.ServiceClient(), "{role_id}", roles.UnassignOpts{ + err = roles.Unassign(context.TODO(), client.ServiceClient(), "{role_id}", roles.UnassignOpts{ GroupID: "{group_id}", ProjectID: "{project_id}", }).ExtractErr() th.AssertNoErr(t, err) - err = roles.Unassign(client.ServiceClient(), "{role_id}", roles.UnassignOpts{ + err = roles.Unassign(context.TODO(), client.ServiceClient(), "{role_id}", roles.UnassignOpts{ GroupID: "{group_id}", DomainID: "{domain_id}", }).ExtractErr() diff --git a/openstack/identity/v3/services/requests.go b/openstack/identity/v3/services/requests.go index 4a32f5987c..f01f683525 100644 --- a/openstack/identity/v3/services/requests.go +++ b/openstack/identity/v3/services/requests.go @@ -1,6 +1,8 @@ package services import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -42,13 +44,13 @@ func (opts CreateOpts) ToServiceCreateMap() (map[string]interface{}, error) { } // Create adds a new service of the requested type to the catalog. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToServiceCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -92,8 +94,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get returns additional information about a service, given its ID. -func Get(client *gophercloud.ServiceClient, serviceID string) (r GetResult) { - resp, err := client.Get(serviceURL(client, serviceID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, serviceID string) (r GetResult) { + resp, err := client.Get(ctx, serviceURL(client, serviceID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -135,13 +137,13 @@ func (opts UpdateOpts) ToServiceUpdateMap() (map[string]interface{}, error) { } // Update updates an existing Service. -func Update(client *gophercloud.ServiceClient, serviceID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, serviceID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToServiceUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(updateURL(client, serviceID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, serviceID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -151,8 +153,8 @@ func Update(client *gophercloud.ServiceClient, serviceID string, opts UpdateOpts // Delete removes an existing service. // It either deletes all associated endpoints, or fails until all endpoints // are deleted. -func Delete(client *gophercloud.ServiceClient, serviceID string) (r DeleteResult) { - resp, err := client.Delete(serviceURL(client, serviceID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, serviceID string) (r DeleteResult) { + resp, err := client.Delete(ctx, serviceURL(client, serviceID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/identity/v3/services/testing/requests_test.go b/openstack/identity/v3/services/testing/requests_test.go index 4f42a7b10c..a7afd5a9a9 100644 --- a/openstack/identity/v3/services/testing/requests_test.go +++ b/openstack/identity/v3/services/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "net/http" "testing" @@ -24,7 +25,7 @@ func TestCreateSuccessful(t *testing.T) { }, } - actual, err := services.Create(client.ServiceClient(), createOpts).Extract() + actual, err := services.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondService, *actual) } @@ -35,7 +36,7 @@ func TestListServices(t *testing.T) { HandleListServicesSuccessfully(t) count := 0 - err := services.List(client.ServiceClient(), services.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := services.List(client.ServiceClient(), services.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := services.ExtractServices(page) @@ -54,7 +55,7 @@ func TestListServicesAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListServicesSuccessfully(t) - allPages, err := services.List(client.ServiceClient(), nil).AllPages() + allPages, err := services.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := services.ExtractServices(allPages) th.AssertNoErr(t, err) @@ -68,7 +69,7 @@ func TestGetSuccessful(t *testing.T) { defer th.TeardownHTTP() HandleGetServiceSuccessfully(t) - actual, err := services.Get(client.ServiceClient(), "9876").Extract() + actual, err := services.Get(context.TODO(), client.ServiceClient(), "9876").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondService, *actual) @@ -86,7 +87,7 @@ func TestUpdateSuccessful(t *testing.T) { "description": "Service Two Updated", }, } - actual, err := services.Update(client.ServiceClient(), "9876", updateOpts).Extract() + actual, err := services.Update(context.TODO(), client.ServiceClient(), "9876", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondServiceUpdated, *actual) th.AssertEquals(t, SecondServiceUpdated.Extra["description"], "Service Two Updated") @@ -102,6 +103,6 @@ func TestDeleteSuccessful(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := services.Delete(client.ServiceClient(), "12345") + res := services.Delete(context.TODO(), client.ServiceClient(), "12345") th.AssertNoErr(t, res.Err) } diff --git a/openstack/identity/v3/tokens/requests.go b/openstack/identity/v3/tokens/requests.go index e250a7582e..4a54ed1d3f 100644 --- a/openstack/identity/v3/tokens/requests.go +++ b/openstack/identity/v3/tokens/requests.go @@ -123,9 +123,9 @@ func subjectTokenHeaders(subjectToken string) map[string]string { } } -// CreateWithContext authenticates and either generates a new token, or changes the Scope +// Create authenticates and either generates a new token, or changes the Scope // of an existing token. -func CreateWithContext(ctx context.Context, c *gophercloud.ServiceClient, opts AuthOptionsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts AuthOptionsBuilder) (r CreateResult) { scope, err := opts.ToTokenV3ScopeMap() if err != nil { r.Err = err @@ -138,21 +138,16 @@ func CreateWithContext(ctx context.Context, c *gophercloud.ServiceClient, opts A return } - resp, err := c.PostWithContext(ctx, tokenURL(c), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Post(ctx, tokenURL(c), b, &r.Body, &gophercloud.RequestOpts{ OmitHeaders: []string{"X-Auth-Token"}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -// Create is a compatibility wrapper around CreateWithContext -func Create(c *gophercloud.ServiceClient, opts AuthOptionsBuilder) (r CreateResult) { - return CreateWithContext(context.Background(), c, opts) -} - -// GetGetWithContext validates and retrieves information about another token. -func GetWithContext(ctx context.Context, c *gophercloud.ServiceClient, token string) (r GetResult) { - resp, err := c.GetWithContext(ctx, tokenURL(c), &r.Body, &gophercloud.RequestOpts{ +// Get validates and retrieves information about another token. +func Get(ctx context.Context, c *gophercloud.ServiceClient, token string) (r GetResult) { + resp, err := c.Get(ctx, tokenURL(c), &r.Body, &gophercloud.RequestOpts{ MoreHeaders: subjectTokenHeaders(token), OkCodes: []int{200, 203}, }) @@ -160,14 +155,9 @@ func GetWithContext(ctx context.Context, c *gophercloud.ServiceClient, token str return } -// Get is a compatibility wrapper around GetWithContext -func Get(c *gophercloud.ServiceClient, token string) (r GetResult) { - return GetWithContext(context.Background(), c, token) -} - -// ValidateWithContext determines if a specified token is valid or not. -func ValidateWithContext(ctx context.Context, c *gophercloud.ServiceClient, token string) (bool, error) { - resp, err := c.HeadWithContext(ctx, tokenURL(c), &gophercloud.RequestOpts{ +// Validate determines if a specified token is valid or not. +func Validate(ctx context.Context, c *gophercloud.ServiceClient, token string) (bool, error) { + resp, err := c.Head(ctx, tokenURL(c), &gophercloud.RequestOpts{ MoreHeaders: subjectTokenHeaders(token), OkCodes: []int{200, 204, 404}, }) @@ -178,21 +168,11 @@ func ValidateWithContext(ctx context.Context, c *gophercloud.ServiceClient, toke return resp.StatusCode == 200 || resp.StatusCode == 204, nil } -// Validate is a compatibility wrapper around ValidateWithContext -func Validate(c *gophercloud.ServiceClient, token string) (bool, error) { - return ValidateWithContext(context.Background(), c, token) -} - -// RevokeWithContext immediately makes specified token invalid. -func RevokeWithContext(ctx context.Context, c *gophercloud.ServiceClient, token string) (r RevokeResult) { - resp, err := c.DeleteWithContext(ctx, tokenURL(c), &gophercloud.RequestOpts{ +// Revoke immediately makes specified token invalid. +func Revoke(ctx context.Context, c *gophercloud.ServiceClient, token string) (r RevokeResult) { + resp, err := c.Delete(ctx, tokenURL(c), &gophercloud.RequestOpts{ MoreHeaders: subjectTokenHeaders(token), }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } - -// Revoke is a compatibility wrapper around RevokeWithContext -func Revoke(c *gophercloud.ServiceClient, token string) (r RevokeResult) { - return RevokeWithContext(context.Background(), c, token) -} diff --git a/openstack/identity/v3/tokens/testing/requests_test.go b/openstack/identity/v3/tokens/testing/requests_test.go index e6fe6c4086..240adf2950 100644 --- a/openstack/identity/v3/tokens/testing/requests_test.go +++ b/openstack/identity/v3/tokens/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -42,7 +43,7 @@ func authTokenPost(t *testing.T, options tokens.AuthOptions, scope *tokens.Scope expected := &tokens.Token{ ExpiresAt: time.Date(2014, 10, 2, 13, 45, 0, 0, time.UTC), } - actual, err := tokens.Create(&client, &options).Extract() + actual, err := tokens.Create(context.TODO(), &client, &options).Extract() testhelper.AssertNoErr(t, err) testhelper.CheckDeepEquals(t, expected, actual) } @@ -63,7 +64,7 @@ func authTokenPostErr(t *testing.T, options tokens.AuthOptions, scope *tokens.Sc options.Scope = *scope } - _, err := tokens.Create(&client, &options).Extract() + _, err := tokens.Create(context.TODO(), &client, &options).Extract() if err == nil { t.Errorf("Create did NOT return an error") } @@ -425,7 +426,7 @@ func TestCreateExtractsTokenFromResponse(t *testing.T) { }) options := tokens.AuthOptions{UserID: "me", Password: "shhh"} - token, err := tokens.Create(&client, &options).Extract() + token, err := tokens.Create(context.TODO(), &client, &options).Extract() if err != nil { t.Fatalf("Create returned an error: %v", err) } @@ -567,7 +568,7 @@ func TestGetRequest(t *testing.T) { `) }) - token, err := tokens.Get(&client, "abcdef12345").Extract() + token, err := tokens.Get(context.TODO(), &client, "abcdef12345").Extract() if err != nil { t.Errorf("Info returned an error: %v", err) } @@ -604,7 +605,7 @@ func TestValidateRequestSuccessful(t *testing.T) { defer testhelper.TeardownHTTP() client := prepareAuthTokenHandler(t, "HEAD", http.StatusNoContent) - ok, err := tokens.Validate(&client, "abcdef12345") + ok, err := tokens.Validate(context.TODO(), &client, "abcdef12345") if err != nil { t.Errorf("Unexpected error from Validate: %v", err) } @@ -619,7 +620,7 @@ func TestValidateRequestFailure(t *testing.T) { defer testhelper.TeardownHTTP() client := prepareAuthTokenHandler(t, "HEAD", http.StatusNotFound) - ok, err := tokens.Validate(&client, "abcdef12345") + ok, err := tokens.Validate(context.TODO(), &client, "abcdef12345") if err != nil { t.Errorf("Unexpected error from Validate: %v", err) } @@ -634,7 +635,7 @@ func TestValidateRequestError(t *testing.T) { defer testhelper.TeardownHTTP() client := prepareAuthTokenHandler(t, "HEAD", http.StatusMethodNotAllowed) - _, err := tokens.Validate(&client, "abcdef12345") + _, err := tokens.Validate(context.TODO(), &client, "abcdef12345") if err == nil { t.Errorf("Missing expected error from Validate") } @@ -645,7 +646,7 @@ func TestRevokeRequestSuccessful(t *testing.T) { defer testhelper.TeardownHTTP() client := prepareAuthTokenHandler(t, "DELETE", http.StatusNoContent) - res := tokens.Revoke(&client, "abcdef12345") + res := tokens.Revoke(context.TODO(), &client, "abcdef12345") testhelper.AssertNoErr(t, res.Err) } @@ -654,7 +655,7 @@ func TestRevokeRequestError(t *testing.T) { defer testhelper.TeardownHTTP() client := prepareAuthTokenHandler(t, "DELETE", http.StatusNotFound) - res := tokens.Revoke(&client, "abcdef12345") + res := tokens.Revoke(context.TODO(), &client, "abcdef12345") if res.Err == nil { t.Errorf("Missing expected error from Revoke") } @@ -675,6 +676,6 @@ func TestNoTokenInResponse(t *testing.T) { }) options := tokens.AuthOptions{UserID: "me", Password: "squirrel!"} - _, err := tokens.Create(&client, &options).Extract() + _, err := tokens.Create(context.TODO(), &client, &options).Extract() testhelper.AssertNoErr(t, err) } diff --git a/openstack/identity/v3/users/requests.go b/openstack/identity/v3/users/requests.go index 644faab82f..0987c6f92a 100644 --- a/openstack/identity/v3/users/requests.go +++ b/openstack/identity/v3/users/requests.go @@ -1,6 +1,7 @@ package users import ( + "context" "net/url" "strings" @@ -93,8 +94,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get retrieves details on a single user, by ID. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -151,13 +152,13 @@ func (opts CreateOpts) ToUserCreateMap() (map[string]interface{}, error) { } // Create creates a new User. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToUserCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -216,13 +217,13 @@ func (opts UpdateOpts) ToUserUpdateMap() (map[string]interface{}, error) { } // Update updates an existing User. -func Update(client *gophercloud.ServiceClient, userID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, userID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToUserUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Patch(updateURL(client, userID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, userID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -255,14 +256,14 @@ func (opts ChangePasswordOpts) ToUserChangePasswordMap() (map[string]interface{} } // ChangePassword changes password for a user. -func ChangePassword(client *gophercloud.ServiceClient, userID string, opts ChangePasswordOptsBuilder) (r ChangePasswordResult) { +func ChangePassword(ctx context.Context, client *gophercloud.ServiceClient, userID string, opts ChangePasswordOptsBuilder) (r ChangePasswordResult) { b, err := opts.ToUserChangePasswordMap() if err != nil { r.Err = err return } - resp, err := client.Post(changePasswordURL(client, userID), &b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, changePasswordURL(client, userID), &b, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -270,8 +271,8 @@ func ChangePassword(client *gophercloud.ServiceClient, userID string, opts Chang } // Delete deletes a user. -func Delete(client *gophercloud.ServiceClient, userID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, userID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, userID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, userID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -285,9 +286,9 @@ func ListGroups(client *gophercloud.ServiceClient, userID string) pagination.Pag } // AddToGroup adds a user to a group. -func AddToGroup(client *gophercloud.ServiceClient, groupID, userID string) (r AddToGroupResult) { +func AddToGroup(ctx context.Context, client *gophercloud.ServiceClient, groupID, userID string) (r AddToGroupResult) { url := addToGroupURL(client, groupID, userID) - resp, err := client.Put(url, nil, nil, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, url, nil, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -295,9 +296,9 @@ func AddToGroup(client *gophercloud.ServiceClient, groupID, userID string) (r Ad } // IsMemberOfGroup checks whether a user belongs to a group. -func IsMemberOfGroup(client *gophercloud.ServiceClient, groupID, userID string) (r IsMemberOfGroupResult) { +func IsMemberOfGroup(ctx context.Context, client *gophercloud.ServiceClient, groupID, userID string) (r IsMemberOfGroupResult) { url := isMemberOfGroupURL(client, groupID, userID) - resp, err := client.Head(url, &gophercloud.RequestOpts{ + resp, err := client.Head(ctx, url, &gophercloud.RequestOpts{ OkCodes: []int{204, 404}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -310,9 +311,9 @@ func IsMemberOfGroup(client *gophercloud.ServiceClient, groupID, userID string) } // RemoveFromGroup removes a user from a group. -func RemoveFromGroup(client *gophercloud.ServiceClient, groupID, userID string) (r RemoveFromGroupResult) { +func RemoveFromGroup(ctx context.Context, client *gophercloud.ServiceClient, groupID, userID string) (r RemoveFromGroupResult) { url := removeFromGroupURL(client, groupID, userID) - resp, err := client.Delete(url, &gophercloud.RequestOpts{ + resp, err := client.Delete(ctx, url, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/identity/v3/users/testing/requests_test.go b/openstack/identity/v3/users/testing/requests_test.go index 20f568f66a..c3abfe9f49 100644 --- a/openstack/identity/v3/users/testing/requests_test.go +++ b/openstack/identity/v3/users/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/identity/v3/groups" @@ -17,7 +18,7 @@ func TestListUsers(t *testing.T) { HandleListUsersSuccessfully(t) count := 0 - err := users.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := users.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := users.ExtractUsers(page) @@ -36,7 +37,7 @@ func TestListUsersAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListUsersSuccessfully(t) - allPages, err := users.List(client.ServiceClient(), nil).AllPages() + allPages, err := users.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := users.ExtractUsers(allPages) th.AssertNoErr(t, err) @@ -82,7 +83,7 @@ func TestGetUser(t *testing.T) { defer th.TeardownHTTP() HandleGetUserSuccessfully(t) - actual, err := users.Get(client.ServiceClient(), "9fe1d3").Extract() + actual, err := users.Get(context.TODO(), client.ServiceClient(), "9fe1d3").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondUser, *actual) th.AssertEquals(t, SecondUser.Extra["email"], "jsmith@example.com") @@ -112,7 +113,7 @@ func TestCreateUser(t *testing.T) { }, } - actual, err := users.Create(client.ServiceClient(), createOpts).Extract() + actual, err := users.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondUser, *actual) } @@ -134,7 +135,7 @@ func TestCreateNoOptionsUser(t *testing.T) { }, } - actual, err := users.Create(client.ServiceClient(), createOpts).Extract() + actual, err := users.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondUserNoOptions, *actual) } @@ -155,7 +156,7 @@ func TestUpdateUser(t *testing.T) { }, } - actual, err := users.Update(client.ServiceClient(), "9fe1d3", updateOpts).Extract() + actual, err := users.Update(context.TODO(), client.ServiceClient(), "9fe1d3", updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, SecondUserUpdated, *actual) } @@ -170,7 +171,7 @@ func TestChangeUserPassword(t *testing.T) { Password: "new_secretsecret", } - res := users.ChangePassword(client.ServiceClient(), "9fe1d3", changePasswordOpts) + res := users.ChangePassword(context.TODO(), client.ServiceClient(), "9fe1d3", changePasswordOpts) th.AssertNoErr(t, res.Err) } @@ -179,7 +180,7 @@ func TestDeleteUser(t *testing.T) { defer th.TeardownHTTP() HandleDeleteUserSuccessfully(t) - res := users.Delete(client.ServiceClient(), "9fe1d3") + res := users.Delete(context.TODO(), client.ServiceClient(), "9fe1d3") th.AssertNoErr(t, res.Err) } @@ -187,7 +188,7 @@ func TestListUserGroups(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandleListUserGroupsSuccessfully(t) - allPages, err := users.ListGroups(client.ServiceClient(), "9fe1d3").AllPages() + allPages, err := users.ListGroups(client.ServiceClient(), "9fe1d3").AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := groups.ExtractGroups(allPages) th.AssertNoErr(t, err) @@ -198,7 +199,7 @@ func TestAddToGroup(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandleAddToGroupSuccessfully(t) - res := users.AddToGroup(client.ServiceClient(), "ea167b", "9fe1d3") + res := users.AddToGroup(context.TODO(), client.ServiceClient(), "ea167b", "9fe1d3") th.AssertNoErr(t, res.Err) } @@ -206,7 +207,7 @@ func TestIsMemberOfGroup(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandleIsMemberOfGroupSuccessfully(t) - ok, err := users.IsMemberOfGroup(client.ServiceClient(), "ea167b", "9fe1d3").Extract() + ok, err := users.IsMemberOfGroup(context.TODO(), client.ServiceClient(), "ea167b", "9fe1d3").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, true, ok) } @@ -215,7 +216,7 @@ func TestRemoveFromGroup(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandleRemoveFromGroupSuccessfully(t) - res := users.RemoveFromGroup(client.ServiceClient(), "ea167b", "9fe1d3") + res := users.RemoveFromGroup(context.TODO(), client.ServiceClient(), "ea167b", "9fe1d3") th.AssertNoErr(t, res.Err) } @@ -223,7 +224,7 @@ func TestListUserProjects(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandleListUserProjectsSuccessfully(t) - allPages, err := users.ListProjects(client.ServiceClient(), "9fe1d3").AllPages() + allPages, err := users.ListProjects(client.ServiceClient(), "9fe1d3").AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := projects.ExtractProjects(allPages) th.AssertNoErr(t, err) @@ -240,7 +241,7 @@ func TestListInGroup(t *testing.T) { Enabled: &iTrue, } - allPages, err := users.ListInGroup(client.ServiceClient(), "ea167b", listOpts).AllPages() + allPages, err := users.ListInGroup(client.ServiceClient(), "ea167b", listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := users.ExtractUsers(allPages) th.AssertNoErr(t, err) diff --git a/openstack/imageservice/v2/imagedata/requests.go b/openstack/imageservice/v2/imagedata/requests.go index 48992e1a70..1e56bc2264 100644 --- a/openstack/imageservice/v2/imagedata/requests.go +++ b/openstack/imageservice/v2/imagedata/requests.go @@ -1,14 +1,15 @@ package imagedata import ( + "context" "io" "github.com/gophercloud/gophercloud/v2" ) // Upload uploads an image file. -func Upload(client *gophercloud.ServiceClient, id string, data io.Reader) (r UploadResult) { - resp, err := client.Put(uploadURL(client, id), data, nil, &gophercloud.RequestOpts{ +func Upload(ctx context.Context, client *gophercloud.ServiceClient, id string, data io.Reader) (r UploadResult) { + resp, err := client.Put(ctx, uploadURL(client, id), data, nil, &gophercloud.RequestOpts{ MoreHeaders: map[string]string{"Content-Type": "application/octet-stream"}, OkCodes: []int{204}, }) @@ -19,8 +20,8 @@ func Upload(client *gophercloud.ServiceClient, id string, data io.Reader) (r Upl // Stage performs PUT call on the existing image object in the Imageservice with // the provided file. // Existing image object must be in the "queued" status. -func Stage(client *gophercloud.ServiceClient, id string, data io.Reader) (r StageResult) { - resp, err := client.Put(stageURL(client, id), data, nil, &gophercloud.RequestOpts{ +func Stage(ctx context.Context, client *gophercloud.ServiceClient, id string, data io.Reader) (r StageResult) { + resp, err := client.Put(ctx, stageURL(client, id), data, nil, &gophercloud.RequestOpts{ MoreHeaders: map[string]string{"Content-Type": "application/octet-stream"}, OkCodes: []int{204}, }) @@ -29,8 +30,8 @@ func Stage(client *gophercloud.ServiceClient, id string, data io.Reader) (r Stag } // Download retrieves an image. -func Download(client *gophercloud.ServiceClient, id string) (r DownloadResult) { - resp, err := client.Get(downloadURL(client, id), nil, &gophercloud.RequestOpts{ +func Download(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DownloadResult) { + resp, err := client.Get(ctx, downloadURL(client, id), nil, &gophercloud.RequestOpts{ KeepResponseBody: true, }) r.Body, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/imageservice/v2/imagedata/testing/requests_test.go b/openstack/imageservice/v2/imagedata/testing/requests_test.go index 03f199906e..a36d0a929c 100644 --- a/openstack/imageservice/v2/imagedata/testing/requests_test.go +++ b/openstack/imageservice/v2/imagedata/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "io" "testing" @@ -17,6 +18,7 @@ func TestUpload(t *testing.T) { HandlePutImageDataSuccessfully(t) err := imagedata.Upload( + context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", readSeekerOfBytes([]byte{5, 3, 7, 24})).ExtractErr() @@ -31,6 +33,7 @@ func TestStage(t *testing.T) { HandleStageImageDataSuccessfully(t) err := imagedata.Stage( + context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", readSeekerOfBytes([]byte{5, 3, 7, 24})).ExtractErr() @@ -90,7 +93,7 @@ func TestDownload(t *testing.T) { HandleGetImageDataSuccessfully(t) - rdr, err := imagedata.Download(fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea").Extract() + rdr, err := imagedata.Download(context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea").Extract() th.AssertNoErr(t, err) defer rdr.Close() diff --git a/openstack/imageservice/v2/imageimport/requests.go b/openstack/imageservice/v2/imageimport/requests.go index 4468b06ff8..d78376bafe 100644 --- a/openstack/imageservice/v2/imageimport/requests.go +++ b/openstack/imageservice/v2/imageimport/requests.go @@ -1,6 +1,10 @@ package imageimport -import "github.com/gophercloud/gophercloud/v2" +import ( + "context" + + "github.com/gophercloud/gophercloud/v2" +) // ImportMethod represents valid Import API method. type ImportMethod string @@ -14,8 +18,8 @@ const ( ) // Get retrieves Import API information data. -func Get(c *gophercloud.ServiceClient) (r GetResult) { - resp, err := c.Get(infoURL(c), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient) (r GetResult) { + resp, err := c.Get(ctx, infoURL(c), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -41,13 +45,13 @@ func (opts CreateOpts) ToImportCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new image import on the server. -func Create(client *gophercloud.ServiceClient, imageID string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, imageID string, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToImportCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(importURL(client, imageID), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, importURL(client, imageID), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/imageservice/v2/imageimport/testing/requests_test.go b/openstack/imageservice/v2/imageimport/testing/requests_test.go index 1e1d2660a3..3de8cc8054 100644 --- a/openstack/imageservice/v2/imageimport/testing/requests_test.go +++ b/openstack/imageservice/v2/imageimport/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -29,7 +30,7 @@ func TestGet(t *testing.T) { string(imageimport.WebDownloadMethod), } - s, err := imageimport.Get(fakeclient.ServiceClient()).Extract() + s, err := imageimport.Get(context.TODO(), fakeclient.ServiceClient()).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.ImportMethods.Description, "Import methods available.") @@ -55,6 +56,6 @@ func TestCreate(t *testing.T) { Name: imageimport.WebDownloadMethod, URI: "http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img", } - err := imageimport.Create(fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", opts).ExtractErr() + err := imageimport.Create(context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", opts).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/imageservice/v2/images/requests.go b/openstack/imageservice/v2/images/requests.go index 21348a1918..9c52569286 100644 --- a/openstack/imageservice/v2/images/requests.go +++ b/openstack/imageservice/v2/images/requests.go @@ -1,6 +1,7 @@ package images import ( + "context" "fmt" "net/url" "time" @@ -206,39 +207,39 @@ func (opts CreateOpts) ToImageCreateMap() (map[string]interface{}, error) { } // Create implements create image request. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToImageCreateMap() if err != nil { r.Err = err return r } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{201}}) + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{201}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete implements image delete request. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get implements image get request. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Update implements image updated request. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToImageUpdateMap() if err != nil { r.Err = err return r } - resp, err := client.Patch(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, MoreHeaders: map[string]string{"Content-Type": "application/openstack-images-v2.1-json-patch"}, }) diff --git a/openstack/imageservice/v2/images/testing/requests_test.go b/openstack/imageservice/v2/images/testing/requests_test.go index a4c70d47c4..a4aaf0a9ef 100644 --- a/openstack/imageservice/v2/images/testing/requests_test.go +++ b/openstack/imageservice/v2/images/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -21,7 +22,7 @@ func TestListImage(t *testing.T) { pager := images.List(fakeclient.ServiceClient(), images.ListOpts{Limit: 1}) t.Logf("Pager state %v", pager) count, pages := 0, 0 - err := pager.EachPage(func(page pagination.Page) (bool, error) { + err := pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ t.Logf("Page %v", page) images, err := images.ExtractImages(page) @@ -49,7 +50,7 @@ func TestAllPagesImage(t *testing.T) { HandleImageListSuccessfully(t) - pages, err := images.List(fakeclient.ServiceClient(), nil).AllPages() + pages, err := images.List(fakeclient.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) images, err := images.ExtractImages(pages) th.AssertNoErr(t, err) @@ -65,7 +66,7 @@ func TestCreateImage(t *testing.T) { id := "e7db3b45-8db7-47ad-8109-3fb55c2c24fd" name := "Ubuntu 12.10" - actualImage, err := images.Create(fakeclient.ServiceClient(), images.CreateOpts{ + actualImage, err := images.Create(context.TODO(), fakeclient.ServiceClient(), images.CreateOpts{ ID: id, Name: name, Properties: map[string]string{ @@ -126,7 +127,7 @@ func TestCreateImageNulls(t *testing.T) { id := "e7db3b45-8db7-47ad-8109-3fb55c2c24fd" name := "Ubuntu 12.10" - actualImage, err := images.Create(fakeclient.ServiceClient(), images.CreateOpts{ + actualImage, err := images.Create(context.TODO(), fakeclient.ServiceClient(), images.CreateOpts{ ID: id, Name: name, Tags: []string{"ubuntu", "quantal"}, @@ -192,7 +193,7 @@ func TestGetImage(t *testing.T) { HandleImageGetSuccessfully(t) - actualImage, err := images.Get(fakeclient.ServiceClient(), "1bea47ed-f6a9-463b-b423-14b9cca9ad27").Extract() + actualImage, err := images.Get(context.TODO(), fakeclient.ServiceClient(), "1bea47ed-f6a9-463b-b423-14b9cca9ad27").Extract() th.AssertNoErr(t, err) @@ -250,7 +251,7 @@ func TestDeleteImage(t *testing.T) { HandleImageDeleteSuccessfully(t) - result := images.Delete(fakeclient.ServiceClient(), "1bea47ed-f6a9-463b-b423-14b9cca9ad27") + result := images.Delete(context.TODO(), fakeclient.ServiceClient(), "1bea47ed-f6a9-463b-b423-14b9cca9ad27") th.AssertNoErr(t, result.Err) } @@ -260,7 +261,7 @@ func TestUpdateImage(t *testing.T) { HandleImageUpdateSuccessfully(t) - actualImage, err := images.Update(fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", images.UpdateOpts{ + actualImage, err := images.Update(context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", images.UpdateOpts{ images.ReplaceImageName{NewName: "Fedora 17"}, images.ReplaceImageTags{NewTags: []string{"fedora", "beefy"}}, images.ReplaceImageMinDisk{NewMinDisk: 21}, @@ -355,7 +356,7 @@ func TestImageListByTags(t *testing.T) { th.AssertNoErr(t, err) th.AssertEquals(t, expectedQueryString, actualQueryString) - pages, err := images.List(fakeclient.ServiceClient(), listOpts).AllPages() + pages, err := images.List(fakeclient.ServiceClient(), listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) allImages, err := images.ExtractImages(pages) th.AssertNoErr(t, err) @@ -414,7 +415,7 @@ func TestUpdateImageProperties(t *testing.T) { HandleImageUpdatePropertiesSuccessfully(t) - actualImage, err := images.Update(fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", images.UpdateOpts{ + actualImage, err := images.Update(context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", images.UpdateOpts{ images.UpdateImageProperty{ Op: images.AddOp, Name: "hw_disk_bus", diff --git a/openstack/imageservice/v2/members/requests.go b/openstack/imageservice/v2/members/requests.go index d202dafe89..12717e6a8f 100644 --- a/openstack/imageservice/v2/members/requests.go +++ b/openstack/imageservice/v2/members/requests.go @@ -1,6 +1,8 @@ package members import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -23,9 +25,9 @@ pending through API calls. More details here: http://developer.openstack.org/api-ref-image-v2.html#createImageMember-v2 */ -func Create(client *gophercloud.ServiceClient, id string, member string) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, id string, member string) (r CreateResult) { b := map[string]interface{}{"member": member} - resp, err := client.Post(createMemberURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createMemberURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -40,15 +42,15 @@ func List(client *gophercloud.ServiceClient, id string) pagination.Pager { } // Get image member details. -func Get(client *gophercloud.ServiceClient, imageID string, memberID string) (r DetailsResult) { - resp, err := client.Get(getMemberURL(client, imageID, memberID), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) +func Get(ctx context.Context, client *gophercloud.ServiceClient, imageID string, memberID string) (r DetailsResult) { + resp, err := client.Get(ctx, getMemberURL(client, imageID, memberID), &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete membership for given image. Callee should be image owner. -func Delete(client *gophercloud.ServiceClient, imageID string, memberID string) (r DeleteResult) { - resp, err := client.Delete(deleteMemberURL(client, imageID, memberID), &gophercloud.RequestOpts{OkCodes: []int{204}}) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, imageID string, memberID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteMemberURL(client, imageID, memberID), &gophercloud.RequestOpts{OkCodes: []int{204}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -72,13 +74,13 @@ func (opts UpdateOpts) ToImageMemberUpdateMap() (map[string]interface{}, error) } // Update function updates member. -func Update(client *gophercloud.ServiceClient, imageID string, memberID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, imageID string, memberID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToImageMemberUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateMemberURL(client, imageID, memberID), b, &r.Body, + resp, err := client.Put(ctx, updateMemberURL(client, imageID, memberID), b, &r.Body, &gophercloud.RequestOpts{OkCodes: []int{200}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return diff --git a/openstack/imageservice/v2/members/testing/requests_test.go b/openstack/imageservice/v2/members/testing/requests_test.go index e84a732306..04717bfeea 100644 --- a/openstack/imageservice/v2/members/testing/requests_test.go +++ b/openstack/imageservice/v2/members/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -18,7 +19,7 @@ func TestCreateMemberSuccessfully(t *testing.T) { defer th.TeardownHTTP() HandleCreateImageMemberSuccessfully(t) - im, err := members.Create(fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", + im, err := members.Create(context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", "8989447062e04a818baf9e073fd04fa7").Extract() th.AssertNoErr(t, err) @@ -48,7 +49,7 @@ func TestMemberListSuccessfully(t *testing.T) { pager := members.List(fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea") t.Logf("Pager state %v", pager) count, pages := 0, 0 - err := pager.EachPage(func(page pagination.Page) (bool, error) { + err := pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ t.Logf("Page %v", page) members, err := members.ExtractMembers(page) @@ -78,7 +79,7 @@ func TestMemberListEmpty(t *testing.T) { pager := members.List(fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea") t.Logf("Pager state %v", pager) count, pages := 0, 0 - err := pager.EachPage(func(page pagination.Page) (bool, error) { + err := pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ t.Logf("Page %v", page) members, err := members.ExtractMembers(page) @@ -104,7 +105,7 @@ func TestShowMemberDetails(t *testing.T) { defer th.TeardownHTTP() HandleImageMemberDetails(t) - md, err := members.Get(fakeclient.ServiceClient(), + md, err := members.Get(context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", "8989447062e04a818baf9e073fd04fa7").Extract() @@ -135,7 +136,7 @@ func TestDeleteMember(t *testing.T) { counter := HandleImageMemberDeleteSuccessfully(t) - result := members.Delete(fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", + result := members.Delete(context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", "8989447062e04a818baf9e073fd04fa7") th.AssertEquals(t, 1, counter.Counter) th.AssertNoErr(t, result.Err) @@ -146,7 +147,7 @@ func TestMemberUpdateSuccessfully(t *testing.T) { defer th.TeardownHTTP() counter := HandleImageMemberUpdate(t) - im, err := members.Update(fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", + im, err := members.Update(context.TODO(), fakeclient.ServiceClient(), "da3b75d9-3f4a-40e7-8a2c-bfab23927dea", "8989447062e04a818baf9e073fd04fa7", members.UpdateOpts{ Status: "accepted", diff --git a/openstack/imageservice/v2/tasks/requests.go b/openstack/imageservice/v2/tasks/requests.go index ebeb10d0f6..fa6972b529 100644 --- a/openstack/imageservice/v2/tasks/requests.go +++ b/openstack/imageservice/v2/tasks/requests.go @@ -1,6 +1,8 @@ package tasks import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -89,8 +91,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a specific Imageservice task based on its ID. -func Get(c *gophercloud.ServiceClient, taskID string) (r GetResult) { - resp, err := c.Get(getURL(c, taskID), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, taskID string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, taskID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -116,13 +118,13 @@ func (opts CreateOpts) ToTaskCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new Imageservice task on the server. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToTaskCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/imageservice/v2/tasks/testing/requests_test.go b/openstack/imageservice/v2/tasks/testing/requests_test.go index 95c29c1242..e6c8781d61 100644 --- a/openstack/imageservice/v2/tasks/testing/requests_test.go +++ b/openstack/imageservice/v2/tasks/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -28,7 +29,7 @@ func TestList(t *testing.T) { count := 0 - tasks.List(fakeclient.ServiceClient(), tasks.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + tasks.List(fakeclient.ServiceClient(), tasks.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := tasks.ExtractTasks(page) if err != nil { @@ -65,7 +66,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, TasksGetResult) }) - s, err := tasks.Get(fakeclient.ServiceClient(), "1252f636-1246-4319-bfba-c47cde0efbe0").Extract() + s, err := tasks.Get(context.TODO(), fakeclient.ServiceClient(), "1252f636-1246-4319-bfba-c47cde0efbe0").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Status, string(tasks.TaskStatusPending)) @@ -114,7 +115,7 @@ func TestCreate(t *testing.T) { "import_from": "https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img", }, } - s, err := tasks.Create(fakeclient.ServiceClient(), opts).Extract() + s, err := tasks.Create(context.TODO(), fakeclient.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Status, string(tasks.TaskStatusPending)) diff --git a/openstack/keymanager/v1/acls/requests.go b/openstack/keymanager/v1/acls/requests.go index 82a682a475..62899d4b22 100644 --- a/openstack/keymanager/v1/acls/requests.go +++ b/openstack/keymanager/v1/acls/requests.go @@ -1,19 +1,21 @@ package acls import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // GetContainerACL retrieves the ACL of a container. -func GetContainerACL(client *gophercloud.ServiceClient, containerID string) (r ACLResult) { - resp, err := client.Get(containerURL(client, containerID), &r.Body, nil) +func GetContainerACL(ctx context.Context, client *gophercloud.ServiceClient, containerID string) (r ACLResult) { + resp, err := client.Get(ctx, containerURL(client, containerID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetSecretACL retrieves the ACL of a secret. -func GetSecretACL(client *gophercloud.ServiceClient, secretID string) (r ACLResult) { - resp, err := client.Get(secretURL(client, secretID), &r.Body, nil) +func GetSecretACL(ctx context.Context, client *gophercloud.ServiceClient, secretID string) (r ACLResult) { + resp, err := client.Get(ctx, secretURL(client, secretID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -53,14 +55,14 @@ func (opts SetOpts) ToACLSetMap() (map[string]interface{}, error) { } // SetContainerACL will set an ACL on a container. -func SetContainerACL(client *gophercloud.ServiceClient, containerID string, opts SetOptsBuilder) (r ACLRefResult) { +func SetContainerACL(ctx context.Context, client *gophercloud.ServiceClient, containerID string, opts SetOptsBuilder) (r ACLRefResult) { b, err := opts.ToACLSetMap() if err != nil { r.Err = err return } - resp, err := client.Put(containerURL(client, containerID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, containerURL(client, containerID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -68,14 +70,14 @@ func SetContainerACL(client *gophercloud.ServiceClient, containerID string, opts } // SetSecretACL will set an ACL on a secret. -func SetSecretACL(client *gophercloud.ServiceClient, secretID string, opts SetOptsBuilder) (r ACLRefResult) { +func SetSecretACL(ctx context.Context, client *gophercloud.ServiceClient, secretID string, opts SetOptsBuilder) (r ACLRefResult) { b, err := opts.ToACLSetMap() if err != nil { r.Err = err return } - resp, err := client.Put(secretURL(client, secretID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, secretURL(client, secretID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -83,14 +85,14 @@ func SetSecretACL(client *gophercloud.ServiceClient, secretID string, opts SetOp } // UpdateContainerACL will update an ACL on a container. -func UpdateContainerACL(client *gophercloud.ServiceClient, containerID string, opts SetOptsBuilder) (r ACLRefResult) { +func UpdateContainerACL(ctx context.Context, client *gophercloud.ServiceClient, containerID string, opts SetOptsBuilder) (r ACLRefResult) { b, err := opts.ToACLSetMap() if err != nil { r.Err = err return } - resp, err := client.Patch(containerURL(client, containerID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, containerURL(client, containerID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -98,14 +100,14 @@ func UpdateContainerACL(client *gophercloud.ServiceClient, containerID string, o } // UpdateSecretACL will update an ACL on a secret. -func UpdateSecretACL(client *gophercloud.ServiceClient, secretID string, opts SetOptsBuilder) (r ACLRefResult) { +func UpdateSecretACL(ctx context.Context, client *gophercloud.ServiceClient, secretID string, opts SetOptsBuilder) (r ACLRefResult) { b, err := opts.ToACLSetMap() if err != nil { r.Err = err return } - resp, err := client.Patch(secretURL(client, secretID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, secretURL(client, secretID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -113,8 +115,8 @@ func UpdateSecretACL(client *gophercloud.ServiceClient, secretID string, opts Se } // DeleteContainerACL will delete an ACL from a conatiner. -func DeleteContainerACL(client *gophercloud.ServiceClient, containerID string) (r DeleteResult) { - resp, err := client.Delete(containerURL(client, containerID), &gophercloud.RequestOpts{ +func DeleteContainerACL(ctx context.Context, client *gophercloud.ServiceClient, containerID string) (r DeleteResult) { + resp, err := client.Delete(ctx, containerURL(client, containerID), &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -122,8 +124,8 @@ func DeleteContainerACL(client *gophercloud.ServiceClient, containerID string) ( } // DeleteSecretACL will delete an ACL from a secret. -func DeleteSecretACL(client *gophercloud.ServiceClient, secretID string) (r DeleteResult) { - resp, err := client.Delete(secretURL(client, secretID), &gophercloud.RequestOpts{ +func DeleteSecretACL(ctx context.Context, client *gophercloud.ServiceClient, secretID string) (r DeleteResult) { + resp, err := client.Delete(ctx, secretURL(client, secretID), &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/keymanager/v1/acls/testing/requests_test.go b/openstack/keymanager/v1/acls/testing/requests_test.go index f7b46e0c81..3367381520 100644 --- a/openstack/keymanager/v1/acls/testing/requests_test.go +++ b/openstack/keymanager/v1/acls/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/keymanager/v1/acls" @@ -13,7 +14,7 @@ func TestGetSecretACL(t *testing.T) { defer th.TeardownHTTP() HandleGetSecretACLSuccessfully(t) - actual, err := acls.GetSecretACL(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c").Extract() + actual, err := acls.GetSecretACL(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedACL, *actual) } @@ -23,7 +24,7 @@ func TestGetContainerACL(t *testing.T) { defer th.TeardownHTTP() HandleGetContainerACLSuccessfully(t) - actual, err := acls.GetContainerACL(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c").Extract() + actual, err := acls.GetContainerACL(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedACL, *actual) } @@ -43,7 +44,7 @@ func TestSetSecretACL(t *testing.T) { }, } - actual, err := acls.SetSecretACL(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", setOpts).Extract() + actual, err := acls.SetSecretACL(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", setOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedSecretACLRef, *actual) } @@ -63,7 +64,7 @@ func TestSetContainerACL(t *testing.T) { }, } - actual, err := acls.SetContainerACL(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", setOpts).Extract() + actual, err := acls.SetContainerACL(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", setOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedContainerACLRef, *actual) } @@ -73,7 +74,7 @@ func TestDeleteSecretACL(t *testing.T) { defer th.TeardownHTTP() HandleDeleteSecretACLSuccessfully(t) - res := acls.DeleteSecretACL(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c") + res := acls.DeleteSecretACL(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c") th.AssertNoErr(t, res.Err) } @@ -82,7 +83,7 @@ func TestDeleteContainerACL(t *testing.T) { defer th.TeardownHTTP() HandleDeleteContainerACLSuccessfully(t) - res := acls.DeleteContainerACL(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c") + res := acls.DeleteContainerACL(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c") th.AssertNoErr(t, res.Err) } @@ -99,7 +100,7 @@ func TestUpdateSecretACL(t *testing.T) { }, } - actual, err := acls.UpdateSecretACL(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", updateOpts).Extract() + actual, err := acls.UpdateSecretACL(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedSecretACLRef, *actual) } @@ -117,7 +118,7 @@ func TestUpdateContainerACL(t *testing.T) { }, } - actual, err := acls.UpdateContainerACL(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", updateOpts).Extract() + actual, err := acls.UpdateContainerACL(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedContainerACLRef, *actual) } diff --git a/openstack/keymanager/v1/containers/requests.go b/openstack/keymanager/v1/containers/requests.go index 48bdfad5a9..cfab2e7ea5 100644 --- a/openstack/keymanager/v1/containers/requests.go +++ b/openstack/keymanager/v1/containers/requests.go @@ -1,6 +1,8 @@ package containers import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -54,8 +56,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get retrieves details of a container. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -84,13 +86,13 @@ func (opts CreateOpts) ToContainerCreateMap() (map[string]interface{}, error) { } // Create creates a new container. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToContainerCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -98,8 +100,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete deletes a container. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -163,13 +165,13 @@ func (opts CreateConsumerOpts) ToContainerConsumerCreateMap() (map[string]interf } // CreateConsumer creates a new consumer. -func CreateConsumer(client *gophercloud.ServiceClient, containerID string, opts CreateConsumerOptsBuilder) (r CreateConsumerResult) { +func CreateConsumer(ctx context.Context, client *gophercloud.ServiceClient, containerID string, opts CreateConsumerOptsBuilder) (r CreateConsumerResult) { b, err := opts.ToContainerConsumerCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createConsumerURL(client, containerID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createConsumerURL(client, containerID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -198,7 +200,7 @@ func (opts DeleteConsumerOpts) ToContainerConsumerDeleteMap() (map[string]interf } // DeleteConsumer deletes a consumer. -func DeleteConsumer(client *gophercloud.ServiceClient, containerID string, opts DeleteConsumerOptsBuilder) (r DeleteConsumerResult) { +func DeleteConsumer(ctx context.Context, client *gophercloud.ServiceClient, containerID string, opts DeleteConsumerOptsBuilder) (r DeleteConsumerResult) { url := deleteConsumerURL(client, containerID) b, err := opts.ToContainerConsumerDeleteMap() @@ -207,7 +209,7 @@ func DeleteConsumer(client *gophercloud.ServiceClient, containerID string, opts return } - resp, err := client.Request("DELETE", url, &gophercloud.RequestOpts{ + resp, err := client.Request(ctx, "DELETE", url, &gophercloud.RequestOpts{ JSONBody: b, JSONResponse: &r.Body, OkCodes: []int{200}, @@ -229,13 +231,13 @@ func (opts SecretRef) ToContainerSecretRefMap() (map[string]interface{}, error) } // CreateSecret creates a new consumer. -func CreateSecretRef(client *gophercloud.ServiceClient, containerID string, opts SecretRefBuilder) (r CreateSecretRefResult) { +func CreateSecretRef(ctx context.Context, client *gophercloud.ServiceClient, containerID string, opts SecretRefBuilder) (r CreateSecretRefResult) { b, err := opts.ToContainerSecretRefMap() if err != nil { r.Err = err return } - resp, err := client.Post(createSecretRefURL(client, containerID), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createSecretRefURL(client, containerID), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -243,7 +245,7 @@ func CreateSecretRef(client *gophercloud.ServiceClient, containerID string, opts } // DeleteSecret deletes a consumer. -func DeleteSecretRef(client *gophercloud.ServiceClient, containerID string, opts SecretRefBuilder) (r DeleteSecretRefResult) { +func DeleteSecretRef(ctx context.Context, client *gophercloud.ServiceClient, containerID string, opts SecretRefBuilder) (r DeleteSecretRefResult) { url := deleteSecretRefURL(client, containerID) b, err := opts.ToContainerSecretRefMap() @@ -252,7 +254,7 @@ func DeleteSecretRef(client *gophercloud.ServiceClient, containerID string, opts return } - resp, err := client.Request("DELETE", url, &gophercloud.RequestOpts{ + resp, err := client.Request(ctx, "DELETE", url, &gophercloud.RequestOpts{ JSONBody: b, OkCodes: []int{204}, }) diff --git a/openstack/keymanager/v1/containers/testing/requests_test.go b/openstack/keymanager/v1/containers/testing/requests_test.go index e46f2e9691..44ed27b217 100644 --- a/openstack/keymanager/v1/containers/testing/requests_test.go +++ b/openstack/keymanager/v1/containers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/keymanager/v1/containers" @@ -15,7 +16,7 @@ func TestListContainers(t *testing.T) { HandleListContainersSuccessfully(t) count := 0 - err := containers.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := containers.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := containers.ExtractContainers(page) @@ -34,7 +35,7 @@ func TestListContainersAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListContainersSuccessfully(t) - allPages, err := containers.List(client.ServiceClient(), nil).AllPages() + allPages, err := containers.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := containers.ExtractContainers(allPages) th.AssertNoErr(t, err) @@ -46,7 +47,7 @@ func TestGetContainer(t *testing.T) { defer th.TeardownHTTP() HandleGetContainerSuccessfully(t) - actual, err := containers.Get(client.ServiceClient(), "dfdb88f3-4ddb-4525-9da6-066453caa9b0").Extract() + actual, err := containers.Get(context.TODO(), client.ServiceClient(), "dfdb88f3-4ddb-4525-9da6-066453caa9b0").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, FirstContainer, *actual) } @@ -67,7 +68,7 @@ func TestCreateContainer(t *testing.T) { }, } - actual, err := containers.Create(client.ServiceClient(), createOpts).Extract() + actual, err := containers.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, FirstContainer, *actual) } @@ -77,7 +78,7 @@ func TestDeleteContainer(t *testing.T) { defer th.TeardownHTTP() HandleDeleteContainerSuccessfully(t) - res := containers.Delete(client.ServiceClient(), "dfdb88f3-4ddb-4525-9da6-066453caa9b0") + res := containers.Delete(context.TODO(), client.ServiceClient(), "dfdb88f3-4ddb-4525-9da6-066453caa9b0") th.AssertNoErr(t, res.Err) } @@ -87,7 +88,7 @@ func TestListConsumers(t *testing.T) { HandleListConsumersSuccessfully(t) count := 0 - err := containers.ListConsumers(client.ServiceClient(), "dfdb88f3-4ddb-4525-9da6-066453caa9b0", nil).EachPage(func(page pagination.Page) (bool, error) { + err := containers.ListConsumers(client.ServiceClient(), "dfdb88f3-4ddb-4525-9da6-066453caa9b0", nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := containers.ExtractConsumers(page) @@ -106,7 +107,7 @@ func TestListConsumersAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListConsumersSuccessfully(t) - allPages, err := containers.ListConsumers(client.ServiceClient(), "dfdb88f3-4ddb-4525-9da6-066453caa9b0", nil).AllPages() + allPages, err := containers.ListConsumers(client.ServiceClient(), "dfdb88f3-4ddb-4525-9da6-066453caa9b0", nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := containers.ExtractConsumers(allPages) th.AssertNoErr(t, err) @@ -123,7 +124,7 @@ func TestCreateConsumer(t *testing.T) { URL: "http://example.com", } - actual, err := containers.CreateConsumer(client.ServiceClient(), "dfdb88f3-4ddb-4525-9da6-066453caa9b0", createOpts).Extract() + actual, err := containers.CreateConsumer(context.TODO(), client.ServiceClient(), "dfdb88f3-4ddb-4525-9da6-066453caa9b0", createOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedCreatedConsumer, *actual) } @@ -138,7 +139,7 @@ func TestDeleteConsumer(t *testing.T) { URL: "http://example.com", } - actual, err := containers.DeleteConsumer(client.ServiceClient(), "dfdb88f3-4ddb-4525-9da6-066453caa9b0", deleteOpts).Extract() + actual, err := containers.DeleteConsumer(context.TODO(), client.ServiceClient(), "dfdb88f3-4ddb-4525-9da6-066453caa9b0", deleteOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, FirstContainer, *actual) } diff --git a/openstack/keymanager/v1/orders/requests.go b/openstack/keymanager/v1/orders/requests.go index 9aaea4901c..30c0ffe787 100644 --- a/openstack/keymanager/v1/orders/requests.go +++ b/openstack/keymanager/v1/orders/requests.go @@ -1,6 +1,7 @@ package orders import ( + "context" "time" "github.com/gophercloud/gophercloud/v2" @@ -52,8 +53,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get retrieves details of a orders. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -111,13 +112,13 @@ func (opts CreateOpts) ToOrderCreateMap() (map[string]interface{}, error) { } // Create creates a new orders. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToOrderCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -125,8 +126,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete deletes a orders. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/keymanager/v1/orders/testing/requests_test.go b/openstack/keymanager/v1/orders/testing/requests_test.go index 21f7c726be..df2b10d9c1 100644 --- a/openstack/keymanager/v1/orders/testing/requests_test.go +++ b/openstack/keymanager/v1/orders/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/keymanager/v1/orders" @@ -15,7 +16,7 @@ func TestListOrders(t *testing.T) { HandleListOrdersSuccessfully(t) count := 0 - err := orders.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := orders.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := orders.ExtractOrders(page) @@ -34,7 +35,7 @@ func TestListOrdersAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListOrdersSuccessfully(t) - allPages, err := orders.List(client.ServiceClient(), nil).AllPages() + allPages, err := orders.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := orders.ExtractOrders(allPages) th.AssertNoErr(t, err) @@ -46,7 +47,7 @@ func TestGetOrder(t *testing.T) { defer th.TeardownHTTP() HandleGetOrderSuccessfully(t) - actual, err := orders.Get(client.ServiceClient(), "46f73695-82bb-447a-bf96-6635f0fb0ce7").Extract() + actual, err := orders.Get(context.TODO(), client.ServiceClient(), "46f73695-82bb-447a-bf96-6635f0fb0ce7").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, SecondOrder, *actual) } @@ -66,7 +67,7 @@ func TestCreateOrder(t *testing.T) { }, } - actual, err := orders.Create(client.ServiceClient(), createOpts).Extract() + actual, err := orders.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, SecondOrder, *actual) } @@ -76,6 +77,6 @@ func TestDeleteOrder(t *testing.T) { defer th.TeardownHTTP() HandleDeleteOrderSuccessfully(t) - res := orders.Delete(client.ServiceClient(), "46f73695-82bb-447a-bf96-6635f0fb0ce7") + res := orders.Delete(context.TODO(), client.ServiceClient(), "46f73695-82bb-447a-bf96-6635f0fb0ce7") th.AssertNoErr(t, res.Err) } diff --git a/openstack/keymanager/v1/secrets/requests.go b/openstack/keymanager/v1/secrets/requests.go index 55315e8b19..f836d28f70 100644 --- a/openstack/keymanager/v1/secrets/requests.go +++ b/openstack/keymanager/v1/secrets/requests.go @@ -1,6 +1,7 @@ package secrets import ( + "context" "fmt" "net/url" "strings" @@ -142,8 +143,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // Get retrieves details of a secrets. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -165,7 +166,7 @@ func (opts GetPayloadOpts) ToSecretPayloadGetParams() (map[string]string, error) } // GetPayload retrieves the payload of a secret. -func GetPayload(client *gophercloud.ServiceClient, id string, opts GetPayloadOptsBuilder) (r PayloadResult) { +func GetPayload(ctx context.Context, client *gophercloud.ServiceClient, id string, opts GetPayloadOptsBuilder) (r PayloadResult) { h := map[string]string{"Accept": "text/plain"} if opts != nil { @@ -180,7 +181,7 @@ func GetPayload(client *gophercloud.ServiceClient, id string, opts GetPayloadOpt } url := payloadURL(client, id) - resp, err := client.Get(url, nil, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, nil, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{200}, KeepResponseBody: true, @@ -240,13 +241,13 @@ func (opts CreateOpts) ToSecretCreateMap() (map[string]interface{}, error) { } // Create creates a new secrets. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToSecretCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -254,8 +255,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete deletes a secrets. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -290,7 +291,7 @@ func (opts UpdateOpts) ToSecretUpdateRequest() (string, map[string]string, error } // Update modifies the attributes of a secrets. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { url := updateURL(client, id) h := make(map[string]string) var b string @@ -309,7 +310,7 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder b = payload } - resp, err := client.Put(url, strings.NewReader(b), nil, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, url, strings.NewReader(b), nil, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{204}, }) @@ -318,8 +319,8 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder } // GetMetadata will list metadata for a given secret. -func GetMetadata(client *gophercloud.ServiceClient, secretID string) (r MetadataResult) { - resp, err := client.Get(metadataURL(client, secretID), &r.Body, nil) +func GetMetadata(ctx context.Context, client *gophercloud.ServiceClient, secretID string) (r MetadataResult) { + resp, err := client.Get(ctx, metadataURL(client, secretID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -339,13 +340,13 @@ func (opts MetadataOpts) ToMetadataCreateMap() (map[string]interface{}, error) { } // CreateMetadata will set metadata for a given secret. -func CreateMetadata(client *gophercloud.ServiceClient, secretID string, opts CreateMetadataOptsBuilder) (r MetadataCreateResult) { +func CreateMetadata(ctx context.Context, client *gophercloud.ServiceClient, secretID string, opts CreateMetadataOptsBuilder) (r MetadataCreateResult) { b, err := opts.ToMetadataCreateMap() if err != nil { r.Err = err return } - resp, err := client.Put(metadataURL(client, secretID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, metadataURL(client, secretID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -353,8 +354,8 @@ func CreateMetadata(client *gophercloud.ServiceClient, secretID string, opts Cre } // GetMetadatum will get a single key/value metadata from a secret. -func GetMetadatum(client *gophercloud.ServiceClient, secretID string, key string) (r MetadatumResult) { - resp, err := client.Get(metadatumURL(client, secretID, key), &r.Body, nil) +func GetMetadatum(ctx context.Context, client *gophercloud.ServiceClient, secretID string, key string) (r MetadatumResult) { + resp, err := client.Get(ctx, metadatumURL(client, secretID, key), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -377,13 +378,13 @@ func (opts MetadatumOpts) ToMetadatumCreateMap() (map[string]interface{}, error) } // CreateMetadatum will add a single key/value metadata to a secret. -func CreateMetadatum(client *gophercloud.ServiceClient, secretID string, opts CreateMetadatumOptsBuilder) (r MetadatumCreateResult) { +func CreateMetadatum(ctx context.Context, client *gophercloud.ServiceClient, secretID string, opts CreateMetadatumOptsBuilder) (r MetadatumCreateResult) { b, err := opts.ToMetadatumCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(metadataURL(client, secretID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, metadataURL(client, secretID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -403,13 +404,13 @@ func (opts MetadatumOpts) ToMetadatumUpdateMap() (map[string]interface{}, string } // UpdateMetadatum will update a single key/value metadata to a secret. -func UpdateMetadatum(client *gophercloud.ServiceClient, secretID string, opts UpdateMetadatumOptsBuilder) (r MetadatumResult) { +func UpdateMetadatum(ctx context.Context, client *gophercloud.ServiceClient, secretID string, opts UpdateMetadatumOptsBuilder) (r MetadatumResult) { b, key, err := opts.ToMetadatumUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(metadatumURL(client, secretID, key), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, metadatumURL(client, secretID, key), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -417,8 +418,8 @@ func UpdateMetadatum(client *gophercloud.ServiceClient, secretID string, opts Up } // DeleteMetadatum will delete an individual metadatum from a secret. -func DeleteMetadatum(client *gophercloud.ServiceClient, secretID string, key string) (r MetadatumDeleteResult) { - resp, err := client.Delete(metadatumURL(client, secretID, key), nil) +func DeleteMetadatum(ctx context.Context, client *gophercloud.ServiceClient, secretID string, key string) (r MetadatumDeleteResult) { + resp, err := client.Delete(ctx, metadatumURL(client, secretID, key), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/keymanager/v1/secrets/testing/requests_test.go b/openstack/keymanager/v1/secrets/testing/requests_test.go index 98383e0846..0458354bc5 100644 --- a/openstack/keymanager/v1/secrets/testing/requests_test.go +++ b/openstack/keymanager/v1/secrets/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -16,7 +17,7 @@ func TestListSecrets(t *testing.T) { HandleListSecretsSuccessfully(t) count := 0 - err := secrets.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := secrets.List(client.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := secrets.ExtractSecrets(page) @@ -35,7 +36,7 @@ func TestListSecretsAllPages(t *testing.T) { defer th.TeardownHTTP() HandleListSecretsSuccessfully(t) - allPages, err := secrets.List(client.ServiceClient(), nil).AllPages() + allPages, err := secrets.List(client.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := secrets.ExtractSecrets(allPages) th.AssertNoErr(t, err) @@ -47,7 +48,7 @@ func TestGetSecret(t *testing.T) { defer th.TeardownHTTP() HandleGetSecretSuccessfully(t) - actual, err := secrets.Get(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c").Extract() + actual, err := secrets.Get(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, FirstSecret, *actual) } @@ -69,7 +70,7 @@ func TestCreateSecret(t *testing.T) { Expiration: &expiration, } - actual, err := secrets.Create(client.ServiceClient(), createOpts).Extract() + actual, err := secrets.Create(context.TODO(), client.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedCreateResult, *actual) } @@ -79,7 +80,7 @@ func TestDeleteSecret(t *testing.T) { defer th.TeardownHTTP() HandleDeleteSecretSuccessfully(t) - res := secrets.Delete(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c") + res := secrets.Delete(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c") th.AssertNoErr(t, res.Err) } @@ -92,7 +93,7 @@ func TestUpdateSecret(t *testing.T) { Payload: "foobar", } - err := secrets.Update(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", updateOpts).ExtractErr() + err := secrets.Update(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", updateOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -101,7 +102,7 @@ func TestGetPayloadSecret(t *testing.T) { defer th.TeardownHTTP() HandleGetPayloadSuccessfully(t) - res := secrets.GetPayload(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", nil) + res := secrets.GetPayload(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", nil) th.AssertNoErr(t, res.Err) payload, err := res.Extract() th.AssertNoErr(t, err) @@ -113,7 +114,7 @@ func TestGetMetadataSuccessfully(t *testing.T) { defer th.TeardownHTTP() HandleGetMetadataSuccessfully(t) - actual, err := secrets.GetMetadata(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c").Extract() + actual, err := secrets.GetMetadata(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedMetadata, actual) } @@ -128,7 +129,7 @@ func TestCreateMetadataSuccessfully(t *testing.T) { "something": "something else", } - actual, err := secrets.CreateMetadata(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", createOpts).Extract() + actual, err := secrets.CreateMetadata(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", createOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedCreateMetadataResult, actual) } @@ -138,7 +139,7 @@ func TestGetMetadatumSuccessfully(t *testing.T) { defer th.TeardownHTTP() HandleGetMetadatumSuccessfully(t) - actual, err := secrets.GetMetadatum(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", "foo").Extract() + actual, err := secrets.GetMetadatum(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", "foo").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedMetadatum, *actual) } @@ -153,7 +154,7 @@ func TestCreateMetadatumSuccessfully(t *testing.T) { Value: "bar", } - err := secrets.CreateMetadatum(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", createOpts).ExtractErr() + err := secrets.CreateMetadatum(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", createOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -167,7 +168,7 @@ func TestUpdateMetadatumSuccessfully(t *testing.T) { Value: "bar", } - actual, err := secrets.UpdateMetadatum(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", updateOpts).Extract() + actual, err := secrets.UpdateMetadatum(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedMetadatum, *actual) } @@ -177,6 +178,6 @@ func TestDeleteMetadatumSuccessfully(t *testing.T) { defer th.TeardownHTTP() HandleDeleteMetadatumSuccessfully(t) - err := secrets.DeleteMetadatum(client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", "foo").ExtractErr() + err := secrets.DeleteMetadatum(context.TODO(), client.ServiceClient(), "1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", "foo").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/loadbalancer/v2/amphorae/requests.go b/openstack/loadbalancer/v2/amphorae/requests.go index 3e94d5ba8f..c0059c2b38 100644 --- a/openstack/loadbalancer/v2/amphorae/requests.go +++ b/openstack/loadbalancer/v2/amphorae/requests.go @@ -1,6 +1,8 @@ package amphorae import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -53,15 +55,15 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a particular amphora based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Failover performs a failover of an amphora. -func Failover(c *gophercloud.ServiceClient, id string) (r FailoverResult) { - resp, err := c.Put(failoverRootURL(c, id), nil, nil, &gophercloud.RequestOpts{ +func Failover(ctx context.Context, c *gophercloud.ServiceClient, id string) (r FailoverResult) { + resp, err := c.Put(ctx, failoverRootURL(c, id), nil, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/loadbalancer/v2/amphorae/testing/requests_test.go b/openstack/loadbalancer/v2/amphorae/testing/requests_test.go index cfa303e643..bc5feed401 100644 --- a/openstack/loadbalancer/v2/amphorae/testing/requests_test.go +++ b/openstack/loadbalancer/v2/amphorae/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/amphorae" @@ -15,7 +16,7 @@ func TestListAmphorae(t *testing.T) { HandleAmphoraListSuccessfully(t) pages := 0 - err := amphorae.List(fake.ServiceClient(), amphorae.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := amphorae.List(fake.ServiceClient(), amphorae.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := amphorae.ExtractAmphorae(page) @@ -42,7 +43,7 @@ func TestListAllAmphorae(t *testing.T) { defer th.TeardownHTTP() HandleAmphoraListSuccessfully(t) - allPages, err := amphorae.List(fake.ServiceClient(), amphorae.ListOpts{}).AllPages() + allPages, err := amphorae.List(fake.ServiceClient(), amphorae.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := amphorae.ExtractAmphorae(allPages) th.AssertNoErr(t, err) @@ -56,7 +57,7 @@ func TestGetAmphora(t *testing.T) { HandleAmphoraGetSuccessfully(t) client := fake.ServiceClient() - actual, err := amphorae.Get(client, "45f40289-0551-483a-b089-47214bc2a8a4").Extract() + actual, err := amphorae.Get(context.TODO(), client, "45f40289-0551-483a-b089-47214bc2a8a4").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -69,6 +70,6 @@ func TestFailoverAmphora(t *testing.T) { defer th.TeardownHTTP() HandleAmphoraFailoverSuccessfully(t) - res := amphorae.Failover(fake.ServiceClient(), "36e08a3e-a78f-4b40-a229-1e7e23eee1ab") + res := amphorae.Failover(context.TODO(), fake.ServiceClient(), "36e08a3e-a78f-4b40-a229-1e7e23eee1ab") th.AssertNoErr(t, res.Err) } diff --git a/openstack/loadbalancer/v2/apiversions/testing/requests_test.go b/openstack/loadbalancer/v2/apiversions/testing/requests_test.go index fbca8f9c51..c0e3aa181c 100644 --- a/openstack/loadbalancer/v2/apiversions/testing/requests_test.go +++ b/openstack/loadbalancer/v2/apiversions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/apiversions" @@ -14,7 +15,7 @@ func TestListVersions(t *testing.T) { MockListResponse(t) - allVersions, err := apiversions.List(client.ServiceClient()).AllPages() + allVersions, err := apiversions.List(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := apiversions.ExtractAPIVersions(allVersions) diff --git a/openstack/loadbalancer/v2/flavorprofiles/requests.go b/openstack/loadbalancer/v2/flavorprofiles/requests.go index 52ed895e73..cb9f848392 100644 --- a/openstack/loadbalancer/v2/flavorprofiles/requests.go +++ b/openstack/loadbalancer/v2/flavorprofiles/requests.go @@ -1,6 +1,8 @@ package flavorprofiles import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -66,20 +68,20 @@ func (opts CreateOpts) ToFlavorProfileCreateMap() (map[string]interface{}, error // Create is and operation which add a new FlavorProfile into the database. // CreateResult will be returned. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToFlavorProfileCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular FlavorProfile based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -115,13 +117,13 @@ func (opts UpdateOpts) ToFlavorProfileUpdateMap() (map[string]interface{}, error // Update is an operation which modifies the attributes of the specified // FlavorProfile. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { b, err := opts.ToFlavorProfileUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -130,8 +132,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateR // Delete will permanently delete a particular FlavorProfile based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/loadbalancer/v2/flavorprofiles/testing/requests_test.go b/openstack/loadbalancer/v2/flavorprofiles/testing/requests_test.go index d977387f7e..aebb2c9408 100644 --- a/openstack/loadbalancer/v2/flavorprofiles/testing/requests_test.go +++ b/openstack/loadbalancer/v2/flavorprofiles/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/flavorprofiles" @@ -16,7 +17,7 @@ func TestListFlavorProfiles(t *testing.T) { HandleFlavorProfileListSuccessfully(t) pages := 0 - err := flavorprofiles.List(fake.ServiceClient(), flavorprofiles.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := flavorprofiles.List(fake.ServiceClient(), flavorprofiles.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := flavorprofiles.ExtractFlavorProfiles(page) @@ -45,7 +46,7 @@ func TestListAllFlavorProfiles(t *testing.T) { defer th.TeardownHTTP() HandleFlavorProfileListSuccessfully(t) - allPages, err := flavorprofiles.List(fake.ServiceClient(), flavorprofiles.ListOpts{}).AllPages() + allPages, err := flavorprofiles.List(fake.ServiceClient(), flavorprofiles.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := flavorprofiles.ExtractFlavorProfiles(allPages) th.AssertNoErr(t, err) @@ -58,7 +59,7 @@ func TestCreateFlavorProfile(t *testing.T) { defer th.TeardownHTTP() HandleFlavorProfileCreationSuccessfully(t, SingleFlavorProfileBody) - actual, err := flavorprofiles.Create(fake.ServiceClient(), flavorprofiles.CreateOpts{ + actual, err := flavorprofiles.Create(context.TODO(), fake.ServiceClient(), flavorprofiles.CreateOpts{ Name: "amphora-test", ProviderName: "amphora", FlavorData: "{\"loadbalancer_topology\": \"ACTIVE_STANDBY\"}", @@ -69,7 +70,7 @@ func TestCreateFlavorProfile(t *testing.T) { } func TestRequiredCreateOpts(t *testing.T) { - res := flavorprofiles.Create(fake.ServiceClient(), flavorprofiles.CreateOpts{}) + res := flavorprofiles.Create(context.TODO(), fake.ServiceClient(), flavorprofiles.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -81,7 +82,7 @@ func TestGetFlavorProfiles(t *testing.T) { HandleFlavorProfileGetSuccessfully(t) client := fake.ServiceClient() - actual, err := flavorprofiles.Get(client, "dcd65be5-f117-4260-ab3d-b32cc5bd1272").Extract() + actual, err := flavorprofiles.Get(context.TODO(), client, "dcd65be5-f117-4260-ab3d-b32cc5bd1272").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -94,7 +95,7 @@ func TestDeleteFlavorProfile(t *testing.T) { defer th.TeardownHTTP() HandleFlavorProfileDeletionSuccessfully(t) - res := flavorprofiles.Delete(fake.ServiceClient(), "dcd65be5-f117-4260-ab3d-b32cc5bd1272") + res := flavorprofiles.Delete(context.TODO(), fake.ServiceClient(), "dcd65be5-f117-4260-ab3d-b32cc5bd1272") th.AssertNoErr(t, res.Err) } @@ -104,7 +105,7 @@ func TestUpdateFlavorProfile(t *testing.T) { HandleFlavorProfileUpdateSuccessfully(t) client := fake.ServiceClient() - actual, err := flavorprofiles.Update(client, "dcd65be5-f117-4260-ab3d-b32cc5bd1272", flavorprofiles.UpdateOpts{ + actual, err := flavorprofiles.Update(context.TODO(), client, "dcd65be5-f117-4260-ab3d-b32cc5bd1272", flavorprofiles.UpdateOpts{ Name: "amphora-test-updated", ProviderName: "amphora", FlavorData: "{\"loadbalancer_topology\": \"SINGLE\"}", diff --git a/openstack/loadbalancer/v2/flavors/requests.go b/openstack/loadbalancer/v2/flavors/requests.go index 8b5e5e0aeb..833d16873f 100644 --- a/openstack/loadbalancer/v2/flavors/requests.go +++ b/openstack/loadbalancer/v2/flavors/requests.go @@ -1,6 +1,8 @@ package flavors import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -70,20 +72,20 @@ func (opts CreateOpts) ToFlavorCreateMap() (map[string]interface{}, error) { // Create is and operation which add a new Flavor into the database. // CreateResult will be returned. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToFlavorCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular Flavor based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -119,13 +121,13 @@ func (opts UpdateOpts) ToFlavorUpdateMap() (map[string]interface{}, error) { // Update is an operation which modifies the attributes of the specified // Flavor. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { b, err := opts.ToFlavorUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -134,8 +136,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateR // Delete will permanently delete a particular Flavor based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/loadbalancer/v2/flavors/testing/requests_test.go b/openstack/loadbalancer/v2/flavors/testing/requests_test.go index 907cd8d696..14a74dbe45 100644 --- a/openstack/loadbalancer/v2/flavors/testing/requests_test.go +++ b/openstack/loadbalancer/v2/flavors/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/flavors" @@ -16,7 +17,7 @@ func TestListFlavors(t *testing.T) { HandleFlavorListSuccessfully(t) pages := 0 - err := flavors.List(fake.ServiceClient(), flavors.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := flavors.List(fake.ServiceClient(), flavors.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := flavors.ExtractFlavors(page) @@ -45,7 +46,7 @@ func TestListAllFlavors(t *testing.T) { defer th.TeardownHTTP() HandleFlavorListSuccessfully(t) - allPages, err := flavors.List(fake.ServiceClient(), flavors.ListOpts{}).AllPages() + allPages, err := flavors.List(fake.ServiceClient(), flavors.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := flavors.ExtractFlavors(allPages) th.AssertNoErr(t, err) @@ -58,7 +59,7 @@ func TestCreateFlavor(t *testing.T) { defer th.TeardownHTTP() HandleFlavorCreationSuccessfully(t, SingleFlavorBody) - actual, err := flavors.Create(fake.ServiceClient(), flavors.CreateOpts{ + actual, err := flavors.Create(context.TODO(), fake.ServiceClient(), flavors.CreateOpts{ Name: "Basic", Description: "A basic standalone Octavia load balancer.", Enabled: true, @@ -70,7 +71,7 @@ func TestCreateFlavor(t *testing.T) { } func TestRequiredCreateOpts(t *testing.T) { - res := flavors.Create(fake.ServiceClient(), flavors.CreateOpts{}) + res := flavors.Create(context.TODO(), fake.ServiceClient(), flavors.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -82,7 +83,7 @@ func TestGetFlavor(t *testing.T) { HandleFlavorGetSuccessfully(t) client := fake.ServiceClient() - actual, err := flavors.Get(client, "5548c807-e6e8-43d7-9ea4-b38d34dd74a0").Extract() + actual, err := flavors.Get(context.TODO(), client, "5548c807-e6e8-43d7-9ea4-b38d34dd74a0").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -95,7 +96,7 @@ func TestDeleteFlavor(t *testing.T) { defer th.TeardownHTTP() HandleFlavorDeletionSuccessfully(t) - res := flavors.Delete(fake.ServiceClient(), "5548c807-e6e8-43d7-9ea4-b38d34dd74a0") + res := flavors.Delete(context.TODO(), fake.ServiceClient(), "5548c807-e6e8-43d7-9ea4-b38d34dd74a0") th.AssertNoErr(t, res.Err) } @@ -105,7 +106,7 @@ func TestUpdateFlavor(t *testing.T) { HandleFlavorUpdateSuccessfully(t) client := fake.ServiceClient() - actual, err := flavors.Update(client, "5548c807-e6e8-43d7-9ea4-b38d34dd74a0", flavors.UpdateOpts{ + actual, err := flavors.Update(context.TODO(), client, "5548c807-e6e8-43d7-9ea4-b38d34dd74a0", flavors.UpdateOpts{ Name: "Basic v2", Description: "Rename flavor", Enabled: true, diff --git a/openstack/loadbalancer/v2/l7policies/requests.go b/openstack/loadbalancer/v2/l7policies/requests.go index d32335a2ae..fb624010a3 100644 --- a/openstack/loadbalancer/v2/l7policies/requests.go +++ b/openstack/loadbalancer/v2/l7policies/requests.go @@ -1,6 +1,8 @@ package l7policies import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -94,13 +96,13 @@ func (opts CreateOpts) ToL7PolicyCreateMap() (map[string]interface{}, error) { } // Create accepts a CreateOpts struct and uses the values to create a new l7policy. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToL7PolicyCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -157,15 +159,15 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a particular l7policy based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete will permanently delete a particular l7policy based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -245,13 +247,13 @@ func (opts UpdateOpts) ToL7PolicyUpdateMap() (map[string]interface{}, error) { } // Update allows l7policy to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToL7PolicyUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -295,13 +297,13 @@ func (opts CreateRuleOpts) ToRuleCreateMap() (map[string]interface{}, error) { } // CreateRule will create and associate a Rule with a particular L7Policy. -func CreateRule(c *gophercloud.ServiceClient, policyID string, opts CreateRuleOpts) (r CreateRuleResult) { +func CreateRule(ctx context.Context, c *gophercloud.ServiceClient, policyID string, opts CreateRuleOpts) (r CreateRuleResult) { b, err := opts.ToRuleCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(ruleRootURL(c, policyID), b, &r.Body, nil) + resp, err := c.Post(ctx, ruleRootURL(c, policyID), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -356,15 +358,15 @@ func ListRules(c *gophercloud.ServiceClient, policyID string, opts ListRulesOpts } // GetRule retrieves a particular L7Policy Rule based on its unique ID. -func GetRule(c *gophercloud.ServiceClient, policyID string, ruleID string) (r GetRuleResult) { - resp, err := c.Get(ruleResourceURL(c, policyID, ruleID), &r.Body, nil) +func GetRule(ctx context.Context, c *gophercloud.ServiceClient, policyID string, ruleID string) (r GetRuleResult) { + resp, err := c.Get(ctx, ruleResourceURL(c, policyID, ruleID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // DeleteRule will remove a Rule from a particular L7Policy. -func DeleteRule(c *gophercloud.ServiceClient, policyID string, ruleID string) (r DeleteRuleResult) { - resp, err := c.Delete(ruleResourceURL(c, policyID, ruleID), nil) +func DeleteRule(ctx context.Context, c *gophercloud.ServiceClient, policyID string, ruleID string) (r DeleteRuleResult) { + resp, err := c.Delete(ctx, ruleResourceURL(c, policyID, ruleID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -416,13 +418,13 @@ func (opts UpdateRuleOpts) ToRuleUpdateMap() (map[string]interface{}, error) { } // UpdateRule allows Rule to be updated. -func UpdateRule(c *gophercloud.ServiceClient, policyID string, ruleID string, opts UpdateRuleOptsBuilder) (r UpdateRuleResult) { +func UpdateRule(ctx context.Context, c *gophercloud.ServiceClient, policyID string, ruleID string, opts UpdateRuleOptsBuilder) (r UpdateRuleResult) { b, err := opts.ToRuleUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(ruleResourceURL(c, policyID, ruleID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, ruleResourceURL(c, policyID, ruleID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/loadbalancer/v2/l7policies/testing/requests_test.go b/openstack/loadbalancer/v2/l7policies/testing/requests_test.go index 9d2a64a779..328215982d 100644 --- a/openstack/loadbalancer/v2/l7policies/testing/requests_test.go +++ b/openstack/loadbalancer/v2/l7policies/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/l7policies" @@ -14,7 +15,7 @@ func TestCreateL7Policy(t *testing.T) { defer th.TeardownHTTP() HandleL7PolicyCreationSuccessfully(t, SingleL7PolicyBody) - actual, err := l7policies.Create(fake.ServiceClient(), l7policies.CreateOpts{ + actual, err := l7policies.Create(context.TODO(), fake.ServiceClient(), l7policies.CreateOpts{ Name: "redirect-example.com", ListenerID: "023f2e34-7806-443b-bfae-16c324569a3d", Action: l7policies.ActionRedirectToURL, @@ -27,13 +28,13 @@ func TestCreateL7Policy(t *testing.T) { func TestRequiredL7PolicyCreateOpts(t *testing.T) { // no param specified. - res := l7policies.Create(fake.ServiceClient(), l7policies.CreateOpts{}) + res := l7policies.Create(context.TODO(), fake.ServiceClient(), l7policies.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } // Action is invalid. - res = l7policies.Create(fake.ServiceClient(), l7policies.CreateOpts{ + res = l7policies.Create(context.TODO(), fake.ServiceClient(), l7policies.CreateOpts{ ListenerID: "023f2e34-7806-443b-bfae-16c324569a3d", Action: l7policies.Action("invalid"), }) @@ -48,7 +49,7 @@ func TestListL7Policies(t *testing.T) { HandleL7PolicyListSuccessfully(t) pages := 0 - err := l7policies.List(fake.ServiceClient(), l7policies.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := l7policies.List(fake.ServiceClient(), l7policies.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := l7policies.ExtractL7Policies(page) @@ -77,7 +78,7 @@ func TestListAllL7Policies(t *testing.T) { defer th.TeardownHTTP() HandleL7PolicyListSuccessfully(t) - allPages, err := l7policies.List(fake.ServiceClient(), l7policies.ListOpts{}).AllPages() + allPages, err := l7policies.List(fake.ServiceClient(), l7policies.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := l7policies.ExtractL7Policies(allPages) th.AssertNoErr(t, err) @@ -91,7 +92,7 @@ func TestGetL7Policy(t *testing.T) { HandleL7PolicyGetSuccessfully(t) client := fake.ServiceClient() - actual, err := l7policies.Get(client, "8a1412f0-4c32-4257-8b07-af4770b604fd").Extract() + actual, err := l7policies.Get(context.TODO(), client, "8a1412f0-4c32-4257-8b07-af4770b604fd").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -104,7 +105,7 @@ func TestDeleteL7Policy(t *testing.T) { defer th.TeardownHTTP() HandleL7PolicyDeletionSuccessfully(t) - res := l7policies.Delete(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd") + res := l7policies.Delete(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd") th.AssertNoErr(t, res.Err) } @@ -116,7 +117,7 @@ func TestUpdateL7Policy(t *testing.T) { client := fake.ServiceClient() newName := "NewL7PolicyName" redirectURL := "http://www.new-example.com" - actual, err := l7policies.Update(client, "8a1412f0-4c32-4257-8b07-af4770b604fd", + actual, err := l7policies.Update(context.TODO(), client, "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.UpdateOpts{ Name: &newName, Action: l7policies.ActionRedirectToURL, @@ -137,7 +138,7 @@ func TestUpdateL7PolicyNullRedirectURL(t *testing.T) { client := fake.ServiceClient() newName := "NewL7PolicyName" redirectURL := "" - actual, err := l7policies.Update(client, "8a1412f0-4c32-4257-8b07-af4770b604fd", + actual, err := l7policies.Update(context.TODO(), client, "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.UpdateOpts{ Name: &newName, RedirectURL: &redirectURL, @@ -153,7 +154,7 @@ func TestUpdateL7PolicyWithInvalidOpts(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() - res := l7policies.Update(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.UpdateOpts{ + res := l7policies.Update(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.UpdateOpts{ Action: l7policies.Action("invalid"), }) if res.Err == nil { @@ -166,7 +167,7 @@ func TestCreateRule(t *testing.T) { defer th.TeardownHTTP() HandleRuleCreationSuccessfully(t, SingleRuleBody) - actual, err := l7policies.CreateRule(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ + actual, err := l7policies.CreateRule(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ RuleType: l7policies.TypePath, CompareType: l7policies.CompareTypeRegex, Value: "/images*", @@ -180,17 +181,17 @@ func TestRequiredRuleCreateOpts(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() - res := l7policies.CreateRule(fake.ServiceClient(), "", l7policies.CreateRuleOpts{}) + res := l7policies.CreateRule(context.TODO(), fake.ServiceClient(), "", l7policies.CreateRuleOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = l7policies.CreateRule(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ + res = l7policies.CreateRule(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ RuleType: l7policies.TypePath, }) if res.Err == nil { t.Fatalf("Expected error, but got none") } - res = l7policies.CreateRule(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ + res = l7policies.CreateRule(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ RuleType: l7policies.RuleType("invalid"), CompareType: l7policies.CompareTypeRegex, Value: "/images*", @@ -198,7 +199,7 @@ func TestRequiredRuleCreateOpts(t *testing.T) { if res.Err == nil { t.Fatalf("Expected error, but got none") } - res = l7policies.CreateRule(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ + res = l7policies.CreateRule(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ RuleType: l7policies.TypePath, CompareType: l7policies.CompareType("invalid"), Value: "/images*", @@ -214,7 +215,7 @@ func TestListRules(t *testing.T) { HandleRuleListSuccessfully(t) pages := 0 - err := l7policies.ListRules(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.ListRulesOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := l7policies.ListRules(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.ListRulesOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := l7policies.ExtractRules(page) @@ -243,7 +244,7 @@ func TestListAllRules(t *testing.T) { defer th.TeardownHTTP() HandleRuleListSuccessfully(t) - allPages, err := l7policies.ListRules(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.ListRulesOpts{}).AllPages() + allPages, err := l7policies.ListRules(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.ListRulesOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := l7policies.ExtractRules(allPages) @@ -258,7 +259,7 @@ func TestGetRule(t *testing.T) { HandleRuleGetSuccessfully(t) client := fake.ServiceClient() - actual, err := l7policies.GetRule(client, "8a1412f0-4c32-4257-8b07-af4770b604fd", "16621dbb-a736-4888-a57a-3ecd53df784c").Extract() + actual, err := l7policies.GetRule(context.TODO(), client, "8a1412f0-4c32-4257-8b07-af4770b604fd", "16621dbb-a736-4888-a57a-3ecd53df784c").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -271,7 +272,7 @@ func TestDeleteRule(t *testing.T) { defer th.TeardownHTTP() HandleRuleDeletionSuccessfully(t) - res := l7policies.DeleteRule(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", "16621dbb-a736-4888-a57a-3ecd53df784c") + res := l7policies.DeleteRule(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", "16621dbb-a736-4888-a57a-3ecd53df784c") th.AssertNoErr(t, res.Err) } @@ -283,7 +284,7 @@ func TestUpdateRule(t *testing.T) { client := fake.ServiceClient() invert := false key := "" - actual, err := l7policies.UpdateRule(client, "8a1412f0-4c32-4257-8b07-af4770b604fd", "16621dbb-a736-4888-a57a-3ecd53df784c", l7policies.UpdateRuleOpts{ + actual, err := l7policies.UpdateRule(context.TODO(), client, "8a1412f0-4c32-4257-8b07-af4770b604fd", "16621dbb-a736-4888-a57a-3ecd53df784c", l7policies.UpdateRuleOpts{ RuleType: l7policies.TypePath, CompareType: l7policies.CompareTypeRegex, Value: "/images/special*", @@ -301,14 +302,14 @@ func TestUpdateRuleWithInvalidOpts(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() - res := l7policies.UpdateRule(fake.ServiceClient(), "", "", l7policies.UpdateRuleOpts{ + res := l7policies.UpdateRule(context.TODO(), fake.ServiceClient(), "", "", l7policies.UpdateRuleOpts{ RuleType: l7policies.RuleType("invalid"), }) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = l7policies.UpdateRule(fake.ServiceClient(), "", "", l7policies.UpdateRuleOpts{ + res = l7policies.UpdateRule(context.TODO(), fake.ServiceClient(), "", "", l7policies.UpdateRuleOpts{ CompareType: l7policies.CompareType("invalid"), }) if res.Err == nil { diff --git a/openstack/loadbalancer/v2/listeners/requests.go b/openstack/loadbalancer/v2/listeners/requests.go index 669b3ed07b..7d845d1034 100644 --- a/openstack/loadbalancer/v2/listeners/requests.go +++ b/openstack/loadbalancer/v2/listeners/requests.go @@ -1,6 +1,8 @@ package listeners import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/l7policies" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/pools" @@ -187,20 +189,20 @@ func (opts CreateOpts) ToListenerCreateMap() (map[string]interface{}, error) { // // Users with an admin role can create Listeners on behalf of other projects by // specifying a ProjectID attribute different than their own. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToListenerCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular Listeners based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -276,13 +278,13 @@ func (opts UpdateOpts) ToListenerUpdateMap() (map[string]interface{}, error) { // Update is an operation which modifies the attributes of the specified // Listener. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { b, err := opts.ToListenerUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -290,15 +292,15 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateR } // Delete will permanently delete a particular Listeners based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetStats will return the shows the current statistics of a particular Listeners. -func GetStats(c *gophercloud.ServiceClient, id string) (r StatsResult) { - resp, err := c.Get(statisticsRootURL(c, id), &r.Body, nil) +func GetStats(ctx context.Context, c *gophercloud.ServiceClient, id string) (r StatsResult) { + resp, err := c.Get(ctx, statisticsRootURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/loadbalancer/v2/listeners/testing/requests_test.go b/openstack/loadbalancer/v2/listeners/testing/requests_test.go index 600d9178d6..220119a43a 100644 --- a/openstack/loadbalancer/v2/listeners/testing/requests_test.go +++ b/openstack/loadbalancer/v2/listeners/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -16,7 +17,7 @@ func TestListListeners(t *testing.T) { HandleListenerListSuccessfully(t) pages := 0 - err := listeners.List(fake.ServiceClient(), listeners.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := listeners.List(fake.ServiceClient(), listeners.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := listeners.ExtractListeners(page) @@ -45,7 +46,7 @@ func TestListAllListeners(t *testing.T) { defer th.TeardownHTTP() HandleListenerListSuccessfully(t) - allPages, err := listeners.List(fake.ServiceClient(), listeners.ListOpts{}).AllPages() + allPages, err := listeners.List(fake.ServiceClient(), listeners.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := listeners.ExtractListeners(allPages) th.AssertNoErr(t, err) @@ -58,7 +59,7 @@ func TestCreateListener(t *testing.T) { defer th.TeardownHTTP() HandleListenerCreationSuccessfully(t, SingleListenerBody) - actual, err := listeners.Create(fake.ServiceClient(), listeners.CreateOpts{ + actual, err := listeners.Create(context.TODO(), fake.ServiceClient(), listeners.CreateOpts{ Protocol: "TCP", Name: "db", LoadbalancerID: "79e05663-7f03-45d2-a092-8b94062f22ab", @@ -76,23 +77,23 @@ func TestCreateListener(t *testing.T) { } func TestRequiredCreateOpts(t *testing.T) { - res := listeners.Create(fake.ServiceClient(), listeners.CreateOpts{}) + res := listeners.Create(context.TODO(), fake.ServiceClient(), listeners.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = listeners.Create(fake.ServiceClient(), listeners.CreateOpts{Name: "foo"}) + res = listeners.Create(context.TODO(), fake.ServiceClient(), listeners.CreateOpts{Name: "foo"}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = listeners.Create(fake.ServiceClient(), listeners.CreateOpts{Name: "foo", ProjectID: "bar"}) + res = listeners.Create(context.TODO(), fake.ServiceClient(), listeners.CreateOpts{Name: "foo", ProjectID: "bar"}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = listeners.Create(fake.ServiceClient(), listeners.CreateOpts{Name: "foo", ProjectID: "bar", Protocol: "bar"}) + res = listeners.Create(context.TODO(), fake.ServiceClient(), listeners.CreateOpts{Name: "foo", ProjectID: "bar", Protocol: "bar"}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = listeners.Create(fake.ServiceClient(), listeners.CreateOpts{Name: "foo", ProjectID: "bar", Protocol: "bar", ProtocolPort: 80}) + res = listeners.Create(context.TODO(), fake.ServiceClient(), listeners.CreateOpts{Name: "foo", ProjectID: "bar", Protocol: "bar", ProtocolPort: 80}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -104,7 +105,7 @@ func TestGetListener(t *testing.T) { HandleListenerGetSuccessfully(t) client := fake.ServiceClient() - actual, err := listeners.Get(client, "4ec89087-d057-4e2c-911f-60a3b47ee304").Extract() + actual, err := listeners.Get(context.TODO(), client, "4ec89087-d057-4e2c-911f-60a3b47ee304").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -117,7 +118,7 @@ func TestDeleteListener(t *testing.T) { defer th.TeardownHTTP() HandleListenerDeletionSuccessfully(t) - res := listeners.Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304") + res := listeners.Delete(context.TODO(), fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304") th.AssertNoErr(t, res.Err) } @@ -136,7 +137,7 @@ func TestUpdateListener(t *testing.T) { "X-Forwarded-Port": "false", } tlsVersions := []listeners.TLSVersion{"TLSv1.2", "TLSv1.3"} - actual, err := listeners.Update(client, "4ec89087-d057-4e2c-911f-60a3b47ee304", listeners.UpdateOpts{ + actual, err := listeners.Update(context.TODO(), client, "4ec89087-d057-4e2c-911f-60a3b47ee304", listeners.UpdateOpts{ Name: &name, ConnLimit: &i1001, DefaultPoolID: &defaultPoolID, @@ -160,7 +161,7 @@ func TestGetListenerStatsTree(t *testing.T) { HandleListenerGetStatsTree(t) client := fake.ServiceClient() - actual, err := listeners.GetStats(client, "4ec89087-d057-4e2c-911f-60a3b47ee304").Extract() + actual, err := listeners.GetStats(context.TODO(), client, "4ec89087-d057-4e2c-911f-60a3b47ee304").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } diff --git a/openstack/loadbalancer/v2/loadbalancers/requests.go b/openstack/loadbalancer/v2/loadbalancers/requests.go index 577f1c29b7..9b0b32ac6b 100644 --- a/openstack/loadbalancer/v2/loadbalancers/requests.go +++ b/openstack/loadbalancer/v2/loadbalancers/requests.go @@ -1,6 +1,8 @@ package loadbalancers import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/listeners" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/pools" @@ -155,20 +157,20 @@ func (opts CreateOpts) ToLoadBalancerCreateMap() (map[string]interface{}, error) // configuration defined in the CreateOpts struct. Once the request is // validated and progress has started on the provisioning process, a // CreateResult will be returned. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToLoadBalancerCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular Loadbalancer based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -206,13 +208,13 @@ func (opts UpdateOpts) ToLoadBalancerUpdateMap() (map[string]interface{}, error) // Update is an operation which modifies the attributes of the specified // LoadBalancer. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOpts) (r UpdateResult) { b, err := opts.ToLoadBalancerUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -240,7 +242,7 @@ func (opts DeleteOpts) ToLoadBalancerDeleteQuery() (string, error) { // Delete will permanently delete a particular LoadBalancer based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder) (r DeleteResult) { +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder) (r DeleteResult) { url := resourceURL(c, id) if opts != nil { query, err := opts.ToLoadBalancerDeleteQuery() @@ -250,28 +252,28 @@ func Delete(c *gophercloud.ServiceClient, id string, opts DeleteOptsBuilder) (r } url += query } - resp, err := c.Delete(url, nil) + resp, err := c.Delete(ctx, url, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetStatuses will return the status of a particular LoadBalancer. -func GetStatuses(c *gophercloud.ServiceClient, id string) (r GetStatusesResult) { - resp, err := c.Get(statusRootURL(c, id), &r.Body, nil) +func GetStatuses(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetStatusesResult) { + resp, err := c.Get(ctx, statusRootURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetStats will return the shows the current statistics of a particular LoadBalancer. -func GetStats(c *gophercloud.ServiceClient, id string) (r StatsResult) { - resp, err := c.Get(statisticsRootURL(c, id), &r.Body, nil) +func GetStats(ctx context.Context, c *gophercloud.ServiceClient, id string) (r StatsResult) { + resp, err := c.Get(ctx, statisticsRootURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Failover performs a failover of a load balancer. -func Failover(c *gophercloud.ServiceClient, id string) (r FailoverResult) { - resp, err := c.Put(failoverRootURL(c, id), nil, nil, &gophercloud.RequestOpts{ +func Failover(ctx context.Context, c *gophercloud.ServiceClient, id string) (r FailoverResult) { + resp, err := c.Put(ctx, failoverRootURL(c, id), nil, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/loadbalancer/v2/loadbalancers/testing/requests_test.go b/openstack/loadbalancer/v2/loadbalancers/testing/requests_test.go index 0a9f2c6149..04fe8549d3 100644 --- a/openstack/loadbalancer/v2/loadbalancers/testing/requests_test.go +++ b/openstack/loadbalancer/v2/loadbalancers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/l7policies" @@ -21,7 +22,7 @@ func TestListLoadbalancers(t *testing.T) { HandleLoadbalancerListSuccessfully(t) pages := 0 - err := loadbalancers.List(fake.ServiceClient(), loadbalancers.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := loadbalancers.List(fake.ServiceClient(), loadbalancers.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := loadbalancers.ExtractLoadBalancers(page) @@ -50,7 +51,7 @@ func TestListAllLoadbalancers(t *testing.T) { defer th.TeardownHTTP() HandleLoadbalancerListSuccessfully(t) - allPages, err := loadbalancers.List(fake.ServiceClient(), loadbalancers.ListOpts{}).AllPages() + allPages, err := loadbalancers.List(fake.ServiceClient(), loadbalancers.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := loadbalancers.ExtractLoadBalancers(allPages) th.AssertNoErr(t, err) @@ -63,7 +64,7 @@ func TestCreateLoadbalancer(t *testing.T) { defer th.TeardownHTTP() HandleLoadbalancerCreationSuccessfully(t, SingleLoadbalancerBody) - actual, err := loadbalancers.Create(fake.ServiceClient(), loadbalancers.CreateOpts{ + actual, err := loadbalancers.Create(context.TODO(), fake.ServiceClient(), loadbalancers.CreateOpts{ Name: "db_lb", AdminStateUp: gophercloud.Enabled, VipPortID: "2bf413c8-41a9-4477-b505-333d5cbe8b55", @@ -89,7 +90,7 @@ func TestCreateFullyPopulatedLoadbalancer(t *testing.T) { defer th.TeardownHTTP() HandleFullyPopulatedLoadbalancerCreationSuccessfully(t, PostFullyPopulatedLoadbalancerBody) - actual, err := loadbalancers.Create(fake.ServiceClient(), loadbalancers.CreateOpts{ + actual, err := loadbalancers.Create(context.TODO(), fake.ServiceClient(), loadbalancers.CreateOpts{ Name: "db_lb", AdminStateUp: gophercloud.Enabled, VipPortID: "2bf413c8-41a9-4477-b505-333d5cbe8b55", @@ -148,7 +149,7 @@ func TestGetLoadbalancer(t *testing.T) { HandleLoadbalancerGetSuccessfully(t) client := fake.ServiceClient() - actual, err := loadbalancers.Get(client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").Extract() + actual, err := loadbalancers.Get(context.TODO(), client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -162,7 +163,7 @@ func TestGetLoadbalancerStatusesTree(t *testing.T) { HandleLoadbalancerGetStatusesTree(t) client := fake.ServiceClient() - actual, err := loadbalancers.GetStatuses(client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").Extract() + actual, err := loadbalancers.GetStatuses(context.TODO(), client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -175,7 +176,7 @@ func TestDeleteLoadbalancer(t *testing.T) { defer th.TeardownHTTP() HandleLoadbalancerDeletionSuccessfully(t) - res := loadbalancers.Delete(fake.ServiceClient(), "36e08a3e-a78f-4b40-a229-1e7e23eee1ab", nil) + res := loadbalancers.Delete(context.TODO(), fake.ServiceClient(), "36e08a3e-a78f-4b40-a229-1e7e23eee1ab", nil) th.AssertNoErr(t, res.Err) } @@ -187,7 +188,7 @@ func TestUpdateLoadbalancer(t *testing.T) { client := fake.ServiceClient() name := "NewLoadbalancerName" tags := []string{"test"} - actual, err := loadbalancers.Update(client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab", loadbalancers.UpdateOpts{ + actual, err := loadbalancers.Update(context.TODO(), client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab", loadbalancers.UpdateOpts{ Name: &name, Tags: &tags, }).Extract() @@ -212,7 +213,7 @@ func TestCascadingDeleteLoadbalancer(t *testing.T) { th.AssertNoErr(t, err) th.AssertEquals(t, query, "?cascade=true") - err = loadbalancers.Delete(sc, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab", deleteOpts).ExtractErr() + err = loadbalancers.Delete(context.TODO(), sc, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab", deleteOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -222,7 +223,7 @@ func TestGetLoadbalancerStatsTree(t *testing.T) { HandleLoadbalancerGetStatsTree(t) client := fake.ServiceClient() - actual, err := loadbalancers.GetStats(client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").Extract() + actual, err := loadbalancers.GetStats(context.TODO(), client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -235,6 +236,6 @@ func TestFailoverLoadbalancer(t *testing.T) { defer th.TeardownHTTP() HandleLoadbalancerFailoverSuccessfully(t) - res := loadbalancers.Failover(fake.ServiceClient(), "36e08a3e-a78f-4b40-a229-1e7e23eee1ab") + res := loadbalancers.Failover(context.TODO(), fake.ServiceClient(), "36e08a3e-a78f-4b40-a229-1e7e23eee1ab") th.AssertNoErr(t, res.Err) } diff --git a/openstack/loadbalancer/v2/monitors/requests.go b/openstack/loadbalancer/v2/monitors/requests.go index 4d3dec2434..f7c3db49b3 100644 --- a/openstack/loadbalancer/v2/monitors/requests.go +++ b/openstack/loadbalancer/v2/monitors/requests.go @@ -1,6 +1,7 @@ package monitors import ( + "context" "fmt" "github.com/gophercloud/gophercloud/v2" @@ -167,20 +168,20 @@ Here is an example config struct to use when creating a HTTP(S) Monitor: CreateOpts{Type: TypeHTTP, Delay: 20, Timeout: 10, MaxRetries: 3, HttpMethod: "HEAD", ExpectedCodes: "200", PoolID: "2c946bfc-1804-43ab-a2ff-58f6a762b505"} */ -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToMonitorCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular Health Monitor based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -240,14 +241,14 @@ func (opts UpdateOpts) ToMonitorUpdateMap() (map[string]interface{}, error) { // Update is an operation which modifies the attributes of the specified // Monitor. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToMonitorUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -255,8 +256,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete will permanently delete a particular Monitor based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/loadbalancer/v2/monitors/testing/requests_test.go b/openstack/loadbalancer/v2/monitors/testing/requests_test.go index bd8da6aa46..0ca13f360e 100644 --- a/openstack/loadbalancer/v2/monitors/testing/requests_test.go +++ b/openstack/loadbalancer/v2/monitors/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/monitors" @@ -15,7 +16,7 @@ func TestListHealthmonitors(t *testing.T) { HandleHealthmonitorListSuccessfully(t) pages := 0 - err := monitors.List(fake.ServiceClient(), monitors.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := monitors.List(fake.ServiceClient(), monitors.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := monitors.ExtractMonitors(page) @@ -44,7 +45,7 @@ func TestListAllHealthmonitors(t *testing.T) { defer th.TeardownHTTP() HandleHealthmonitorListSuccessfully(t) - allPages, err := monitors.List(fake.ServiceClient(), monitors.ListOpts{}).AllPages() + allPages, err := monitors.List(fake.ServiceClient(), monitors.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := monitors.ExtractMonitors(allPages) th.AssertNoErr(t, err) @@ -57,7 +58,7 @@ func TestCreateHealthmonitor(t *testing.T) { defer th.TeardownHTTP() HandleHealthmonitorCreationSuccessfully(t, SingleHealthmonitorBody) - actual, err := monitors.Create(fake.ServiceClient(), monitors.CreateOpts{ + actual, err := monitors.Create(context.TODO(), fake.ServiceClient(), monitors.CreateOpts{ Type: "HTTP", Name: "db", PoolID: "84f1b61f-58c4-45bf-a8a9-2dafb9e5214d", @@ -76,11 +77,11 @@ func TestCreateHealthmonitor(t *testing.T) { } func TestRequiredCreateOpts(t *testing.T) { - res := monitors.Create(fake.ServiceClient(), monitors.CreateOpts{}) + res := monitors.Create(context.TODO(), fake.ServiceClient(), monitors.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = monitors.Create(fake.ServiceClient(), monitors.CreateOpts{Type: monitors.TypeHTTP}) + res = monitors.Create(context.TODO(), fake.ServiceClient(), monitors.CreateOpts{Type: monitors.TypeHTTP}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -92,7 +93,7 @@ func TestGetHealthmonitor(t *testing.T) { HandleHealthmonitorGetSuccessfully(t) client := fake.ServiceClient() - actual, err := monitors.Get(client, "5d4b5228-33b0-4e60-b225-9b727c1a20e7").Extract() + actual, err := monitors.Get(context.TODO(), client, "5d4b5228-33b0-4e60-b225-9b727c1a20e7").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -105,7 +106,7 @@ func TestDeleteHealthmonitor(t *testing.T) { defer th.TeardownHTTP() HandleHealthmonitorDeletionSuccessfully(t) - res := monitors.Delete(fake.ServiceClient(), "5d4b5228-33b0-4e60-b225-9b727c1a20e7") + res := monitors.Delete(context.TODO(), fake.ServiceClient(), "5d4b5228-33b0-4e60-b225-9b727c1a20e7") th.AssertNoErr(t, res.Err) } @@ -116,7 +117,7 @@ func TestUpdateHealthmonitor(t *testing.T) { client := fake.ServiceClient() name := "NewHealthmonitorName" - actual, err := monitors.Update(client, "5d4b5228-33b0-4e60-b225-9b727c1a20e7", monitors.UpdateOpts{ + actual, err := monitors.Update(context.TODO(), client, "5d4b5228-33b0-4e60-b225-9b727c1a20e7", monitors.UpdateOpts{ Name: &name, Delay: 3, Timeout: 20, @@ -133,7 +134,7 @@ func TestUpdateHealthmonitor(t *testing.T) { } func TestDelayMustBeGreaterOrEqualThanTimeout(t *testing.T) { - _, err := monitors.Create(fake.ServiceClient(), monitors.CreateOpts{ + _, err := monitors.Create(context.TODO(), fake.ServiceClient(), monitors.CreateOpts{ Type: "HTTP", PoolID: "d459f7d8-c6ee-439d-8713-d3fc08aeed8d", Delay: 1, @@ -147,7 +148,7 @@ func TestDelayMustBeGreaterOrEqualThanTimeout(t *testing.T) { t.Fatalf("Expected error, got none") } - _, err = monitors.Update(fake.ServiceClient(), "453105b9-1754-413f-aab1-55f1af620750", monitors.UpdateOpts{ + _, err = monitors.Update(context.TODO(), fake.ServiceClient(), "453105b9-1754-413f-aab1-55f1af620750", monitors.UpdateOpts{ Delay: 1, Timeout: 10, }).Extract() diff --git a/openstack/loadbalancer/v2/pools/requests.go b/openstack/loadbalancer/v2/pools/requests.go index 494bc9e6f7..d60568a06e 100644 --- a/openstack/loadbalancer/v2/pools/requests.go +++ b/openstack/loadbalancer/v2/pools/requests.go @@ -1,6 +1,8 @@ package pools import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/monitors" "github.com/gophercloud/gophercloud/v2/pagination" @@ -149,20 +151,20 @@ func (opts CreateOpts) ToPoolCreateMap() (map[string]interface{}, error) { // Create accepts a CreateOpts struct and uses the values to create a new // load balancer pool. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToPoolCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular pool based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -204,13 +206,13 @@ func (opts UpdateOpts) ToPoolUpdateMap() (map[string]interface{}, error) { } // Update allows pools to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToPoolUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -218,8 +220,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete will permanently delete a particular pool based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -333,20 +335,20 @@ func (opts CreateMemberOpts) ToMemberCreateMap() (map[string]interface{}, error) } // CreateMember will create and associate a Member with a particular Pool. -func CreateMember(c *gophercloud.ServiceClient, poolID string, opts CreateMemberOptsBuilder) (r CreateMemberResult) { +func CreateMember(ctx context.Context, c *gophercloud.ServiceClient, poolID string, opts CreateMemberOptsBuilder) (r CreateMemberResult) { b, err := opts.ToMemberCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(memberRootURL(c, poolID), b, &r.Body, nil) + resp, err := c.Post(ctx, memberRootURL(c, poolID), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetMember retrieves a particular Pool Member based on its unique ID. -func GetMember(c *gophercloud.ServiceClient, poolID string, memberID string) (r GetMemberResult) { - resp, err := c.Get(memberResourceURL(c, poolID, memberID), &r.Body, nil) +func GetMember(ctx context.Context, c *gophercloud.ServiceClient, poolID string, memberID string) (r GetMemberResult) { + resp, err := c.Get(ctx, memberResourceURL(c, poolID, memberID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -395,13 +397,13 @@ func (opts UpdateMemberOpts) ToMemberUpdateMap() (map[string]interface{}, error) } // Update allows Member to be updated. -func UpdateMember(c *gophercloud.ServiceClient, poolID string, memberID string, opts UpdateMemberOptsBuilder) (r UpdateMemberResult) { +func UpdateMember(ctx context.Context, c *gophercloud.ServiceClient, poolID string, memberID string, opts UpdateMemberOptsBuilder) (r UpdateMemberResult) { b, err := opts.ToMemberUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(memberResourceURL(c, poolID, memberID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, memberResourceURL(c, poolID, memberID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -474,7 +476,7 @@ func (opts BatchUpdateMemberOpts) ToBatchMemberUpdateMap() (map[string]interface } // BatchUpdateMembers updates the pool members in batch -func BatchUpdateMembers(c *gophercloud.ServiceClient, poolID string, opts []BatchUpdateMemberOpts) (r UpdateMembersResult) { +func BatchUpdateMembers(ctx context.Context, c *gophercloud.ServiceClient, poolID string, opts []BatchUpdateMemberOpts) (r UpdateMembersResult) { members := []map[string]interface{}{} for _, opt := range opts { b, err := opt.ToBatchMemberUpdateMap() @@ -487,14 +489,14 @@ func BatchUpdateMembers(c *gophercloud.ServiceClient, poolID string, opts []Batc b := map[string]interface{}{"members": members} - resp, err := c.Put(memberRootURL(c, poolID), b, nil, &gophercloud.RequestOpts{OkCodes: []int{202}}) + resp, err := c.Put(ctx, memberRootURL(c, poolID), b, nil, &gophercloud.RequestOpts{OkCodes: []int{202}}) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // DeleteMember will remove and disassociate a Member from a particular Pool. -func DeleteMember(c *gophercloud.ServiceClient, poolID string, memberID string) (r DeleteMemberResult) { - resp, err := c.Delete(memberResourceURL(c, poolID, memberID), nil) +func DeleteMember(ctx context.Context, c *gophercloud.ServiceClient, poolID string, memberID string) (r DeleteMemberResult) { + resp, err := c.Delete(ctx, memberResourceURL(c, poolID, memberID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/loadbalancer/v2/pools/testing/requests_test.go b/openstack/loadbalancer/v2/pools/testing/requests_test.go index 35a1ab2658..6e3126329a 100644 --- a/openstack/loadbalancer/v2/pools/testing/requests_test.go +++ b/openstack/loadbalancer/v2/pools/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/pools" @@ -15,7 +16,7 @@ func TestListPools(t *testing.T) { HandlePoolListSuccessfully(t) pages := 0 - err := pools.List(fake.ServiceClient(), pools.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := pools.List(fake.ServiceClient(), pools.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := pools.ExtractPools(page) @@ -44,7 +45,7 @@ func TestListAllPools(t *testing.T) { defer th.TeardownHTTP() HandlePoolListSuccessfully(t) - allPages, err := pools.List(fake.ServiceClient(), pools.ListOpts{}).AllPages() + allPages, err := pools.List(fake.ServiceClient(), pools.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := pools.ExtractPools(allPages) th.AssertNoErr(t, err) @@ -57,7 +58,7 @@ func TestCreatePool(t *testing.T) { defer th.TeardownHTTP() HandlePoolCreationSuccessfully(t, SinglePoolBody) - actual, err := pools.Create(fake.ServiceClient(), pools.CreateOpts{ + actual, err := pools.Create(context.TODO(), fake.ServiceClient(), pools.CreateOpts{ LBMethod: pools.LBMethodRoundRobin, Protocol: "HTTP", Name: "Example pool", @@ -75,7 +76,7 @@ func TestGetPool(t *testing.T) { HandlePoolGetSuccessfully(t) client := fake.ServiceClient() - actual, err := pools.Get(client, "c3741b06-df4d-4715-b142-276b6bce75ab").Extract() + actual, err := pools.Get(context.TODO(), client, "c3741b06-df4d-4715-b142-276b6bce75ab").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -88,7 +89,7 @@ func TestDeletePool(t *testing.T) { defer th.TeardownHTTP() HandlePoolDeletionSuccessfully(t) - res := pools.Delete(fake.ServiceClient(), "c3741b06-df4d-4715-b142-276b6bce75ab") + res := pools.Delete(context.TODO(), fake.ServiceClient(), "c3741b06-df4d-4715-b142-276b6bce75ab") th.AssertNoErr(t, res.Err) } @@ -99,7 +100,7 @@ func TestUpdatePool(t *testing.T) { client := fake.ServiceClient() name := "NewPoolName" - actual, err := pools.Update(client, "c3741b06-df4d-4715-b142-276b6bce75ab", pools.UpdateOpts{ + actual, err := pools.Update(context.TODO(), client, "c3741b06-df4d-4715-b142-276b6bce75ab", pools.UpdateOpts{ Name: &name, LBMethod: pools.LBMethodLeastConnections, }).Extract() @@ -111,11 +112,11 @@ func TestUpdatePool(t *testing.T) { } func TestRequiredPoolCreateOpts(t *testing.T) { - res := pools.Create(fake.ServiceClient(), pools.CreateOpts{}) + res := pools.Create(context.TODO(), fake.ServiceClient(), pools.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = pools.Create(fake.ServiceClient(), pools.CreateOpts{ + res = pools.Create(context.TODO(), fake.ServiceClient(), pools.CreateOpts{ LBMethod: pools.LBMethod("invalid"), Protocol: pools.ProtocolHTTPS, LoadbalancerID: "69055154-f603-4a28-8951-7cc2d9e54a9a", @@ -124,7 +125,7 @@ func TestRequiredPoolCreateOpts(t *testing.T) { t.Fatalf("Expected error, but got none") } - res = pools.Create(fake.ServiceClient(), pools.CreateOpts{ + res = pools.Create(context.TODO(), fake.ServiceClient(), pools.CreateOpts{ LBMethod: pools.LBMethodRoundRobin, Protocol: pools.Protocol("invalid"), LoadbalancerID: "69055154-f603-4a28-8951-7cc2d9e54a9a", @@ -133,7 +134,7 @@ func TestRequiredPoolCreateOpts(t *testing.T) { t.Fatalf("Expected error, but got none") } - res = pools.Create(fake.ServiceClient(), pools.CreateOpts{ + res = pools.Create(context.TODO(), fake.ServiceClient(), pools.CreateOpts{ LBMethod: pools.LBMethodRoundRobin, Protocol: pools.ProtocolHTTPS, }) @@ -148,7 +149,7 @@ func TestListMembers(t *testing.T) { HandleMemberListSuccessfully(t) pages := 0 - err := pools.ListMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.ListMembersOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := pools.ListMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.ListMembersOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := pools.ExtractMembers(page) @@ -177,7 +178,7 @@ func TestListAllMembers(t *testing.T) { defer th.TeardownHTTP() HandleMemberListSuccessfully(t) - allPages, err := pools.ListMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.ListMembersOpts{}).AllPages() + allPages, err := pools.ListMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.ListMembersOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := pools.ExtractMembers(allPages) th.AssertNoErr(t, err) @@ -191,7 +192,7 @@ func TestCreateMember(t *testing.T) { HandleMemberCreationSuccessfully(t, SingleMemberBody) weight := 10 - actual, err := pools.CreateMember(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{ + actual, err := pools.CreateMember(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{ Name: "db", SubnetID: "1981f108-3c48-48d2-b908-30f7d28532c9", ProjectID: "2ffc6e22aae24e4795f87155d24c896f", @@ -205,19 +206,19 @@ func TestCreateMember(t *testing.T) { } func TestRequiredMemberCreateOpts(t *testing.T) { - res := pools.CreateMember(fake.ServiceClient(), "", pools.CreateMemberOpts{}) + res := pools.CreateMember(context.TODO(), fake.ServiceClient(), "", pools.CreateMemberOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = pools.CreateMember(fake.ServiceClient(), "", pools.CreateMemberOpts{Address: "1.2.3.4", ProtocolPort: 80}) + res = pools.CreateMember(context.TODO(), fake.ServiceClient(), "", pools.CreateMemberOpts{Address: "1.2.3.4", ProtocolPort: 80}) if res.Err == nil { t.Fatalf("Expected error, but got none") } - res = pools.CreateMember(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{ProtocolPort: 80}) + res = pools.CreateMember(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{ProtocolPort: 80}) if res.Err == nil { t.Fatalf("Expected error, but got none") } - res = pools.CreateMember(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{Address: "1.2.3.4"}) + res = pools.CreateMember(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{Address: "1.2.3.4"}) if res.Err == nil { t.Fatalf("Expected error, but got none") } @@ -229,7 +230,7 @@ func TestGetMember(t *testing.T) { HandleMemberGetSuccessfully(t) client := fake.ServiceClient() - actual, err := pools.GetMember(client, "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf").Extract() + actual, err := pools.GetMember(context.TODO(), client, "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -242,7 +243,7 @@ func TestDeleteMember(t *testing.T) { defer th.TeardownHTTP() HandleMemberDeletionSuccessfully(t) - res := pools.DeleteMember(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf") + res := pools.DeleteMember(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf") th.AssertNoErr(t, res.Err) } @@ -254,7 +255,7 @@ func TestUpdateMember(t *testing.T) { weight := 4 client := fake.ServiceClient() name := "newMemberName" - actual, err := pools.UpdateMember(client, "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf", pools.UpdateMemberOpts{ + actual, err := pools.UpdateMember(context.TODO(), client, "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf", pools.UpdateMemberOpts{ Name: &name, Weight: &weight, }).Extract() @@ -292,7 +293,7 @@ func TestBatchUpdateMembers(t *testing.T) { } members := []pools.BatchUpdateMemberOpts{member1, member2} - res := pools.BatchUpdateMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", members) + res := pools.BatchUpdateMembers(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", members) th.AssertNoErr(t, res.Err) } @@ -301,7 +302,7 @@ func TestEmptyBatchUpdateMembers(t *testing.T) { defer th.TeardownHTTP() HandleEmptyMembersUpdateSuccessfully(t) - res := pools.BatchUpdateMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", []pools.BatchUpdateMemberOpts{}) + res := pools.BatchUpdateMembers(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", []pools.BatchUpdateMemberOpts{}) th.AssertNoErr(t, res.Err) } @@ -310,7 +311,7 @@ func TestRequiredBatchUpdateMemberOpts(t *testing.T) { defer th.TeardownHTTP() name := "web-server-1" - res := pools.BatchUpdateMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", []pools.BatchUpdateMemberOpts{ + res := pools.BatchUpdateMembers(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", []pools.BatchUpdateMemberOpts{ { Name: &name, }, @@ -319,7 +320,7 @@ func TestRequiredBatchUpdateMemberOpts(t *testing.T) { t.Fatalf("Expected error, but got none") } - res = pools.BatchUpdateMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", []pools.BatchUpdateMemberOpts{ + res = pools.BatchUpdateMembers(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", []pools.BatchUpdateMemberOpts{ { Address: "192.0.2.17", Name: &name, @@ -329,7 +330,7 @@ func TestRequiredBatchUpdateMemberOpts(t *testing.T) { t.Fatalf("Expected error, but got none") } - res = pools.BatchUpdateMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", []pools.BatchUpdateMemberOpts{ + res = pools.BatchUpdateMembers(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", []pools.BatchUpdateMemberOpts{ { ProtocolPort: 80, Name: &name, diff --git a/openstack/loadbalancer/v2/providers/testing/requests_test.go b/openstack/loadbalancer/v2/providers/testing/requests_test.go index a831f828b2..c5a5278aae 100644 --- a/openstack/loadbalancer/v2/providers/testing/requests_test.go +++ b/openstack/loadbalancer/v2/providers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/loadbalancer/v2/providers" @@ -15,7 +16,7 @@ func TestListProviders(t *testing.T) { HandleProviderListSuccessfully(t) pages := 0 - err := providers.List(fake.ServiceClient(), providers.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := providers.List(fake.ServiceClient(), providers.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := providers.ExtractProviders(page) @@ -44,7 +45,7 @@ func TestListAllProviders(t *testing.T) { defer th.TeardownHTTP() HandleProviderListSuccessfully(t) - allPages, err := providers.List(fake.ServiceClient(), providers.ListOpts{}).AllPages() + allPages, err := providers.List(fake.ServiceClient(), providers.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := providers.ExtractProviders(allPages) th.AssertNoErr(t, err) diff --git a/openstack/loadbalancer/v2/quotas/requests.go b/openstack/loadbalancer/v2/quotas/requests.go index 01696d1055..1169785be7 100644 --- a/openstack/loadbalancer/v2/quotas/requests.go +++ b/openstack/loadbalancer/v2/quotas/requests.go @@ -1,12 +1,14 @@ package quotas import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // Get returns load balancer Quotas for a project. -func Get(client *gophercloud.ServiceClient, projectID string) (r GetResult) { - resp, err := client.Get(getURL(client, projectID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, projectID string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, projectID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -48,13 +50,13 @@ func (opts UpdateOpts) ToQuotaUpdateMap() (map[string]interface{}, error) { // Update accepts a UpdateOpts struct and updates an existing load balancer Quotas using the // values provided. -func Update(c *gophercloud.ServiceClient, projectID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, projectID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToQuotaUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(updateURL(c, projectID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, projectID), b, &r.Body, &gophercloud.RequestOpts{ // allow 200 (neutron/lbaasv2) and 202 (octavia) OkCodes: []int{200, 202}, }) diff --git a/openstack/loadbalancer/v2/quotas/testing/requests_test.go b/openstack/loadbalancer/v2/quotas/testing/requests_test.go index fe2b44bb3f..64c819aecf 100644 --- a/openstack/loadbalancer/v2/quotas/testing/requests_test.go +++ b/openstack/loadbalancer/v2/quotas/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -25,7 +26,7 @@ func TestGet_1(t *testing.T) { fmt.Fprintf(w, GetResponseRaw_1) }) - q, err := quotas.Get(fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76").Extract() + q, err := quotas.Get(context.TODO(), fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, q, &GetResponse) } @@ -44,7 +45,7 @@ func TestGet_2(t *testing.T) { fmt.Fprintf(w, GetResponseRaw_2) }) - q, err := quotas.Get(fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76").Extract() + q, err := quotas.Get(context.TODO(), fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, q, &GetResponse) } @@ -63,7 +64,7 @@ func TestUpdate_1(t *testing.T) { fmt.Fprintf(w, UpdateRequestResponseRaw_1) }) - q, err := quotas.Update(fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76", quotas.UpdateOpts{ + q, err := quotas.Update(context.TODO(), fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76", quotas.UpdateOpts{ Loadbalancer: gophercloud.IntToPointer(20), Listener: gophercloud.IntToPointer(40), Member: gophercloud.IntToPointer(200), @@ -91,7 +92,7 @@ func TestUpdate_2(t *testing.T) { fmt.Fprintf(w, UpdateRequestResponseRaw_2) }) - q, err := quotas.Update(fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76", quotas.UpdateOpts{ + q, err := quotas.Update(context.TODO(), fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76", quotas.UpdateOpts{ Loadbalancer: gophercloud.IntToPointer(20), Listener: gophercloud.IntToPointer(40), Member: gophercloud.IntToPointer(200), diff --git a/openstack/messaging/v2/claims/requests.go b/openstack/messaging/v2/claims/requests.go index 91f019adfa..c216b1b7fd 100644 --- a/openstack/messaging/v2/claims/requests.go +++ b/openstack/messaging/v2/claims/requests.go @@ -1,6 +1,8 @@ package claims import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) @@ -38,7 +40,7 @@ func (opts CreateOpts) ToClaimCreateRequest() (map[string]interface{}, string, e } // Create creates a Claim that claims messages on a specified queue. -func Create(client *gophercloud.ServiceClient, queueName string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, queueName string, opts CreateOptsBuilder) (r CreateResult) { b, q, err := opts.ToClaimCreateRequest() if err != nil { r.Err = err @@ -50,7 +52,7 @@ func Create(client *gophercloud.ServiceClient, queueName string, opts CreateOpts url += q } - resp, err := client.Post(url, b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, url, b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201, 204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -58,8 +60,8 @@ func Create(client *gophercloud.ServiceClient, queueName string, opts CreateOpts } // Get queries the specified claim for the specified queue. -func Get(client *gophercloud.ServiceClient, queueName string, claimID string) (r GetResult) { - resp, err := client.Get(getURL(client, queueName, claimID), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, queueName string, claimID string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, queueName, claimID), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -92,13 +94,13 @@ func (opts UpdateOpts) ToClaimUpdateMap() (map[string]interface{}, error) { } // Update will update the options for a specified claim. -func Update(client *gophercloud.ServiceClient, queueName string, claimID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, queueName string, claimID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToClaimUpdateMap() if err != nil { r.Err = err return r } - resp, err := client.Patch(updateURL(client, queueName, claimID), &b, nil, &gophercloud.RequestOpts{ + resp, err := client.Patch(ctx, updateURL(client, queueName, claimID), &b, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -106,8 +108,8 @@ func Update(client *gophercloud.ServiceClient, queueName string, claimID string, } // Delete will delete a Claim for a specified Queue. -func Delete(client *gophercloud.ServiceClient, queueName string, claimID string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, queueName, claimID), &gophercloud.RequestOpts{ +func Delete(ctx context.Context, client *gophercloud.ServiceClient, queueName string, claimID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, queueName, claimID), &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/messaging/v2/claims/testing/requests_test.go b/openstack/messaging/v2/claims/testing/requests_test.go index 7a271c61f9..8040796601 100644 --- a/openstack/messaging/v2/claims/testing/requests_test.go +++ b/openstack/messaging/v2/claims/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/messaging/v2/claims" @@ -19,7 +20,7 @@ func TestCreate(t *testing.T) { Limit: 10, } - actual, err := claims.Create(fake.ServiceClient(), QueueName, createOpts).Extract() + actual, err := claims.Create(context.TODO(), fake.ServiceClient(), QueueName, createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, CreatedClaim, actual) } @@ -35,7 +36,7 @@ func TestCreateNoContent(t *testing.T) { Limit: 10, } - actual, err := claims.Create(fake.ServiceClient(), QueueName, createOpts).Extract() + actual, err := claims.Create(context.TODO(), fake.ServiceClient(), QueueName, createOpts).Extract() th.AssertNoErr(t, err) var expected []claims.Messages th.CheckDeepEquals(t, expected, actual) @@ -46,7 +47,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t) - actual, err := claims.Get(fake.ServiceClient(), QueueName, ClaimID).Extract() + actual, err := claims.Get(context.TODO(), fake.ServiceClient(), QueueName, ClaimID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &FirstClaim, actual) } @@ -61,7 +62,7 @@ func TestUpdate(t *testing.T) { TTL: 1200, } - err := claims.Update(fake.ServiceClient(), QueueName, ClaimID, updateOpts).ExtractErr() + err := claims.Update(context.TODO(), fake.ServiceClient(), QueueName, ClaimID, updateOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -70,6 +71,6 @@ func TestDelete(t *testing.T) { defer th.TeardownHTTP() HandleDeleteSuccessfully(t) - err := claims.Delete(fake.ServiceClient(), QueueName, ClaimID).ExtractErr() + err := claims.Delete(context.TODO(), fake.ServiceClient(), QueueName, ClaimID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/messaging/v2/messages/requests.go b/openstack/messaging/v2/messages/requests.go index 9286e96934..221cb0b3ac 100644 --- a/openstack/messaging/v2/messages/requests.go +++ b/openstack/messaging/v2/messages/requests.go @@ -1,6 +1,8 @@ package messages import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -91,14 +93,14 @@ func (opts CreateOpts) ToMap() (map[string]interface{}, error) { } // Create creates a message on a specific queue based of off queue name. -func Create(client *gophercloud.ServiceClient, queueName string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, queueName string, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToMessageCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client, queueName), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client, queueName), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -123,7 +125,7 @@ func (opts DeleteMessagesOpts) ToMessagesDeleteQuery() (string, error) { } // DeleteMessages deletes multiple messages based off of ID. -func DeleteMessages(client *gophercloud.ServiceClient, queueName string, opts DeleteMessagesOptsBuilder) (r DeleteResult) { +func DeleteMessages(ctx context.Context, client *gophercloud.ServiceClient, queueName string, opts DeleteMessagesOptsBuilder) (r DeleteResult) { url := deleteURL(client, queueName) if opts != nil { query, err := opts.ToMessagesDeleteQuery() @@ -133,7 +135,7 @@ func DeleteMessages(client *gophercloud.ServiceClient, queueName string, opts De } url += query } - resp, err := client.Delete(url, &gophercloud.RequestOpts{ + resp, err := client.Delete(ctx, url, &gophercloud.RequestOpts{ OkCodes: []int{200, 204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -158,7 +160,7 @@ func (opts PopMessagesOpts) ToMessagesPopQuery() (string, error) { } // PopMessages deletes and returns multiple messages based off of number of messages. -func PopMessages(client *gophercloud.ServiceClient, queueName string, opts PopMessagesOptsBuilder) (r PopResult) { +func PopMessages(ctx context.Context, client *gophercloud.ServiceClient, queueName string, opts PopMessagesOptsBuilder) (r PopResult) { url := deleteURL(client, queueName) if opts != nil { query, err := opts.ToMessagesPopQuery() @@ -168,7 +170,7 @@ func PopMessages(client *gophercloud.ServiceClient, queueName string, opts PopMe } url += query } - resp, err := client.Delete(url, &gophercloud.RequestOpts{ + resp, err := client.Delete(ctx, url, &gophercloud.RequestOpts{ JSONResponse: &r.Body, OkCodes: []int{200, 204}, }) @@ -194,7 +196,7 @@ func (opts GetMessagesOpts) ToGetMessagesListQuery() (string, error) { } // GetMessages requests details on a multiple messages, by IDs. -func GetMessages(client *gophercloud.ServiceClient, queueName string, opts GetMessagesOptsBuilder) (r GetMessagesResult) { +func GetMessages(ctx context.Context, client *gophercloud.ServiceClient, queueName string, opts GetMessagesOptsBuilder) (r GetMessagesResult) { url := getURL(client, queueName) if opts != nil { query, err := opts.ToGetMessagesListQuery() @@ -204,7 +206,7 @@ func GetMessages(client *gophercloud.ServiceClient, queueName string, opts GetMe } url += query } - resp, err := client.Get(url, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -212,8 +214,8 @@ func GetMessages(client *gophercloud.ServiceClient, queueName string, opts GetMe } // Get requests details on a single message, by ID. -func Get(client *gophercloud.ServiceClient, queueName string, messageID string) (r GetResult) { - resp, err := client.Get(messageURL(client, queueName, messageID), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, queueName string, messageID string) (r GetResult) { + resp, err := client.Get(ctx, messageURL(client, queueName, messageID), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -239,7 +241,7 @@ func (opts DeleteOpts) ToMessageDeleteQuery() (string, error) { } // Delete deletes a specific message from the queue. -func Delete(client *gophercloud.ServiceClient, queueName string, messageID string, opts DeleteOptsBuilder) (r DeleteResult) { +func Delete(ctx context.Context, client *gophercloud.ServiceClient, queueName string, messageID string, opts DeleteOptsBuilder) (r DeleteResult) { url := DeleteMessageURL(client, queueName, messageID) if opts != nil { query, err := opts.ToMessageDeleteQuery() @@ -249,7 +251,7 @@ func Delete(client *gophercloud.ServiceClient, queueName string, messageID strin } url += query } - resp, err := client.Delete(url, &gophercloud.RequestOpts{ + resp, err := client.Delete(ctx, url, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/messaging/v2/messages/testing/requests_test.go b/openstack/messaging/v2/messages/testing/requests_test.go index e415dbafe3..0bcc73c7c7 100644 --- a/openstack/messaging/v2/messages/testing/requests_test.go +++ b/openstack/messaging/v2/messages/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/messaging/v2/messages" @@ -19,7 +20,7 @@ func TestList(t *testing.T) { } count := 0 - err := messages.List(fake.ServiceClient(), QueueName, listOpts).EachPage(func(page pagination.Page) (bool, error) { + err := messages.List(fake.ServiceClient(), QueueName, listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { actual, err := messages.ExtractMessages(page) th.AssertNoErr(t, err) @@ -56,7 +57,7 @@ func TestCreate(t *testing.T) { }, } - actual, err := messages.Create(fake.ServiceClient(), QueueName, createOpts).Extract() + actual, err := messages.Create(context.TODO(), fake.ServiceClient(), QueueName, createOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, ExpectedResources, actual) } @@ -70,7 +71,7 @@ func TestGetMessages(t *testing.T) { IDs: []string{"9988776655"}, } - actual, err := messages.GetMessages(fake.ServiceClient(), QueueName, getMessagesOpts).Extract() + actual, err := messages.GetMessages(context.TODO(), fake.ServiceClient(), QueueName, getMessagesOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, ExpectedMessagesSet, actual) } @@ -80,7 +81,7 @@ func TestGetMessage(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t) - actual, err := messages.Get(fake.ServiceClient(), QueueName, MessageID).Extract() + actual, err := messages.Get(context.TODO(), fake.ServiceClient(), QueueName, MessageID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, FirstMessage, actual) } @@ -94,7 +95,7 @@ func TestDeleteMessages(t *testing.T) { IDs: []string{"9988776655"}, } - err := messages.DeleteMessages(fake.ServiceClient(), QueueName, deleteMessagesOpts).ExtractErr() + err := messages.DeleteMessages(context.TODO(), fake.ServiceClient(), QueueName, deleteMessagesOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -107,7 +108,7 @@ func TestPopMessages(t *testing.T) { Pop: 1, } - actual, err := messages.PopMessages(fake.ServiceClient(), QueueName, popMessagesOpts).Extract() + actual, err := messages.PopMessages(context.TODO(), fake.ServiceClient(), QueueName, popMessagesOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, ExpectedPopMessage, actual) } @@ -121,6 +122,6 @@ func TestDeleteMessage(t *testing.T) { ClaimID: "12345", } - err := messages.Delete(fake.ServiceClient(), QueueName, MessageID, deleteOpts).ExtractErr() + err := messages.Delete(context.TODO(), fake.ServiceClient(), QueueName, MessageID, deleteOpts).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/messaging/v2/queues/requests.go b/openstack/messaging/v2/queues/requests.go index 9bc02f8327..c82e43e56b 100644 --- a/openstack/messaging/v2/queues/requests.go +++ b/openstack/messaging/v2/queues/requests.go @@ -1,6 +1,8 @@ package queues import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -115,7 +117,7 @@ func (opts CreateOpts) ToQueueCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new queue. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToQueueCreateMap() if err != nil { r.Err = err @@ -125,7 +127,7 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create queueName := b["queue_name"].(string) delete(b, "queue_name") - resp, err := client.Put(createURL(client, queueName), b, r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, createURL(client, queueName), b, r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201, 204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -175,8 +177,8 @@ func (opts UpdateOpts) ToMap() (map[string]interface{}, error) { } // Update Updates the specified queue. -func Update(client *gophercloud.ServiceClient, queueName string, opts UpdateOptsBuilder) (r UpdateResult) { - resp, err := client.Patch(updateURL(client, queueName), opts, &r.Body, &gophercloud.RequestOpts{ +func Update(ctx context.Context, client *gophercloud.ServiceClient, queueName string, opts UpdateOptsBuilder) (r UpdateResult) { + resp, err := client.Patch(ctx, updateURL(client, queueName), opts, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 204}, MoreHeaders: map[string]string{ "Content-Type": "application/openstack-messaging-v2.0-json-patch"}, @@ -186,8 +188,8 @@ func Update(client *gophercloud.ServiceClient, queueName string, opts UpdateOpts } // Get requests details on a single queue, by name. -func Get(client *gophercloud.ServiceClient, queueName string) (r GetResult) { - resp, err := client.Get(getURL(client, queueName), &r.Body, &gophercloud.RequestOpts{ +func Get(ctx context.Context, client *gophercloud.ServiceClient, queueName string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, queueName), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -195,8 +197,8 @@ func Get(client *gophercloud.ServiceClient, queueName string) (r GetResult) { } // Delete deletes the specified queue. -func Delete(client *gophercloud.ServiceClient, queueName string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, queueName), &gophercloud.RequestOpts{ +func Delete(ctx context.Context, client *gophercloud.ServiceClient, queueName string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, queueName), &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -204,8 +206,8 @@ func Delete(client *gophercloud.ServiceClient, queueName string) (r DeleteResult } // GetStats returns statistics for the specified queue. -func GetStats(client *gophercloud.ServiceClient, queueName string) (r StatResult) { - resp, err := client.Get(statURL(client, queueName), &r.Body, &gophercloud.RequestOpts{ +func GetStats(ctx context.Context, client *gophercloud.ServiceClient, queueName string) (r StatResult) { + resp, err := client.Get(ctx, statURL(client, queueName), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -252,13 +254,13 @@ func (opts ShareOpts) ToQueueShareMap() (map[string]interface{}, error) { } // Share creates a pre-signed URL for a given queue. -func Share(client *gophercloud.ServiceClient, queueName string, opts ShareOptsBuilder) (r ShareResult) { +func Share(ctx context.Context, client *gophercloud.ServiceClient, queueName string, opts ShareOptsBuilder) (r ShareResult) { b, err := opts.ToQueueShareMap() if err != nil { r.Err = err return r } - resp, err := client.Post(shareURL(client, queueName), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, shareURL(client, queueName), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -294,14 +296,14 @@ func (opts PurgeOpts) ToQueuePurgeMap() (map[string]interface{}, error) { } // Purge purges particular resource of the queue. -func Purge(client *gophercloud.ServiceClient, queueName string, opts PurgeOptsBuilder) (r PurgeResult) { +func Purge(ctx context.Context, client *gophercloud.ServiceClient, queueName string, opts PurgeOptsBuilder) (r PurgeResult) { b, err := opts.ToQueuePurgeMap() if err != nil { r.Err = err return r } - resp, err := client.Post(purgeURL(client, queueName), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, purgeURL(client, queueName), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/messaging/v2/queues/testing/requests_test.go b/openstack/messaging/v2/queues/testing/requests_test.go index 6597e8a953..3acd118eb3 100644 --- a/openstack/messaging/v2/queues/testing/requests_test.go +++ b/openstack/messaging/v2/queues/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/messaging/v2/queues" @@ -20,7 +21,7 @@ func TestList(t *testing.T) { } count := 0 - err := queues.List(fake.ServiceClient(), listOpts).EachPage(func(page pagination.Page) (bool, error) { + err := queues.List(fake.ServiceClient(), listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { actual, err := queues.ExtractQueues(page) th.AssertNoErr(t, err) countField, err := page.(queues.QueuePage).GetCount() @@ -55,7 +56,7 @@ func TestCreate(t *testing.T) { Extra: map[string]interface{}{"description": "Queue for unit testing."}, } - err := queues.Create(fake.ServiceClient(), createOpts).ExtractErr() + err := queues.Create(context.TODO(), fake.ServiceClient(), createOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -75,7 +76,7 @@ func TestUpdate(t *testing.T) { Extra: map[string]interface{}{"description": "Update queue description"}, } - actual, err := queues.Update(fake.ServiceClient(), QueueName, updateOpts).Extract() + actual, err := queues.Update(context.TODO(), fake.ServiceClient(), QueueName, updateOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, updatedQueueResult, actual) } @@ -85,7 +86,7 @@ func TestGet(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t) - actual, err := queues.Get(fake.ServiceClient(), QueueName).Extract() + actual, err := queues.Get(context.TODO(), fake.ServiceClient(), QueueName).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, QueueDetails, actual) } @@ -95,7 +96,7 @@ func TestDelete(t *testing.T) { defer th.TeardownHTTP() HandleDeleteSuccessfully(t) - err := queues.Delete(fake.ServiceClient(), QueueName).ExtractErr() + err := queues.Delete(context.TODO(), fake.ServiceClient(), QueueName).ExtractErr() th.AssertNoErr(t, err) } @@ -104,7 +105,7 @@ func TestGetStat(t *testing.T) { defer th.TeardownHTTP() HandleGetStatsSuccessfully(t) - actual, err := queues.GetStats(fake.ServiceClient(), QueueName).Extract() + actual, err := queues.GetStats(context.TODO(), fake.ServiceClient(), QueueName).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, ExpectedStats, actual) } @@ -120,7 +121,7 @@ func TestShare(t *testing.T) { Expires: "2016-09-01T00:00:00", } - actual, err := queues.Share(fake.ServiceClient(), QueueName, shareOpts).Extract() + actual, err := queues.Share(context.TODO(), fake.ServiceClient(), QueueName, shareOpts).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, ExpectedShare, actual) } @@ -134,6 +135,6 @@ func TestPurge(t *testing.T) { ResourceTypes: []queues.PurgeResource{queues.ResourceMessages, queues.ResourceSubscriptions}, } - err := queues.Purge(fake.ServiceClient(), QueueName, purgeOpts).ExtractErr() + err := queues.Purge(context.TODO(), fake.ServiceClient(), QueueName, purgeOpts).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/networking/v2/apiversions/testing/requests_test.go b/openstack/networking/v2/apiversions/testing/requests_test.go index 4f94f974d9..7f6f482883 100644 --- a/openstack/networking/v2/apiversions/testing/requests_test.go +++ b/openstack/networking/v2/apiversions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -41,7 +42,7 @@ func TestListVersions(t *testing.T) { count := 0 - apiversions.ListVersions(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + apiversions.ListVersions(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := apiversions.ExtractAPIVersions(page) if err != nil { @@ -74,7 +75,7 @@ func TestNonJSONCannotBeExtractedIntoAPIVersions(t *testing.T) { w.WriteHeader(http.StatusOK) }) - apiversions.ListVersions(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + apiversions.ListVersions(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { if _, err := apiversions.ExtractAPIVersions(page); err == nil { t.Fatalf("Expected error, got nil") } @@ -133,7 +134,7 @@ func TestAPIInfo(t *testing.T) { count := 0 - apiversions.ListVersionResources(fake.ServiceClient(), "v2.0").EachPage(func(page pagination.Page) (bool, error) { + apiversions.ListVersionResources(fake.ServiceClient(), "v2.0").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := apiversions.ExtractVersionResources(page) if err != nil { @@ -174,7 +175,7 @@ func TestNonJSONCannotBeExtractedIntoAPIVersionResources(t *testing.T) { w.WriteHeader(http.StatusOK) }) - apiversions.ListVersionResources(fake.ServiceClient(), "v2.0").EachPage(func(page pagination.Page) (bool, error) { + apiversions.ListVersionResources(fake.ServiceClient(), "v2.0").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { if _, err := apiversions.ExtractVersionResources(page); err == nil { t.Fatalf("Expected error, got nil") } diff --git a/openstack/networking/v2/extensions/agents/requests.go b/openstack/networking/v2/extensions/agents/requests.go index d3852c8a72..7b78647736 100644 --- a/openstack/networking/v2/extensions/agents/requests.go +++ b/openstack/networking/v2/extensions/agents/requests.go @@ -1,6 +1,8 @@ package agents import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -60,8 +62,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a specific agent based on its ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(getURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -84,13 +86,13 @@ func (opts UpdateOpts) ToAgentUpdateMap() (map[string]interface{}, error) { } // Update updates a specific agent based on its ID. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToAgentUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(updateURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -98,16 +100,16 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete deletes a specific agent based on its ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(getURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, getURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // ListDHCPNetworks returns a list of networks scheduled to a specific // dhcp agent. -func ListDHCPNetworks(c *gophercloud.ServiceClient, id string) (r ListDHCPNetworksResult) { - resp, err := c.Get(listDHCPNetworksURL(c, id), &r.Body, nil) +func ListDHCPNetworks(ctx context.Context, c *gophercloud.ServiceClient, id string) (r ListDHCPNetworksResult) { + resp, err := c.Get(ctx, listDHCPNetworksURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -130,13 +132,13 @@ func (opts ScheduleDHCPNetworkOpts) ToAgentScheduleDHCPNetworkMap() (map[string] } // ScheduleDHCPNetwork schedule a network to a DHCP agent. -func ScheduleDHCPNetwork(c *gophercloud.ServiceClient, id string, opts ScheduleDHCPNetworkOptsBuilder) (r ScheduleDHCPNetworkResult) { +func ScheduleDHCPNetwork(ctx context.Context, c *gophercloud.ServiceClient, id string, opts ScheduleDHCPNetworkOptsBuilder) (r ScheduleDHCPNetworkResult) { b, err := opts.ToAgentScheduleDHCPNetworkMap() if err != nil { r.Err = err return } - resp, err := c.Post(scheduleDHCPNetworkURL(c, id), b, nil, &gophercloud.RequestOpts{ + resp, err := c.Post(ctx, scheduleDHCPNetworkURL(c, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -144,8 +146,8 @@ func ScheduleDHCPNetwork(c *gophercloud.ServiceClient, id string, opts ScheduleD } // RemoveDHCPNetwork removes a network from a DHCP agent. -func RemoveDHCPNetwork(c *gophercloud.ServiceClient, id string, networkID string) (r RemoveDHCPNetworkResult) { - resp, err := c.Delete(removeDHCPNetworkURL(c, id, networkID), nil) +func RemoveDHCPNetwork(ctx context.Context, c *gophercloud.ServiceClient, id string, networkID string) (r RemoveDHCPNetworkResult) { + resp, err := c.Delete(ctx, removeDHCPNetworkURL(c, id, networkID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -176,13 +178,13 @@ func (opts ScheduleBGPSpeakerOpts) ToAgentScheduleBGPSpeakerMap() (map[string]in // ScheduleBGPSpeaker schedule a BGP speaker to a BGP agent // POST /v2.0/agents/{agent-id}/bgp-drinstances -func ScheduleBGPSpeaker(c *gophercloud.ServiceClient, agentID string, opts ScheduleBGPSpeakerOptsBuilder) (r ScheduleBGPSpeakerResult) { +func ScheduleBGPSpeaker(ctx context.Context, c *gophercloud.ServiceClient, agentID string, opts ScheduleBGPSpeakerOptsBuilder) (r ScheduleBGPSpeakerResult) { b, err := opts.ToAgentScheduleBGPSpeakerMap() if err != nil { r.Err = err return } - resp, err := c.Post(scheduleBGPSpeakersURL(c, agentID), b, nil, &gophercloud.RequestOpts{ + resp, err := c.Post(ctx, scheduleBGPSpeakersURL(c, agentID), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -191,8 +193,8 @@ func ScheduleBGPSpeaker(c *gophercloud.ServiceClient, agentID string, opts Sched // RemoveBGPSpeaker removes a BGP speaker from a BGP agent // DELETE /v2.0/agents/{agent-id}/bgp-drinstances -func RemoveBGPSpeaker(c *gophercloud.ServiceClient, agentID string, speakerID string) (r RemoveBGPSpeakerResult) { - resp, err := c.Delete(removeBGPSpeakersURL(c, agentID, speakerID), nil) +func RemoveBGPSpeaker(ctx context.Context, c *gophercloud.ServiceClient, agentID string, speakerID string) (r RemoveBGPSpeakerResult) { + resp, err := c.Delete(ctx, removeBGPSpeakersURL(c, agentID, speakerID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -208,8 +210,8 @@ func ListDRAgentHostingBGPSpeakers(c *gophercloud.ServiceClient, bgpSpeakerID st // ListL3Routers returns a list of routers scheduled to a specific // L3 agent. -func ListL3Routers(c *gophercloud.ServiceClient, id string) (r ListL3RoutersResult) { - resp, err := c.Get(listL3RoutersURL(c, id), &r.Body, nil) +func ListL3Routers(ctx context.Context, c *gophercloud.ServiceClient, id string) (r ListL3RoutersResult) { + resp, err := c.Get(ctx, listL3RoutersURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -232,13 +234,13 @@ func (opts ScheduleL3RouterOpts) ToAgentScheduleL3RouterMap() (map[string]interf } // ScheduleL3Router schedule a router to a L3 agent. -func ScheduleL3Router(c *gophercloud.ServiceClient, id string, opts ScheduleL3RouterOptsBuilder) (r ScheduleL3RouterResult) { +func ScheduleL3Router(ctx context.Context, c *gophercloud.ServiceClient, id string, opts ScheduleL3RouterOptsBuilder) (r ScheduleL3RouterResult) { b, err := opts.ToAgentScheduleL3RouterMap() if err != nil { r.Err = err return } - resp, err := c.Post(scheduleL3RouterURL(c, id), b, nil, &gophercloud.RequestOpts{ + resp, err := c.Post(ctx, scheduleL3RouterURL(c, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -246,8 +248,8 @@ func ScheduleL3Router(c *gophercloud.ServiceClient, id string, opts ScheduleL3Ro } // RemoveL3Router removes a router from a L3 agent. -func RemoveL3Router(c *gophercloud.ServiceClient, id string, routerID string) (r RemoveL3RouterResult) { - resp, err := c.Delete(removeL3RouterURL(c, id, routerID), nil) +func RemoveL3Router(ctx context.Context, c *gophercloud.ServiceClient, id string, routerID string) (r RemoveL3RouterResult) { + resp, err := c.Delete(ctx, removeL3RouterURL(c, id, routerID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/agents/testing/requests_test.go b/openstack/networking/v2/extensions/agents/testing/requests_test.go index 806910660b..2b2a9b9b8f 100644 --- a/openstack/networking/v2/extensions/agents/testing/requests_test.go +++ b/openstack/networking/v2/extensions/agents/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -29,7 +30,7 @@ func TestList(t *testing.T) { count := 0 - agents.List(fake.ServiceClient(), agents.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + agents.List(fake.ServiceClient(), agents.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := agents.ExtractAgents(page) @@ -67,7 +68,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, AgentsGetResult) }) - s, err := agents.Get(fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a").Extract() + s, err := agents.Get(context.TODO(), fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.ID, "43583cf5-472e-4dc8-af5b-6aed4c94ee3a") @@ -113,7 +114,7 @@ func TestUpdate(t *testing.T) { Description: &description, AdminStateUp: &iTrue, } - s, err := agents.Update(fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a", updateOpts).Extract() + s, err := agents.Update(context.TODO(), fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a", updateOpts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, *s, Agent) @@ -132,7 +133,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - err := agents.Delete(fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a").ExtractErr() + err := agents.Delete(context.TODO(), fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a").ExtractErr() th.AssertNoErr(t, err) } @@ -150,7 +151,7 @@ func TestListDHCPNetworks(t *testing.T) { fmt.Fprintf(w, AgentDHCPNetworksListResult) }) - s, err := agents.ListDHCPNetworks(fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a").Extract() + s, err := agents.ListDHCPNetworks(context.TODO(), fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a").Extract() th.AssertNoErr(t, err) var nilSlice []string @@ -186,7 +187,7 @@ func TestScheduleDHCPNetwork(t *testing.T) { opts := &agents.ScheduleDHCPNetworkOpts{ NetworkID: "1ae075ca-708b-4e66-b4a7-b7698632f05f", } - err := agents.ScheduleDHCPNetwork(fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a", opts).ExtractErr() + err := agents.ScheduleDHCPNetwork(context.TODO(), fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a", opts).ExtractErr() th.AssertNoErr(t, err) } @@ -203,7 +204,7 @@ func TestRemoveDHCPNetwork(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - err := agents.RemoveDHCPNetwork(fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a", "1ae075ca-708b-4e66-b4a7-b7698632f05f").ExtractErr() + err := agents.RemoveDHCPNetwork(context.TODO(), fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a", "1ae075ca-708b-4e66-b4a7-b7698632f05f").ExtractErr() th.AssertNoErr(t, err) } @@ -226,7 +227,8 @@ func TestListBGPSpeakers(t *testing.T) { count := 0 agents.ListBGPSpeakers(fake.ServiceClient(), agentID).EachPage( - func(page pagination.Page) (bool, error) { + context.TODO(), + func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := agents.ExtractBGPSpeakers(page) @@ -264,7 +266,7 @@ func TestScheduleBGPSpeaker(t *testing.T) { var opts agents.ScheduleBGPSpeakerOpts opts.SpeakerID = speakerID - err := agents.ScheduleBGPSpeaker(fake.ServiceClient(), agentID, opts).ExtractErr() + err := agents.ScheduleBGPSpeaker(context.TODO(), fake.ServiceClient(), agentID, opts).ExtractErr() th.AssertNoErr(t, err) } @@ -285,7 +287,7 @@ func TestRemoveBGPSpeaker(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - err := agents.RemoveBGPSpeaker(fake.ServiceClient(), agentID, speakerID).ExtractErr() + err := agents.RemoveBGPSpeaker(context.TODO(), fake.ServiceClient(), agentID, speakerID).ExtractErr() th.AssertNoErr(t, err) } @@ -306,7 +308,8 @@ func TestListDRAgentHostingBGPSpeakers(t *testing.T) { count := 0 agents.ListDRAgentHostingBGPSpeakers(fake.ServiceClient(), speakerID).EachPage( - func(page pagination.Page) (bool, error) { + context.TODO(), + func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := agents.ExtractAgents(page) @@ -339,7 +342,7 @@ func TestListL3Routers(t *testing.T) { fmt.Fprintf(w, AgentL3RoutersListResult) }) - s, err := agents.ListL3Routers(fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a").Extract() + s, err := agents.ListL3Routers(context.TODO(), fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a").Extract() th.AssertNoErr(t, err) routes := []routers.Route{ @@ -401,7 +404,7 @@ func TestScheduleL3Router(t *testing.T) { opts := &agents.ScheduleL3RouterOpts{ RouterID: "43e66290-79a4-415d-9eb9-7ff7919839e1", } - err := agents.ScheduleL3Router(fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a", opts).ExtractErr() + err := agents.ScheduleL3Router(context.TODO(), fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a", opts).ExtractErr() th.AssertNoErr(t, err) } @@ -418,6 +421,6 @@ func TestRemoveL3Router(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - err := agents.RemoveL3Router(fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a", "43e66290-79a4-415d-9eb9-7ff7919839e1").ExtractErr() + err := agents.RemoveL3Router(context.TODO(), fake.ServiceClient(), "43583cf5-472e-4dc8-af5b-6aed4c94ee3a", "43e66290-79a4-415d-9eb9-7ff7919839e1").ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/networking/v2/extensions/attributestags/requests.go b/openstack/networking/v2/extensions/attributestags/requests.go index c083dc9170..5a58783d8a 100644 --- a/openstack/networking/v2/extensions/attributestags/requests.go +++ b/openstack/networking/v2/extensions/attributestags/requests.go @@ -1,6 +1,8 @@ package attributestags import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) @@ -22,14 +24,14 @@ func (opts ReplaceAllOpts) ToAttributeTagsReplaceAllMap() (map[string]interface{ } // ReplaceAll updates all tags on a resource, replacing any existing tags -func ReplaceAll(client *gophercloud.ServiceClient, resourceType string, resourceID string, opts ReplaceAllOptsBuilder) (r ReplaceAllResult) { +func ReplaceAll(ctx context.Context, client *gophercloud.ServiceClient, resourceType string, resourceID string, opts ReplaceAllOptsBuilder) (r ReplaceAllResult) { b, err := opts.ToAttributeTagsReplaceAllMap() url := replaceURL(client, resourceType, resourceID) if err != nil { r.Err = err return } - resp, err := client.Put(url, &b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, url, &b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -37,9 +39,9 @@ func ReplaceAll(client *gophercloud.ServiceClient, resourceType string, resource } // List all tags on a resource -func List(client *gophercloud.ServiceClient, resourceType string, resourceID string) (r ListResult) { +func List(ctx context.Context, client *gophercloud.ServiceClient, resourceType string, resourceID string) (r ListResult) { url := listURL(client, resourceType, resourceID) - resp, err := client.Get(url, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -47,9 +49,9 @@ func List(client *gophercloud.ServiceClient, resourceType string, resourceID str } // DeleteAll deletes all tags on a resource -func DeleteAll(client *gophercloud.ServiceClient, resourceType string, resourceID string) (r DeleteResult) { +func DeleteAll(ctx context.Context, client *gophercloud.ServiceClient, resourceType string, resourceID string) (r DeleteResult) { url := deleteAllURL(client, resourceType, resourceID) - resp, err := client.Delete(url, &gophercloud.RequestOpts{ + resp, err := client.Delete(ctx, url, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -57,9 +59,9 @@ func DeleteAll(client *gophercloud.ServiceClient, resourceType string, resourceI } // Add a tag on a resource -func Add(client *gophercloud.ServiceClient, resourceType string, resourceID string, tag string) (r AddResult) { +func Add(ctx context.Context, client *gophercloud.ServiceClient, resourceType string, resourceID string, tag string) (r AddResult) { url := addURL(client, resourceType, resourceID, tag) - resp, err := client.Put(url, nil, nil, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, url, nil, nil, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -67,9 +69,9 @@ func Add(client *gophercloud.ServiceClient, resourceType string, resourceID stri } // Delete a tag on a resource -func Delete(client *gophercloud.ServiceClient, resourceType string, resourceID string, tag string) (r DeleteResult) { +func Delete(ctx context.Context, client *gophercloud.ServiceClient, resourceType string, resourceID string, tag string) (r DeleteResult) { url := deleteURL(client, resourceType, resourceID, tag) - resp, err := client.Delete(url, &gophercloud.RequestOpts{ + resp, err := client.Delete(ctx, url, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -77,9 +79,9 @@ func Delete(client *gophercloud.ServiceClient, resourceType string, resourceID s } // Confirm if a tag exists on a resource -func Confirm(client *gophercloud.ServiceClient, resourceType string, resourceID string, tag string) (r ConfirmResult) { +func Confirm(ctx context.Context, client *gophercloud.ServiceClient, resourceType string, resourceID string, tag string) (r ConfirmResult) { url := confirmURL(client, resourceType, resourceID, tag) - resp, err := client.Get(url, nil, &gophercloud.RequestOpts{ + resp, err := client.Get(ctx, url, nil, &gophercloud.RequestOpts{ OkCodes: []int{204}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/attributestags/testing/requests_test.go b/openstack/networking/v2/extensions/attributestags/testing/requests_test.go index 48fc55b5f6..e9dc3498fb 100644 --- a/openstack/networking/v2/extensions/attributestags/testing/requests_test.go +++ b/openstack/networking/v2/extensions/attributestags/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -30,7 +31,7 @@ func TestReplaceAll(t *testing.T) { opts := attributestags.ReplaceAllOpts{ Tags: []string{"abc", "xyz"}, } - res, err := attributestags.ReplaceAll(fake.ServiceClient(), "networks", "fakeid", opts).Extract() + res, err := attributestags.ReplaceAll(context.TODO(), fake.ServiceClient(), "networks", "fakeid", opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, res, []string{"abc", "xyz"}) @@ -50,7 +51,7 @@ func TestList(t *testing.T) { fmt.Fprintf(w, attributestagsListResult) }) - res, err := attributestags.List(fake.ServiceClient(), "networks", "fakeid").Extract() + res, err := attributestags.List(context.TODO(), fake.ServiceClient(), "networks", "fakeid").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, res, []string{"abc", "xyz"}) @@ -68,7 +69,7 @@ func TestDeleteAll(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - err := attributestags.DeleteAll(fake.ServiceClient(), "networks", "fakeid").ExtractErr() + err := attributestags.DeleteAll(context.TODO(), fake.ServiceClient(), "networks", "fakeid").ExtractErr() th.AssertNoErr(t, err) } @@ -84,7 +85,7 @@ func TestAdd(t *testing.T) { w.WriteHeader(http.StatusCreated) }) - err := attributestags.Add(fake.ServiceClient(), "networks", "fakeid", "atag").ExtractErr() + err := attributestags.Add(context.TODO(), fake.ServiceClient(), "networks", "fakeid", "atag").ExtractErr() th.AssertNoErr(t, err) } @@ -100,7 +101,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - err := attributestags.Delete(fake.ServiceClient(), "networks", "fakeid", "atag").ExtractErr() + err := attributestags.Delete(context.TODO(), fake.ServiceClient(), "networks", "fakeid", "atag").ExtractErr() th.AssertNoErr(t, err) } @@ -116,7 +117,7 @@ func TestConfirmTrue(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - exists, err := attributestags.Confirm(fake.ServiceClient(), "networks", "fakeid", "atag").Extract() + exists, err := attributestags.Confirm(context.TODO(), fake.ServiceClient(), "networks", "fakeid", "atag").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, true, exists) } @@ -133,6 +134,6 @@ func TestConfirmFalse(t *testing.T) { w.WriteHeader(http.StatusNotFound) }) - exists, _ := attributestags.Confirm(fake.ServiceClient(), "networks", "fakeid", "atag").Extract() + exists, _ := attributestags.Confirm(context.TODO(), fake.ServiceClient(), "networks", "fakeid", "atag").Extract() th.AssertEquals(t, false, exists) } diff --git a/openstack/networking/v2/extensions/bgp/peers/requests.go b/openstack/networking/v2/extensions/bgp/peers/requests.go index ef2b5e0b83..0bf5844c76 100644 --- a/openstack/networking/v2/extensions/bgp/peers/requests.go +++ b/openstack/networking/v2/extensions/bgp/peers/requests.go @@ -1,6 +1,8 @@ package peers import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -14,8 +16,8 @@ func List(c *gophercloud.ServiceClient) pagination.Pager { } // Get retrieve the specific bgp peer by its uuid -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(getURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -41,20 +43,20 @@ func (opts CreateOpts) ToPeerCreateMap() (map[string]interface{}, error) { } // Create a BGP Peer -func Create(c *gophercloud.ServiceClient, opts CreateOpts) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOpts) (r CreateResult) { b, err := opts.ToPeerCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(createURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, createURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete accepts a unique ID and deletes the bgp Peer associated with it. -func Delete(c *gophercloud.ServiceClient, bgpPeerID string) (r DeleteResult) { - resp, err := c.Delete(deleteURL(c, bgpPeerID), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, bgpPeerID string) (r DeleteResult) { + resp, err := c.Delete(ctx, deleteURL(c, bgpPeerID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -77,13 +79,13 @@ func (opts UpdateOpts) ToPeerUpdateMap() (map[string]interface{}, error) { } // Update accept a BGP Peer ID and an UpdateOpts and update the BGP Peer -func Update(c *gophercloud.ServiceClient, bgpPeerID string, opts UpdateOpts) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, bgpPeerID string, opts UpdateOpts) (r UpdateResult) { b, err := opts.ToPeerUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(updateURL(c, bgpPeerID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, bgpPeerID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/bgp/peers/testing/requests_test.go b/openstack/networking/v2/extensions/bgp/peers/testing/requests_test.go index 7e14e5c65e..e07f40db15 100644 --- a/openstack/networking/v2/extensions/bgp/peers/testing/requests_test.go +++ b/openstack/networking/v2/extensions/bgp/peers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -27,7 +28,8 @@ func TestList(t *testing.T) { count := 0 peers.List(fake.ServiceClient()).EachPage( - func(page pagination.Page) (bool, error) { + context.TODO(), + func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := peers.ExtractBGPPeers(page) @@ -54,7 +56,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, GetBGPPeerResult) }) - s, err := peers.Get(fake.ServiceClient(), bgpPeerID).Extract() + s, err := peers.Get(context.TODO(), fake.ServiceClient(), bgpPeerID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, *s, BGPPeer1) } @@ -81,7 +83,7 @@ func TestCreate(t *testing.T) { opts.Name = "gophercloud-testing-bgp-peer" opts.PeerIP = "192.168.0.1" - r, err := peers.Create(fake.ServiceClient(), opts).Extract() + r, err := peers.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, r.AuthType, opts.AuthType) th.AssertEquals(t, r.RemoteAS, opts.RemoteAS) @@ -102,7 +104,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - err := peers.Delete(fake.ServiceClient(), bgpPeerID).ExtractErr() + err := peers.Delete(context.TODO(), fake.ServiceClient(), bgpPeerID).ExtractErr() th.AssertNoErr(t, err) } @@ -128,7 +130,7 @@ func TestUpdate(t *testing.T) { opts.Name = "test-rename-bgp-peer" opts.Password = "superStrong" - r, err := peers.Update(fake.ServiceClient(), bgpPeerID, opts).Extract() + r, err := peers.Update(context.TODO(), fake.ServiceClient(), bgpPeerID, opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, r.Name, opts.Name) } diff --git a/openstack/networking/v2/extensions/bgp/speakers/requests.go b/openstack/networking/v2/extensions/bgp/speakers/requests.go index ca86ec90d9..ff3c88e7dd 100644 --- a/openstack/networking/v2/extensions/bgp/speakers/requests.go +++ b/openstack/networking/v2/extensions/bgp/speakers/requests.go @@ -1,6 +1,8 @@ package speakers import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -14,8 +16,8 @@ func List(c *gophercloud.ServiceClient) pagination.Pager { } // Get retrieve the specific bgp speaker by its uuid -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(getURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -41,20 +43,20 @@ func (opts CreateOpts) ToSpeakerCreateMap() (map[string]interface{}, error) { } // Create accepts a CreateOpts and create a BGP Speaker. -func Create(c *gophercloud.ServiceClient, opts CreateOpts) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOpts) (r CreateResult) { b, err := opts.ToSpeakerCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(createURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, createURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete accepts a unique ID and deletes the bgp speaker associated with it. -func Delete(c *gophercloud.ServiceClient, speakerID string) (r DeleteResult) { - resp, err := c.Delete(deleteURL(c, speakerID), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, speakerID string) (r DeleteResult) { + resp, err := c.Delete(ctx, deleteURL(c, speakerID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -78,13 +80,13 @@ type UpdateOptsBuilder interface { } // Update accepts a UpdateOpts and update the BGP Speaker. -func Update(c *gophercloud.ServiceClient, speakerID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, speakerID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToSpeakerUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(updateURL(c, speakerID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, speakerID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -107,13 +109,13 @@ func (opts AddBGPPeerOpts) ToBGPSpeakerAddBGPPeerMap() (map[string]interface{}, } // AddBGPPeer add the BGP peer to the speaker a.k.a. PUT /v2.0/bgp-speakers/{bgp-speaker-id}/add_bgp_peer -func AddBGPPeer(c *gophercloud.ServiceClient, bgpSpeakerID string, opts AddBGPPeerOptsBuilder) (r AddBGPPeerResult) { +func AddBGPPeer(ctx context.Context, c *gophercloud.ServiceClient, bgpSpeakerID string, opts AddBGPPeerOptsBuilder) (r AddBGPPeerResult) { b, err := opts.ToBGPSpeakerAddBGPPeerMap() if err != nil { r.Err = err return } - resp, err := c.Put(addBGPPeerURL(c, bgpSpeakerID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, addBGPPeerURL(c, bgpSpeakerID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -134,13 +136,13 @@ func (opts RemoveBGPPeerOpts) ToBGPSpeakerRemoveBGPPeerMap() (map[string]interfa } // RemoveBGPPeer remove the BGP peer from the speaker, a.k.a. PUT /v2.0/bgp-speakers/{bgp-speaker-id}/add_bgp_peer -func RemoveBGPPeer(c *gophercloud.ServiceClient, bgpSpeakerID string, opts RemoveBGPPeerOptsBuilder) (r RemoveBGPPeerResult) { +func RemoveBGPPeer(ctx context.Context, c *gophercloud.ServiceClient, bgpSpeakerID string, opts RemoveBGPPeerOptsBuilder) (r RemoveBGPPeerResult) { b, err := opts.ToBGPSpeakerRemoveBGPPeerMap() if err != nil { r.Err = err return } - resp, err := c.Put(removeBGPPeerURL(c, bgpSpeakerID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, removeBGPPeerURL(c, bgpSpeakerID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -172,13 +174,13 @@ func (opts AddGatewayNetworkOpts) ToBGPSpeakerAddGatewayNetworkMap() (map[string } // AddGatewayNetwork a.k.a. PUT /v2.0/bgp-speakers/{bgp-speaker-id}/add_gateway_network -func AddGatewayNetwork(c *gophercloud.ServiceClient, bgpSpeakerID string, opts AddGatewayNetworkOptsBuilder) (r AddGatewayNetworkResult) { +func AddGatewayNetwork(ctx context.Context, c *gophercloud.ServiceClient, bgpSpeakerID string, opts AddGatewayNetworkOptsBuilder) (r AddGatewayNetworkResult) { b, err := opts.ToBGPSpeakerAddGatewayNetworkMap() if err != nil { r.Err = err return } - resp, err := c.Put(addGatewayNetworkURL(c, bgpSpeakerID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, addGatewayNetworkURL(c, bgpSpeakerID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -199,13 +201,13 @@ func (opts RemoveGatewayNetworkOpts) ToBGPSpeakerRemoveGatewayNetworkMap() (map[ } // RemoveGatewayNetwork a.k.a. PUT /v2.0/bgp-speakers/{bgp-speaker-id}/remove_gateway_network -func RemoveGatewayNetwork(c *gophercloud.ServiceClient, bgpSpeakerID string, opts RemoveGatewayNetworkOptsBuilder) (r RemoveGatewayNetworkResult) { +func RemoveGatewayNetwork(ctx context.Context, c *gophercloud.ServiceClient, bgpSpeakerID string, opts RemoveGatewayNetworkOptsBuilder) (r RemoveGatewayNetworkResult) { b, err := opts.ToBGPSpeakerRemoveGatewayNetworkMap() if err != nil { r.Err = err return } - resp, err := c.Put(removeGatewayNetworkURL(c, bgpSpeakerID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, removeGatewayNetworkURL(c, bgpSpeakerID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/bgp/speakers/testing/requests_test.go b/openstack/networking/v2/extensions/bgp/speakers/testing/requests_test.go index 71b22edd56..911c328d2f 100644 --- a/openstack/networking/v2/extensions/bgp/speakers/testing/requests_test.go +++ b/openstack/networking/v2/extensions/bgp/speakers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "io" "net/http" @@ -28,7 +29,8 @@ func TestList(t *testing.T) { count := 0 speakers.List(fake.ServiceClient()).EachPage( - func(page pagination.Page) (bool, error) { + context.TODO(), + func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := speakers.ExtractBGPSpeakers(page) @@ -55,7 +57,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, GetBGPSpeakerResult) }) - s, err := speakers.Get(fake.ServiceClient(), bgpSpeakerID).Extract() + s, err := speakers.Get(context.TODO(), fake.ServiceClient(), bgpSpeakerID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, *s, BGPSpeaker1) } @@ -83,7 +85,7 @@ func TestCreate(t *testing.T) { LocalAS: "2000", Networks: []string{}, } - r, err := speakers.Create(fake.ServiceClient(), opts).Extract() + r, err := speakers.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, r.Name, opts.Name) th.AssertEquals(t, r.LocalAS, 2000) @@ -107,7 +109,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - err := speakers.Delete(fake.ServiceClient(), bgpSpeakerID).ExtractErr() + err := speakers.Delete(context.TODO(), fake.ServiceClient(), bgpSpeakerID).ExtractErr() th.AssertNoErr(t, err) } @@ -144,7 +146,7 @@ func TestUpdate(t *testing.T) { AdvertiseFloatingIPHostRoutes: true, } - r, err := speakers.Update(fake.ServiceClient(), bgpSpeakerID, opts).Extract() + r, err := speakers.Update(context.TODO(), fake.ServiceClient(), bgpSpeakerID, opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, r.Name, opts.Name) th.AssertEquals(t, r.AdvertiseTenantNetworks, opts.AdvertiseTenantNetworks) @@ -170,7 +172,7 @@ func TestAddBGPPeer(t *testing.T) { }) opts := speakers.AddBGPPeerOpts{BGPPeerID: bgpPeerID} - r, err := speakers.AddBGPPeer(fake.ServiceClient(), bgpSpeakerID, opts).Extract() + r, err := speakers.AddBGPPeer(context.TODO(), fake.ServiceClient(), bgpSpeakerID, opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, bgpPeerID, r.BGPPeerID) } @@ -191,7 +193,7 @@ func TestRemoveBGPPeer(t *testing.T) { }) opts := speakers.RemoveBGPPeerOpts{BGPPeerID: bgpPeerID} - err := speakers.RemoveBGPPeer(fake.ServiceClient(), bgpSpeakerID, opts).ExtractErr() + err := speakers.RemoveBGPPeer(context.TODO(), fake.ServiceClient(), bgpSpeakerID, opts).ExtractErr() th.AssertEquals(t, err, io.EOF) } @@ -210,7 +212,8 @@ func TestGetAdvertisedRoutes(t *testing.T) { count := 0 speakers.GetAdvertisedRoutes(fake.ServiceClient(), bgpSpeakerID).EachPage( - func(page pagination.Page) (bool, error) { + context.TODO(), + func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := speakers.ExtractAdvertisedRoutes(page) @@ -249,7 +252,7 @@ func TestAddGatewayNetwork(t *testing.T) { }) opts := speakers.AddGatewayNetworkOpts{NetworkID: networkID} - r, err := speakers.AddGatewayNetwork(fake.ServiceClient(), bgpSpeakerID, opts).Extract() + r, err := speakers.AddGatewayNetwork(context.TODO(), fake.ServiceClient(), bgpSpeakerID, opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, r.NetworkID, networkID) } @@ -273,6 +276,6 @@ func TestRemoveGatewayNetwork(t *testing.T) { }) opts := speakers.RemoveGatewayNetworkOpts{NetworkID: networkID} - err := speakers.RemoveGatewayNetwork(fake.ServiceClient(), bgpSpeakerID, opts).ExtractErr() + err := speakers.RemoveGatewayNetwork(context.TODO(), fake.ServiceClient(), bgpSpeakerID, opts).ExtractErr() th.AssertEquals(t, err, io.EOF) } diff --git a/openstack/networking/v2/extensions/delegate.go b/openstack/networking/v2/extensions/delegate.go index 9dbb521073..870403a35b 100644 --- a/openstack/networking/v2/extensions/delegate.go +++ b/openstack/networking/v2/extensions/delegate.go @@ -1,6 +1,8 @@ package extensions import ( + "context" + "github.com/gophercloud/gophercloud/v2" common "github.com/gophercloud/gophercloud/v2/openstack/common/extensions" "github.com/gophercloud/gophercloud/v2/pagination" @@ -30,8 +32,8 @@ func ExtractExtensions(page pagination.Page) ([]Extension, error) { } // Get retrieves information for a specific extension using its alias. -func Get(c *gophercloud.ServiceClient, alias string) GetResult { - return GetResult{common.Get(c, alias)} +func Get(ctx context.Context, c *gophercloud.ServiceClient, alias string) GetResult { + return GetResult{common.Get(ctx, c, alias)} } // List returns a Pager which allows you to iterate over the full collection of extensions. diff --git a/openstack/networking/v2/extensions/dns/testing/requests_test.go b/openstack/networking/v2/extensions/dns/testing/requests_test.go index 191d8ad038..0f6c99c1a2 100644 --- a/openstack/networking/v2/extensions/dns/testing/requests_test.go +++ b/openstack/networking/v2/extensions/dns/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -79,7 +80,7 @@ func TestPortList(t *testing.T) { DNSName: "test-port", } - allPages, err := ports.List(fake.ServiceClient(), listOptsBuilder).AllPages() + allPages, err := ports.List(fake.ServiceClient(), listOptsBuilder).AllPages(context.TODO()) th.AssertNoErr(t, err) err = ports.ExtractPortsInto(allPages, &actual) @@ -96,7 +97,7 @@ func TestPortGet(t *testing.T) { var s PortDNS - err := ports.Get(fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").ExtractInto(&s) + err := ports.Get(context.TODO(), fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, s.Status, "ACTIVE") @@ -147,7 +148,7 @@ func TestPortCreate(t *testing.T) { DNSName: "test-port", } - err := ports.Create(fake.ServiceClient(), createOpts).ExtractInto(&s) + err := ports.Create(context.TODO(), fake.ServiceClient(), createOpts).ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, s.Status, "DOWN") @@ -174,7 +175,7 @@ func TestPortCreate(t *testing.T) { } func TestPortRequiredCreateOpts(t *testing.T) { - res := ports.Create(fake.ServiceClient(), dns.PortCreateOptsExt{CreateOptsBuilder: ports.CreateOpts{}}) + res := ports.Create(context.TODO(), fake.ServiceClient(), dns.PortCreateOptsExt{CreateOptsBuilder: ports.CreateOpts{}}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -203,7 +204,7 @@ func TestPortUpdate(t *testing.T) { DNSName: &dnsName, } - err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&s) + err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "new_port_name") @@ -228,7 +229,7 @@ func TestFloatingIPGet(t *testing.T) { FloatingIPHandleGet(t) var actual FloatingIPDNS - err := floatingips.Get(fake.ServiceClient(), "2f95fd2b-9f6a-4e8e-9e9a-2cbe286cbf9e").ExtractInto(&actual) + err := floatingips.Get(context.TODO(), fake.ServiceClient(), "2f95fd2b-9f6a-4e8e-9e9a-2cbe286cbf9e").ExtractInto(&actual) th.AssertNoErr(t, err) expected := FloatingIPDNS{ @@ -271,7 +272,7 @@ func TestFloatingIPCreate(t *testing.T) { DNSDomain: "local.", } - err := floatingips.Create(fake.ServiceClient(), options).ExtractInto(&actual) + err := floatingips.Create(context.TODO(), fake.ServiceClient(), options).ExtractInto(&actual) th.AssertNoErr(t, err) expected := FloatingIPDNS{ @@ -304,7 +305,7 @@ func TestNetworkGet(t *testing.T) { var actual NetworkDNS - err := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&actual) + err := networks.Get(context.TODO(), fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&actual) th.AssertNoErr(t, err) expected := NetworkDNS{ @@ -342,7 +343,7 @@ func TestNetworkCreate(t *testing.T) { DNSDomain: "local.", } - err := networks.Create(fake.ServiceClient(), createOpts).ExtractInto(&actual) + err := networks.Create(context.TODO(), fake.ServiceClient(), createOpts).ExtractInto(&actual) th.AssertNoErr(t, err) expected := NetworkDNS{ @@ -380,7 +381,7 @@ func TestNetworkUpdate(t *testing.T) { DNSDomain: new(string), } - err := networks.Update(fake.ServiceClient(), "db193ab3-96e3-4cb3-8fc5-05f4296d0324", updateOpts).ExtractInto(&actual) + err := networks.Update(context.TODO(), fake.ServiceClient(), "db193ab3-96e3-4cb3-8fc5-05f4296d0324", updateOpts).ExtractInto(&actual) th.AssertNoErr(t, err) expected := NetworkDNS{ diff --git a/openstack/networking/v2/extensions/external/testing/results_test.go b/openstack/networking/v2/extensions/external/testing/results_test.go index 5cdf8a50cf..12062e53d8 100644 --- a/openstack/networking/v2/extensions/external/testing/results_test.go +++ b/openstack/networking/v2/extensions/external/testing/results_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -32,7 +33,7 @@ func TestList(t *testing.T) { } var actual []NetworkWithExternalExt - allPages, err := networks.List(fake.ServiceClient(), networks.ListOpts{}).AllPages() + allPages, err := networks.List(fake.ServiceClient(), networks.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) err = networks.ExtractNetworksInto(allPages, &actual) @@ -61,7 +62,7 @@ func TestGet(t *testing.T) { external.NetworkExternalExt } - err := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&s) + err := networks.Get(context.TODO(), fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "d32019d3-bc6e-4319-9c1d-6722fc136a22", s.ID) @@ -97,7 +98,7 @@ func TestCreate(t *testing.T) { External: &iFalse, } - _, err := networks.Create(fake.ServiceClient(), externalCreateOpts).Extract() + _, err := networks.Create(context.TODO(), fake.ServiceClient(), externalCreateOpts).Extract() th.AssertNoErr(t, err) th.AssertNoErr(t, err) @@ -134,6 +135,6 @@ func TestUpdate(t *testing.T) { External: &iFalse, } - _, err := networks.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", externalUpdateOpts).Extract() + _, err := networks.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", externalUpdateOpts).Extract() th.AssertNoErr(t, err) } diff --git a/openstack/networking/v2/extensions/fwaas/firewalls/requests.go b/openstack/networking/v2/extensions/fwaas/firewalls/requests.go index 1c3419b5f2..28b3ea725e 100644 --- a/openstack/networking/v2/extensions/fwaas/firewalls/requests.go +++ b/openstack/networking/v2/extensions/fwaas/firewalls/requests.go @@ -1,6 +1,8 @@ package firewalls import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -83,20 +85,20 @@ func (opts CreateOpts) ToFirewallCreateMap() (map[string]interface{}, error) { } // Create accepts a CreateOpts struct and uses the values to create a new firewall. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToFirewallCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular firewall based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -122,13 +124,13 @@ func (opts UpdateOpts) ToFirewallUpdateMap() (map[string]interface{}, error) { } // Update allows firewalls to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToFirewallUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -136,8 +138,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete will permanently delete a particular firewall based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/fwaas/firewalls/testing/requests_test.go b/openstack/networking/v2/extensions/fwaas/firewalls/testing/requests_test.go index ced5e46b23..66b60c9b60 100644 --- a/openstack/networking/v2/extensions/fwaas/firewalls/testing/requests_test.go +++ b/openstack/networking/v2/extensions/fwaas/firewalls/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -52,7 +53,7 @@ func TestList(t *testing.T) { count := 0 - firewalls.List(fake.ServiceClient(), firewalls.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + firewalls.List(fake.ServiceClient(), firewalls.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := firewalls.ExtractFirewalls(page) if err != nil { @@ -134,7 +135,7 @@ func TestListWithExtensions(t *testing.T) { routerinsertion.FirewallExt } - allPages, err := firewalls.List(fake.ServiceClient(), nil).AllPages() + allPages, err := firewalls.List(fake.ServiceClient(), nil).AllPages(context.TODO()) th.AssertNoErr(t, err) var actual []FirewallsWithExt @@ -190,7 +191,7 @@ func TestCreate(t *testing.T) { AdminStateUp: gophercloud.Enabled, PolicyID: "19ab8c87-4a32-4e6a-a74e-b77fffb89a0c", } - _, err := firewalls.Create(fake.ServiceClient(), options).Extract() + _, err := firewalls.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) } @@ -220,7 +221,7 @@ func TestGet(t *testing.T) { `) }) - fw, err := firewalls.Get(fake.ServiceClient(), "fb5b5315-64f6-4ea3-8e58-981cc37c6f61").Extract() + fw, err := firewalls.Get(context.TODO(), fake.ServiceClient(), "fb5b5315-64f6-4ea3-8e58-981cc37c6f61").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "ACTIVE", fw.Status) @@ -264,7 +265,7 @@ func TestGetWithExtensions(t *testing.T) { routerinsertion.FirewallExt } - err := firewalls.Get(fake.ServiceClient(), "fb5b5315-64f6-4ea3-8e58-981cc37c6f61").ExtractInto(&fw) + err := firewalls.Get(context.TODO(), fake.ServiceClient(), "fb5b5315-64f6-4ea3-8e58-981cc37c6f61").ExtractInto(&fw) th.AssertNoErr(t, err) th.AssertEquals(t, "ACTIVE", fw.Status) @@ -324,7 +325,7 @@ func TestUpdate(t *testing.T) { PolicyID: "19ab8c87-4a32-4e6a-a74e-b77fffb89a0c", } - _, err := firewalls.Update(fake.ServiceClient(), "ea5b5315-64f6-4ea3-8e58-981cc37c6576", options).Extract() + _, err := firewalls.Update(context.TODO(), fake.ServiceClient(), "ea5b5315-64f6-4ea3-8e58-981cc37c6576", options).Extract() th.AssertNoErr(t, err) } @@ -338,6 +339,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := firewalls.Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304") + res := firewalls.Delete(context.TODO(), fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/fwaas/policies/requests.go b/openstack/networking/v2/extensions/fwaas/policies/requests.go index 0af024d3c8..8146e142de 100644 --- a/openstack/networking/v2/extensions/fwaas/policies/requests.go +++ b/openstack/networking/v2/extensions/fwaas/policies/requests.go @@ -1,6 +1,8 @@ package policies import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -83,20 +85,20 @@ func (opts CreateOpts) ToFirewallPolicyCreateMap() (map[string]interface{}, erro // Create accepts a CreateOpts struct and uses the values to create a new // firewall policy. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToFirewallPolicyCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular firewall policy based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -122,13 +124,13 @@ func (opts UpdateOpts) ToFirewallPolicyUpdateMap() (map[string]interface{}, erro } // Update allows firewall policies to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToFirewallPolicyUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -137,8 +139,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r // Delete will permanently delete a particular firewall policy based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -161,13 +163,13 @@ func (opts InsertRuleOpts) ToFirewallPolicyInsertRuleMap() (map[string]interface } // AddRule will add a rule to a policy. -func AddRule(c *gophercloud.ServiceClient, id string, opts InsertRuleOptsBuilder) (r InsertRuleResult) { +func AddRule(ctx context.Context, c *gophercloud.ServiceClient, id string, opts InsertRuleOptsBuilder) (r InsertRuleResult) { b, err := opts.ToFirewallPolicyInsertRuleMap() if err != nil { r.Err = err return } - resp, err := c.Put(insertURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, insertURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -175,9 +177,9 @@ func AddRule(c *gophercloud.ServiceClient, id string, opts InsertRuleOptsBuilder } // RemoveRule will add a rule to a policy. -func RemoveRule(c *gophercloud.ServiceClient, id, ruleID string) (r RemoveRuleResult) { +func RemoveRule(ctx context.Context, c *gophercloud.ServiceClient, id, ruleID string) (r RemoveRuleResult) { b := map[string]interface{}{"firewall_rule_id": ruleID} - resp, err := c.Put(removeURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, removeURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/fwaas/policies/testing/requests_test.go b/openstack/networking/v2/extensions/fwaas/policies/testing/requests_test.go index c40d2f458a..b0bf291cad 100644 --- a/openstack/networking/v2/extensions/fwaas/policies/testing/requests_test.go +++ b/openstack/networking/v2/extensions/fwaas/policies/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -56,7 +57,7 @@ func TestList(t *testing.T) { count := 0 - policies.List(fake.ServiceClient(), policies.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + policies.List(fake.ServiceClient(), policies.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := policies.ExtractPolicies(page) if err != nil { @@ -157,7 +158,7 @@ func TestCreate(t *testing.T) { }, } - _, err := policies.Create(fake.ServiceClient(), options).Extract() + _, err := policies.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) } @@ -190,7 +191,7 @@ func TestGet(t *testing.T) { `) }) - policy, err := policies.Get(fake.ServiceClient(), "bcab5315-64f6-4ea3-8e58-981cc37c6f61").Extract() + policy, err := policies.Get(context.TODO(), fake.ServiceClient(), "bcab5315-64f6-4ea3-8e58-981cc37c6f61").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "www", policy.Name) @@ -257,7 +258,7 @@ func TestUpdate(t *testing.T) { }, } - _, err := policies.Update(fake.ServiceClient(), "f2b08c1e-aa81-4668-8ae1-1401bcb0576c", options).Extract() + _, err := policies.Update(context.TODO(), fake.ServiceClient(), "f2b08c1e-aa81-4668-8ae1-1401bcb0576c", options).Extract() th.AssertNoErr(t, err) } @@ -271,6 +272,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := policies.Delete(fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304") + res := policies.Delete(context.TODO(), fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/fwaas/routerinsertion/testing/requests_test.go b/openstack/networking/v2/extensions/fwaas/routerinsertion/testing/requests_test.go index 42a60b7003..9afee9ed5d 100644 --- a/openstack/networking/v2/extensions/fwaas/routerinsertion/testing/requests_test.go +++ b/openstack/networking/v2/extensions/fwaas/routerinsertion/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -65,7 +66,7 @@ func TestCreate(t *testing.T) { RouterIDs: []string{"8a3a0d6a-34b5-4a92-b65d-6375a4c1e9e8"}, } - _, err := firewalls.Create(fake.ServiceClient(), createOpts).Extract() + _, err := firewalls.Create(context.TODO(), fake.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) } @@ -120,7 +121,7 @@ func TestCreateWithNoRouters(t *testing.T) { RouterIDs: []string{}, } - _, err := firewalls.Create(fake.ServiceClient(), createOpts).Extract() + _, err := firewalls.Create(context.TODO(), fake.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) } @@ -178,7 +179,7 @@ func TestUpdate(t *testing.T) { RouterIDs: []string{"8a3a0d6a-34b5-4a92-b65d-6375a4c1e9e8"}, } - _, err := firewalls.Update(fake.ServiceClient(), "ea5b5315-64f6-4ea3-8e58-981cc37c6576", updateOpts).Extract() + _, err := firewalls.Update(context.TODO(), fake.ServiceClient(), "ea5b5315-64f6-4ea3-8e58-981cc37c6576", updateOpts).Extract() th.AssertNoErr(t, err) } @@ -234,6 +235,6 @@ func TestUpdateWithNoRouters(t *testing.T) { RouterIDs: []string{}, } - _, err := firewalls.Update(fake.ServiceClient(), "ea5b5315-64f6-4ea3-8e58-981cc37c6576", updateOpts).Extract() + _, err := firewalls.Update(context.TODO(), fake.ServiceClient(), "ea5b5315-64f6-4ea3-8e58-981cc37c6576", updateOpts).Extract() th.AssertNoErr(t, err) } diff --git a/openstack/networking/v2/extensions/fwaas/rules/requests.go b/openstack/networking/v2/extensions/fwaas/rules/requests.go index 8daa4f13f9..fd6e1c459f 100644 --- a/openstack/networking/v2/extensions/fwaas/rules/requests.go +++ b/openstack/networking/v2/extensions/fwaas/rules/requests.go @@ -1,6 +1,8 @@ package rules import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -125,20 +127,20 @@ func (opts CreateOpts) ToRuleCreateMap() (map[string]interface{}, error) { // Create accepts a CreateOpts struct and uses the values to create a new // firewall rule. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToRuleCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular firewall rule based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -172,13 +174,13 @@ func (opts UpdateOpts) ToRuleUpdateMap() (map[string]interface{}, error) { } // Update allows firewall policies to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToRuleUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -187,8 +189,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r // Delete will permanently delete a particular firewall rule based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/fwaas/rules/testing/requests_test.go b/openstack/networking/v2/extensions/fwaas/rules/testing/requests_test.go index ce2cc97d15..114483ebbe 100644 --- a/openstack/networking/v2/extensions/fwaas/rules/testing/requests_test.go +++ b/openstack/networking/v2/extensions/fwaas/rules/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -67,7 +68,7 @@ func TestList(t *testing.T) { count := 0 - rules.List(fake.ServiceClient(), rules.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + rules.List(fake.ServiceClient(), rules.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := rules.ExtractRules(page) if err != nil { @@ -181,7 +182,7 @@ func TestCreate(t *testing.T) { Action: "allow", } - _, err := rules.Create(fake.ServiceClient(), options).Extract() + _, err := rules.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) } @@ -242,7 +243,7 @@ func TestCreateAnyProtocol(t *testing.T) { Action: "allow", } - _, err := rules.Create(fake.ServiceClient(), options).Extract() + _, err := rules.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) } @@ -280,7 +281,7 @@ func TestGet(t *testing.T) { `) }) - rule, err := rules.Get(fake.ServiceClient(), "f03bd950-6c56-4f5e-a307-45967078f507").Extract() + rule, err := rules.Get(context.TODO(), fake.ServiceClient(), "f03bd950-6c56-4f5e-a307-45967078f507").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "tcp", rule.Protocol) @@ -362,7 +363,7 @@ func TestUpdate(t *testing.T) { Enabled: gophercloud.Disabled, } - _, err := rules.Update(fake.ServiceClient(), "f03bd950-6c56-4f5e-a307-45967078f507", options).Extract() + _, err := rules.Update(context.TODO(), fake.ServiceClient(), "f03bd950-6c56-4f5e-a307-45967078f507", options).Extract() th.AssertNoErr(t, err) } @@ -376,6 +377,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := rules.Delete(fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304") + res := rules.Delete(context.TODO(), fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/fwaas_v2/groups/requests.go b/openstack/networking/v2/extensions/fwaas_v2/groups/requests.go index 580dfab6ae..20f6b8aab8 100644 --- a/openstack/networking/v2/extensions/fwaas_v2/groups/requests.go +++ b/openstack/networking/v2/extensions/fwaas_v2/groups/requests.go @@ -1,6 +1,8 @@ package groups import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -66,8 +68,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a particular firewall group based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - _, r.Err = c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + _, r.Err = c.Get(ctx, resourceURL(c, id), &r.Body, nil) return } @@ -99,13 +101,13 @@ func (opts CreateOpts) ToFirewallGroupCreateMap() (map[string]interface{}, error } // Create accepts a CreateOpts struct and uses the values to create a new firewall group -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToFirewallGroupCreateMap() if err != nil { r.Err = err return } - _, r.Err = c.Post(rootURL(c), b, &r.Body, nil) + _, r.Err = c.Post(ctx, rootURL(c), b, &r.Body, nil) return } @@ -134,13 +136,13 @@ func (opts UpdateOpts) ToFirewallGroupUpdateMap() (map[string]interface{}, error } // Update allows firewall groups to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToFirewallGroupUpdateMap() if err != nil { r.Err = err return } - _, r.Err = c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + _, r.Err = c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return @@ -157,13 +159,13 @@ type RemoveIngressPolicyOpts struct { IngressFirewallPolicyID *string `json:"ingress_firewall_policy_id"` } -func RemoveIngressPolicy(c *gophercloud.ServiceClient, id string) (r UpdateResult) { +func RemoveIngressPolicy(ctx context.Context, c *gophercloud.ServiceClient, id string) (r UpdateResult) { b, err := gophercloud.BuildRequestBody(RemoveIngressPolicyOpts{IngressFirewallPolicyID: nil}, "firewall_group") if err != nil { r.Err = err return } - _, r.Err = c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + _, r.Err = c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return @@ -173,20 +175,20 @@ type RemoveEgressPolicyOpts struct { EgressFirewallPolicyID *string `json:"egress_firewall_policy_id"` } -func RemoveEgressPolicy(c *gophercloud.ServiceClient, id string) (r UpdateResult) { +func RemoveEgressPolicy(ctx context.Context, c *gophercloud.ServiceClient, id string) (r UpdateResult) { b, err := gophercloud.BuildRequestBody(RemoveEgressPolicyOpts{EgressFirewallPolicyID: nil}, "firewall_group") if err != nil { r.Err = err return } - _, r.Err = c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + _, r.Err = c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return } // Delete will permanently delete a particular firewall group based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - _, r.Err = c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + _, r.Err = c.Delete(ctx, resourceURL(c, id), nil) return } diff --git a/openstack/networking/v2/extensions/fwaas_v2/groups/testing/requests_test.go b/openstack/networking/v2/extensions/fwaas_v2/groups/testing/requests_test.go index da719d1a47..6d40203746 100644 --- a/openstack/networking/v2/extensions/fwaas_v2/groups/testing/requests_test.go +++ b/openstack/networking/v2/extensions/fwaas_v2/groups/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -67,7 +68,7 @@ func TestList(t *testing.T) { count := 0 - groups.List(fake.ServiceClient(), groups.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + groups.List(fake.ServiceClient(), groups.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := groups.ExtractGroups(page) if err != nil { @@ -155,7 +156,7 @@ func TestGet(t *testing.T) { `) }) - group, err := groups.Get(fake.ServiceClient(), "6bfb0f10-07f7-4a40-b534-bad4b4ca3428").Extract() + group, err := groups.Get(context.TODO(), fake.ServiceClient(), "6bfb0f10-07f7-4a40-b534-bad4b4ca3428").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "6bfb0f10-07f7-4a40-b534-bad4b4ca3428", group.ID) @@ -228,7 +229,7 @@ func TestCreate(t *testing.T) { }, } - _, err := groups.Create(fake.ServiceClient(), options).Extract() + _, err := groups.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) } @@ -293,7 +294,7 @@ func TestUpdate(t *testing.T) { AdminStateUp: &adminStateUp, } - _, err := groups.Update(fake.ServiceClient(), "6bfb0f10-07f7-4a40-b534-bad4b4ca3428", options).Extract() + _, err := groups.Update(context.TODO(), fake.ServiceClient(), "6bfb0f10-07f7-4a40-b534-bad4b4ca3428", options).Extract() th.AssertNoErr(t, err) } @@ -339,7 +340,7 @@ func TestRemoveIngressPolicy(t *testing.T) { `) }) - removeIngressPolicy, err := groups.RemoveIngressPolicy(fake.ServiceClient(), "6bfb0f10-07f7-4a40-b534-bad4b4ca3428").Extract() + removeIngressPolicy, err := groups.RemoveIngressPolicy(context.TODO(), fake.ServiceClient(), "6bfb0f10-07f7-4a40-b534-bad4b4ca3428").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, removeIngressPolicy.IngressFirewallPolicyID, "") th.AssertEquals(t, removeIngressPolicy.EgressFirewallPolicyID, "43a11f3a-ddac-4129-9469-02b9df26548e") @@ -387,7 +388,7 @@ func TestRemoveEgressPolicy(t *testing.T) { `) }) - removeEgressPolicy, err := groups.RemoveEgressPolicy(fake.ServiceClient(), "6bfb0f10-07f7-4a40-b534-bad4b4ca3428").Extract() + removeEgressPolicy, err := groups.RemoveEgressPolicy(context.TODO(), fake.ServiceClient(), "6bfb0f10-07f7-4a40-b534-bad4b4ca3428").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, removeEgressPolicy.IngressFirewallPolicyID, "e3f11142-3792-454b-8d3e-91ac1bf127b4") th.AssertEquals(t, removeEgressPolicy.EgressFirewallPolicyID, "") @@ -403,6 +404,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := groups.Delete(fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304") + res := groups.Delete(context.TODO(), fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/fwaas_v2/policies/requests.go b/openstack/networking/v2/extensions/fwaas_v2/policies/requests.go index abb468971c..e908249b00 100644 --- a/openstack/networking/v2/extensions/fwaas_v2/policies/requests.go +++ b/openstack/networking/v2/extensions/fwaas_v2/policies/requests.go @@ -1,6 +1,8 @@ package policies import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -83,19 +85,19 @@ func (opts CreateOpts) ToFirewallPolicyCreateMap() (map[string]interface{}, erro } // Create accepts a CreateOpts struct and uses the values to create a new firewall policy -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToFirewallPolicyCreateMap() if err != nil { r.Err = err return } - _, r.Err = c.Post(rootURL(c), b, &r.Body, nil) + _, r.Err = c.Post(ctx, rootURL(c), b, &r.Body, nil) return } // Get retrieves a particular firewall policy based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - _, r.Err = c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + _, r.Err = c.Get(ctx, resourceURL(c, id), &r.Body, nil) return } @@ -122,21 +124,21 @@ func (opts UpdateOpts) ToFirewallPolicyUpdateMap() (map[string]interface{}, erro } // Update allows firewall policies to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToFirewallPolicyUpdateMap() if err != nil { r.Err = err return } - _, r.Err = c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + _, r.Err = c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return } // Delete will permanently delete a particular firewall policy based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - _, r.Err = c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + _, r.Err = c.Delete(ctx, resourceURL(c, id), nil) return } @@ -154,21 +156,21 @@ func (opts InsertRuleOpts) ToFirewallPolicyInsertRuleMap() (map[string]interface return gophercloud.BuildRequestBody(opts, "") } -func InsertRule(c *gophercloud.ServiceClient, id string, opts InsertRuleOptsBuilder) (r InsertRuleResult) { +func InsertRule(ctx context.Context, c *gophercloud.ServiceClient, id string, opts InsertRuleOptsBuilder) (r InsertRuleResult) { b, err := opts.ToFirewallPolicyInsertRuleMap() if err != nil { r.Err = err return } - _, r.Err = c.Put(insertURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + _, r.Err = c.Put(ctx, insertURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return } -func RemoveRule(c *gophercloud.ServiceClient, id, ruleID string) (r RemoveRuleResult) { +func RemoveRule(ctx context.Context, c *gophercloud.ServiceClient, id, ruleID string) (r RemoveRuleResult) { b := map[string]interface{}{"firewall_rule_id": ruleID} - _, r.Err = c.Put(removeURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + _, r.Err = c.Put(ctx, removeURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) return diff --git a/openstack/networking/v2/extensions/fwaas_v2/policies/testing/requests_test.go b/openstack/networking/v2/extensions/fwaas_v2/policies/testing/requests_test.go index 203de039fe..af03dccaeb 100644 --- a/openstack/networking/v2/extensions/fwaas_v2/policies/testing/requests_test.go +++ b/openstack/networking/v2/extensions/fwaas_v2/policies/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -58,7 +59,7 @@ func TestList(t *testing.T) { count := 0 - policies.List(fake.ServiceClient(), policies.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + policies.List(fake.ServiceClient(), policies.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := policies.ExtractPolicies(page) if err != nil { @@ -164,7 +165,7 @@ func TestCreate(t *testing.T) { }, } - _, err := policies.Create(fake.ServiceClient(), options).Extract() + _, err := policies.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) } @@ -209,7 +210,7 @@ func TestInsertRule(t *testing.T) { InsertBefore: "3062ed90-1fb0-4c25-af3d-318dff2143ae", } - policy, err := policies.InsertRule(fake.ServiceClient(), "e3c78ab6-e827-4297-8d68-739063865a8b", options).Extract() + policy, err := policies.InsertRule(context.TODO(), fake.ServiceClient(), "e3c78ab6-e827-4297-8d68-739063865a8b", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "TESTACC-2LnMayeG", policy.Name) th.AssertEquals(t, 2, len(policy.Rules)) @@ -232,7 +233,7 @@ func TestInsertRuleWithInvalidParameters(t *testing.T) { InsertAfter: "2", } - _, err := policies.InsertRule(fake.ServiceClient(), "0", options).Extract() + _, err := policies.InsertRule(context.TODO(), fake.ServiceClient(), "0", options).Extract() // expect to fail with an gophercloud error th.AssertErr(t, err) @@ -269,7 +270,7 @@ func TestGet(t *testing.T) { `) }) - policy, err := policies.Get(fake.ServiceClient(), "f2b08c1e-aa81-4668-8ae1-1401bcb0576c").Extract() + policy, err := policies.Get(context.TODO(), fake.ServiceClient(), "f2b08c1e-aa81-4668-8ae1-1401bcb0576c").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "www", policy.Name) @@ -339,7 +340,7 @@ func TestUpdate(t *testing.T) { }, } - _, err := policies.Update(fake.ServiceClient(), "f2b08c1e-aa81-4668-8ae1-1401bcb0576c", options).Extract() + _, err := policies.Update(context.TODO(), fake.ServiceClient(), "f2b08c1e-aa81-4668-8ae1-1401bcb0576c", options).Extract() th.AssertNoErr(t, err) } @@ -353,7 +354,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := policies.Delete(fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304") + res := policies.Delete(context.TODO(), fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304") th.AssertNoErr(t, res.Err) } @@ -391,7 +392,7 @@ func TestRemoveRule(t *testing.T) { `) }) - policy, err := policies.RemoveRule(fake.ServiceClient(), "9fed8075-06ee-463f-83a6-d4118791b02f", "9fed8075-06ee-463f-83a6-d4118791b02f").Extract() + policy, err := policies.RemoveRule(context.TODO(), fake.ServiceClient(), "9fed8075-06ee-463f-83a6-d4118791b02f", "9fed8075-06ee-463f-83a6-d4118791b02f").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "9fed8075-06ee-463f-83a6-d4118791b02f", policy.ID) diff --git a/openstack/networking/v2/extensions/fwaas_v2/rules/requests.go b/openstack/networking/v2/extensions/fwaas_v2/rules/requests.go index 206c1744cd..cd47062252 100644 --- a/openstack/networking/v2/extensions/fwaas_v2/rules/requests.go +++ b/openstack/networking/v2/extensions/fwaas_v2/rules/requests.go @@ -1,6 +1,8 @@ package rules import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -144,20 +146,20 @@ func (opts CreateOpts) ToRuleCreateMap() (map[string]interface{}, error) { } // Create accepts a CreateOpts struct and uses the values to create a new firewall rule -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToRuleCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular firewall rule based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -191,13 +193,13 @@ func (opts UpdateOpts) ToRuleUpdateMap() (map[string]interface{}, error) { } // Update allows firewall policies to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToRuleUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -205,8 +207,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete will permanently delete a particular firewall rule based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/fwaas_v2/rules/testing/requests_test.go b/openstack/networking/v2/extensions/fwaas_v2/rules/testing/requests_test.go index cc28e83489..5f40b5844b 100644 --- a/openstack/networking/v2/extensions/fwaas_v2/rules/testing/requests_test.go +++ b/openstack/networking/v2/extensions/fwaas_v2/rules/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -67,7 +68,7 @@ func TestList(t *testing.T) { count := 0 - rules.List(fake.ServiceClient(), rules.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + rules.List(fake.ServiceClient(), rules.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := rules.ExtractRules(page) if err != nil { @@ -183,7 +184,7 @@ func TestCreate(t *testing.T) { Action: "allow", } - _, err := rules.Create(fake.ServiceClient(), options).Extract() + _, err := rules.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) } @@ -247,7 +248,7 @@ func TestCreateAnyProtocol(t *testing.T) { Action: "allow", } - _, err := rules.Create(fake.ServiceClient(), options).Extract() + _, err := rules.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) } @@ -286,7 +287,7 @@ func TestGet(t *testing.T) { `) }) - rule, err := rules.Get(fake.ServiceClient(), "f03bd950-6c56-4f5e-a307-45967078f507").Extract() + rule, err := rules.Get(context.TODO(), fake.ServiceClient(), "f03bd950-6c56-4f5e-a307-45967078f507").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "tcp", rule.Protocol) @@ -370,7 +371,7 @@ func TestUpdate(t *testing.T) { Enabled: gophercloud.Disabled, } - _, err := rules.Update(fake.ServiceClient(), "f03bd950-6c56-4f5e-a307-45967078f507", options).Extract() + _, err := rules.Update(context.TODO(), fake.ServiceClient(), "f03bd950-6c56-4f5e-a307-45967078f507", options).Extract() th.AssertNoErr(t, err) } @@ -384,6 +385,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := rules.Delete(fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304") + res := rules.Delete(context.TODO(), fake.ServiceClient(), "4ec89077-d057-4a2b-911f-60a3b47ee304") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/layer3/addressscopes/requests.go b/openstack/networking/v2/extensions/layer3/addressscopes/requests.go index cf7221b859..918d42cf12 100644 --- a/openstack/networking/v2/extensions/layer3/addressscopes/requests.go +++ b/openstack/networking/v2/extensions/layer3/addressscopes/requests.go @@ -1,6 +1,8 @@ package addressscopes import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -59,8 +61,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a specific address-scope based on its ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(getURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -95,13 +97,13 @@ func (opts CreateOpts) ToAddressScopeCreateMap() (map[string]interface{}, error) } // Create requests the creation of a new address-scope on the server. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToAddressScopeCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -130,13 +132,13 @@ func (opts UpdateOpts) ToAddressScopeUpdateMap() (map[string]interface{}, error) // Update accepts a UpdateOpts struct and updates an existing address-scope // using the values provided. -func Update(c *gophercloud.ServiceClient, addressScopeID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, addressScopeID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToAddressScopeUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(updateURL(c, addressScopeID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, addressScopeID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -144,8 +146,8 @@ func Update(c *gophercloud.ServiceClient, addressScopeID string, opts UpdateOpts } // Delete accepts a unique ID and deletes the address-scope associated with it. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(deleteURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, deleteURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/layer3/addressscopes/testing/requests_test.go b/openstack/networking/v2/extensions/layer3/addressscopes/testing/requests_test.go index f1d0484f7e..05e5a85174 100644 --- a/openstack/networking/v2/extensions/layer3/addressscopes/testing/requests_test.go +++ b/openstack/networking/v2/extensions/layer3/addressscopes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -27,7 +28,7 @@ func TestList(t *testing.T) { count := 0 - addressscopes.List(fake.ServiceClient(), addressscopes.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + addressscopes.List(fake.ServiceClient(), addressscopes.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := addressscopes.ExtractAddressScopes(page) if err != nil { @@ -64,7 +65,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, AddressScopesGetResult) }) - s, err := addressscopes.Get(fake.ServiceClient(), "9cc35860-522a-4d35-974d-51d4b011801e").Extract() + s, err := addressscopes.Get(context.TODO(), fake.ServiceClient(), "9cc35860-522a-4d35-974d-51d4b011801e").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.ID, "9cc35860-522a-4d35-974d-51d4b011801e") @@ -97,7 +98,7 @@ func TestCreate(t *testing.T) { Shared: true, Name: "test0", } - s, err := addressscopes.Create(fake.ServiceClient(), opts).Extract() + s, err := addressscopes.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "test0") @@ -131,7 +132,7 @@ func TestUpdate(t *testing.T) { Name: &newName, Shared: &shared, } - s, err := addressscopes.Update(fake.ServiceClient(), "9cc35860-522a-4d35-974d-51d4b011801e", updateOpts).Extract() + s, err := addressscopes.Update(context.TODO(), fake.ServiceClient(), "9cc35860-522a-4d35-974d-51d4b011801e", updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "test1") @@ -148,6 +149,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := addressscopes.Delete(fake.ServiceClient(), "9cc35860-522a-4d35-974d-51d4b011801e") + res := addressscopes.Delete(context.TODO(), fake.ServiceClient(), "9cc35860-522a-4d35-974d-51d4b011801e") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/layer3/extraroutes/requests.go b/openstack/networking/v2/extensions/layer3/extraroutes/requests.go index 501955b031..8e7229047b 100644 --- a/openstack/networking/v2/extensions/layer3/extraroutes/requests.go +++ b/openstack/networking/v2/extensions/layer3/extraroutes/requests.go @@ -1,6 +1,8 @@ package extraroutes import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/layer3/routers" ) @@ -23,13 +25,13 @@ func (opts Opts) ToExtraRoutesUpdateMap() (map[string]interface{}, error) { } // Add allows routers to be updated with a list of routes to be added. -func Add(c *gophercloud.ServiceClient, id string, opts OptsBuilder) (r AddResult) { +func Add(ctx context.Context, c *gophercloud.ServiceClient, id string, opts OptsBuilder) (r AddResult) { b, err := opts.ToExtraRoutesUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(addExtraRoutesURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, addExtraRoutesURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -37,13 +39,13 @@ func Add(c *gophercloud.ServiceClient, id string, opts OptsBuilder) (r AddResult } // Remove allows routers to be updated with a list of routes to be removed. -func Remove(c *gophercloud.ServiceClient, id string, opts OptsBuilder) (r RemoveResult) { +func Remove(ctx context.Context, c *gophercloud.ServiceClient, id string, opts OptsBuilder) (r RemoveResult) { b, err := opts.ToExtraRoutesUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(removeExtraRoutesURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, removeExtraRoutesURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/layer3/extraroutes/testing/requests_test.go b/openstack/networking/v2/extensions/layer3/extraroutes/testing/requests_test.go index fefe1a2c00..66d08c8898 100644 --- a/openstack/networking/v2/extensions/layer3/extraroutes/testing/requests_test.go +++ b/openstack/networking/v2/extensions/layer3/extraroutes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -62,7 +63,7 @@ func TestAddExtraRoutes(t *testing.T) { } options := extraroutes.Opts{Routes: &r} - n, err := extraroutes.Add(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() + n, err := extraroutes.Add(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, n.Routes, []routers.Route{ @@ -134,7 +135,7 @@ func TestRemoveExtraRoutes(t *testing.T) { } options := extraroutes.Opts{Routes: &r} - n, err := extraroutes.Remove(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() + n, err := extraroutes.Remove(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, n.Routes, []routers.Route{ diff --git a/openstack/networking/v2/extensions/layer3/floatingips/requests.go b/openstack/networking/v2/extensions/layer3/floatingips/requests.go index 0fbbcad239..d14dcfb6bd 100644 --- a/openstack/networking/v2/extensions/layer3/floatingips/requests.go +++ b/openstack/networking/v2/extensions/layer3/floatingips/requests.go @@ -1,6 +1,8 @@ package floatingips import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -110,20 +112,20 @@ func (opts CreateOpts) ToFloatingIPCreateMap() (map[string]interface{}, error) { // operation will fail and return a 400 error code. If the PortID and FixedIP // are already associated with another resource, the operation will fail and // returns a 409 error code. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToFloatingIPCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular floating IP resource based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -163,13 +165,13 @@ func (opts UpdateOpts) ToFloatingIPUpdateMap() (map[string]interface{}, error) { // "update" a floating IP is to associate it with a new internal port, or // disassociated it from all ports. See UpdateOpts for instructions of how to // do this. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToFloatingIPUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -179,8 +181,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r // Delete will permanently delete a particular floating IP resource. Please // ensure this is what you want - you can also disassociate the IP from existing // internal ports. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/layer3/floatingips/testing/requests_test.go b/openstack/networking/v2/extensions/layer3/floatingips/testing/requests_test.go index 60fb2ad88f..5ac2828806 100644 --- a/openstack/networking/v2/extensions/layer3/floatingips/testing/requests_test.go +++ b/openstack/networking/v2/extensions/layer3/floatingips/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -28,7 +29,7 @@ func TestList(t *testing.T) { count := 0 - err := floatingips.List(fake.ServiceClient(), floatingips.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := floatingips.List(fake.ServiceClient(), floatingips.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := floatingips.ExtractFloatingIPs(page) if err != nil { @@ -90,19 +91,19 @@ func TestInvalidNextPageURLs(t *testing.T) { fmt.Fprintf(w, `{"floatingips": [{}], "floatingips_links": {}}`) }) - floatingips.List(fake.ServiceClient(), floatingips.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + floatingips.List(fake.ServiceClient(), floatingips.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { floatingips.ExtractFloatingIPs(page) return true, nil }) } func TestRequiredFieldsForCreate(t *testing.T) { - res1 := floatingips.Create(fake.ServiceClient(), floatingips.CreateOpts{FloatingNetworkID: ""}) + res1 := floatingips.Create(context.TODO(), fake.ServiceClient(), floatingips.CreateOpts{FloatingNetworkID: ""}) if res1.Err == nil { t.Fatalf("Expected error, got none") } - res2 := floatingips.Create(fake.ServiceClient(), floatingips.CreateOpts{FloatingNetworkID: "foo", PortID: ""}) + res2 := floatingips.Create(context.TODO(), fake.ServiceClient(), floatingips.CreateOpts{FloatingNetworkID: "foo", PortID: ""}) if res2.Err == nil { t.Fatalf("Expected error, got none") } @@ -151,7 +152,7 @@ func TestCreate(t *testing.T) { PortID: "ce705c24-c1ef-408a-bda3-7bbd946164ab", } - ip, err := floatingips.Create(fake.ServiceClient(), options).Extract() + ip, err := floatingips.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "2f245a7b-796b-4f26-9cf9-9e82d248fda7", ip.ID) @@ -204,7 +205,7 @@ func TestCreateEmptyPort(t *testing.T) { FloatingNetworkID: "376da547-b977-4cfe-9cba-275c80debf57", } - ip, err := floatingips.Create(fake.ServiceClient(), options).Extract() + ip, err := floatingips.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "2f245a7b-796b-4f26-9cf9-9e82d248fda7", ip.ID) @@ -260,7 +261,7 @@ func TestCreateWithSubnetID(t *testing.T) { SubnetID: "37adf01c-24db-467a-b845-7ab1e8216c01", } - ip, err := floatingips.Create(fake.ServiceClient(), options).Extract() + ip, err := floatingips.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "2f245a7b-796b-4f26-9cf9-9e82d248fda7", ip.ID) @@ -302,7 +303,7 @@ func TestGet(t *testing.T) { `) }) - ip, err := floatingips.Get(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7").Extract() + ip, err := floatingips.Get(context.TODO(), fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "90f742b1-6d17-487b-ba95-71881dbc0b64", ip.FloatingNetworkID) @@ -353,7 +354,7 @@ func TestAssociate(t *testing.T) { }) portID := "423abc8d-2991-4a55-ba98-2aaea84cc72e" - ip, err := floatingips.Update(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", floatingips.UpdateOpts{PortID: &portID}).Extract() + ip, err := floatingips.Update(context.TODO(), fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", floatingips.UpdateOpts{PortID: &portID}).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, portID, ip.PortID) @@ -394,7 +395,7 @@ func TestDisassociate(t *testing.T) { `) }) - ip, err := floatingips.Update(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", floatingips.UpdateOpts{PortID: new(string)}).Extract() + ip, err := floatingips.Update(context.TODO(), fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", floatingips.UpdateOpts{PortID: new(string)}).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, "", ip.FixedIP) @@ -411,6 +412,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := floatingips.Delete(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7") + res := floatingips.Delete(context.TODO(), fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/layer3/portforwarding/requests.go b/openstack/networking/v2/extensions/layer3/portforwarding/requests.go index af919a586e..95a0a37283 100644 --- a/openstack/networking/v2/extensions/layer3/portforwarding/requests.go +++ b/openstack/networking/v2/extensions/layer3/portforwarding/requests.go @@ -1,6 +1,8 @@ package portforwarding import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -52,8 +54,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder, id string) paginat } // Get retrieves a particular port forwarding resource based on its unique ID. -func Get(c *gophercloud.ServiceClient, floatingIpId string, pfId string) (r GetResult) { - resp, err := c.Get(singlePortForwardingUrl(c, floatingIpId, pfId), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, floatingIpId string, pfId string) (r GetResult) { + resp, err := c.Get(ctx, singlePortForwardingUrl(c, floatingIpId, pfId), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -82,13 +84,13 @@ func (opts CreateOpts) ToPortForwardingCreateMap() (map[string]interface{}, erro // Create accepts a CreateOpts struct and uses the values provided to create a // new port forwarding for an existing floating IP. -func Create(c *gophercloud.ServiceClient, floatingIpId string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, floatingIpId string, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToPortForwardingCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(portForwardingUrl(c, floatingIpId), b, &r.Body, nil) + resp, err := c.Post(ctx, portForwardingUrl(c, floatingIpId), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -120,13 +122,13 @@ type UpdateOptsBuilder interface { } // Update allows port forwarding resources to be updated. -func Update(c *gophercloud.ServiceClient, fipID string, pfID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, fipID string, pfID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToPortForwardingUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(singlePortForwardingUrl(c, fipID, pfID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, singlePortForwardingUrl(c, fipID, pfID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -134,8 +136,8 @@ func Update(c *gophercloud.ServiceClient, fipID string, pfID string, opts Update } // Delete will permanently delete a particular port forwarding for a given floating ID. -func Delete(c *gophercloud.ServiceClient, floatingIpId string, pfId string) (r DeleteResult) { - resp, err := c.Delete(singlePortForwardingUrl(c, floatingIpId, pfId), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, floatingIpId string, pfId string) (r DeleteResult) { + resp, err := c.Delete(ctx, singlePortForwardingUrl(c, floatingIpId, pfId), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/layer3/portforwarding/testing/requests_test.go b/openstack/networking/v2/extensions/layer3/portforwarding/testing/requests_test.go index 57b3ff0b30..a2d58ec4e8 100644 --- a/openstack/networking/v2/extensions/layer3/portforwarding/testing/requests_test.go +++ b/openstack/networking/v2/extensions/layer3/portforwarding/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -27,7 +28,7 @@ func TestPortForwardingList(t *testing.T) { count := 0 - portforwarding.List(fake.ServiceClient(), portforwarding.ListOpts{}, "2f95fd2b-9f6a-4e8e-9e9a-2cbe286cbf9e").EachPage(func(page pagination.Page) (bool, error) { + portforwarding.List(fake.ServiceClient(), portforwarding.ListOpts{}, "2f95fd2b-9f6a-4e8e-9e9a-2cbe286cbf9e").EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := portforwarding.ExtractPortForwardings(page) if err != nil { @@ -110,7 +111,7 @@ func TestCreate(t *testing.T) { InternalPortID: "1238be08-a2a8-4b8d-addf-fb5e2250e480", } - pf, err := portforwarding.Create(fake.ServiceClient(), "2f95fd2b-9f6a-4e8e-9e9a-2cbe286cbf9e", options).Extract() + pf, err := portforwarding.Create(context.TODO(), fake.ServiceClient(), "2f95fd2b-9f6a-4e8e-9e9a-2cbe286cbf9e", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "725ade3c-9760-4880-8080-8fc2dbab9acc", pf.ID) @@ -146,7 +147,7 @@ func TestGet(t *testing.T) { `) }) - pf, err := portforwarding.Get(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", "725ade3c-9760-4880-8080-8fc2dbab9acc").Extract() + pf, err := portforwarding.Get(context.TODO(), fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", "725ade3c-9760-4880-8080-8fc2dbab9acc").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "tcp", pf.Protocol) @@ -167,7 +168,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := portforwarding.Delete(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", "725ade3c-9760-4880-8080-8fc2dbab9acc") + res := portforwarding.Delete(context.TODO(), fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", "725ade3c-9760-4880-8080-8fc2dbab9acc") th.AssertNoErr(t, res.Err) } @@ -219,7 +220,7 @@ func TestUpdate(t *testing.T) { ExternalPort: updatedExternalPort, } - actual, err := portforwarding.Update(fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", "725ade3c-9760-4880-8080-8fc2dbab9acc", options).Extract() + actual, err := portforwarding.Update(context.TODO(), fake.ServiceClient(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7", "725ade3c-9760-4880-8080-8fc2dbab9acc", options).Extract() th.AssertNoErr(t, err) expected := portforwarding.PortForwarding{ Protocol: "udp", diff --git a/openstack/networking/v2/extensions/layer3/routers/requests.go b/openstack/networking/v2/extensions/layer3/routers/requests.go index 8a39ef7593..67061533ea 100644 --- a/openstack/networking/v2/extensions/layer3/routers/requests.go +++ b/openstack/networking/v2/extensions/layer3/routers/requests.go @@ -1,6 +1,8 @@ package routers import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -78,20 +80,20 @@ func (opts CreateOpts) ToRouterCreateMap() (map[string]interface{}, error) { // GatewayInfo struct. The external gateway for the router must be plugged into // an external network (it is external if its `router:external' field is set to // true). -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToRouterCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular router based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -122,13 +124,13 @@ func (opts UpdateOpts) ToRouterUpdateMap() (map[string]interface{}, error) { // external gateway for a router, see Create. This operation does not enable // the update of router interfaces. To do this, use the AddInterface and // RemoveInterface functions. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToRouterUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -136,8 +138,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete will permanently delete a particular router based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -180,13 +182,13 @@ func (opts AddInterfaceOpts) ToRouterAddInterfaceMap() (map[string]interface{}, // identifier of a new port created by this operation. After the operation // completes, the device ID of the port is set to the router ID, and the // device owner attribute is set to `network:router_interface'. -func AddInterface(c *gophercloud.ServiceClient, id string, opts AddInterfaceOptsBuilder) (r InterfaceResult) { +func AddInterface(ctx context.Context, c *gophercloud.ServiceClient, id string, opts AddInterfaceOptsBuilder) (r InterfaceResult) { b, err := opts.ToRouterAddInterfaceMap() if err != nil { r.Err = err return } - resp, err := c.Put(addInterfaceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, addInterfaceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -225,13 +227,13 @@ func (opts RemoveInterfaceOpts) ToRouterRemoveInterfaceMap() (map[string]interfa // visible to you, the operation will fail and a 404 Not Found error will be // returned. After this operation completes, the port connecting the router // with the subnet is removed from the subnet for the network. -func RemoveInterface(c *gophercloud.ServiceClient, id string, opts RemoveInterfaceOptsBuilder) (r InterfaceResult) { +func RemoveInterface(ctx context.Context, c *gophercloud.ServiceClient, id string, opts RemoveInterfaceOptsBuilder) (r InterfaceResult) { b, err := opts.ToRouterRemoveInterfaceMap() if err != nil { r.Err = err return } - resp, err := c.Put(removeInterfaceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, removeInterfaceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/layer3/routers/testing/requests_test.go b/openstack/networking/v2/extensions/layer3/routers/testing/requests_test.go index 1e1b7a630e..fbb07c71ae 100644 --- a/openstack/networking/v2/extensions/layer3/routers/testing/requests_test.go +++ b/openstack/networking/v2/extensions/layer3/routers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -69,7 +70,7 @@ func TestList(t *testing.T) { count := 0 - routers.List(fake.ServiceClient(), routers.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + routers.List(fake.ServiceClient(), routers.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := routers.ExtractRouters(page) if err != nil { @@ -197,7 +198,7 @@ func TestCreate(t *testing.T) { GatewayInfo: &gwi, AvailabilityZoneHints: []string{"zone1", "zone2"}, } - r, err := routers.Create(fake.ServiceClient(), options).Extract() + r, err := routers.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) gwi.ExternalFixedIPs = []routers.ExternalFixedIP{{ @@ -250,7 +251,7 @@ func TestGet(t *testing.T) { `) }) - n, err := routers.Get(fake.ServiceClient(), "a07eea83-7710-4860-931b-5fe220fae533").Extract() + n, err := routers.Get(context.TODO(), fake.ServiceClient(), "a07eea83-7710-4860-931b-5fe220fae533").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Status, "ACTIVE") @@ -333,7 +334,7 @@ func TestUpdate(t *testing.T) { r := []routers.Route{{DestinationCIDR: "40.0.1.0/24", NextHop: "10.1.0.10"}} options := routers.UpdateOpts{Name: "new_name", GatewayInfo: &gwi, Routes: &r} - n, err := routers.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() + n, err := routers.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() th.AssertNoErr(t, err) gwi.ExternalFixedIPs = []routers.ExternalFixedIP{ @@ -393,7 +394,7 @@ func TestUpdateWithoutRoutes(t *testing.T) { options := routers.UpdateOpts{Name: "new_name"} - n, err := routers.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() + n, err := routers.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, "new_name") @@ -441,7 +442,7 @@ func TestAllRoutesRemoved(t *testing.T) { r := []routers.Route{} options := routers.UpdateOpts{Routes: &r} - n, err := routers.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() + n, err := routers.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, n.Routes, []routers.Route{}) @@ -457,7 +458,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := routers.Delete(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c") + res := routers.Delete(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c") th.AssertNoErr(t, res.Err) } @@ -490,7 +491,7 @@ func TestAddInterface(t *testing.T) { }) opts := routers.AddInterfaceOpts{SubnetID: "a2f1f29d-571b-4533-907f-5803ab96ead1"} - res, err := routers.AddInterface(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", opts).Extract() + res, err := routers.AddInterface(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "0d32a837-8069-4ec3-84c4-3eef3e10b188", res.SubnetID) @@ -500,11 +501,11 @@ func TestAddInterface(t *testing.T) { } func TestAddInterfaceRequiredOpts(t *testing.T) { - _, err := routers.AddInterface(fake.ServiceClient(), "foo", routers.AddInterfaceOpts{}).Extract() + _, err := routers.AddInterface(context.TODO(), fake.ServiceClient(), "foo", routers.AddInterfaceOpts{}).Extract() if err == nil { t.Fatalf("Expected error, got none") } - _, err = routers.AddInterface(fake.ServiceClient(), "foo", routers.AddInterfaceOpts{SubnetID: "bar", PortID: "baz"}).Extract() + _, err = routers.AddInterface(context.TODO(), fake.ServiceClient(), "foo", routers.AddInterfaceOpts{SubnetID: "bar", PortID: "baz"}).Extract() if err == nil { t.Fatalf("Expected error, got none") } @@ -539,7 +540,7 @@ func TestRemoveInterface(t *testing.T) { }) opts := routers.RemoveInterfaceOpts{SubnetID: "a2f1f29d-571b-4533-907f-5803ab96ead1"} - res, err := routers.RemoveInterface(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", opts).Extract() + res, err := routers.RemoveInterface(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "0d32a837-8069-4ec3-84c4-3eef3e10b188", res.SubnetID) @@ -621,7 +622,7 @@ func TestListL3Agents(t *testing.T) { `) }) - l3AgentsPages, err := routers.ListL3Agents(fake.ServiceClient(), "fa3a4aaa-c73f-48aa-a603-8c8bf642b7c0").AllPages() + l3AgentsPages, err := routers.ListL3Agents(fake.ServiceClient(), "fa3a4aaa-c73f-48aa-a603-8c8bf642b7c0").AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := routers.ExtractL3Agents(l3AgentsPages) th.AssertNoErr(t, err) diff --git a/openstack/networking/v2/extensions/lbaas/members/requests.go b/openstack/networking/v2/extensions/lbaas/members/requests.go index 9b102ed745..b5ad4b5c5c 100644 --- a/openstack/networking/v2/extensions/lbaas/members/requests.go +++ b/openstack/networking/v2/extensions/lbaas/members/requests.go @@ -1,6 +1,8 @@ package members import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -71,20 +73,20 @@ func (opts CreateOpts) ToLBMemberCreateMap() (map[string]interface{}, error) { // Create accepts a CreateOpts struct and uses the values to create a new // load balancer pool member. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToLBMemberCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular pool member based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -107,13 +109,13 @@ func (opts UpdateOpts) ToLBMemberUpdateMap() (map[string]interface{}, error) { } // Update allows members to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToLBMemberUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -121,8 +123,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete will permanently delete a particular member based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/lbaas/members/testing/requests_test.go b/openstack/networking/v2/extensions/lbaas/members/testing/requests_test.go index 0acb5b44bb..5af53d8fa8 100644 --- a/openstack/networking/v2/extensions/lbaas/members/testing/requests_test.go +++ b/openstack/networking/v2/extensions/lbaas/members/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -53,7 +54,7 @@ func TestList(t *testing.T) { count := 0 - members.List(fake.ServiceClient(), members.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + members.List(fake.ServiceClient(), members.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := members.ExtractMembers(page) if err != nil { @@ -138,7 +139,7 @@ func TestCreate(t *testing.T) { ProtocolPort: 8080, PoolID: "foo", } - _, err := members.Create(fake.ServiceClient(), options).Extract() + _, err := members.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) } @@ -168,7 +169,7 @@ func TestGet(t *testing.T) { `) }) - m, err := members.Get(fake.ServiceClient(), "975592ca-e308-48ad-8298-731935ee9f45").Extract() + m, err := members.Get(context.TODO(), fake.ServiceClient(), "975592ca-e308-48ad-8298-731935ee9f45").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "975592ca-e308-48ad-8298-731935ee9f45", m.ID) @@ -219,7 +220,7 @@ func TestUpdate(t *testing.T) { options := members.UpdateOpts{AdminStateUp: gophercloud.Disabled} - _, err := members.Update(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", options).Extract() + _, err := members.Update(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", options).Extract() th.AssertNoErr(t, err) } @@ -233,6 +234,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := members.Delete(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853") + res := members.Delete(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/lbaas/monitors/requests.go b/openstack/networking/v2/extensions/lbaas/monitors/requests.go index 47fc567b9b..fa23b85db6 100644 --- a/openstack/networking/v2/extensions/lbaas/monitors/requests.go +++ b/openstack/networking/v2/extensions/lbaas/monitors/requests.go @@ -1,6 +1,7 @@ package monitors import ( + "context" "fmt" "github.com/gophercloud/gophercloud/v2" @@ -140,20 +141,20 @@ func (opts CreateOpts) ToLBMonitorCreateMap() (map[string]interface{}, error) { // CreateOpts{Type: TypeHTTP, Delay: 20, Timeout: 10, MaxRetries: 3, // // HttpMethod: "HEAD", ExpectedCodes: "200"} -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToLBMonitorCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular health monitor based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -210,13 +211,13 @@ func (opts UpdateOpts) ToLBMonitorUpdateMap() (map[string]interface{}, error) { // Update is an operation which modifies the attributes of the specified // monitor. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToLBMonitorUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -224,8 +225,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete will permanently delete a particular monitor based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/lbaas/monitors/testing/requests_test.go b/openstack/networking/v2/extensions/lbaas/monitors/testing/requests_test.go index c07c9fcce3..8537df8b02 100644 --- a/openstack/networking/v2/extensions/lbaas/monitors/testing/requests_test.go +++ b/openstack/networking/v2/extensions/lbaas/monitors/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -54,7 +55,7 @@ func TestList(t *testing.T) { count := 0 - monitors.List(fake.ServiceClient(), monitors.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + monitors.List(fake.ServiceClient(), monitors.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := monitors.ExtractMonitors(page) if err != nil { @@ -97,7 +98,7 @@ func TestList(t *testing.T) { } func TestDelayMustBeGreaterOrEqualThanTimeout(t *testing.T) { - _, err := monitors.Create(fake.ServiceClient(), monitors.CreateOpts{ + _, err := monitors.Create(context.TODO(), fake.ServiceClient(), monitors.CreateOpts{ Type: "HTTP", Delay: 1, Timeout: 10, @@ -110,7 +111,7 @@ func TestDelayMustBeGreaterOrEqualThanTimeout(t *testing.T) { t.Fatalf("Expected error, got none") } - _, err = monitors.Update(fake.ServiceClient(), "453105b9-1754-413f-aab1-55f1af620750", monitors.UpdateOpts{ + _, err = monitors.Update(context.TODO(), fake.ServiceClient(), "453105b9-1754-413f-aab1-55f1af620750", monitors.UpdateOpts{ Delay: 1, Timeout: 10, }).Extract() @@ -165,7 +166,7 @@ func TestCreate(t *testing.T) { `) }) - _, err := monitors.Create(fake.ServiceClient(), monitors.CreateOpts{ + _, err := monitors.Create(context.TODO(), fake.ServiceClient(), monitors.CreateOpts{ Type: "HTTP", TenantID: "453105b9-1754-413f-aab1-55f1af620750", Delay: 20, @@ -179,11 +180,11 @@ func TestCreate(t *testing.T) { } func TestRequiredCreateOpts(t *testing.T) { - res := monitors.Create(fake.ServiceClient(), monitors.CreateOpts{}) + res := monitors.Create(context.TODO(), fake.ServiceClient(), monitors.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = monitors.Create(fake.ServiceClient(), monitors.CreateOpts{Type: monitors.TypeHTTP}) + res = monitors.Create(context.TODO(), fake.ServiceClient(), monitors.CreateOpts{Type: monitors.TypeHTTP}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -219,7 +220,7 @@ func TestGet(t *testing.T) { `) }) - hm, err := monitors.Get(fake.ServiceClient(), "f3eeab00-8367-4524-b662-55e64d4cacb5").Extract() + hm, err := monitors.Get(context.TODO(), fake.ServiceClient(), "f3eeab00-8367-4524-b662-55e64d4cacb5").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "f3eeab00-8367-4524-b662-55e64d4cacb5", hm.ID) @@ -283,7 +284,7 @@ func TestUpdate(t *testing.T) { `) }) - _, err := monitors.Update(fake.ServiceClient(), "b05e44b5-81f9-4551-b474-711a722698f7", monitors.UpdateOpts{ + _, err := monitors.Update(context.TODO(), fake.ServiceClient(), "b05e44b5-81f9-4551-b474-711a722698f7", monitors.UpdateOpts{ Delay: 30, Timeout: 20, MaxRetries: 10, @@ -305,6 +306,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := monitors.Delete(fake.ServiceClient(), "b05e44b5-81f9-4551-b474-711a722698f7") + res := monitors.Delete(context.TODO(), fake.ServiceClient(), "b05e44b5-81f9-4551-b474-711a722698f7") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/lbaas/pools/requests.go b/openstack/networking/v2/extensions/lbaas/pools/requests.go index 9c9cedb32c..ec02374f70 100644 --- a/openstack/networking/v2/extensions/lbaas/pools/requests.go +++ b/openstack/networking/v2/extensions/lbaas/pools/requests.go @@ -1,6 +1,8 @@ package pools import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -98,20 +100,20 @@ func (opts CreateOpts) ToLBPoolCreateMap() (map[string]interface{}, error) { // Create accepts a CreateOptsBuilder and uses the values to create a new // load balancer pool. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToLBPoolCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular pool based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -139,13 +141,13 @@ func (opts UpdateOpts) ToLBPoolUpdateMap() (map[string]interface{}, error) { } // Update allows pools to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToLBPoolUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -153,8 +155,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete will permanently delete a particular pool based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -164,9 +166,9 @@ func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { // pool and will deactivate these members if they are deemed unhealthy. A // member can be deactivated (status set to INACTIVE) if any of health monitors // finds it unhealthy. -func AssociateMonitor(c *gophercloud.ServiceClient, poolID, monitorID string) (r AssociateResult) { +func AssociateMonitor(ctx context.Context, c *gophercloud.ServiceClient, poolID, monitorID string) (r AssociateResult) { b := map[string]interface{}{"health_monitor": map[string]string{"id": monitorID}} - resp, err := c.Post(associateURL(c, poolID), b, &r.Body, nil) + resp, err := c.Post(ctx, associateURL(c, poolID), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -174,8 +176,8 @@ func AssociateMonitor(c *gophercloud.ServiceClient, poolID, monitorID string) (r // DisassociateMonitor will disassociate a health monitor with a particular // pool. When dissociation is successful, the health monitor will no longer // check for the health of the members of the pool. -func DisassociateMonitor(c *gophercloud.ServiceClient, poolID, monitorID string) (r AssociateResult) { - resp, err := c.Delete(disassociateURL(c, poolID, monitorID), nil) +func DisassociateMonitor(ctx context.Context, c *gophercloud.ServiceClient, poolID, monitorID string) (r AssociateResult) { + resp, err := c.Delete(ctx, disassociateURL(c, poolID, monitorID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/lbaas/pools/testing/requests_test.go b/openstack/networking/v2/extensions/lbaas/pools/testing/requests_test.go index 814f5c86de..db2dcf90ee 100644 --- a/openstack/networking/v2/extensions/lbaas/pools/testing/requests_test.go +++ b/openstack/networking/v2/extensions/lbaas/pools/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -55,7 +56,7 @@ func TestList(t *testing.T) { count := 0 - pools.List(fake.ServiceClient(), pools.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + pools.List(fake.ServiceClient(), pools.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := pools.ExtractPools(page) if err != nil { @@ -153,7 +154,7 @@ func TestCreate(t *testing.T) { TenantID: "2ffc6e22aae24e4795f87155d24c896f", Provider: "haproxy", } - p, err := pools.Create(fake.ServiceClient(), options).Extract() + p, err := pools.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "PENDING_CREATE", p.Status) @@ -201,7 +202,7 @@ func TestGet(t *testing.T) { `) }) - n, err := pools.Get(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853").Extract() + n, err := pools.Get(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.ID, "332abe93-f488-41ba-870b-2ac66be7f853") @@ -255,7 +256,7 @@ func TestUpdate(t *testing.T) { var name = "SuperPool" options := pools.UpdateOpts{Name: &name, LBMethod: pools.LBMethodLeastConnections} - n, err := pools.Update(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", options).Extract() + n, err := pools.Update(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "SuperPool", n.Name) @@ -272,7 +273,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := pools.Delete(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853") + res := pools.Delete(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853") th.AssertNoErr(t, res.Err) } @@ -298,7 +299,7 @@ func TestAssociateHealthMonitor(t *testing.T) { fmt.Fprintf(w, `{}`) }) - _, err := pools.AssociateMonitor(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "b624decf-d5d3-4c66-9a3d-f047e7786181").Extract() + _, err := pools.AssociateMonitor(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "b624decf-d5d3-4c66-9a3d-f047e7786181").Extract() th.AssertNoErr(t, err) } @@ -312,6 +313,6 @@ func TestDisassociateHealthMonitor(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := pools.DisassociateMonitor(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "b624decf-d5d3-4c66-9a3d-f047e7786181") + res := pools.DisassociateMonitor(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "b624decf-d5d3-4c66-9a3d-f047e7786181") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/lbaas/vips/requests.go b/openstack/networking/v2/extensions/lbaas/vips/requests.go index 0307aa6999..40937645b5 100644 --- a/openstack/networking/v2/extensions/lbaas/vips/requests.go +++ b/openstack/networking/v2/extensions/lbaas/vips/requests.go @@ -1,6 +1,8 @@ package vips import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -108,20 +110,20 @@ func (opts CreateOpts) ToVIPCreateMap() (map[string]interface{}, error) { // // Users with an admin role can create VIPs on behalf of other tenants by // specifying a TenantID attribute different than their own. -func Create(c *gophercloud.ServiceClient, opts CreateOpts) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOpts) (r CreateResult) { b, err := opts.ToVIPCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular virtual IP based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -163,13 +165,13 @@ func (opts UpdateOpts) ToVIPUpdateMap() (map[string]interface{}, error) { } // Update is an operation which modifies the attributes of the specified VIP. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToVIPUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -177,8 +179,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete will permanently delete a particular virtual IP based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/lbaas/vips/testing/requests_test.go b/openstack/networking/v2/extensions/lbaas/vips/testing/requests_test.go index 5543faf901..ae0c86e87b 100644 --- a/openstack/networking/v2/extensions/lbaas/vips/testing/requests_test.go +++ b/openstack/networking/v2/extensions/lbaas/vips/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -63,7 +64,7 @@ func TestList(t *testing.T) { count := 0 - vips.List(fake.ServiceClient(), vips.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + vips.List(fake.ServiceClient(), vips.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := vips.ExtractVIPs(page) if err != nil { @@ -173,7 +174,7 @@ func TestCreate(t *testing.T) { Persistence: &vips.SessionPersistence{Type: "SOURCE_IP"}, } - r, err := vips.Create(fake.ServiceClient(), opts).Extract() + r, err := vips.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "PENDING_CREATE", r.Status) @@ -192,23 +193,23 @@ func TestCreate(t *testing.T) { } func TestRequiredCreateOpts(t *testing.T) { - res := vips.Create(fake.ServiceClient(), vips.CreateOpts{}) + res := vips.Create(context.TODO(), fake.ServiceClient(), vips.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = vips.Create(fake.ServiceClient(), vips.CreateOpts{Name: "foo"}) + res = vips.Create(context.TODO(), fake.ServiceClient(), vips.CreateOpts{Name: "foo"}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = vips.Create(fake.ServiceClient(), vips.CreateOpts{Name: "foo", SubnetID: "bar"}) + res = vips.Create(context.TODO(), fake.ServiceClient(), vips.CreateOpts{Name: "foo", SubnetID: "bar"}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = vips.Create(fake.ServiceClient(), vips.CreateOpts{Name: "foo", SubnetID: "bar", Protocol: "bar"}) + res = vips.Create(context.TODO(), fake.ServiceClient(), vips.CreateOpts{Name: "foo", SubnetID: "bar", Protocol: "bar"}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = vips.Create(fake.ServiceClient(), vips.CreateOpts{Name: "foo", SubnetID: "bar", Protocol: "bar", ProtocolPort: 80}) + res = vips.Create(context.TODO(), fake.ServiceClient(), vips.CreateOpts{Name: "foo", SubnetID: "bar", Protocol: "bar", ProtocolPort: 80}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -250,7 +251,7 @@ func TestGet(t *testing.T) { `) }) - vip, err := vips.Get(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304").Extract() + vip, err := vips.Get(context.TODO(), fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "ACTIVE", vip.Status) @@ -308,7 +309,7 @@ func TestUpdate(t *testing.T) { ConnLimit: &i1000, Persistence: &vips.SessionPersistence{Type: "SOURCE_IP"}, } - vip, err := vips.Update(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304", options).Extract() + vip, err := vips.Update(context.TODO(), fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "PENDING_UPDATE", vip.Status) @@ -325,6 +326,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := vips.Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304") + res := vips.Delete(context.TODO(), fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/lbaas_v2/l7policies/requests.go b/openstack/networking/v2/extensions/lbaas_v2/l7policies/requests.go index 022169cdb4..c7ac1b1e98 100644 --- a/openstack/networking/v2/extensions/lbaas_v2/l7policies/requests.go +++ b/openstack/networking/v2/extensions/lbaas_v2/l7policies/requests.go @@ -1,6 +1,8 @@ package l7policies import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -74,13 +76,13 @@ func (opts CreateOpts) ToL7PolicyCreateMap() (map[string]interface{}, error) { } // Create accepts a CreateOpts struct and uses the values to create a new l7policy. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToL7PolicyCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -137,15 +139,15 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a particular l7policy based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete will permanently delete a particular l7policy based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -205,13 +207,13 @@ func (opts UpdateOpts) ToL7PolicyUpdateMap() (map[string]interface{}, error) { } // Update allows l7policy to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToL7PolicyUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -252,13 +254,13 @@ func (opts CreateRuleOpts) ToRuleCreateMap() (map[string]interface{}, error) { } // CreateRule will create and associate a Rule with a particular L7Policy. -func CreateRule(c *gophercloud.ServiceClient, policyID string, opts CreateRuleOpts) (r CreateRuleResult) { +func CreateRule(ctx context.Context, c *gophercloud.ServiceClient, policyID string, opts CreateRuleOpts) (r CreateRuleResult) { b, err := opts.ToRuleCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(ruleRootURL(c, policyID), b, &r.Body, nil) + resp, err := c.Post(ctx, ruleRootURL(c, policyID), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -313,15 +315,15 @@ func ListRules(c *gophercloud.ServiceClient, policyID string, opts ListRulesOpts } // GetRule retrieves a particular L7Policy Rule based on its unique ID. -func GetRule(c *gophercloud.ServiceClient, policyID string, ruleID string) (r GetRuleResult) { - resp, err := c.Get(ruleResourceURL(c, policyID, ruleID), &r.Body, nil) +func GetRule(ctx context.Context, c *gophercloud.ServiceClient, policyID string, ruleID string) (r GetRuleResult) { + resp, err := c.Get(ctx, ruleResourceURL(c, policyID, ruleID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // DeleteRule will remove a Rule from a particular L7Policy. -func DeleteRule(c *gophercloud.ServiceClient, policyID string, ruleID string) (r DeleteRuleResult) { - resp, err := c.Delete(ruleResourceURL(c, policyID, ruleID), nil) +func DeleteRule(ctx context.Context, c *gophercloud.ServiceClient, policyID string, ruleID string) (r DeleteRuleResult) { + resp, err := c.Delete(ctx, ruleResourceURL(c, policyID, ruleID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -370,13 +372,13 @@ func (opts UpdateRuleOpts) ToRuleUpdateMap() (map[string]interface{}, error) { } // UpdateRule allows Rule to be updated. -func UpdateRule(c *gophercloud.ServiceClient, policyID string, ruleID string, opts UpdateRuleOptsBuilder) (r UpdateRuleResult) { +func UpdateRule(ctx context.Context, c *gophercloud.ServiceClient, policyID string, ruleID string, opts UpdateRuleOptsBuilder) (r UpdateRuleResult) { b, err := opts.ToRuleUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(ruleResourceURL(c, policyID, ruleID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, ruleResourceURL(c, policyID, ruleID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/lbaas_v2/l7policies/testing/requests_test.go b/openstack/networking/v2/extensions/lbaas_v2/l7policies/testing/requests_test.go index 55453efc8b..89a476c3e9 100644 --- a/openstack/networking/v2/extensions/lbaas_v2/l7policies/testing/requests_test.go +++ b/openstack/networking/v2/extensions/lbaas_v2/l7policies/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" fake "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/common" @@ -14,7 +15,7 @@ func TestCreateL7Policy(t *testing.T) { defer th.TeardownHTTP() HandleL7PolicyCreationSuccessfully(t, SingleL7PolicyBody) - actual, err := l7policies.Create(fake.ServiceClient(), l7policies.CreateOpts{ + actual, err := l7policies.Create(context.TODO(), fake.ServiceClient(), l7policies.CreateOpts{ Name: "redirect-example.com", ListenerID: "023f2e34-7806-443b-bfae-16c324569a3d", Action: l7policies.ActionRedirectToURL, @@ -27,13 +28,13 @@ func TestCreateL7Policy(t *testing.T) { func TestRequiredL7PolicyCreateOpts(t *testing.T) { // no param specified. - res := l7policies.Create(fake.ServiceClient(), l7policies.CreateOpts{}) + res := l7policies.Create(context.TODO(), fake.ServiceClient(), l7policies.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } // Action is invalid. - res = l7policies.Create(fake.ServiceClient(), l7policies.CreateOpts{ + res = l7policies.Create(context.TODO(), fake.ServiceClient(), l7policies.CreateOpts{ ListenerID: "023f2e34-7806-443b-bfae-16c324569a3d", Action: l7policies.Action("invalid"), }) @@ -48,7 +49,7 @@ func TestListL7Policies(t *testing.T) { HandleL7PolicyListSuccessfully(t) pages := 0 - err := l7policies.List(fake.ServiceClient(), l7policies.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := l7policies.List(fake.ServiceClient(), l7policies.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := l7policies.ExtractL7Policies(page) @@ -77,7 +78,7 @@ func TestListAllL7Policies(t *testing.T) { defer th.TeardownHTTP() HandleL7PolicyListSuccessfully(t) - allPages, err := l7policies.List(fake.ServiceClient(), l7policies.ListOpts{}).AllPages() + allPages, err := l7policies.List(fake.ServiceClient(), l7policies.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := l7policies.ExtractL7Policies(allPages) th.AssertNoErr(t, err) @@ -91,7 +92,7 @@ func TestGetL7Policy(t *testing.T) { HandleL7PolicyGetSuccessfully(t) client := fake.ServiceClient() - actual, err := l7policies.Get(client, "8a1412f0-4c32-4257-8b07-af4770b604fd").Extract() + actual, err := l7policies.Get(context.TODO(), client, "8a1412f0-4c32-4257-8b07-af4770b604fd").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -104,7 +105,7 @@ func TestDeleteL7Policy(t *testing.T) { defer th.TeardownHTTP() HandleL7PolicyDeletionSuccessfully(t) - res := l7policies.Delete(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd") + res := l7policies.Delete(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd") th.AssertNoErr(t, res.Err) } @@ -116,7 +117,7 @@ func TestUpdateL7Policy(t *testing.T) { client := fake.ServiceClient() newName := "NewL7PolicyName" redirectURL := "http://www.new-example.com" - actual, err := l7policies.Update(client, "8a1412f0-4c32-4257-8b07-af4770b604fd", + actual, err := l7policies.Update(context.TODO(), client, "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.UpdateOpts{ Name: &newName, Action: l7policies.ActionRedirectToURL, @@ -137,7 +138,7 @@ func TestUpdateL7PolicyNullRedirectURL(t *testing.T) { client := fake.ServiceClient() newName := "NewL7PolicyName" redirectURL := "" - actual, err := l7policies.Update(client, "8a1412f0-4c32-4257-8b07-af4770b604fd", + actual, err := l7policies.Update(context.TODO(), client, "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.UpdateOpts{ Name: &newName, RedirectURL: &redirectURL, @@ -153,7 +154,7 @@ func TestUpdateL7PolicyWithInvalidOpts(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() - res := l7policies.Update(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.UpdateOpts{ + res := l7policies.Update(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.UpdateOpts{ Action: l7policies.Action("invalid"), }) if res.Err == nil { @@ -166,7 +167,7 @@ func TestCreateRule(t *testing.T) { defer th.TeardownHTTP() HandleRuleCreationSuccessfully(t, SingleRuleBody) - actual, err := l7policies.CreateRule(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ + actual, err := l7policies.CreateRule(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ RuleType: l7policies.TypePath, CompareType: l7policies.CompareTypeRegex, Value: "/images*", @@ -180,17 +181,17 @@ func TestRequiredRuleCreateOpts(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() - res := l7policies.CreateRule(fake.ServiceClient(), "", l7policies.CreateRuleOpts{}) + res := l7policies.CreateRule(context.TODO(), fake.ServiceClient(), "", l7policies.CreateRuleOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = l7policies.CreateRule(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ + res = l7policies.CreateRule(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ RuleType: l7policies.TypePath, }) if res.Err == nil { t.Fatalf("Expected error, but got none") } - res = l7policies.CreateRule(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ + res = l7policies.CreateRule(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ RuleType: l7policies.RuleType("invalid"), CompareType: l7policies.CompareTypeRegex, Value: "/images*", @@ -198,7 +199,7 @@ func TestRequiredRuleCreateOpts(t *testing.T) { if res.Err == nil { t.Fatalf("Expected error, but got none") } - res = l7policies.CreateRule(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ + res = l7policies.CreateRule(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.CreateRuleOpts{ RuleType: l7policies.TypePath, CompareType: l7policies.CompareType("invalid"), Value: "/images*", @@ -214,7 +215,7 @@ func TestListRules(t *testing.T) { HandleRuleListSuccessfully(t) pages := 0 - err := l7policies.ListRules(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.ListRulesOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := l7policies.ListRules(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.ListRulesOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := l7policies.ExtractRules(page) @@ -243,7 +244,7 @@ func TestListAllRules(t *testing.T) { defer th.TeardownHTTP() HandleRuleListSuccessfully(t) - allPages, err := l7policies.ListRules(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.ListRulesOpts{}).AllPages() + allPages, err := l7policies.ListRules(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", l7policies.ListRulesOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := l7policies.ExtractRules(allPages) @@ -258,7 +259,7 @@ func TestGetRule(t *testing.T) { HandleRuleGetSuccessfully(t) client := fake.ServiceClient() - actual, err := l7policies.GetRule(client, "8a1412f0-4c32-4257-8b07-af4770b604fd", "16621dbb-a736-4888-a57a-3ecd53df784c").Extract() + actual, err := l7policies.GetRule(context.TODO(), client, "8a1412f0-4c32-4257-8b07-af4770b604fd", "16621dbb-a736-4888-a57a-3ecd53df784c").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -271,7 +272,7 @@ func TestDeleteRule(t *testing.T) { defer th.TeardownHTTP() HandleRuleDeletionSuccessfully(t) - res := l7policies.DeleteRule(fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", "16621dbb-a736-4888-a57a-3ecd53df784c") + res := l7policies.DeleteRule(context.TODO(), fake.ServiceClient(), "8a1412f0-4c32-4257-8b07-af4770b604fd", "16621dbb-a736-4888-a57a-3ecd53df784c") th.AssertNoErr(t, res.Err) } @@ -283,7 +284,7 @@ func TestUpdateRule(t *testing.T) { client := fake.ServiceClient() invert := false key := "" - actual, err := l7policies.UpdateRule(client, "8a1412f0-4c32-4257-8b07-af4770b604fd", "16621dbb-a736-4888-a57a-3ecd53df784c", l7policies.UpdateRuleOpts{ + actual, err := l7policies.UpdateRule(context.TODO(), client, "8a1412f0-4c32-4257-8b07-af4770b604fd", "16621dbb-a736-4888-a57a-3ecd53df784c", l7policies.UpdateRuleOpts{ RuleType: l7policies.TypePath, CompareType: l7policies.CompareTypeRegex, Value: "/images/special*", @@ -301,14 +302,14 @@ func TestUpdateRuleWithInvalidOpts(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() - res := l7policies.UpdateRule(fake.ServiceClient(), "", "", l7policies.UpdateRuleOpts{ + res := l7policies.UpdateRule(context.TODO(), fake.ServiceClient(), "", "", l7policies.UpdateRuleOpts{ RuleType: l7policies.RuleType("invalid"), }) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = l7policies.UpdateRule(fake.ServiceClient(), "", "", l7policies.UpdateRuleOpts{ + res = l7policies.UpdateRule(context.TODO(), fake.ServiceClient(), "", "", l7policies.UpdateRuleOpts{ CompareType: l7policies.CompareType("invalid"), }) if res.Err == nil { diff --git a/openstack/networking/v2/extensions/lbaas_v2/listeners/requests.go b/openstack/networking/v2/extensions/lbaas_v2/listeners/requests.go index b234f10475..c914b4adde 100644 --- a/openstack/networking/v2/extensions/lbaas_v2/listeners/requests.go +++ b/openstack/networking/v2/extensions/lbaas_v2/listeners/requests.go @@ -1,6 +1,8 @@ package listeners import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -130,20 +132,20 @@ func (opts CreateOpts) ToListenerCreateMap() (map[string]interface{}, error) { // // Users with an admin role can create Listeners on behalf of other tenants by // specifying a TenantID attribute different than their own. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToListenerCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular Listeners based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -195,13 +197,13 @@ func (opts UpdateOpts) ToListenerUpdateMap() (map[string]interface{}, error) { // Update is an operation which modifies the attributes of the specified // Listener. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToListenerUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -209,8 +211,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete will permanently delete a particular Listeners based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/lbaas_v2/listeners/testing/requests_test.go b/openstack/networking/v2/extensions/lbaas_v2/listeners/testing/requests_test.go index 27049cf0e9..364bcd393e 100644 --- a/openstack/networking/v2/extensions/lbaas_v2/listeners/testing/requests_test.go +++ b/openstack/networking/v2/extensions/lbaas_v2/listeners/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -16,7 +17,7 @@ func TestListListeners(t *testing.T) { HandleListenerListSuccessfully(t) pages := 0 - err := listeners.List(fake.ServiceClient(), listeners.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := listeners.List(fake.ServiceClient(), listeners.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := listeners.ExtractListeners(page) @@ -45,7 +46,7 @@ func TestListAllListeners(t *testing.T) { defer th.TeardownHTTP() HandleListenerListSuccessfully(t) - allPages, err := listeners.List(fake.ServiceClient(), listeners.ListOpts{}).AllPages() + allPages, err := listeners.List(fake.ServiceClient(), listeners.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := listeners.ExtractListeners(allPages) th.AssertNoErr(t, err) @@ -58,7 +59,7 @@ func TestCreateListener(t *testing.T) { defer th.TeardownHTTP() HandleListenerCreationSuccessfully(t, SingleListenerBody) - actual, err := listeners.Create(fake.ServiceClient(), listeners.CreateOpts{ + actual, err := listeners.Create(context.TODO(), fake.ServiceClient(), listeners.CreateOpts{ Protocol: "TCP", Name: "db", LoadbalancerID: "79e05663-7f03-45d2-a092-8b94062f22ab", @@ -73,23 +74,23 @@ func TestCreateListener(t *testing.T) { } func TestRequiredCreateOpts(t *testing.T) { - res := listeners.Create(fake.ServiceClient(), listeners.CreateOpts{}) + res := listeners.Create(context.TODO(), fake.ServiceClient(), listeners.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = listeners.Create(fake.ServiceClient(), listeners.CreateOpts{Name: "foo"}) + res = listeners.Create(context.TODO(), fake.ServiceClient(), listeners.CreateOpts{Name: "foo"}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = listeners.Create(fake.ServiceClient(), listeners.CreateOpts{Name: "foo", TenantID: "bar"}) + res = listeners.Create(context.TODO(), fake.ServiceClient(), listeners.CreateOpts{Name: "foo", TenantID: "bar"}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = listeners.Create(fake.ServiceClient(), listeners.CreateOpts{Name: "foo", TenantID: "bar", Protocol: "bar"}) + res = listeners.Create(context.TODO(), fake.ServiceClient(), listeners.CreateOpts{Name: "foo", TenantID: "bar", Protocol: "bar"}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = listeners.Create(fake.ServiceClient(), listeners.CreateOpts{Name: "foo", TenantID: "bar", Protocol: "bar", ProtocolPort: 80}) + res = listeners.Create(context.TODO(), fake.ServiceClient(), listeners.CreateOpts{Name: "foo", TenantID: "bar", Protocol: "bar", ProtocolPort: 80}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -101,7 +102,7 @@ func TestGetListener(t *testing.T) { HandleListenerGetSuccessfully(t) client := fake.ServiceClient() - actual, err := listeners.Get(client, "4ec89087-d057-4e2c-911f-60a3b47ee304").Extract() + actual, err := listeners.Get(context.TODO(), client, "4ec89087-d057-4e2c-911f-60a3b47ee304").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -114,7 +115,7 @@ func TestDeleteListener(t *testing.T) { defer th.TeardownHTTP() HandleListenerDeletionSuccessfully(t) - res := listeners.Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304") + res := listeners.Delete(context.TODO(), fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304") th.AssertNoErr(t, res.Err) } @@ -127,7 +128,7 @@ func TestUpdateListener(t *testing.T) { i1001 := 1001 name := "NewListenerName" defaultPoolID := "" - actual, err := listeners.Update(client, "4ec89087-d057-4e2c-911f-60a3b47ee304", listeners.UpdateOpts{ + actual, err := listeners.Update(context.TODO(), client, "4ec89087-d057-4e2c-911f-60a3b47ee304", listeners.UpdateOpts{ Name: &name, ConnLimit: &i1001, DefaultPoolID: &defaultPoolID, diff --git a/openstack/networking/v2/extensions/lbaas_v2/loadbalancers/requests.go b/openstack/networking/v2/extensions/lbaas_v2/loadbalancers/requests.go index b522267156..b2848d3790 100644 --- a/openstack/networking/v2/extensions/lbaas_v2/loadbalancers/requests.go +++ b/openstack/networking/v2/extensions/lbaas_v2/loadbalancers/requests.go @@ -1,6 +1,7 @@ package loadbalancers import ( + "context" "fmt" "github.com/gophercloud/gophercloud/v2" @@ -115,20 +116,20 @@ func (opts CreateOpts) ToLoadBalancerCreateMap() (map[string]interface{}, error) // configuration defined in the CreateOpts struct. Once the request is // validated and progress has started on the provisioning process, a // CreateResult will be returned. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToLoadBalancerCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular Loadbalancer based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -160,13 +161,13 @@ func (opts UpdateOpts) ToLoadBalancerUpdateMap() (map[string]interface{}, error) // Update is an operation which modifies the attributes of the specified // LoadBalancer. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToLoadBalancerUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -175,8 +176,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r // Delete will permanently delete a particular LoadBalancer based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -185,27 +186,27 @@ func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { // children (listener, monitor, etc). // NOTE: This function will only work with Octavia load balancers; Neutron does not // support this. -func CascadingDelete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { +func CascadingDelete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { if c.Type != "load-balancer" { r.Err = fmt.Errorf("error prior to running cascade delete: only Octavia LBs supported") return } u := fmt.Sprintf("%s?cascade=true", resourceURL(c, id)) - resp, err := c.Delete(u, nil) + resp, err := c.Delete(ctx, u, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetStatuses will return the status of a particular LoadBalancer. -func GetStatuses(c *gophercloud.ServiceClient, id string) (r GetStatusesResult) { - resp, err := c.Get(statusRootURL(c, id), &r.Body, nil) +func GetStatuses(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetStatusesResult) { + resp, err := c.Get(ctx, statusRootURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetStats will return the shows the current statistics of a particular LoadBalancer. -func GetStats(c *gophercloud.ServiceClient, id string) (r StatsResult) { - resp, err := c.Get(statisticsRootURL(c, id), &r.Body, nil) +func GetStats(ctx context.Context, c *gophercloud.ServiceClient, id string) (r StatsResult) { + resp, err := c.Get(ctx, statisticsRootURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/lbaas_v2/loadbalancers/testing/requests_test.go b/openstack/networking/v2/extensions/lbaas_v2/loadbalancers/testing/requests_test.go index e274fcb4d1..47803c7ff9 100644 --- a/openstack/networking/v2/extensions/lbaas_v2/loadbalancers/testing/requests_test.go +++ b/openstack/networking/v2/extensions/lbaas_v2/loadbalancers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -16,7 +17,7 @@ func TestListLoadbalancers(t *testing.T) { HandleLoadbalancerListSuccessfully(t) pages := 0 - err := loadbalancers.List(fake.ServiceClient(), loadbalancers.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := loadbalancers.List(fake.ServiceClient(), loadbalancers.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := loadbalancers.ExtractLoadBalancers(page) @@ -45,7 +46,7 @@ func TestListAllLoadbalancers(t *testing.T) { defer th.TeardownHTTP() HandleLoadbalancerListSuccessfully(t) - allPages, err := loadbalancers.List(fake.ServiceClient(), loadbalancers.ListOpts{}).AllPages() + allPages, err := loadbalancers.List(fake.ServiceClient(), loadbalancers.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := loadbalancers.ExtractLoadBalancers(allPages) th.AssertNoErr(t, err) @@ -58,7 +59,7 @@ func TestCreateLoadbalancer(t *testing.T) { defer th.TeardownHTTP() HandleLoadbalancerCreationSuccessfully(t, SingleLoadbalancerBody) - actual, err := loadbalancers.Create(fake.ServiceClient(), loadbalancers.CreateOpts{ + actual, err := loadbalancers.Create(context.TODO(), fake.ServiceClient(), loadbalancers.CreateOpts{ Name: "db_lb", AdminStateUp: gophercloud.Enabled, VipSubnetID: "9cedb85d-0759-4898-8a4b-fa5a5ea10086", @@ -72,19 +73,19 @@ func TestCreateLoadbalancer(t *testing.T) { } func TestRequiredCreateOpts(t *testing.T) { - res := loadbalancers.Create(fake.ServiceClient(), loadbalancers.CreateOpts{}) + res := loadbalancers.Create(context.TODO(), fake.ServiceClient(), loadbalancers.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = loadbalancers.Create(fake.ServiceClient(), loadbalancers.CreateOpts{Name: "foo"}) + res = loadbalancers.Create(context.TODO(), fake.ServiceClient(), loadbalancers.CreateOpts{Name: "foo"}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = loadbalancers.Create(fake.ServiceClient(), loadbalancers.CreateOpts{Name: "foo", Description: "bar"}) + res = loadbalancers.Create(context.TODO(), fake.ServiceClient(), loadbalancers.CreateOpts{Name: "foo", Description: "bar"}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = loadbalancers.Create(fake.ServiceClient(), loadbalancers.CreateOpts{Name: "foo", Description: "bar", VipAddress: "bar"}) + res = loadbalancers.Create(context.TODO(), fake.ServiceClient(), loadbalancers.CreateOpts{Name: "foo", Description: "bar", VipAddress: "bar"}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -96,7 +97,7 @@ func TestGetLoadbalancer(t *testing.T) { HandleLoadbalancerGetSuccessfully(t) client := fake.ServiceClient() - actual, err := loadbalancers.Get(client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").Extract() + actual, err := loadbalancers.Get(context.TODO(), client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -110,7 +111,7 @@ func TestGetLoadbalancerStatusesTree(t *testing.T) { HandleLoadbalancerGetStatusesTree(t) client := fake.ServiceClient() - actual, err := loadbalancers.GetStatuses(client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").Extract() + actual, err := loadbalancers.GetStatuses(context.TODO(), client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -123,7 +124,7 @@ func TestDeleteLoadbalancer(t *testing.T) { defer th.TeardownHTTP() HandleLoadbalancerDeletionSuccessfully(t) - res := loadbalancers.Delete(fake.ServiceClient(), "36e08a3e-a78f-4b40-a229-1e7e23eee1ab") + res := loadbalancers.Delete(context.TODO(), fake.ServiceClient(), "36e08a3e-a78f-4b40-a229-1e7e23eee1ab") th.AssertNoErr(t, res.Err) } @@ -134,7 +135,7 @@ func TestUpdateLoadbalancer(t *testing.T) { client := fake.ServiceClient() name := "NewLoadbalancerName" - actual, err := loadbalancers.Update(client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab", loadbalancers.UpdateOpts{ + actual, err := loadbalancers.Update(context.TODO(), client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab", loadbalancers.UpdateOpts{ Name: &name, }).Extract() if err != nil { @@ -151,13 +152,13 @@ func TestCascadingDeleteLoadbalancer(t *testing.T) { sc := fake.ServiceClient() sc.Type = "network" - err := loadbalancers.CascadingDelete(sc, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").ExtractErr() + err := loadbalancers.CascadingDelete(context.TODO(), sc, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").ExtractErr() if err == nil { t.Fatalf("expected error running CascadingDelete with Neutron service client but didn't get one") } sc.Type = "load-balancer" - err = loadbalancers.CascadingDelete(sc, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").ExtractErr() + err = loadbalancers.CascadingDelete(context.TODO(), sc, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").ExtractErr() th.AssertNoErr(t, err) } @@ -167,7 +168,7 @@ func TestGetLoadbalancerStatsTree(t *testing.T) { HandleLoadbalancerGetStatsTree(t) client := fake.ServiceClient() - actual, err := loadbalancers.GetStats(client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").Extract() + actual, err := loadbalancers.GetStats(context.TODO(), client, "36e08a3e-a78f-4b40-a229-1e7e23eee1ab").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } diff --git a/openstack/networking/v2/extensions/lbaas_v2/monitors/requests.go b/openstack/networking/v2/extensions/lbaas_v2/monitors/requests.go index 1c48bb9742..91b49e514b 100644 --- a/openstack/networking/v2/extensions/lbaas_v2/monitors/requests.go +++ b/openstack/networking/v2/extensions/lbaas_v2/monitors/requests.go @@ -1,6 +1,7 @@ package monitors import ( + "context" "fmt" "github.com/gophercloud/gophercloud/v2" @@ -173,20 +174,20 @@ Here is an example config struct to use when creating a HTTP(S) Monitor: CreateOpts{Type: TypeHTTP, Delay: 20, Timeout: 10, MaxRetries: 3, HttpMethod: "HEAD", ExpectedCodes: "200", PoolID: "2c946bfc-1804-43ab-a2ff-58f6a762b505"} */ -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToMonitorCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular Health Monitor based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -239,14 +240,14 @@ func (opts UpdateOpts) ToMonitorUpdateMap() (map[string]interface{}, error) { // Update is an operation which modifies the attributes of the specified // Monitor. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToMonitorUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -254,8 +255,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete will permanently delete a particular Monitor based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/lbaas_v2/monitors/testing/requests_test.go b/openstack/networking/v2/extensions/lbaas_v2/monitors/testing/requests_test.go index 162f61f92d..dfaaf67188 100644 --- a/openstack/networking/v2/extensions/lbaas_v2/monitors/testing/requests_test.go +++ b/openstack/networking/v2/extensions/lbaas_v2/monitors/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" fake "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/common" @@ -15,7 +16,7 @@ func TestListHealthmonitors(t *testing.T) { HandleHealthmonitorListSuccessfully(t) pages := 0 - err := monitors.List(fake.ServiceClient(), monitors.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := monitors.List(fake.ServiceClient(), monitors.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := monitors.ExtractMonitors(page) @@ -44,7 +45,7 @@ func TestListAllHealthmonitors(t *testing.T) { defer th.TeardownHTTP() HandleHealthmonitorListSuccessfully(t) - allPages, err := monitors.List(fake.ServiceClient(), monitors.ListOpts{}).AllPages() + allPages, err := monitors.List(fake.ServiceClient(), monitors.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := monitors.ExtractMonitors(allPages) th.AssertNoErr(t, err) @@ -57,7 +58,7 @@ func TestCreateHealthmonitor(t *testing.T) { defer th.TeardownHTTP() HandleHealthmonitorCreationSuccessfully(t, SingleHealthmonitorBody) - actual, err := monitors.Create(fake.ServiceClient(), monitors.CreateOpts{ + actual, err := monitors.Create(context.TODO(), fake.ServiceClient(), monitors.CreateOpts{ Type: "HTTP", Name: "db", PoolID: "84f1b61f-58c4-45bf-a8a9-2dafb9e5214d", @@ -74,11 +75,11 @@ func TestCreateHealthmonitor(t *testing.T) { } func TestRequiredCreateOpts(t *testing.T) { - res := monitors.Create(fake.ServiceClient(), monitors.CreateOpts{}) + res := monitors.Create(context.TODO(), fake.ServiceClient(), monitors.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = monitors.Create(fake.ServiceClient(), monitors.CreateOpts{Type: monitors.TypeHTTP}) + res = monitors.Create(context.TODO(), fake.ServiceClient(), monitors.CreateOpts{Type: monitors.TypeHTTP}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -90,7 +91,7 @@ func TestGetHealthmonitor(t *testing.T) { HandleHealthmonitorGetSuccessfully(t) client := fake.ServiceClient() - actual, err := monitors.Get(client, "5d4b5228-33b0-4e60-b225-9b727c1a20e7").Extract() + actual, err := monitors.Get(context.TODO(), client, "5d4b5228-33b0-4e60-b225-9b727c1a20e7").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -103,7 +104,7 @@ func TestDeleteHealthmonitor(t *testing.T) { defer th.TeardownHTTP() HandleHealthmonitorDeletionSuccessfully(t) - res := monitors.Delete(fake.ServiceClient(), "5d4b5228-33b0-4e60-b225-9b727c1a20e7") + res := monitors.Delete(context.TODO(), fake.ServiceClient(), "5d4b5228-33b0-4e60-b225-9b727c1a20e7") th.AssertNoErr(t, res.Err) } @@ -114,7 +115,7 @@ func TestUpdateHealthmonitor(t *testing.T) { client := fake.ServiceClient() name := "NewHealthmonitorName" - actual, err := monitors.Update(client, "5d4b5228-33b0-4e60-b225-9b727c1a20e7", monitors.UpdateOpts{ + actual, err := monitors.Update(context.TODO(), client, "5d4b5228-33b0-4e60-b225-9b727c1a20e7", monitors.UpdateOpts{ Name: &name, Delay: 3, Timeout: 20, @@ -130,7 +131,7 @@ func TestUpdateHealthmonitor(t *testing.T) { } func TestDelayMustBeGreaterOrEqualThanTimeout(t *testing.T) { - _, err := monitors.Create(fake.ServiceClient(), monitors.CreateOpts{ + _, err := monitors.Create(context.TODO(), fake.ServiceClient(), monitors.CreateOpts{ Type: "HTTP", PoolID: "d459f7d8-c6ee-439d-8713-d3fc08aeed8d", Delay: 1, @@ -144,7 +145,7 @@ func TestDelayMustBeGreaterOrEqualThanTimeout(t *testing.T) { t.Fatalf("Expected error, got none") } - _, err = monitors.Update(fake.ServiceClient(), "453105b9-1754-413f-aab1-55f1af620750", monitors.UpdateOpts{ + _, err = monitors.Update(context.TODO(), fake.ServiceClient(), "453105b9-1754-413f-aab1-55f1af620750", monitors.UpdateOpts{ Delay: 1, Timeout: 10, }).Extract() diff --git a/openstack/networking/v2/extensions/lbaas_v2/pools/requests.go b/openstack/networking/v2/extensions/lbaas_v2/pools/requests.go index fa4dbebb67..a5badad272 100644 --- a/openstack/networking/v2/extensions/lbaas_v2/pools/requests.go +++ b/openstack/networking/v2/extensions/lbaas_v2/pools/requests.go @@ -1,6 +1,8 @@ package pools import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -128,20 +130,20 @@ func (opts CreateOpts) ToPoolCreateMap() (map[string]interface{}, error) { // Create accepts a CreateOpts struct and uses the values to create a new // load balancer pool. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToPoolCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular pool based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -177,13 +179,13 @@ func (opts UpdateOpts) ToPoolUpdateMap() (map[string]interface{}, error) { } // Update allows pools to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToPoolUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -191,8 +193,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete will permanently delete a particular pool based on its unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -295,20 +297,20 @@ func (opts CreateMemberOpts) ToMemberCreateMap() (map[string]interface{}, error) } // CreateMember will create and associate a Member with a particular Pool. -func CreateMember(c *gophercloud.ServiceClient, poolID string, opts CreateMemberOpts) (r CreateMemberResult) { +func CreateMember(ctx context.Context, c *gophercloud.ServiceClient, poolID string, opts CreateMemberOpts) (r CreateMemberResult) { b, err := opts.ToMemberCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(memberRootURL(c, poolID), b, &r.Body, nil) + resp, err := c.Post(ctx, memberRootURL(c, poolID), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetMember retrieves a particular Pool Member based on its unique ID. -func GetMember(c *gophercloud.ServiceClient, poolID string, memberID string) (r GetMemberResult) { - resp, err := c.Get(memberResourceURL(c, poolID, memberID), &r.Body, nil) +func GetMember(ctx context.Context, c *gophercloud.ServiceClient, poolID string, memberID string) (r GetMemberResult) { + resp, err := c.Get(ctx, memberResourceURL(c, poolID, memberID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -342,13 +344,13 @@ func (opts UpdateMemberOpts) ToMemberUpdateMap() (map[string]interface{}, error) } // Update allows Member to be updated. -func UpdateMember(c *gophercloud.ServiceClient, poolID string, memberID string, opts UpdateMemberOptsBuilder) (r UpdateMemberResult) { +func UpdateMember(ctx context.Context, c *gophercloud.ServiceClient, poolID string, memberID string, opts UpdateMemberOptsBuilder) (r UpdateMemberResult) { b, err := opts.ToMemberUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(memberResourceURL(c, poolID, memberID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, memberResourceURL(c, poolID, memberID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -357,8 +359,8 @@ func UpdateMember(c *gophercloud.ServiceClient, poolID string, memberID string, // DisassociateMember will remove and disassociate a Member from a particular // Pool. -func DeleteMember(c *gophercloud.ServiceClient, poolID string, memberID string) (r DeleteMemberResult) { - resp, err := c.Delete(memberResourceURL(c, poolID, memberID), nil) +func DeleteMember(ctx context.Context, c *gophercloud.ServiceClient, poolID string, memberID string) (r DeleteMemberResult) { + resp, err := c.Delete(ctx, memberResourceURL(c, poolID, memberID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/lbaas_v2/pools/testing/requests_test.go b/openstack/networking/v2/extensions/lbaas_v2/pools/testing/requests_test.go index 3801efe271..87c882bc6f 100644 --- a/openstack/networking/v2/extensions/lbaas_v2/pools/testing/requests_test.go +++ b/openstack/networking/v2/extensions/lbaas_v2/pools/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" fake "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/common" @@ -15,7 +16,7 @@ func TestListPools(t *testing.T) { HandlePoolListSuccessfully(t) pages := 0 - err := pools.List(fake.ServiceClient(), pools.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := pools.List(fake.ServiceClient(), pools.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := pools.ExtractPools(page) @@ -44,7 +45,7 @@ func TestListAllPools(t *testing.T) { defer th.TeardownHTTP() HandlePoolListSuccessfully(t) - allPages, err := pools.List(fake.ServiceClient(), pools.ListOpts{}).AllPages() + allPages, err := pools.List(fake.ServiceClient(), pools.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := pools.ExtractPools(allPages) th.AssertNoErr(t, err) @@ -57,7 +58,7 @@ func TestCreatePool(t *testing.T) { defer th.TeardownHTTP() HandlePoolCreationSuccessfully(t, SinglePoolBody) - actual, err := pools.Create(fake.ServiceClient(), pools.CreateOpts{ + actual, err := pools.Create(context.TODO(), fake.ServiceClient(), pools.CreateOpts{ LBMethod: pools.LBMethodRoundRobin, Protocol: "HTTP", Name: "Example pool", @@ -75,7 +76,7 @@ func TestGetPool(t *testing.T) { HandlePoolGetSuccessfully(t) client := fake.ServiceClient() - actual, err := pools.Get(client, "c3741b06-df4d-4715-b142-276b6bce75ab").Extract() + actual, err := pools.Get(context.TODO(), client, "c3741b06-df4d-4715-b142-276b6bce75ab").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -88,7 +89,7 @@ func TestDeletePool(t *testing.T) { defer th.TeardownHTTP() HandlePoolDeletionSuccessfully(t) - res := pools.Delete(fake.ServiceClient(), "c3741b06-df4d-4715-b142-276b6bce75ab") + res := pools.Delete(context.TODO(), fake.ServiceClient(), "c3741b06-df4d-4715-b142-276b6bce75ab") th.AssertNoErr(t, res.Err) } @@ -99,7 +100,7 @@ func TestUpdatePool(t *testing.T) { client := fake.ServiceClient() name := "NewPoolName" - actual, err := pools.Update(client, "c3741b06-df4d-4715-b142-276b6bce75ab", pools.UpdateOpts{ + actual, err := pools.Update(context.TODO(), client, "c3741b06-df4d-4715-b142-276b6bce75ab", pools.UpdateOpts{ Name: &name, LBMethod: pools.LBMethodLeastConnections, }).Extract() @@ -111,11 +112,11 @@ func TestUpdatePool(t *testing.T) { } func TestRequiredPoolCreateOpts(t *testing.T) { - res := pools.Create(fake.ServiceClient(), pools.CreateOpts{}) + res := pools.Create(context.TODO(), fake.ServiceClient(), pools.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = pools.Create(fake.ServiceClient(), pools.CreateOpts{ + res = pools.Create(context.TODO(), fake.ServiceClient(), pools.CreateOpts{ LBMethod: pools.LBMethod("invalid"), Protocol: pools.ProtocolHTTPS, LoadbalancerID: "69055154-f603-4a28-8951-7cc2d9e54a9a", @@ -124,7 +125,7 @@ func TestRequiredPoolCreateOpts(t *testing.T) { t.Fatalf("Expected error, but got none") } - res = pools.Create(fake.ServiceClient(), pools.CreateOpts{ + res = pools.Create(context.TODO(), fake.ServiceClient(), pools.CreateOpts{ LBMethod: pools.LBMethodRoundRobin, Protocol: pools.Protocol("invalid"), LoadbalancerID: "69055154-f603-4a28-8951-7cc2d9e54a9a", @@ -133,7 +134,7 @@ func TestRequiredPoolCreateOpts(t *testing.T) { t.Fatalf("Expected error, but got none") } - res = pools.Create(fake.ServiceClient(), pools.CreateOpts{ + res = pools.Create(context.TODO(), fake.ServiceClient(), pools.CreateOpts{ LBMethod: pools.LBMethodRoundRobin, Protocol: pools.ProtocolHTTPS, }) @@ -148,7 +149,7 @@ func TestListMembers(t *testing.T) { HandleMemberListSuccessfully(t) pages := 0 - err := pools.ListMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.ListMembersOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := pools.ListMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.ListMembersOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := pools.ExtractMembers(page) @@ -177,7 +178,7 @@ func TestListAllMembers(t *testing.T) { defer th.TeardownHTTP() HandleMemberListSuccessfully(t) - allPages, err := pools.ListMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.ListMembersOpts{}).AllPages() + allPages, err := pools.ListMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.ListMembersOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := pools.ExtractMembers(allPages) th.AssertNoErr(t, err) @@ -191,7 +192,7 @@ func TestCreateMember(t *testing.T) { HandleMemberCreationSuccessfully(t, SingleMemberBody) weight := 10 - actual, err := pools.CreateMember(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{ + actual, err := pools.CreateMember(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{ Name: "db", SubnetID: "1981f108-3c48-48d2-b908-30f7d28532c9", TenantID: "2ffc6e22aae24e4795f87155d24c896f", @@ -205,19 +206,19 @@ func TestCreateMember(t *testing.T) { } func TestRequiredMemberCreateOpts(t *testing.T) { - res := pools.CreateMember(fake.ServiceClient(), "", pools.CreateMemberOpts{}) + res := pools.CreateMember(context.TODO(), fake.ServiceClient(), "", pools.CreateMemberOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = pools.CreateMember(fake.ServiceClient(), "", pools.CreateMemberOpts{Address: "1.2.3.4", ProtocolPort: 80}) + res = pools.CreateMember(context.TODO(), fake.ServiceClient(), "", pools.CreateMemberOpts{Address: "1.2.3.4", ProtocolPort: 80}) if res.Err == nil { t.Fatalf("Expected error, but got none") } - res = pools.CreateMember(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{ProtocolPort: 80}) + res = pools.CreateMember(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{ProtocolPort: 80}) if res.Err == nil { t.Fatalf("Expected error, but got none") } - res = pools.CreateMember(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{Address: "1.2.3.4"}) + res = pools.CreateMember(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{Address: "1.2.3.4"}) if res.Err == nil { t.Fatalf("Expected error, but got none") } @@ -229,7 +230,7 @@ func TestGetMember(t *testing.T) { HandleMemberGetSuccessfully(t) client := fake.ServiceClient() - actual, err := pools.GetMember(client, "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf").Extract() + actual, err := pools.GetMember(context.TODO(), client, "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf").Extract() if err != nil { t.Fatalf("Unexpected Get error: %v", err) } @@ -242,7 +243,7 @@ func TestDeleteMember(t *testing.T) { defer th.TeardownHTTP() HandleMemberDeletionSuccessfully(t) - res := pools.DeleteMember(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf") + res := pools.DeleteMember(context.TODO(), fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf") th.AssertNoErr(t, res.Err) } @@ -254,7 +255,7 @@ func TestUpdateMember(t *testing.T) { weight := 4 client := fake.ServiceClient() name := "newMemberName" - actual, err := pools.UpdateMember(client, "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf", pools.UpdateMemberOpts{ + actual, err := pools.UpdateMember(context.TODO(), client, "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf", pools.UpdateMemberOpts{ Name: &name, Weight: &weight, }).Extract() diff --git a/openstack/networking/v2/extensions/mtu/testing/results_test.go b/openstack/networking/v2/extensions/mtu/testing/results_test.go index 6b94a70cb7..273bdb5166 100644 --- a/openstack/networking/v2/extensions/mtu/testing/results_test.go +++ b/openstack/networking/v2/extensions/mtu/testing/results_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -37,7 +38,7 @@ func TestList(t *testing.T) { } var actual []NetworkWithMTUExt - allPages, err := networks.List(fake.ServiceClient(), networks.ListOpts{}).AllPages() + allPages, err := networks.List(fake.ServiceClient(), networks.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) err = networks.ExtractNetworksInto(allPages, &actual) @@ -63,7 +64,7 @@ func TestGet(t *testing.T) { var s NetworkMTU - err := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&s) + err := networks.Get(context.TODO(), fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "d32019d3-bc6e-4319-9c1d-6722fc136a22", s.ID) @@ -100,7 +101,7 @@ func TestCreate(t *testing.T) { var s NetworkMTU - err := networks.Create(fake.ServiceClient(), mtuCreateOpts).ExtractInto(&s) + err := networks.Create(context.TODO(), fake.ServiceClient(), mtuCreateOpts).ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "db193ab3-96e3-4cb3-8fc5-05f4296d0324", s.ID) @@ -141,7 +142,7 @@ func TestUpdate(t *testing.T) { var s NetworkMTU - err := networks.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", mtuUpdateOpts).ExtractInto(&s) + err := networks.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", mtuUpdateOpts).ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "4e8e5957-649f-477b-9e5b-f1f75b21c03c", s.ID) diff --git a/openstack/networking/v2/extensions/networkipavailabilities/requests.go b/openstack/networking/v2/extensions/networkipavailabilities/requests.go index 9039895a4a..a42836c093 100644 --- a/openstack/networking/v2/extensions/networkipavailabilities/requests.go +++ b/openstack/networking/v2/extensions/networkipavailabilities/requests.go @@ -1,6 +1,8 @@ package networkipavailabilities import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -55,8 +57,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a specific NetworkIPAvailability based on its ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(getURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/networkipavailabilities/testing/requests_test.go b/openstack/networking/v2/extensions/networkipavailabilities/testing/requests_test.go index 87b71b55c0..86166b5e33 100644 --- a/openstack/networking/v2/extensions/networkipavailabilities/testing/requests_test.go +++ b/openstack/networking/v2/extensions/networkipavailabilities/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -28,7 +29,7 @@ func TestList(t *testing.T) { count := 0 - err := networkipavailabilities.List(fake.ServiceClient(), networkipavailabilities.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := networkipavailabilities.List(fake.ServiceClient(), networkipavailabilities.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := networkipavailabilities.ExtractNetworkIPAvailabilities(page) if err != nil { @@ -67,7 +68,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, NetworkIPAvailabilityGetResult) }) - s, err := networkipavailabilities.Get(fake.ServiceClient(), "cf11ab78-2302-49fa-870f-851a08c7afb8").Extract() + s, err := networkipavailabilities.Get(context.TODO(), fake.ServiceClient(), "cf11ab78-2302-49fa-870f-851a08c7afb8").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.NetworkID, "cf11ab78-2302-49fa-870f-851a08c7afb8") diff --git a/openstack/networking/v2/extensions/portsbinding/testing/requests_test.go b/openstack/networking/v2/extensions/portsbinding/testing/requests_test.go index 1c3d9df67c..3331e784d5 100644 --- a/openstack/networking/v2/extensions/portsbinding/testing/requests_test.go +++ b/openstack/networking/v2/extensions/portsbinding/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -51,7 +52,7 @@ func TestList(t *testing.T) { }, } - allPages, err := ports.List(fake.ServiceClient(), ports.ListOpts{}).AllPages() + allPages, err := ports.List(fake.ServiceClient(), ports.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) err = ports.ExtractPortsInto(allPages, &actual) @@ -71,7 +72,7 @@ func TestGet(t *testing.T) { portsbinding.PortsBindingExt } - err := ports.Get(fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").ExtractInto(&s) + err := ports.Get(context.TODO(), fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, s.Status, "ACTIVE") @@ -122,7 +123,7 @@ func TestCreate(t *testing.T) { VNICType: "normal", } - err := ports.Create(fake.ServiceClient(), createOpts).ExtractInto(&s) + err := ports.Create(context.TODO(), fake.ServiceClient(), createOpts).ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, s.Status, "DOWN") @@ -142,7 +143,7 @@ func TestCreate(t *testing.T) { } func TestRequiredCreateOpts(t *testing.T) { - res := ports.Create(fake.ServiceClient(), portsbinding.CreateOptsExt{CreateOptsBuilder: ports.CreateOpts{}}) + res := ports.Create(context.TODO(), fake.ServiceClient(), portsbinding.CreateOptsExt{CreateOptsBuilder: ports.CreateOpts{}}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -175,7 +176,7 @@ func TestUpdate(t *testing.T) { VNICType: "normal", } - err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&s) + err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "new_port_name") diff --git a/openstack/networking/v2/extensions/provider/testing/results_test.go b/openstack/networking/v2/extensions/provider/testing/results_test.go index 771f497577..4e21481de1 100644 --- a/openstack/networking/v2/extensions/provider/testing/results_test.go +++ b/openstack/networking/v2/extensions/provider/testing/results_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -33,7 +34,7 @@ func TestList(t *testing.T) { } var actual []NetworkWithExt - allPages, err := networks.List(fake.ServiceClient(), networks.ListOpts{}).AllPages() + allPages, err := networks.List(fake.ServiceClient(), networks.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) err = networks.ExtractNetworksInto(allPages, &actual) @@ -67,7 +68,7 @@ func TestGet(t *testing.T) { provider.NetworkProviderExt } - err := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&s) + err := networks.Get(context.TODO(), fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "d32019d3-bc6e-4319-9c1d-6722fc136a22", s.ID) @@ -99,7 +100,7 @@ func TestCreate(t *testing.T) { } options := networks.CreateOpts{Name: "private", AdminStateUp: gophercloud.Enabled} - err := networks.Create(fake.ServiceClient(), options).ExtractInto(&s) + err := networks.Create(context.TODO(), fake.ServiceClient(), options).ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "db193ab3-96e3-4cb3-8fc5-05f4296d0324", s.ID) @@ -184,7 +185,7 @@ func TestCreateWithMultipleProvider(t *testing.T) { Segments: segments, } - _, err := networks.Create(fake.ServiceClient(), providerCreateOpts).Extract() + _, err := networks.Create(context.TODO(), fake.ServiceClient(), providerCreateOpts).Extract() th.AssertNoErr(t, err) } @@ -234,7 +235,7 @@ func TestUpdate(t *testing.T) { provider.NetworkProviderExt } - err := networks.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", providerUpdateOpts).ExtractInto(&s) + err := networks.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", providerUpdateOpts).ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "4e8e5957-649f-477b-9e5b-f1f75b21c03c", s.ID) diff --git a/openstack/networking/v2/extensions/qos/policies/requests.go b/openstack/networking/v2/extensions/qos/policies/requests.go index dd4b97e59b..23a2df70a3 100644 --- a/openstack/networking/v2/extensions/qos/policies/requests.go +++ b/openstack/networking/v2/extensions/qos/policies/requests.go @@ -1,6 +1,8 @@ package policies import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/networks" "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/ports" @@ -170,8 +172,8 @@ func List(c *gophercloud.ServiceClient, opts PolicyListOptsBuilder) pagination.P } // Get retrieves a specific QoS policy based on its ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(getURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -209,13 +211,13 @@ func (opts CreateOpts) ToPolicyCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new QoS policy on the server. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToPolicyCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -250,13 +252,13 @@ func (opts UpdateOpts) ToPolicyUpdateMap() (map[string]interface{}, error) { // Update accepts a UpdateOpts struct and updates an existing policy using the // values provided. -func Update(c *gophercloud.ServiceClient, policyID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, policyID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToPolicyUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(updateURL(c, policyID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, policyID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -264,8 +266,8 @@ func Update(c *gophercloud.ServiceClient, policyID string, opts UpdateOptsBuilde } // Delete accepts a unique ID and deletes the QoS policy associated with it. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(deleteURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, deleteURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/qos/policies/testing/requests_test.go b/openstack/networking/v2/extensions/qos/policies/testing/requests_test.go index 3d94557748..c5c1eab261 100644 --- a/openstack/networking/v2/extensions/qos/policies/testing/requests_test.go +++ b/openstack/networking/v2/extensions/qos/policies/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -33,7 +34,7 @@ func TestGetPort(t *testing.T) { ports.Port policies.QoSPolicyExt } - err := ports.Get(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d").ExtractInto(&p) + err := ports.Get(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d").ExtractInto(&p) th.AssertNoErr(t, err) th.AssertEquals(t, p.ID, "65c0ee9f-d634-4522-8954-51021b570b0d") @@ -69,7 +70,7 @@ func TestCreatePort(t *testing.T) { CreateOptsBuilder: portCreateOpts, QoSPolicyID: "591e0597-39a6-4665-8149-2111d8de9a08", } - err := ports.Create(fake.ServiceClient(), createOpts).ExtractInto(&p) + err := ports.Create(context.TODO(), fake.ServiceClient(), createOpts).ExtractInto(&p) th.AssertNoErr(t, err) th.AssertEquals(t, p.NetworkID, "a87cc70a-3e15-4acf-8205-9b711a3531b7") @@ -107,7 +108,7 @@ func TestUpdatePortWithPolicy(t *testing.T) { UpdateOptsBuilder: portUpdateOpts, QoSPolicyID: &policyID, } - err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&p) + err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&p) th.AssertNoErr(t, err) th.AssertEquals(t, p.NetworkID, "a87cc70a-3e15-4acf-8205-9b711a3531b7") @@ -145,7 +146,7 @@ func TestUpdatePortWithoutPolicy(t *testing.T) { UpdateOptsBuilder: portUpdateOpts, QoSPolicyID: &policyID, } - err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&p) + err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&p) th.AssertNoErr(t, err) th.AssertEquals(t, p.NetworkID, "a87cc70a-3e15-4acf-8205-9b711a3531b7") @@ -173,7 +174,7 @@ func TestGetNetwork(t *testing.T) { networks.Network policies.QoSPolicyExt } - err := networks.Get(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d").ExtractInto(&n) + err := networks.Get(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d").ExtractInto(&n) th.AssertNoErr(t, err) th.AssertEquals(t, n.ID, "65c0ee9f-d634-4522-8954-51021b570b0d") @@ -209,7 +210,7 @@ func TestCreateNetwork(t *testing.T) { CreateOptsBuilder: networkCreateOpts, QoSPolicyID: "591e0597-39a6-4665-8149-2111d8de9a08", } - err := networks.Create(fake.ServiceClient(), createOpts).ExtractInto(&n) + err := networks.Create(context.TODO(), fake.ServiceClient(), createOpts).ExtractInto(&n) th.AssertNoErr(t, err) th.AssertEquals(t, n.TenantID, "4fd44f30292945e481c7b8a0c8908869") @@ -249,7 +250,7 @@ func TestUpdateNetworkWithPolicy(t *testing.T) { UpdateOptsBuilder: networkUpdateOpts, QoSPolicyID: &policyID, } - err := networks.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&n) + err := networks.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&n) th.AssertNoErr(t, err) th.AssertEquals(t, n.TenantID, "4fd44f30292945e481c7b8a0c8908869") @@ -287,7 +288,7 @@ func TestUpdateNetworkWithoutPolicy(t *testing.T) { UpdateOptsBuilder: networkUpdateOpts, QoSPolicyID: &policyID, } - err := networks.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&n) + err := networks.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&n) th.AssertNoErr(t, err) th.AssertEquals(t, n.TenantID, "4fd44f30292945e481c7b8a0c8908869") @@ -311,7 +312,7 @@ func TestListPolicies(t *testing.T) { count := 0 - err := policies.List(fake.ServiceClient(), policies.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := policies.List(fake.ServiceClient(), policies.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := policies.ExtractPolicies(page) if err != nil { @@ -349,7 +350,7 @@ func TestGetPolicy(t *testing.T) { fmt.Fprintf(w, GetPolicyResponse) }) - p, err := policies.Get(fake.ServiceClient(), "30a57f4a-336b-4382-8275-d708babd2241").Extract() + p, err := policies.Get(context.TODO(), fake.ServiceClient(), "30a57f4a-336b-4382-8275-d708babd2241").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "bw-limiter", p.Name) @@ -395,7 +396,7 @@ func TestCreatePolicy(t *testing.T) { IsDefault: true, Description: "use-me", } - p, err := policies.Create(fake.ServiceClient(), opts).Extract() + p, err := policies.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "shared-default-policy", p.Name) @@ -434,7 +435,7 @@ func TestUpdatePolicy(t *testing.T) { Shared: &shared, Description: &description, } - p, err := policies.Update(fake.ServiceClient(), "d6ae28ce-fcb5-4180-aa62-d260a27e09ae", opts).Extract() + p, err := policies.Update(context.TODO(), fake.ServiceClient(), "d6ae28ce-fcb5-4180-aa62-d260a27e09ae", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "new-name", p.Name) @@ -459,6 +460,6 @@ func TestDeletePolicy(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := policies.Delete(fake.ServiceClient(), "d6ae28ce-fcb5-4180-aa62-d260a27e09ae") + res := policies.Delete(context.TODO(), fake.ServiceClient(), "d6ae28ce-fcb5-4180-aa62-d260a27e09ae") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/qos/rules/requests.go b/openstack/networking/v2/extensions/qos/rules/requests.go index 58c4648e7f..a8b11521b2 100644 --- a/openstack/networking/v2/extensions/qos/rules/requests.go +++ b/openstack/networking/v2/extensions/qos/rules/requests.go @@ -1,6 +1,8 @@ package rules import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -58,8 +60,8 @@ func ListBandwidthLimitRules(c *gophercloud.ServiceClient, policyID string, opts } // GetBandwidthLimitRule retrieves a specific BandwidthLimitRule based on its ID. -func GetBandwidthLimitRule(c *gophercloud.ServiceClient, policyID, ruleID string) (r GetBandwidthLimitRuleResult) { - resp, err := c.Get(getBandwidthLimitRuleURL(c, policyID, ruleID), &r.Body, nil) +func GetBandwidthLimitRule(ctx context.Context, c *gophercloud.ServiceClient, policyID, ruleID string) (r GetBandwidthLimitRuleResult) { + resp, err := c.Get(ctx, getBandwidthLimitRuleURL(c, policyID, ruleID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -88,13 +90,13 @@ func (opts CreateBandwidthLimitRuleOpts) ToBandwidthLimitRuleCreateMap() (map[st } // CreateBandwidthLimitRule requests the creation of a new BandwidthLimitRule on the server. -func CreateBandwidthLimitRule(client *gophercloud.ServiceClient, policyID string, opts CreateBandwidthLimitRuleOptsBuilder) (r CreateBandwidthLimitRuleResult) { +func CreateBandwidthLimitRule(ctx context.Context, client *gophercloud.ServiceClient, policyID string, opts CreateBandwidthLimitRuleOptsBuilder) (r CreateBandwidthLimitRuleResult) { b, err := opts.ToBandwidthLimitRuleCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createBandwidthLimitRuleURL(client, policyID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createBandwidthLimitRuleURL(client, policyID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -125,13 +127,13 @@ func (opts UpdateBandwidthLimitRuleOpts) ToBandwidthLimitRuleUpdateMap() (map[st } // UpdateBandwidthLimitRule requests the creation of a new BandwidthLimitRule on the server. -func UpdateBandwidthLimitRule(client *gophercloud.ServiceClient, policyID, ruleID string, opts UpdateBandwidthLimitRuleOptsBuilder) (r UpdateBandwidthLimitRuleResult) { +func UpdateBandwidthLimitRule(ctx context.Context, client *gophercloud.ServiceClient, policyID, ruleID string, opts UpdateBandwidthLimitRuleOptsBuilder) (r UpdateBandwidthLimitRuleResult) { b, err := opts.ToBandwidthLimitRuleUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateBandwidthLimitRuleURL(client, policyID, ruleID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateBandwidthLimitRuleURL(client, policyID, ruleID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -139,8 +141,8 @@ func UpdateBandwidthLimitRule(client *gophercloud.ServiceClient, policyID, ruleI } // Delete accepts policy and rule ID and deletes the BandwidthLimitRule associated with them. -func DeleteBandwidthLimitRule(c *gophercloud.ServiceClient, policyID, ruleID string) (r DeleteBandwidthLimitRuleResult) { - resp, err := c.Delete(deleteBandwidthLimitRuleURL(c, policyID, ruleID), nil) +func DeleteBandwidthLimitRule(ctx context.Context, c *gophercloud.ServiceClient, policyID, ruleID string) (r DeleteBandwidthLimitRuleResult) { + resp, err := c.Delete(ctx, deleteBandwidthLimitRuleURL(c, policyID, ruleID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -196,8 +198,8 @@ func ListDSCPMarkingRules(c *gophercloud.ServiceClient, policyID string, opts DS } // GetDSCPMarkingRule retrieves a specific DSCPMarkingRule based on its ID. -func GetDSCPMarkingRule(c *gophercloud.ServiceClient, policyID, ruleID string) (r GetDSCPMarkingRuleResult) { - resp, err := c.Get(getDSCPMarkingRuleURL(c, policyID, ruleID), &r.Body, nil) +func GetDSCPMarkingRule(ctx context.Context, c *gophercloud.ServiceClient, policyID, ruleID string) (r GetDSCPMarkingRuleResult) { + resp, err := c.Get(ctx, getDSCPMarkingRuleURL(c, policyID, ruleID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -220,13 +222,13 @@ func (opts CreateDSCPMarkingRuleOpts) ToDSCPMarkingRuleCreateMap() (map[string]i } // CreateDSCPMarkingRule requests the creation of a new DSCPMarkingRule on the server. -func CreateDSCPMarkingRule(client *gophercloud.ServiceClient, policyID string, opts CreateDSCPMarkingRuleOptsBuilder) (r CreateDSCPMarkingRuleResult) { +func CreateDSCPMarkingRule(ctx context.Context, client *gophercloud.ServiceClient, policyID string, opts CreateDSCPMarkingRuleOptsBuilder) (r CreateDSCPMarkingRuleResult) { b, err := opts.ToDSCPMarkingRuleCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createDSCPMarkingRuleURL(client, policyID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createDSCPMarkingRuleURL(client, policyID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -251,13 +253,13 @@ func (opts UpdateDSCPMarkingRuleOpts) ToDSCPMarkingRuleUpdateMap() (map[string]i } // UpdateDSCPMarkingRule requests the creation of a new DSCPMarkingRule on the server. -func UpdateDSCPMarkingRule(client *gophercloud.ServiceClient, policyID, ruleID string, opts UpdateDSCPMarkingRuleOptsBuilder) (r UpdateDSCPMarkingRuleResult) { +func UpdateDSCPMarkingRule(ctx context.Context, client *gophercloud.ServiceClient, policyID, ruleID string, opts UpdateDSCPMarkingRuleOptsBuilder) (r UpdateDSCPMarkingRuleResult) { b, err := opts.ToDSCPMarkingRuleUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateDSCPMarkingRuleURL(client, policyID, ruleID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateDSCPMarkingRuleURL(client, policyID, ruleID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -265,8 +267,8 @@ func UpdateDSCPMarkingRule(client *gophercloud.ServiceClient, policyID, ruleID s } // DeleteDSCPMarkingRule accepts policy and rule ID and deletes the DSCPMarkingRule associated with them. -func DeleteDSCPMarkingRule(c *gophercloud.ServiceClient, policyID, ruleID string) (r DeleteDSCPMarkingRuleResult) { - resp, err := c.Delete(deleteDSCPMarkingRuleURL(c, policyID, ruleID), nil) +func DeleteDSCPMarkingRule(ctx context.Context, c *gophercloud.ServiceClient, policyID, ruleID string) (r DeleteDSCPMarkingRuleResult) { + resp, err := c.Delete(ctx, deleteDSCPMarkingRuleURL(c, policyID, ruleID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -323,8 +325,8 @@ func ListMinimumBandwidthRules(c *gophercloud.ServiceClient, policyID string, op } // GetMinimumBandwidthRule retrieves a specific MinimumBandwidthRule based on its ID. -func GetMinimumBandwidthRule(c *gophercloud.ServiceClient, policyID, ruleID string) (r GetMinimumBandwidthRuleResult) { - resp, err := c.Get(getMinimumBandwidthRuleURL(c, policyID, ruleID), &r.Body, nil) +func GetMinimumBandwidthRule(ctx context.Context, c *gophercloud.ServiceClient, policyID, ruleID string) (r GetMinimumBandwidthRuleResult) { + resp, err := c.Get(ctx, getMinimumBandwidthRuleURL(c, policyID, ruleID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -350,13 +352,13 @@ func (opts CreateMinimumBandwidthRuleOpts) ToMinimumBandwidthRuleCreateMap() (ma } // CreateMinimumBandwidthRule requests the creation of a new MinimumBandwidthRule on the server. -func CreateMinimumBandwidthRule(client *gophercloud.ServiceClient, policyID string, opts CreateMinimumBandwidthRuleOptsBuilder) (r CreateMinimumBandwidthRuleResult) { +func CreateMinimumBandwidthRule(ctx context.Context, client *gophercloud.ServiceClient, policyID string, opts CreateMinimumBandwidthRuleOptsBuilder) (r CreateMinimumBandwidthRuleResult) { b, err := opts.ToMinimumBandwidthRuleCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createMinimumBandwidthRuleURL(client, policyID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createMinimumBandwidthRuleURL(client, policyID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -384,13 +386,13 @@ func (opts UpdateMinimumBandwidthRuleOpts) ToMinimumBandwidthRuleUpdateMap() (ma } // UpdateMinimumBandwidthRule requests the creation of a new MinimumBandwidthRule on the server. -func UpdateMinimumBandwidthRule(client *gophercloud.ServiceClient, policyID, ruleID string, opts UpdateMinimumBandwidthRuleOptsBuilder) (r UpdateMinimumBandwidthRuleResult) { +func UpdateMinimumBandwidthRule(ctx context.Context, client *gophercloud.ServiceClient, policyID, ruleID string, opts UpdateMinimumBandwidthRuleOptsBuilder) (r UpdateMinimumBandwidthRuleResult) { b, err := opts.ToMinimumBandwidthRuleUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateMinimumBandwidthRuleURL(client, policyID, ruleID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateMinimumBandwidthRuleURL(client, policyID, ruleID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -398,8 +400,8 @@ func UpdateMinimumBandwidthRule(client *gophercloud.ServiceClient, policyID, rul } // DeleteMinimumBandwidthRule accepts policy and rule ID and deletes the MinimumBandwidthRule associated with them. -func DeleteMinimumBandwidthRule(c *gophercloud.ServiceClient, policyID, ruleID string) (r DeleteMinimumBandwidthRuleResult) { - resp, err := c.Delete(deleteMinimumBandwidthRuleURL(c, policyID, ruleID), nil) +func DeleteMinimumBandwidthRule(ctx context.Context, c *gophercloud.ServiceClient, policyID, ruleID string) (r DeleteMinimumBandwidthRuleResult) { + resp, err := c.Delete(ctx, deleteMinimumBandwidthRuleURL(c, policyID, ruleID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/qos/rules/testing/requests_test.go b/openstack/networking/v2/extensions/qos/rules/testing/requests_test.go index f98ac61cfb..4ee49605ea 100644 --- a/openstack/networking/v2/extensions/qos/rules/testing/requests_test.go +++ b/openstack/networking/v2/extensions/qos/rules/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -31,7 +32,7 @@ func TestListBandwidthLimitRule(t *testing.T) { fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", rules.BandwidthLimitRulesListOpts{}, - ).EachPage(func(page pagination.Page) (bool, error) { + ).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := rules.ExtractBandwidthLimitRules(page) if err != nil { @@ -73,7 +74,7 @@ func TestGetBandwidthLimitRule(t *testing.T) { fmt.Fprintf(w, BandwidthLimitRulesGetResult) }) - r, err := rules.GetBandwidthLimitRule(fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241").ExtractBandwidthLimitRule() + r, err := rules.GetBandwidthLimitRule(context.TODO(), fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241").ExtractBandwidthLimitRule() th.AssertNoErr(t, err) th.AssertEquals(t, r.ID, "30a57f4a-336b-4382-8275-d708babd2241") @@ -103,7 +104,7 @@ func TestCreateBandwidthLimitRule(t *testing.T) { MaxKBps: 2000, MaxBurstKBps: 200, } - r, err := rules.CreateBandwidthLimitRule(fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", opts).ExtractBandwidthLimitRule() + r, err := rules.CreateBandwidthLimitRule(context.TODO(), fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", opts).ExtractBandwidthLimitRule() th.AssertNoErr(t, err) th.AssertEquals(t, 200, r.MaxBurstKBps) @@ -133,7 +134,7 @@ func TestUpdateBandwidthLimitRule(t *testing.T) { MaxKBps: &maxKBps, MaxBurstKBps: &maxBurstKBps, } - r, err := rules.UpdateBandwidthLimitRule(fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241", opts).ExtractBandwidthLimitRule() + r, err := rules.UpdateBandwidthLimitRule(context.TODO(), fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241", opts).ExtractBandwidthLimitRule() th.AssertNoErr(t, err) th.AssertEquals(t, 0, r.MaxBurstKBps) @@ -150,7 +151,7 @@ func TestDeleteBandwidthLimitRule(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := rules.DeleteBandwidthLimitRule(fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241") + res := rules.DeleteBandwidthLimitRule(context.TODO(), fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241") th.AssertNoErr(t, res.Err) } @@ -174,7 +175,7 @@ func TestListDSCPMarkingRule(t *testing.T) { fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", rules.DSCPMarkingRulesListOpts{}, - ).EachPage(func(page pagination.Page) (bool, error) { + ).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := rules.ExtractDSCPMarkingRules(page) if err != nil { @@ -214,7 +215,7 @@ func TestGetDSCPMarkingRule(t *testing.T) { fmt.Fprintf(w, DSCPMarkingRuleGetResult) }) - r, err := rules.GetDSCPMarkingRule(fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241").ExtractDSCPMarkingRule() + r, err := rules.GetDSCPMarkingRule(context.TODO(), fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241").ExtractDSCPMarkingRule() th.AssertNoErr(t, err) th.AssertEquals(t, r.ID, "30a57f4a-336b-4382-8275-d708babd2241") @@ -241,7 +242,7 @@ func TestCreateDSCPMarkingRule(t *testing.T) { opts := rules.CreateDSCPMarkingRuleOpts{ DSCPMark: 20, } - r, err := rules.CreateDSCPMarkingRule(fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", opts).ExtractDSCPMarkingRule() + r, err := rules.CreateDSCPMarkingRule(context.TODO(), fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", opts).ExtractDSCPMarkingRule() th.AssertNoErr(t, err) th.AssertEquals(t, "30a57f4a-336b-4382-8275-d708babd2241", r.ID) @@ -269,7 +270,7 @@ func TestUpdateDSCPMarkingRule(t *testing.T) { opts := rules.UpdateDSCPMarkingRuleOpts{ DSCPMark: &dscpMark, } - r, err := rules.UpdateDSCPMarkingRule(fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241", opts).ExtractDSCPMarkingRule() + r, err := rules.UpdateDSCPMarkingRule(context.TODO(), fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241", opts).ExtractDSCPMarkingRule() th.AssertNoErr(t, err) th.AssertEquals(t, "30a57f4a-336b-4382-8275-d708babd2241", r.ID) @@ -286,7 +287,7 @@ func TestDeleteDSCPMarkingRule(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := rules.DeleteDSCPMarkingRule(fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241") + res := rules.DeleteDSCPMarkingRule(context.TODO(), fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241") th.AssertNoErr(t, res.Err) } @@ -310,7 +311,7 @@ func TestListMinimumBandwidthRule(t *testing.T) { fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", rules.MinimumBandwidthRulesListOpts{}, - ).EachPage(func(page pagination.Page) (bool, error) { + ).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := rules.ExtractMinimumBandwidthRules(page) if err != nil { @@ -351,7 +352,7 @@ func TestGetMinimumBandwidthRule(t *testing.T) { fmt.Fprintf(w, MinimumBandwidthRulesGetResult) }) - r, err := rules.GetMinimumBandwidthRule(fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241").ExtractMinimumBandwidthRule() + r, err := rules.GetMinimumBandwidthRule(context.TODO(), fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241").ExtractMinimumBandwidthRule() th.AssertNoErr(t, err) th.AssertEquals(t, r.ID, "30a57f4a-336b-4382-8275-d708babd2241") @@ -379,7 +380,7 @@ func TestCreateMinimumBandwidthRule(t *testing.T) { opts := rules.CreateMinimumBandwidthRuleOpts{ MinKBps: 2000, } - r, err := rules.CreateMinimumBandwidthRule(fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", opts).ExtractMinimumBandwidthRule() + r, err := rules.CreateMinimumBandwidthRule(context.TODO(), fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", opts).ExtractMinimumBandwidthRule() th.AssertNoErr(t, err) th.AssertEquals(t, 2000, r.MinKBps) @@ -406,7 +407,7 @@ func TestUpdateMinimumBandwidthRule(t *testing.T) { opts := rules.UpdateMinimumBandwidthRuleOpts{ MinKBps: &minKBps, } - r, err := rules.UpdateMinimumBandwidthRule(fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241", opts).ExtractMinimumBandwidthRule() + r, err := rules.UpdateMinimumBandwidthRule(context.TODO(), fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241", opts).ExtractMinimumBandwidthRule() th.AssertNoErr(t, err) th.AssertEquals(t, 500, r.MinKBps) @@ -422,6 +423,6 @@ func TestDeleteMinimumBandwidthRule(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := rules.DeleteMinimumBandwidthRule(fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241") + res := rules.DeleteMinimumBandwidthRule(context.TODO(), fake.ServiceClient(), "501005fa-3b56-4061-aaca-3f24995112e1", "30a57f4a-336b-4382-8275-d708babd2241") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/qos/ruletypes/requests.go b/openstack/networking/v2/extensions/qos/ruletypes/requests.go index f10b2b886a..69699bc985 100644 --- a/openstack/networking/v2/extensions/qos/ruletypes/requests.go +++ b/openstack/networking/v2/extensions/qos/ruletypes/requests.go @@ -1,6 +1,8 @@ package ruletypes import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -13,8 +15,8 @@ func ListRuleTypes(c *gophercloud.ServiceClient) (result pagination.Pager) { } // GetRuleType retrieves a specific QoS RuleType based on its name. -func GetRuleType(c *gophercloud.ServiceClient, name string) (r GetResult) { - resp, err := c.Get(getRuleTypeURL(c, name), &r.Body, nil) +func GetRuleType(ctx context.Context, c *gophercloud.ServiceClient, name string) (r GetResult) { + resp, err := c.Get(ctx, getRuleTypeURL(c, name), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/qos/ruletypes/testing/requests_test.go b/openstack/networking/v2/extensions/qos/ruletypes/testing/requests_test.go index dbc4813adb..74eeb49aa4 100644 --- a/openstack/networking/v2/extensions/qos/ruletypes/testing/requests_test.go +++ b/openstack/networking/v2/extensions/qos/ruletypes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -24,7 +25,7 @@ func TestListRuleTypes(t *testing.T) { fmt.Fprint(w, ListRuleTypesResponse) }) - page, err := ruletypes.ListRuleTypes(fake.ServiceClient()).AllPages() + page, err := ruletypes.ListRuleTypes(fake.ServiceClient()).AllPages(context.TODO()) if err != nil { t.Errorf("Failed to list rule types pages: %v", err) return @@ -55,7 +56,7 @@ func TestGetRuleType(t *testing.T) { th.AssertNoErr(t, err) }) - r, err := ruletypes.GetRuleType(fake.ServiceClient(), "bandwidth_limit").Extract() + r, err := ruletypes.GetRuleType(context.TODO(), fake.ServiceClient(), "bandwidth_limit").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "bandwidth_limit", r.Type) diff --git a/openstack/networking/v2/extensions/quotas/requests.go b/openstack/networking/v2/extensions/quotas/requests.go index e42bca16a9..9b9e0f4a22 100644 --- a/openstack/networking/v2/extensions/quotas/requests.go +++ b/openstack/networking/v2/extensions/quotas/requests.go @@ -1,17 +1,21 @@ package quotas -import "github.com/gophercloud/gophercloud/v2" +import ( + "context" + + "github.com/gophercloud/gophercloud/v2" +) // Get returns Networking Quotas for a project. -func Get(client *gophercloud.ServiceClient, projectID string) (r GetResult) { - resp, err := client.Get(getURL(client, projectID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, projectID string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, projectID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetDetail returns detailed Networking Quotas for a project. -func GetDetail(client *gophercloud.ServiceClient, projectID string) (r GetDetailResult) { - resp, err := client.Get(getDetailURL(client, projectID), &r.Body, nil) +func GetDetail(ctx context.Context, client *gophercloud.ServiceClient, projectID string) (r GetDetailResult) { + resp, err := client.Get(ctx, getDetailURL(client, projectID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -62,13 +66,13 @@ func (opts UpdateOpts) ToQuotaUpdateMap() (map[string]interface{}, error) { // Update accepts a UpdateOpts struct and updates an existing Networking Quotas using the // values provided. -func Update(c *gophercloud.ServiceClient, projectID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, projectID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToQuotaUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(updateURL(c, projectID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, projectID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/quotas/testing/requests_test.go b/openstack/networking/v2/extensions/quotas/testing/requests_test.go index 487f2fa343..7ed3100242 100644 --- a/openstack/networking/v2/extensions/quotas/testing/requests_test.go +++ b/openstack/networking/v2/extensions/quotas/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -25,7 +26,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, GetResponseRaw) }) - q, err := quotas.Get(fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76").Extract() + q, err := quotas.Get(context.TODO(), fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, q, &GetResponse) } @@ -44,7 +45,7 @@ func TestGetDetail(t *testing.T) { fmt.Fprintf(w, GetDetailedResponseRaw) }) - q, err := quotas.GetDetail(fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76").Extract() + q, err := quotas.GetDetail(context.TODO(), fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, q, &GetDetailResponse) } @@ -63,7 +64,7 @@ func TestUpdate(t *testing.T) { fmt.Fprintf(w, UpdateRequestResponseRaw) }) - q, err := quotas.Update(fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76", quotas.UpdateOpts{ + q, err := quotas.Update(context.TODO(), fake.ServiceClient(), "0a73845280574ad389c292f6a74afa76", quotas.UpdateOpts{ FloatingIP: gophercloud.IntToPointer(0), Network: gophercloud.IntToPointer(-1), Port: gophercloud.IntToPointer(5), diff --git a/openstack/networking/v2/extensions/rbacpolicies/requests.go b/openstack/networking/v2/extensions/rbacpolicies/requests.go index b58ffd6b14..a2ac10da6e 100644 --- a/openstack/networking/v2/extensions/rbacpolicies/requests.go +++ b/openstack/networking/v2/extensions/rbacpolicies/requests.go @@ -1,6 +1,8 @@ package rbacpolicies import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -58,8 +60,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a specific rbac policy based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(getURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -100,20 +102,20 @@ func (opts CreateOpts) ToRBACPolicyCreateMap() (map[string]interface{}, error) { // // The tenant ID that is contained in the URI is the tenant that creates the // rbac-policy. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToRBACPolicyCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(createURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, createURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete accepts a unique ID and deletes the rbac-policy associated with it. -func Delete(c *gophercloud.ServiceClient, rbacPolicyID string) (r DeleteResult) { - resp, err := c.Delete(deleteURL(c, rbacPolicyID), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, rbacPolicyID string) (r DeleteResult) { + resp, err := c.Delete(ctx, deleteURL(c, rbacPolicyID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -136,13 +138,13 @@ func (opts UpdateOpts) ToRBACPolicyUpdateMap() (map[string]interface{}, error) { // Update accepts a UpdateOpts struct and updates an existing rbac-policy using the // values provided. -func Update(c *gophercloud.ServiceClient, rbacPolicyID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, rbacPolicyID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToRBACPolicyUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(updateURL(c, rbacPolicyID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, rbacPolicyID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/rbacpolicies/testing/requests_test.go b/openstack/networking/v2/extensions/rbacpolicies/testing/requests_test.go index 2e15e2184c..227ef33912 100644 --- a/openstack/networking/v2/extensions/rbacpolicies/testing/requests_test.go +++ b/openstack/networking/v2/extensions/rbacpolicies/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -33,7 +34,7 @@ func TestCreate(t *testing.T) { TargetTenant: "6e547a3bcfe44702889fdeff3c3520c3", ObjectID: "240d22bf-bd17-4238-9758-25f72610ecdc", } - rbacResult, err := rbacpolicies.Create(fake.ServiceClient(), options).Extract() + rbacResult, err := rbacpolicies.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &rbacPolicy1, rbacResult) @@ -53,7 +54,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, GetResponse) }) - n, err := rbacpolicies.Get(fake.ServiceClient(), "2cf7523a-93b5-4e69-9360-6c6bf986bb7c").Extract() + n, err := rbacpolicies.Get(context.TODO(), fake.ServiceClient(), "2cf7523a-93b5-4e69-9360-6c6bf986bb7c").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &rbacPolicy1, n) } @@ -75,7 +76,7 @@ func TestList(t *testing.T) { client := fake.ServiceClient() count := 0 - rbacpolicies.List(client, rbacpolicies.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + rbacpolicies.List(client, rbacpolicies.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := rbacpolicies.ExtractRBACPolicies(page) if err != nil { @@ -115,7 +116,7 @@ func TestListWithAllPages(t *testing.T) { var allRBACpolicies []newRBACPolicy - allPages, err := rbacpolicies.List(client, rbacpolicies.ListOpts{}).AllPages() + allPages, err := rbacpolicies.List(client, rbacpolicies.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) err = rbacpolicies.ExtractRBACPolicesInto(allPages, &allRBACpolicies) @@ -139,7 +140,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := rbacpolicies.Delete(fake.ServiceClient(), "71d55b18-d2f8-4c76-a5e6-e0a3dd114361").ExtractErr() + res := rbacpolicies.Delete(context.TODO(), fake.ServiceClient(), "71d55b18-d2f8-4c76-a5e6-e0a3dd114361").ExtractErr() th.AssertNoErr(t, res) } @@ -161,7 +162,7 @@ func TestUpdate(t *testing.T) { }) options := rbacpolicies.UpdateOpts{TargetTenant: "9d766060b6354c9e8e2da44cab0e8f38"} - rbacResult, err := rbacpolicies.Update(fake.ServiceClient(), "2cf7523a-93b5-4e69-9360-6c6bf986bb7c", options).Extract() + rbacResult, err := rbacpolicies.Update(context.TODO(), fake.ServiceClient(), "2cf7523a-93b5-4e69-9360-6c6bf986bb7c", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, rbacResult.TargetTenant, "9d766060b6354c9e8e2da44cab0e8f38") diff --git a/openstack/networking/v2/extensions/security/groups/requests.go b/openstack/networking/v2/extensions/security/groups/requests.go index b196beca07..caddeeaa83 100644 --- a/openstack/networking/v2/extensions/security/groups/requests.go +++ b/openstack/networking/v2/extensions/security/groups/requests.go @@ -1,6 +1,8 @@ package groups import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -70,13 +72,13 @@ func (opts CreateOpts) ToSecGroupCreateMap() (map[string]interface{}, error) { // Create is an operation which provisions a new security group with default // security group rules for the IPv4 and IPv6 ether types. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToSecGroupCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -103,14 +105,14 @@ func (opts UpdateOpts) ToSecGroupUpdateMap() (map[string]interface{}, error) { } // Update is an operation which updates an existing security group. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToSecGroupUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -118,16 +120,16 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Get retrieves a particular security group based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete will permanently delete a particular security group based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/security/groups/testing/requests_test.go b/openstack/networking/v2/extensions/security/groups/testing/requests_test.go index b18e11f111..30c3ab6359 100644 --- a/openstack/networking/v2/extensions/security/groups/testing/requests_test.go +++ b/openstack/networking/v2/extensions/security/groups/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -28,7 +29,7 @@ func TestList(t *testing.T) { count := 0 - err := groups.List(fake.ServiceClient(), groups.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := groups.List(fake.ServiceClient(), groups.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := groups.ExtractGroups(page) if err != nil { @@ -67,7 +68,7 @@ func TestCreate(t *testing.T) { }) opts := groups.CreateOpts{Name: "new-webservers", Description: "security group for webservers"} - _, err := groups.Create(fake.ServiceClient(), opts).Extract() + _, err := groups.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) } @@ -90,7 +91,7 @@ func TestUpdate(t *testing.T) { }) opts := groups.UpdateOpts{Name: "newer-webservers"} - sg, err := groups.Update(fake.ServiceClient(), "2076db17-a522-4506-91de-c6dd8e837028", opts).Extract() + sg, err := groups.Update(context.TODO(), fake.ServiceClient(), "2076db17-a522-4506-91de-c6dd8e837028", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "newer-webservers", sg.Name) @@ -114,7 +115,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, SecurityGroupGetResponse) }) - sg, err := groups.Get(fake.ServiceClient(), "85cc3048-abc3-43cc-89b3-377341426ac5").Extract() + sg, err := groups.Get(context.TODO(), fake.ServiceClient(), "85cc3048-abc3-43cc-89b3-377341426ac5").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "default", sg.Description) @@ -136,6 +137,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := groups.Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304") + res := groups.Delete(context.TODO(), fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/security/rules/requests.go b/openstack/networking/v2/extensions/security/rules/requests.go index 24147bb772..72372afeb1 100644 --- a/openstack/networking/v2/extensions/security/rules/requests.go +++ b/openstack/networking/v2/extensions/security/rules/requests.go @@ -1,6 +1,8 @@ package rules import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -137,28 +139,28 @@ func (opts CreateOpts) ToSecGroupRuleCreateMap() (map[string]interface{}, error) // Create is an operation which adds a new security group rule and associates it // with an existing security group (whose ID is specified in CreateOpts). -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToSecGroupRuleCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular security group rule based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete will permanently delete a particular security group rule based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/security/rules/testing/requests_test.go b/openstack/networking/v2/extensions/security/rules/testing/requests_test.go index a5779d931d..30a5d15565 100644 --- a/openstack/networking/v2/extensions/security/rules/testing/requests_test.go +++ b/openstack/networking/v2/extensions/security/rules/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -56,7 +57,7 @@ func TestList(t *testing.T) { count := 0 - rules.List(fake.ServiceClient(), rules.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + rules.List(fake.ServiceClient(), rules.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := rules.ExtractRules(page) if err != nil { @@ -158,24 +159,24 @@ func TestCreate(t *testing.T) { RemoteGroupID: "85cc3048-abc3-43cc-89b3-377341426ac5", SecGroupID: "a7734e61-b545-452d-a3cd-0189cbd9747a", } - _, err := rules.Create(fake.ServiceClient(), opts).Extract() + _, err := rules.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) } func TestRequiredCreateOpts(t *testing.T) { - res := rules.Create(fake.ServiceClient(), rules.CreateOpts{Direction: rules.DirIngress}) + res := rules.Create(context.TODO(), fake.ServiceClient(), rules.CreateOpts{Direction: rules.DirIngress}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = rules.Create(fake.ServiceClient(), rules.CreateOpts{Direction: rules.DirIngress, EtherType: rules.EtherType4}) + res = rules.Create(context.TODO(), fake.ServiceClient(), rules.CreateOpts{Direction: rules.DirIngress, EtherType: rules.EtherType4}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = rules.Create(fake.ServiceClient(), rules.CreateOpts{Direction: rules.DirIngress, EtherType: rules.EtherType4}) + res = rules.Create(context.TODO(), fake.ServiceClient(), rules.CreateOpts{Direction: rules.DirIngress, EtherType: rules.EtherType4}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = rules.Create(fake.ServiceClient(), rules.CreateOpts{Direction: rules.DirIngress, EtherType: rules.EtherType4, SecGroupID: "something", Protocol: "foo"}) + res = rules.Create(context.TODO(), fake.ServiceClient(), rules.CreateOpts{Direction: rules.DirIngress, EtherType: rules.EtherType4, SecGroupID: "something", Protocol: "foo"}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -210,7 +211,7 @@ func TestGet(t *testing.T) { `) }) - sr, err := rules.Get(fake.ServiceClient(), "3c0e45ff-adaf-4124-b083-bf390e5482ff").Extract() + sr, err := rules.Get(context.TODO(), fake.ServiceClient(), "3c0e45ff-adaf-4124-b083-bf390e5482ff").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "egress", sr.Direction) @@ -235,6 +236,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := rules.Delete(fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304") + res := rules.Delete(context.TODO(), fake.ServiceClient(), "4ec89087-d057-4e2c-911f-60a3b47ee304") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/subnetpools/requests.go b/openstack/networking/v2/extensions/subnetpools/requests.go index bb1bf2cd56..4656e0eda3 100644 --- a/openstack/networking/v2/extensions/subnetpools/requests.go +++ b/openstack/networking/v2/extensions/subnetpools/requests.go @@ -1,6 +1,8 @@ package subnetpools import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -69,8 +71,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a specific subnetpool based on its ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(getURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -136,13 +138,13 @@ func (opts CreateOpts) ToSubnetPoolCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new subnetpool on the server. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToSubnetPoolCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -208,13 +210,13 @@ func (opts UpdateOpts) ToSubnetPoolUpdateMap() (map[string]interface{}, error) { // Update accepts a UpdateOpts struct and updates an existing subnetpool using the // values provided. -func Update(c *gophercloud.ServiceClient, subnetPoolID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, subnetPoolID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToSubnetPoolUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(updateURL(c, subnetPoolID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, subnetPoolID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -222,8 +224,8 @@ func Update(c *gophercloud.ServiceClient, subnetPoolID string, opts UpdateOptsBu } // Delete accepts a unique ID and deletes the subnetpool associated with it. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(deleteURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, deleteURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/subnetpools/testing/requests_test.go b/openstack/networking/v2/extensions/subnetpools/testing/requests_test.go index 526e5965c9..50f479b9d1 100644 --- a/openstack/networking/v2/extensions/subnetpools/testing/requests_test.go +++ b/openstack/networking/v2/extensions/subnetpools/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -28,7 +29,7 @@ func TestList(t *testing.T) { count := 0 - err := subnetpools.List(fake.ServiceClient(), subnetpools.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := subnetpools.List(fake.ServiceClient(), subnetpools.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := subnetpools.ExtractSubnetPools(page) if err != nil { @@ -68,7 +69,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, SubnetPoolGetResult) }) - s, err := subnetpools.Get(fake.ServiceClient(), "0a738452-8057-4ad3-89c2-92f6a74afa76").Extract() + s, err := subnetpools.Get(context.TODO(), fake.ServiceClient(), "0a738452-8057-4ad3-89c2-92f6a74afa76").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.ID, "0a738452-8057-4ad3-89c2-92f6a74afa76") @@ -119,7 +120,7 @@ func TestCreate(t *testing.T) { AddressScopeID: "3d4e2e2a-552b-42ad-a16d-820bbf3edaf3", Description: "ipv4 prefixes", } - s, err := subnetpools.Create(fake.ServiceClient(), opts).Extract() + s, err := subnetpools.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "my_ipv4_pool") @@ -163,7 +164,7 @@ func TestUpdate(t *testing.T) { DefaultQuota: &nullInt, Description: &nullString, } - n, err := subnetpools.Update(fake.ServiceClient(), "099546ca-788d-41e5-a76d-17d8cd282d3e", updateOpts).Extract() + n, err := subnetpools.Update(context.TODO(), fake.ServiceClient(), "099546ca-788d-41e5-a76d-17d8cd282d3e", updateOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, "new_subnetpool_name") @@ -189,6 +190,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := subnetpools.Delete(fake.ServiceClient(), "099546ca-788d-41e5-a76d-17d8cd282d3e") + res := subnetpools.Delete(context.TODO(), fake.ServiceClient(), "099546ca-788d-41e5-a76d-17d8cd282d3e") th.AssertNoErr(t, res.Err) } diff --git a/openstack/networking/v2/extensions/testing/delegate_test.go b/openstack/networking/v2/extensions/testing/delegate_test.go index 82f44adad2..c8f847873d 100644 --- a/openstack/networking/v2/extensions/testing/delegate_test.go +++ b/openstack/networking/v2/extensions/testing/delegate_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -40,7 +41,7 @@ func TestList(t *testing.T) { count := 0 - extensions.List(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + extensions.List(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := extensions.ExtractExtensions(page) if err != nil { @@ -95,7 +96,7 @@ func TestGet(t *testing.T) { `) }) - ext, err := extensions.Get(fake.ServiceClient(), "agent").Extract() + ext, err := extensions.Get(context.TODO(), fake.ServiceClient(), "agent").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, ext.Updated, "2013-02-03T10:00:00-00:00") diff --git a/openstack/networking/v2/extensions/trunk_details/testing/requests_test.go b/openstack/networking/v2/extensions/trunk_details/testing/requests_test.go index 43532ae4e7..b99e711b1b 100644 --- a/openstack/networking/v2/extensions/trunk_details/testing/requests_test.go +++ b/openstack/networking/v2/extensions/trunk_details/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -31,7 +32,7 @@ func TestServerWithUsageExt(t *testing.T) { } // Extract basic fields. - err := ports.Get(fake.ServiceClient(), portIDFixture).ExtractInto(&portExt) + err := ports.Get(context.TODO(), fake.ServiceClient(), portIDFixture).ExtractInto(&portExt) th.AssertNoErr(t, err) th.AssertEquals(t, portExt.TrunkDetails.TrunkID, "f170c831-8c55-4ceb-ad13-75eab4a121e5") diff --git a/openstack/networking/v2/extensions/trunks/requests.go b/openstack/networking/v2/extensions/trunks/requests.go index 3a4c942454..251e317743 100644 --- a/openstack/networking/v2/extensions/trunks/requests.go +++ b/openstack/networking/v2/extensions/trunks/requests.go @@ -1,6 +1,8 @@ package trunks import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -30,21 +32,21 @@ func (opts CreateOpts) ToTrunkCreateMap() (map[string]interface{}, error) { return gophercloud.BuildRequestBody(opts, "trunk") } -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { body, err := opts.ToTrunkCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(createURL(c), body, &r.Body, nil) + resp, err := c.Post(ctx, createURL(c), body, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete accepts a unique ID and deletes the trunk associated with it. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(deleteURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, deleteURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -106,8 +108,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a specific trunk based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(getURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -126,21 +128,21 @@ func (opts UpdateOpts) ToTrunkUpdateMap() (map[string]interface{}, error) { return gophercloud.BuildRequestBody(opts, "trunk") } -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { body, err := opts.ToTrunkUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(updateURL(c, id), body, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, id), body, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -func GetSubports(c *gophercloud.ServiceClient, id string) (r GetSubportsResult) { - resp, err := c.Get(getSubportsURL(c, id), &r.Body, &gophercloud.RequestOpts{ +func GetSubports(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetSubportsResult) { + resp, err := c.Get(ctx, getSubportsURL(c, id), &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -159,13 +161,13 @@ func (opts AddSubportsOpts) ToTrunkAddSubportsMap() (map[string]interface{}, err return gophercloud.BuildRequestBody(opts, "") } -func AddSubports(c *gophercloud.ServiceClient, id string, opts AddSubportsOptsBuilder) (r UpdateSubportsResult) { +func AddSubports(ctx context.Context, c *gophercloud.ServiceClient, id string, opts AddSubportsOptsBuilder) (r UpdateSubportsResult) { body, err := opts.ToTrunkAddSubportsMap() if err != nil { r.Err = err return } - resp, err := c.Put(addSubportsURL(c, id), body, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, addSubportsURL(c, id), body, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -188,13 +190,13 @@ func (opts RemoveSubportsOpts) ToTrunkRemoveSubportsMap() (map[string]interface{ return gophercloud.BuildRequestBody(opts, "") } -func RemoveSubports(c *gophercloud.ServiceClient, id string, opts RemoveSubportsOptsBuilder) (r UpdateSubportsResult) { +func RemoveSubports(ctx context.Context, c *gophercloud.ServiceClient, id string, opts RemoveSubportsOptsBuilder) (r UpdateSubportsResult) { body, err := opts.ToTrunkRemoveSubportsMap() if err != nil { r.Err = err return } - resp, err := c.Put(removeSubportsURL(c, id), body, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, removeSubportsURL(c, id), body, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/trunks/testing/requests_test.go b/openstack/networking/v2/extensions/trunks/testing/requests_test.go index c99dc53807..e4d0818ff6 100644 --- a/openstack/networking/v2/extensions/trunks/testing/requests_test.go +++ b/openstack/networking/v2/extensions/trunks/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -45,12 +46,12 @@ func TestCreate(t *testing.T) { }, }, } - _, err := trunks.Create(fake.ServiceClient(), options).Extract() + _, err := trunks.Create(context.TODO(), fake.ServiceClient(), options).Extract() if err == nil { t.Fatalf("Failed to detect missing parent PortID field") } options.PortID = "c373d2fa-3d3b-4492-924c-aff54dea19b6" - n, err := trunks.Create(fake.ServiceClient(), options).Extract() + n, err := trunks.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Status, "ACTIVE") @@ -82,7 +83,7 @@ func TestCreateNoSubports(t *testing.T) { AdminStateUp: &iTrue, PortID: "c373d2fa-3d3b-4492-924c-aff54dea19b6", } - n, err := trunks.Create(fake.ServiceClient(), options).Extract() + n, err := trunks.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Status, "ACTIVE") @@ -99,7 +100,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := trunks.Delete(fake.ServiceClient(), "f6a9718c-5a64-43e3-944f-4deccad8e78c") + res := trunks.Delete(context.TODO(), fake.ServiceClient(), "f6a9718c-5a64-43e3-944f-4deccad8e78c") th.AssertNoErr(t, res.Err) } @@ -120,7 +121,7 @@ func TestList(t *testing.T) { client := fake.ServiceClient() count := 0 - trunks.List(client, trunks.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + trunks.List(client, trunks.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := trunks.ExtractTrunks(page) if err != nil { @@ -154,7 +155,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, GetResponse) }) - n, err := trunks.Get(fake.ServiceClient(), "f6a9718c-5a64-43e3-944f-4deccad8e78c").Extract() + n, err := trunks.Get(context.TODO(), fake.ServiceClient(), "f6a9718c-5a64-43e3-944f-4deccad8e78c").Extract() th.AssertNoErr(t, err) expectedTrunks, err := ExpectedTrunkSlice() th.AssertNoErr(t, err) @@ -186,7 +187,7 @@ func TestUpdate(t *testing.T) { AdminStateUp: &iFalse, Description: &description, } - n, err := trunks.Update(fake.ServiceClient(), "f6a9718c-5a64-43e3-944f-4deccad8e78c", options).Extract() + n, err := trunks.Update(context.TODO(), fake.ServiceClient(), "f6a9718c-5a64-43e3-944f-4deccad8e78c", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, name) @@ -210,7 +211,7 @@ func TestGetSubports(t *testing.T) { client := fake.ServiceClient() - subports, err := trunks.GetSubports(client, "f6a9718c-5a64-43e3-944f-4deccad8e78c").Extract() + subports, err := trunks.GetSubports(context.TODO(), client, "f6a9718c-5a64-43e3-944f-4deccad8e78c").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, ExpectedSubports, subports) } @@ -266,7 +267,7 @@ func TestAddSubports(t *testing.T) { Subports: ExpectedSubports, } - trunk, err := trunks.AddSubports(client, "f6a9718c-5a64-43e3-944f-4deccad8e78c", opts).Extract() + trunk, err := trunks.AddSubports(context.TODO(), client, "f6a9718c-5a64-43e3-944f-4deccad8e78c", opts).Extract() th.AssertNoErr(t, err) expectedTrunk, err := ExpectedSubportsAddedTrunk() th.AssertNoErr(t, err) @@ -296,7 +297,7 @@ func TestRemoveSubports(t *testing.T) { {PortID: "4c8b2bff-9824-4d4c-9b60-b3f6621b2bab"}, }, } - trunk, err := trunks.RemoveSubports(client, "f6a9718c-5a64-43e3-944f-4deccad8e78c", opts).Extract() + trunk, err := trunks.RemoveSubports(context.TODO(), client, "f6a9718c-5a64-43e3-944f-4deccad8e78c", opts).Extract() th.AssertNoErr(t, err) expectedTrunk, err := ExpectedSubportsRemovedTrunk() diff --git a/openstack/networking/v2/extensions/vlantransparent/testing/requests_test.go b/openstack/networking/v2/extensions/vlantransparent/testing/requests_test.go index 2f4d934f51..d298894de7 100644 --- a/openstack/networking/v2/extensions/vlantransparent/testing/requests_test.go +++ b/openstack/networking/v2/extensions/vlantransparent/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -31,7 +32,7 @@ func TestList(t *testing.T) { } var actual []networkVLANTransparentExt - allPages, err := networks.List(fake.ServiceClient(), networks.ListOpts{}).AllPages() + allPages, err := networks.List(fake.ServiceClient(), networks.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) err = networks.ExtractNetworksInto(allPages, &actual) @@ -66,7 +67,7 @@ func TestGet(t *testing.T) { vlantransparent.TransparentExt } - err := networks.Get(fake.ServiceClient(), "db193ab3-96e3-4cb3-8fc5-05f4296d0324").ExtractInto(&s) + err := networks.Get(context.TODO(), fake.ServiceClient(), "db193ab3-96e3-4cb3-8fc5-05f4296d0324").ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "db193ab3-96e3-4cb3-8fc5-05f4296d0324", s.ID) @@ -111,7 +112,7 @@ func TestCreate(t *testing.T) { vlantransparent.TransparentExt } - err := networks.Create(fake.ServiceClient(), vlanTransparentCreateOpts).ExtractInto(&s) + err := networks.Create(context.TODO(), fake.ServiceClient(), vlanTransparentCreateOpts).ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "db193ab3-96e3-4cb3-8fc5-05f4296d0324", s.ID) @@ -158,7 +159,7 @@ func TestUpdate(t *testing.T) { vlantransparent.TransparentExt } - err := networks.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", vlanTransparentUpdateOpts).ExtractInto(&s) + err := networks.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", vlanTransparentUpdateOpts).ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, "db193ab3-96e3-4cb3-8fc5-05f4296d0324", s.ID) diff --git a/openstack/networking/v2/extensions/vpnaas/endpointgroups/requests.go b/openstack/networking/v2/extensions/vpnaas/endpointgroups/requests.go index 440958ce8b..74272beeee 100644 --- a/openstack/networking/v2/extensions/vpnaas/endpointgroups/requests.go +++ b/openstack/networking/v2/extensions/vpnaas/endpointgroups/requests.go @@ -1,6 +1,8 @@ package endpointgroups import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -50,20 +52,20 @@ func (opts CreateOpts) ToEndpointGroupCreateMap() (map[string]interface{}, error // Create accepts a CreateOpts struct and uses the values to create a new // endpoint group. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToEndpointGroupCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular endpoint group based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -110,8 +112,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { // Delete will permanently delete a particular endpoint group based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -134,13 +136,13 @@ func (opts UpdateOpts) ToEndpointGroupUpdateMap() (map[string]interface{}, error } // Update allows endpoint groups to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToEndpointGroupUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/vpnaas/endpointgroups/testing/requests_test.go b/openstack/networking/v2/extensions/vpnaas/endpointgroups/testing/requests_test.go index f86e65cf97..fd27de2add 100644 --- a/openstack/networking/v2/extensions/vpnaas/endpointgroups/testing/requests_test.go +++ b/openstack/networking/v2/extensions/vpnaas/endpointgroups/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -61,7 +62,7 @@ func TestCreate(t *testing.T) { "10.3.0.0/24", }, } - actual, err := endpointgroups.Create(fake.ServiceClient(), options).Extract() + actual, err := endpointgroups.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) expected := endpointgroups.EndpointGroup{ Name: "peers", @@ -107,7 +108,7 @@ func TestGet(t *testing.T) { `) }) - actual, err := endpointgroups.Get(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828").Extract() + actual, err := endpointgroups.Get(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828").Extract() th.AssertNoErr(t, err) expected := endpointgroups.EndpointGroup{ Name: "peers", @@ -156,7 +157,7 @@ func TestList(t *testing.T) { count := 0 - endpointgroups.List(fake.ServiceClient(), endpointgroups.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + endpointgroups.List(fake.ServiceClient(), endpointgroups.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := endpointgroups.ExtractEndpointGroups(page) if err != nil { @@ -197,7 +198,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := endpointgroups.Delete(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828") + res := endpointgroups.Delete(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828") th.AssertNoErr(t, res.Err) } @@ -247,7 +248,7 @@ func TestUpdate(t *testing.T) { Description: &updatedDescription, } - actual, err := endpointgroups.Update(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828", options).Extract() + actual, err := endpointgroups.Update(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828", options).Extract() th.AssertNoErr(t, err) expected := endpointgroups.EndpointGroup{ Name: "updatedname", diff --git a/openstack/networking/v2/extensions/vpnaas/ikepolicies/requests.go b/openstack/networking/v2/extensions/vpnaas/ikepolicies/requests.go index 3191ddf432..03f76aedb9 100644 --- a/openstack/networking/v2/extensions/vpnaas/ikepolicies/requests.go +++ b/openstack/networking/v2/extensions/vpnaas/ikepolicies/requests.go @@ -1,6 +1,8 @@ package ikepolicies import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -99,28 +101,28 @@ func (opts CreateOpts) ToPolicyCreateMap() (map[string]interface{}, error) { // Create accepts a CreateOpts struct and uses the values to create a new // IKE policy -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToPolicyCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular IKE policy based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete will permanently delete a particular IKE policy based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -199,13 +201,13 @@ func (opts UpdateOpts) ToPolicyUpdateMap() (map[string]interface{}, error) { } // Update allows IKE policies to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToPolicyUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/vpnaas/ikepolicies/testing/requests_test.go b/openstack/networking/v2/extensions/vpnaas/ikepolicies/testing/requests_test.go index 1927ab2556..993c5752cb 100644 --- a/openstack/networking/v2/extensions/vpnaas/ikepolicies/testing/requests_test.go +++ b/openstack/networking/v2/extensions/vpnaas/ikepolicies/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -63,7 +64,7 @@ func TestCreate(t *testing.T) { IKEVersion: ikepolicies.IKEVersionv2, } - actual, err := ikepolicies.Create(fake.ServiceClient(), options).Extract() + actual, err := ikepolicies.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) expectedLifetime := ikepolicies.Lifetime{ Units: "seconds", @@ -118,7 +119,7 @@ func TestGet(t *testing.T) { `) }) - actual, err := ikepolicies.Get(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828").Extract() + actual, err := ikepolicies.Get(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828").Extract() th.AssertNoErr(t, err) expectedLifetime := ikepolicies.Lifetime{ Units: "seconds", @@ -150,7 +151,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := ikepolicies.Delete(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828") + res := ikepolicies.Delete(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828") th.AssertNoErr(t, res.Err) } @@ -190,7 +191,7 @@ func TestList(t *testing.T) { count := 0 - ikepolicies.List(fake.ServiceClient(), ikepolicies.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + ikepolicies.List(fake.ServiceClient(), ikepolicies.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := ikepolicies.ExtractPolicies(page) if err != nil { @@ -283,7 +284,7 @@ func TestUpdate(t *testing.T) { }, } - actual, err := ikepolicies.Update(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828", options).Extract() + actual, err := ikepolicies.Update(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828", options).Extract() th.AssertNoErr(t, err) expectedLifetime := ikepolicies.Lifetime{ Units: "seconds", diff --git a/openstack/networking/v2/extensions/vpnaas/ipsecpolicies/requests.go b/openstack/networking/v2/extensions/vpnaas/ipsecpolicies/requests.go index 2c1836a49f..2bb155885b 100644 --- a/openstack/networking/v2/extensions/vpnaas/ipsecpolicies/requests.go +++ b/openstack/networking/v2/extensions/vpnaas/ipsecpolicies/requests.go @@ -1,6 +1,8 @@ package ipsecpolicies import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -102,28 +104,28 @@ func (opts CreateOpts) ToPolicyCreateMap() (map[string]interface{}, error) { // Create accepts a CreateOpts struct and uses the values to create a new // IPSec policy -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToPolicyCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete will permanently delete a particular IPSec policy based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular IPSec policy based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -201,13 +203,13 @@ func (opts UpdateOpts) ToPolicyUpdateMap() (map[string]interface{}, error) { } // Update allows IPSec policies to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToPolicyUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/vpnaas/ipsecpolicies/testing/requests_test.go b/openstack/networking/v2/extensions/vpnaas/ipsecpolicies/testing/requests_test.go index 7e50dd2f5a..f8ae98a27b 100644 --- a/openstack/networking/v2/extensions/vpnaas/ipsecpolicies/testing/requests_test.go +++ b/openstack/networking/v2/extensions/vpnaas/ipsecpolicies/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -77,7 +78,7 @@ func TestCreate(t *testing.T) { Lifetime: &lifetime, Description: "", } - actual, err := ipsecpolicies.Create(fake.ServiceClient(), options).Extract() + actual, err := ipsecpolicies.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) expectedLifetime := ipsecpolicies.Lifetime{ Units: "seconds", @@ -132,7 +133,7 @@ func TestGet(t *testing.T) { `) }) - actual, err := ipsecpolicies.Get(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828").Extract() + actual, err := ipsecpolicies.Get(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828").Extract() th.AssertNoErr(t, err) expectedLifetime := ipsecpolicies.Lifetime{ Units: "seconds", @@ -164,7 +165,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := ipsecpolicies.Delete(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828") + res := ipsecpolicies.Delete(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828") th.AssertNoErr(t, res.Err) } @@ -205,7 +206,7 @@ func TestList(t *testing.T) { count := 0 - ipsecpolicies.List(fake.ServiceClient(), ipsecpolicies.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + ipsecpolicies.List(fake.ServiceClient(), ipsecpolicies.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := ipsecpolicies.ExtractPolicies(page) if err != nil { @@ -298,7 +299,7 @@ func TestUpdate(t *testing.T) { }, } - actual, err := ipsecpolicies.Update(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828", options).Extract() + actual, err := ipsecpolicies.Update(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828", options).Extract() th.AssertNoErr(t, err) expectedLifetime := ipsecpolicies.Lifetime{ Units: "seconds", diff --git a/openstack/networking/v2/extensions/vpnaas/services/requests.go b/openstack/networking/v2/extensions/vpnaas/services/requests.go index 74bf415db9..2a2b85b431 100644 --- a/openstack/networking/v2/extensions/vpnaas/services/requests.go +++ b/openstack/networking/v2/extensions/vpnaas/services/requests.go @@ -1,6 +1,8 @@ package services import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -44,21 +46,21 @@ func (opts CreateOpts) ToServiceCreateMap() (map[string]interface{}, error) { // Create accepts a CreateOpts struct and uses the values to create a new // VPN service. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToServiceCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete will permanently delete a particular VPN service based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -87,13 +89,13 @@ func (opts UpdateOpts) ToServiceUpdateMap() (map[string]interface{}, error) { } // Update allows VPN services to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToServiceUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -147,8 +149,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a particular VPN service based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/extensions/vpnaas/services/testing/requests_test.go b/openstack/networking/v2/extensions/vpnaas/services/testing/requests_test.go index f1269f5294..e697a5312a 100644 --- a/openstack/networking/v2/extensions/vpnaas/services/testing/requests_test.go +++ b/openstack/networking/v2/extensions/vpnaas/services/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -61,7 +62,7 @@ func TestCreate(t *testing.T) { AdminStateUp: gophercloud.Enabled, RouterID: "66e3b16c-8ce5-40fb-bb49-ab6d8dc3f2aa", } - actual, err := services.Create(fake.ServiceClient(), options).Extract() + actual, err := services.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) expected := services.Service{ RouterID: "66e3b16c-8ce5-40fb-bb49-ab6d8dc3f2aa", @@ -110,7 +111,7 @@ func TestList(t *testing.T) { count := 0 - services.List(fake.ServiceClient(), services.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + services.List(fake.ServiceClient(), services.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := services.ExtractServices(page) if err != nil { @@ -169,7 +170,7 @@ func TestGet(t *testing.T) { `) }) - actual, err := services.Get(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828").Extract() + actual, err := services.Get(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828").Extract() th.AssertNoErr(t, err) expected := services.Service{ Status: "PENDING_CREATE", @@ -194,7 +195,7 @@ func TestDelete(t *testing.T) { th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) w.WriteHeader(http.StatusNoContent) }) - res := services.Delete(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828") + res := services.Delete(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828") th.AssertNoErr(t, res.Err) } @@ -247,7 +248,7 @@ func TestUpdate(t *testing.T) { AdminStateUp: gophercloud.Disabled, } - actual, err := services.Update(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828", options).Extract() + actual, err := services.Update(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828", options).Extract() th.AssertNoErr(t, err) expected := services.Service{ RouterID: "66e3b16c-8ce5-40fb-bb49-ab6d8dc3f2aa", diff --git a/openstack/networking/v2/extensions/vpnaas/siteconnections/requests.go b/openstack/networking/v2/extensions/vpnaas/siteconnections/requests.go index 70142f981e..bbe709467d 100644 --- a/openstack/networking/v2/extensions/vpnaas/siteconnections/requests.go +++ b/openstack/networking/v2/extensions/vpnaas/siteconnections/requests.go @@ -1,6 +1,8 @@ package siteconnections import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -119,28 +121,28 @@ func (opts CreateOpts) ToConnectionCreateMap() (map[string]interface{}, error) { // Create accepts a CreateOpts struct and uses the values to create a new // IPSec site connection. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToConnectionCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(rootURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, rootURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete will permanently delete a particular IPSec site connection based on its // unique ID. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(resourceURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, resourceURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a particular IPSec site connection based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(resourceURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, resourceURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -232,13 +234,13 @@ func (opts UpdateOpts) ToConnectionUpdateMap() (map[string]interface{}, error) { } // Update allows IPSec site connections to be updated. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToConnectionUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, resourceURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/networking/v2/extensions/vpnaas/siteconnections/testing/requests_test.go b/openstack/networking/v2/extensions/vpnaas/siteconnections/testing/requests_test.go index 47c5e8cf34..034ff0ac77 100644 --- a/openstack/networking/v2/extensions/vpnaas/siteconnections/testing/requests_test.go +++ b/openstack/networking/v2/extensions/vpnaas/siteconnections/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -91,7 +92,7 @@ func TestCreate(t *testing.T) { PeerAddress: "172.24.4.233", PeerID: "172.24.4.233", } - actual, err := siteconnections.Create(fake.ServiceClient(), options).Extract() + actual, err := siteconnections.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) expectedDPD := siteconnections.DPD{ Action: "hold", @@ -134,7 +135,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := siteconnections.Delete(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828") + res := siteconnections.Delete(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828") th.AssertNoErr(t, res.Err) } @@ -182,7 +183,7 @@ func TestGet(t *testing.T) { `) }) - actual, err := siteconnections.Get(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828").Extract() + actual, err := siteconnections.Get(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828").Extract() th.AssertNoErr(t, err) expectedDPD := siteconnections.DPD{ Action: "hold", @@ -262,7 +263,7 @@ func TestList(t *testing.T) { count := 0 - siteconnections.List(fake.ServiceClient(), siteconnections.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + siteconnections.List(fake.ServiceClient(), siteconnections.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := siteconnections.ExtractConnections(page) if err != nil { @@ -377,7 +378,7 @@ func TestUpdate(t *testing.T) { PSK: "updatedsecret", } - actual, err := siteconnections.Update(fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828", options).Extract() + actual, err := siteconnections.Update(context.TODO(), fake.ServiceClient(), "5c561d9d-eaea-45f6-ae3e-08d1a7080828", options).Extract() th.AssertNoErr(t, err) expectedDPD := siteconnections.DPD{ diff --git a/openstack/networking/v2/networks/requests.go b/openstack/networking/v2/networks/requests.go index d54b681bd7..1fcbaa9e9a 100644 --- a/openstack/networking/v2/networks/requests.go +++ b/openstack/networking/v2/networks/requests.go @@ -1,6 +1,7 @@ package networks import ( + "context" "fmt" "github.com/gophercloud/gophercloud/v2" @@ -61,8 +62,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a specific network based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(getURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -96,13 +97,13 @@ func (opts CreateOpts) ToNetworkCreateMap() (map[string]interface{}, error) { // The tenant ID that is contained in the URI is the tenant that creates the // network. An admin user, however, has the option of specifying another tenant // ID in the CreateOpts struct. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToNetworkCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(createURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, createURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -133,7 +134,7 @@ func (opts UpdateOpts) ToNetworkUpdateMap() (map[string]interface{}, error) { // Update accepts a UpdateOpts struct and updates an existing network using the // values provided. For more information, see the Create function. -func Update(c *gophercloud.ServiceClient, networkID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, networkID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToNetworkUpdateMap() if err != nil { r.Err = err @@ -149,7 +150,7 @@ func Update(c *gophercloud.ServiceClient, networkID string, opts UpdateOptsBuild h[k] = fmt.Sprintf("revision_number=%s", h[k]) } } - resp, err := c.Put(updateURL(c, networkID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, networkID), b, &r.Body, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{200, 201}, }) @@ -158,8 +159,8 @@ func Update(c *gophercloud.ServiceClient, networkID string, opts UpdateOptsBuild } // Delete accepts a unique ID and deletes the network associated with it. -func Delete(c *gophercloud.ServiceClient, networkID string) (r DeleteResult) { - resp, err := c.Delete(deleteURL(c, networkID), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, networkID string) (r DeleteResult) { + resp, err := c.Delete(ctx, deleteURL(c, networkID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/networks/testing/requests_test.go b/openstack/networking/v2/networks/testing/requests_test.go index eca6341298..c28dd2ed0f 100644 --- a/openstack/networking/v2/networks/testing/requests_test.go +++ b/openstack/networking/v2/networks/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -30,7 +31,7 @@ func TestList(t *testing.T) { client := fake.ServiceClient() count := 0 - err := networks.List(client, networks.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := networks.List(client, networks.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := networks.ExtractNetworks(page) if err != nil { @@ -73,7 +74,7 @@ func TestListWithExtensions(t *testing.T) { var allNetworks []networkWithExt - allPages, err := networks.List(client, networks.ListOpts{}).AllPages() + allPages, err := networks.List(client, networks.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) err = networks.ExtractNetworksInto(allPages, &allNetworks) @@ -103,7 +104,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, GetResponse) }) - n, err := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() + n, err := networks.Get(context.TODO(), fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &Network1, n) th.AssertEquals(t, n.CreatedAt.Format(time.RFC3339), "2019-06-30T04:15:37Z") @@ -129,7 +130,7 @@ func TestGetWithExtensions(t *testing.T) { portsecurity.PortSecurityExt } - err := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&networkWithExtensions) + err := networks.Get(context.TODO(), fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&networkWithExtensions) th.AssertNoErr(t, err) th.AssertEquals(t, networkWithExtensions.Status, "ACTIVE") @@ -154,7 +155,7 @@ func TestCreate(t *testing.T) { iTrue := true options := networks.CreateOpts{Name: "private", AdminStateUp: &iTrue} - n, err := networks.Create(fake.ServiceClient(), options).Extract() + n, err := networks.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Status, "ACTIVE") @@ -186,7 +187,7 @@ func TestCreateWithOptionalFields(t *testing.T) { TenantID: "12345", AvailabilityZoneHints: []string{"zone1", "zone2"}, } - _, err := networks.Create(fake.ServiceClient(), options).Extract() + _, err := networks.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) } @@ -210,7 +211,7 @@ func TestUpdate(t *testing.T) { iTrue, iFalse := true, false name := "new_network_name" options := networks.UpdateOpts{Name: &name, AdminStateUp: &iFalse, Shared: &iTrue} - n, err := networks.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() + n, err := networks.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, "new_network_name") @@ -256,12 +257,12 @@ func TestUpdateRevision(t *testing.T) { iTrue, iFalse := true, false name := "new_network_name" options := networks.UpdateOpts{Name: &name, AdminStateUp: &iFalse, Shared: &iTrue} - _, err := networks.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() + _, err := networks.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() th.AssertNoErr(t, err) revisionNumber := 42 options.RevisionNumber = &revisionNumber - _, err = networks.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03d", options).Extract() + _, err = networks.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03d", options).Extract() th.AssertNoErr(t, err) } @@ -275,7 +276,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := networks.Delete(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c") + res := networks.Delete(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c") th.AssertNoErr(t, res.Err) } @@ -308,7 +309,7 @@ func TestCreatePortSecurity(t *testing.T) { PortSecurityEnabled: &iFalse, } - err := networks.Create(fake.ServiceClient(), createOpts).ExtractInto(&networkWithExtensions) + err := networks.Create(context.TODO(), fake.ServiceClient(), createOpts).ExtractInto(&networkWithExtensions) th.AssertNoErr(t, err) th.AssertEquals(t, networkWithExtensions.Status, "ACTIVE") @@ -344,7 +345,7 @@ func TestUpdatePortSecurity(t *testing.T) { PortSecurityEnabled: &iFalse, } - err := networks.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", updateOpts).ExtractInto(&networkWithExtensions) + err := networks.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", updateOpts).ExtractInto(&networkWithExtensions) th.AssertNoErr(t, err) th.AssertEquals(t, networkWithExtensions.Name, "private") diff --git a/openstack/networking/v2/ports/requests.go b/openstack/networking/v2/ports/requests.go index 1d021f2ae1..750548af06 100644 --- a/openstack/networking/v2/ports/requests.go +++ b/openstack/networking/v2/ports/requests.go @@ -1,6 +1,7 @@ package ports import ( + "context" "fmt" "net/url" "slices" @@ -99,8 +100,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a specific port based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(getURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -166,13 +167,13 @@ func AddValueSpecs(body map[string]interface{}) (map[string]interface{}, error) // Create accepts a CreateOpts struct and creates a new network using the values // provided. You must remember to provide a NetworkID value. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToPortCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(createURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, createURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -213,7 +214,7 @@ func (opts UpdateOpts) ToPortUpdateMap() (map[string]interface{}, error) { // Update accepts a UpdateOpts struct and updates an existing port using the // values provided. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToPortUpdateMap() if err != nil { r.Err = err @@ -229,7 +230,7 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r h[k] = fmt.Sprintf("revision_number=%s", h[k]) } } - resp, err := c.Put(updateURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{200, 201}, }) @@ -238,8 +239,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete accepts a unique ID and deletes the port associated with it. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(deleteURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, deleteURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/ports/testing/requests_test.go b/openstack/networking/v2/ports/testing/requests_test.go index e93391cf77..7c3569b70b 100644 --- a/openstack/networking/v2/ports/testing/requests_test.go +++ b/openstack/networking/v2/ports/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "net/url" @@ -31,7 +32,7 @@ func TestList(t *testing.T) { count := 0 - err := ports.List(fake.ServiceClient(), ports.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := ports.List(fake.ServiceClient(), ports.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := ports.ExtractPorts(page) if err != nil { @@ -95,7 +96,7 @@ func TestListWithExtensions(t *testing.T) { var allPorts []portWithExt - allPages, err := ports.List(fake.ServiceClient(), ports.ListOpts{}).AllPages() + allPages, err := ports.List(fake.ServiceClient(), ports.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) err = ports.ExtractPortsInto(allPages, &allPorts) @@ -119,7 +120,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, GetResponse) }) - n, err := ports.Get(fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").Extract() + n, err := ports.Get(context.TODO(), fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Status, "ACTIVE") @@ -159,7 +160,7 @@ func TestGetWithExtensions(t *testing.T) { portsecurity.PortSecurityExt } - err := ports.Get(fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").ExtractInto(&portWithExtensions) + err := ports.Get(context.TODO(), fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").ExtractInto(&portWithExtensions) th.AssertNoErr(t, err) th.AssertEquals(t, portWithExtensions.Status, "ACTIVE") @@ -196,7 +197,7 @@ func TestCreate(t *testing.T) { {IPAddress: "10.0.0.4", MACAddress: "fa:16:3e:c9:cb:f0"}, }, } - n, err := ports.Create(fake.ServiceClient(), options).Extract() + n, err := ports.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Status, "DOWN") @@ -245,7 +246,7 @@ func TestCreateOmitSecurityGroups(t *testing.T) { {IPAddress: "10.0.0.4", MACAddress: "fa:16:3e:c9:cb:f0"}, }, } - n, err := ports.Create(fake.ServiceClient(), options).Extract() + n, err := ports.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Status, "DOWN") @@ -295,7 +296,7 @@ func TestCreateWithNoSecurityGroup(t *testing.T) { {IPAddress: "10.0.0.4", MACAddress: "fa:16:3e:c9:cb:f0"}, }, } - n, err := ports.Create(fake.ServiceClient(), options).Extract() + n, err := ports.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Status, "DOWN") @@ -342,7 +343,7 @@ func TestCreateWithPropagateUplinkStatus(t *testing.T) { }, PropagateUplinkStatus: &propagateUplinkStatus, } - n, err := ports.Create(fake.ServiceClient(), options).Extract() + n, err := ports.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Status, "DOWN") @@ -392,7 +393,7 @@ func TestCreateWithValueSpecs(t *testing.T) { "test": "value", }, } - n, err := ports.Create(fake.ServiceClient(), options).Extract() + n, err := ports.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Status, "DOWN") @@ -448,7 +449,7 @@ func TestCreateWithInvalidValueSpecs(t *testing.T) { } // We expect an error here since we used a fobidden key in the value specs. - _, err := ports.Create(fake.ServiceClient(), options).Extract() + _, err := ports.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertErr(t, err) options.ValueSpecs = &map[string]string{ @@ -457,12 +458,12 @@ func TestCreateWithInvalidValueSpecs(t *testing.T) { } // We expect an error here since the value specs would overwrite an existing field. - _, err = ports.Create(fake.ServiceClient(), options).Extract() + _, err = ports.Create(context.TODO(), fake.ServiceClient(), options).Extract() th.AssertErr(t, err) } func TestRequiredCreateOpts(t *testing.T) { - res := ports.Create(fake.ServiceClient(), ports.CreateOpts{}) + res := ports.Create(context.TODO(), fake.ServiceClient(), ports.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -509,7 +510,7 @@ func TestCreatePortSecurity(t *testing.T) { PortSecurityEnabled: &iFalse, } - err := ports.Create(fake.ServiceClient(), createOpts).ExtractInto(&portWithExt) + err := ports.Create(context.TODO(), fake.ServiceClient(), createOpts).ExtractInto(&portWithExt) th.AssertNoErr(t, err) th.AssertEquals(t, portWithExt.Status, "DOWN") @@ -545,7 +546,7 @@ func TestUpdate(t *testing.T) { }, } - s, err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() + s, err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "new_port_name") @@ -586,7 +587,7 @@ func TestUpdateOmitSecurityGroups(t *testing.T) { }, } - s, err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() + s, err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "new_port_name") @@ -621,7 +622,7 @@ func TestUpdatePropagateUplinkStatus(t *testing.T) { PropagateUplinkStatus: &propagateUplinkStatus, } - s, err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() + s, err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s.PropagateUplinkStatus, propagateUplinkStatus) @@ -650,7 +651,7 @@ func TestUpdateValueSpecs(t *testing.T) { }, } - _, err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() + _, err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() th.AssertNoErr(t, err) } @@ -683,7 +684,7 @@ func TestUpdatePortSecurity(t *testing.T) { PortSecurityEnabled: &iFalse, } - err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&portWithExt) + err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&portWithExt) th.AssertNoErr(t, err) th.AssertEquals(t, portWithExt.Status, "DOWN") @@ -733,12 +734,12 @@ func TestUpdateRevision(t *testing.T) { {IPAddress: "10.0.0.4", MACAddress: "fa:16:3e:c9:cb:f0"}, }, } - _, err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() + _, err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() th.AssertNoErr(t, err) revisionNumber := 42 options.RevisionNumber = &revisionNumber - _, err = ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0e", options).Extract() + _, err = ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0e", options).Extract() th.AssertNoErr(t, err) } @@ -771,7 +772,7 @@ func TestRemoveSecurityGroups(t *testing.T) { }, } - s, err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() + s, err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "new_port_name") @@ -811,7 +812,7 @@ func TestRemoveAllowedAddressPairs(t *testing.T) { AllowedAddressPairs: &[]ports.AddressPair{}, } - s, err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() + s, err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "new_port_name") @@ -848,7 +849,7 @@ func TestDontUpdateAllowedAddressPairs(t *testing.T) { SecurityGroups: &[]string{"f0ac4394-7e4a-4409-9701-ba8be283dbc3"}, } - s, err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() + s, err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "new_port_name") @@ -871,7 +872,7 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := ports.Delete(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d") + res := ports.Delete(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d") th.AssertNoErr(t, res.Err) } @@ -894,7 +895,7 @@ func TestGetWithExtraDHCPOpts(t *testing.T) { extradhcpopts.ExtraDHCPOptsExt } - err := ports.Get(fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").ExtractInto(&s) + err := ports.Get(context.TODO(), fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, s.Status, "ACTIVE") @@ -960,7 +961,7 @@ func TestCreateWithExtraDHCPOpts(t *testing.T) { extradhcpopts.ExtraDHCPOptsExt } - err := ports.Create(fake.ServiceClient(), createOpts).ExtractInto(&s) + err := ports.Create(context.TODO(), fake.ServiceClient(), createOpts).ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, s.Status, "DOWN") @@ -1025,7 +1026,7 @@ func TestUpdateWithExtraDHCPOpts(t *testing.T) { extradhcpopts.ExtraDHCPOptsExt } - err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&s) + err := ports.Update(context.TODO(), fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&s) th.AssertNoErr(t, err) th.AssertEquals(t, s.Status, "DOWN") diff --git a/openstack/networking/v2/subnets/requests.go b/openstack/networking/v2/subnets/requests.go index 951a734a7a..89ca3ce8bf 100644 --- a/openstack/networking/v2/subnets/requests.go +++ b/openstack/networking/v2/subnets/requests.go @@ -1,6 +1,7 @@ package subnets import ( + "context" "fmt" "github.com/gophercloud/gophercloud/v2" @@ -70,8 +71,8 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retrieves a specific subnet based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := c.Get(getURL(c, id), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -160,13 +161,13 @@ func (opts CreateOpts) ToSubnetCreateMap() (map[string]interface{}, error) { // Create accepts a CreateOpts struct and creates a new subnet using the values // provided. You must remember to provide a valid NetworkID, CIDR and IP // version. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToSubnetCreateMap() if err != nil { r.Err = err return } - resp, err := c.Post(createURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, createURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -228,7 +229,7 @@ func (opts UpdateOpts) ToSubnetUpdateMap() (map[string]interface{}, error) { // Update accepts a UpdateOpts struct and updates an existing subnet using the // values provided. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToSubnetUpdateMap() if err != nil { r.Err = err @@ -245,7 +246,7 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } } - resp, err := c.Put(updateURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, updateURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{200, 201}, }) @@ -254,8 +255,8 @@ func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r } // Delete accepts a unique ID and deletes the subnet associated with it. -func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := c.Delete(deleteURL(c, id), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := c.Delete(ctx, deleteURL(c, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/networking/v2/subnets/testing/requests_test.go b/openstack/networking/v2/subnets/testing/requests_test.go index 4bf688fd75..dfa3c5bf33 100644 --- a/openstack/networking/v2/subnets/testing/requests_test.go +++ b/openstack/networking/v2/subnets/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -27,7 +28,7 @@ func TestList(t *testing.T) { count := 0 - subnets.List(fake.ServiceClient(), subnets.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + subnets.List(fake.ServiceClient(), subnets.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := subnets.ExtractSubnets(page) if err != nil { @@ -66,7 +67,7 @@ func TestGet(t *testing.T) { fmt.Fprintf(w, SubnetGetResult) }) - s, err := subnets.Get(fake.ServiceClient(), "54d6f61d-db07-451c-9ab3-b9609b6b6f0b").Extract() + s, err := subnets.Get(context.TODO(), fake.ServiceClient(), "54d6f61d-db07-451c-9ab3-b9609b6b6f0b").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "my_subnet") @@ -124,7 +125,7 @@ func TestCreate(t *testing.T) { }, SubnetPoolID: "b80340c7-9960-4f67-a99c-02501656284b", } - s, err := subnets.Create(fake.ServiceClient(), opts).Extract() + s, err := subnets.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "") @@ -178,7 +179,7 @@ func TestCreateNoGateway(t *testing.T) { }, DNSNameservers: []string{}, } - s, err := subnets.Create(fake.ServiceClient(), opts).Extract() + s, err := subnets.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "") @@ -227,7 +228,7 @@ func TestCreateDefaultGateway(t *testing.T) { }, DNSNameservers: []string{}, } - s, err := subnets.Create(fake.ServiceClient(), opts).Extract() + s, err := subnets.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "") @@ -273,7 +274,7 @@ func TestCreateIPv6RaAddressMode(t *testing.T) { IPv6AddressMode: "slaac", IPv6RAMode: "slaac", } - s, err := subnets.Create(fake.ServiceClient(), opts).Extract() + s, err := subnets.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "") @@ -314,7 +315,7 @@ func TestCreateWithNoCIDR(t *testing.T) { }, SubnetPoolID: "b80340c7-9960-4f67-a99c-02501656284b", } - s, err := subnets.Create(fake.ServiceClient(), opts).Extract() + s, err := subnets.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "") @@ -363,7 +364,7 @@ func TestCreateWithPrefixlen(t *testing.T) { SubnetPoolID: "b80340c7-9960-4f67-a99c-02501656284b", Prefixlen: 12, } - s, err := subnets.Create(fake.ServiceClient(), opts).Extract() + s, err := subnets.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "") @@ -386,17 +387,17 @@ func TestCreateWithPrefixlen(t *testing.T) { } func TestRequiredCreateOpts(t *testing.T) { - res := subnets.Create(fake.ServiceClient(), subnets.CreateOpts{}) + res := subnets.Create(context.TODO(), fake.ServiceClient(), subnets.CreateOpts{}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = subnets.Create(fake.ServiceClient(), subnets.CreateOpts{NetworkID: "foo"}) + res = subnets.Create(context.TODO(), fake.ServiceClient(), subnets.CreateOpts{NetworkID: "foo"}) if res.Err == nil { t.Fatalf("Expected error, got none") } - res = subnets.Create(fake.ServiceClient(), subnets.CreateOpts{NetworkID: "foo", CIDR: "bar", IPVersion: 40}) + res = subnets.Create(context.TODO(), fake.ServiceClient(), subnets.CreateOpts{NetworkID: "foo", CIDR: "bar", IPVersion: 40}) if res.Err == nil { t.Fatalf("Expected error, got none") } @@ -428,7 +429,7 @@ func TestUpdate(t *testing.T) { {NextHop: "bar"}, }, } - s, err := subnets.Update(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() + s, err := subnets.Update(context.TODO(), fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "my_new_subnet") @@ -458,7 +459,7 @@ func TestUpdateGateway(t *testing.T) { Name: &name, GatewayIP: &gatewayIP, } - s, err := subnets.Update(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() + s, err := subnets.Update(context.TODO(), fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "my_new_subnet") @@ -489,7 +490,7 @@ func TestUpdateRemoveGateway(t *testing.T) { Name: &name, GatewayIP: &noGateway, } - s, err := subnets.Update(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() + s, err := subnets.Update(context.TODO(), fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "my_new_subnet") @@ -526,7 +527,7 @@ func TestUpdateHostRoutes(t *testing.T) { Name: &name, HostRoutes: &HostRoutes, } - s, err := subnets.Update(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() + s, err := subnets.Update(context.TODO(), fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "my_new_subnet") @@ -555,7 +556,7 @@ func TestUpdateRemoveHostRoutes(t *testing.T) { opts := subnets.UpdateOpts{ HostRoutes: &noHostRoutes, } - s, err := subnets.Update(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() + s, err := subnets.Update(context.TODO(), fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "my_new_subnet") @@ -590,7 +591,7 @@ func TestUpdateAllocationPool(t *testing.T) { }, }, } - s, err := subnets.Update(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() + s, err := subnets.Update(context.TODO(), fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "my_new_subnet") @@ -644,12 +645,12 @@ func TestUpdateRevision(t *testing.T) { {NextHop: "bar"}, }, } - _, err := subnets.Update(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() + _, err := subnets.Update(context.TODO(), fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b", opts).Extract() th.AssertNoErr(t, err) revisionNumber := 42 opts.RevisionNumber = &revisionNumber - _, err = subnets.Update(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1c", opts).Extract() + _, err = subnets.Update(context.TODO(), fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1c", opts).Extract() th.AssertNoErr(t, err) } @@ -663,6 +664,6 @@ func TestDelete(t *testing.T) { w.WriteHeader(http.StatusNoContent) }) - res := subnets.Delete(fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b") + res := subnets.Delete(context.TODO(), fake.ServiceClient(), "08eae331-0402-425a-923c-34f7cfe39c1b") th.AssertNoErr(t, res.Err) } diff --git a/openstack/objectstorage/v1/accounts/requests.go b/openstack/objectstorage/v1/accounts/requests.go index 1dcd8d0cd2..be946db4ac 100644 --- a/openstack/objectstorage/v1/accounts/requests.go +++ b/openstack/objectstorage/v1/accounts/requests.go @@ -1,6 +1,10 @@ package accounts -import "github.com/gophercloud/gophercloud/v2" +import ( + "context" + + "github.com/gophercloud/gophercloud/v2" +) // GetOptsBuilder allows extensions to add additional headers to the Get // request. @@ -23,7 +27,7 @@ func (opts GetOpts) ToAccountGetMap() (map[string]string, error) { // custom metadata, call the ExtractMetadata method on the GetResult. To extract // all the headers that are returned (including the metadata), call the // Extract method on the GetResult. -func Get(c *gophercloud.ServiceClient, opts GetOptsBuilder) (r GetResult) { +func Get(ctx context.Context, c *gophercloud.ServiceClient, opts GetOptsBuilder) (r GetResult) { h := make(map[string]string) if opts != nil { headers, err := opts.ToAccountGetMap() @@ -35,7 +39,7 @@ func Get(c *gophercloud.ServiceClient, opts GetOptsBuilder) (r GetResult) { h[k] = v } } - resp, err := c.Head(getURL(c), &gophercloud.RequestOpts{ + resp, err := c.Head(ctx, getURL(c), &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{204}, }) @@ -80,7 +84,7 @@ func (opts UpdateOpts) ToAccountUpdateMap() (map[string]string, error) { // Update is a function that creates, updates, or deletes an account's metadata. // To extract the headers returned, call the Extract method on the UpdateResult. -func Update(c *gophercloud.ServiceClient, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, opts UpdateOptsBuilder) (r UpdateResult) { h := make(map[string]string) if opts != nil { headers, err := opts.ToAccountUpdateMap() @@ -92,7 +96,7 @@ func Update(c *gophercloud.ServiceClient, opts UpdateOptsBuilder) (r UpdateResul h[k] = v } } - resp, err := c.Request("POST", updateURL(c), &gophercloud.RequestOpts{ + resp, err := c.Request(ctx, "POST", updateURL(c), &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{201, 202, 204}, }) diff --git a/openstack/objectstorage/v1/accounts/testing/requests_test.go b/openstack/objectstorage/v1/accounts/testing/requests_test.go index ad50a7cba1..6ed29c1ae5 100644 --- a/openstack/objectstorage/v1/accounts/testing/requests_test.go +++ b/openstack/objectstorage/v1/accounts/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -20,7 +21,7 @@ func TestUpdateAccount(t *testing.T) { ContentType: new(string), DetectContentType: new(bool), } - res := accounts.Update(fake.ServiceClient(), options) + res := accounts.Update(context.TODO(), fake.ServiceClient(), options) th.AssertNoErr(t, res.Err) expected := &accounts.UpdateHeader{ @@ -37,7 +38,7 @@ func TestGetAccount(t *testing.T) { HandleGetAccountSuccessfully(t) expectedMetadata := map[string]string{"Subject": "books", "Quota-Bytes": "42", "Temp-Url-Key": "testsecret"} - res := accounts.Get(fake.ServiceClient(), &accounts.GetOpts{}) + res := accounts.Get(context.TODO(), fake.ServiceClient(), &accounts.GetOpts{}) th.AssertNoErr(t, res.Err) actualMetadata, _ := res.ExtractMetadata() th.CheckDeepEquals(t, expectedMetadata, actualMetadata) @@ -64,7 +65,7 @@ func TestGetAccountNoQuota(t *testing.T) { HandleGetAccountNoQuotaSuccessfully(t) expectedMetadata := map[string]string{"Subject": "books"} - res := accounts.Get(fake.ServiceClient(), &accounts.GetOpts{}) + res := accounts.Get(context.TODO(), fake.ServiceClient(), &accounts.GetOpts{}) th.AssertNoErr(t, res.Err) actualMetadata, _ := res.ExtractMetadata() th.CheckDeepEquals(t, expectedMetadata, actualMetadata) diff --git a/openstack/objectstorage/v1/containers/requests.go b/openstack/objectstorage/v1/containers/requests.go index e2e7a21d7f..f4714d6ff6 100644 --- a/openstack/objectstorage/v1/containers/requests.go +++ b/openstack/objectstorage/v1/containers/requests.go @@ -2,6 +2,7 @@ package containers import ( "bytes" + "context" "net/url" "github.com/gophercloud/gophercloud/v2" @@ -97,7 +98,7 @@ func (opts CreateOpts) ToContainerCreateMap() (map[string]string, error) { } // Create is a function that creates a new container. -func Create(c *gophercloud.ServiceClient, containerName string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, containerName string, opts CreateOptsBuilder) (r CreateResult) { url, err := createURL(c, containerName) if err != nil { r.Err = err @@ -114,7 +115,7 @@ func Create(c *gophercloud.ServiceClient, containerName string, opts CreateOptsB h[k] = v } } - resp, err := c.Request("PUT", url, &gophercloud.RequestOpts{ + resp, err := c.Request(ctx, "PUT", url, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{201, 202, 204}, }) @@ -123,7 +124,7 @@ func Create(c *gophercloud.ServiceClient, containerName string, opts CreateOptsB } // BulkDelete is a function that bulk deletes containers. -func BulkDelete(c *gophercloud.ServiceClient, containers []string) (r BulkDeleteResult) { +func BulkDelete(ctx context.Context, c *gophercloud.ServiceClient, containers []string) (r BulkDeleteResult) { var body bytes.Buffer for i := range containers { @@ -135,7 +136,7 @@ func BulkDelete(c *gophercloud.ServiceClient, containers []string) (r BulkDelete body.WriteRune('\n') } - resp, err := c.Post(bulkDeleteURL(c), &body, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Post(ctx, bulkDeleteURL(c), &body, &r.Body, &gophercloud.RequestOpts{ MoreHeaders: map[string]string{ "Accept": "application/json", "Content-Type": "text/plain", @@ -147,13 +148,13 @@ func BulkDelete(c *gophercloud.ServiceClient, containers []string) (r BulkDelete } // Delete is a function that deletes a container. -func Delete(c *gophercloud.ServiceClient, containerName string) (r DeleteResult) { +func Delete(ctx context.Context, c *gophercloud.ServiceClient, containerName string) (r DeleteResult) { url, err := deleteURL(c, containerName) if err != nil { r.Err = err return } - resp, err := c.Delete(url, nil) + resp, err := c.Delete(ctx, url, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -204,7 +205,7 @@ func (opts UpdateOpts) ToContainerUpdateMap() (map[string]string, error) { // Update is a function that creates, updates, or deletes a container's // metadata. -func Update(c *gophercloud.ServiceClient, containerName string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, containerName string, opts UpdateOptsBuilder) (r UpdateResult) { url, err := updateURL(c, containerName) if err != nil { r.Err = err @@ -222,7 +223,7 @@ func Update(c *gophercloud.ServiceClient, containerName string, opts UpdateOptsB h[k] = v } } - resp, err := c.Request("POST", url, &gophercloud.RequestOpts{ + resp, err := c.Request(ctx, "POST", url, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{201, 202, 204}, }) @@ -249,7 +250,7 @@ func (opts GetOpts) ToContainerGetMap() (map[string]string, error) { // Get is a function that retrieves the metadata of a container. To extract just // the custom metadata, pass the GetResult response to the ExtractMetadata // function. -func Get(c *gophercloud.ServiceClient, containerName string, opts GetOptsBuilder) (r GetResult) { +func Get(ctx context.Context, c *gophercloud.ServiceClient, containerName string, opts GetOptsBuilder) (r GetResult) { url, err := getURL(c, containerName) if err != nil { r.Err = err @@ -267,7 +268,7 @@ func Get(c *gophercloud.ServiceClient, containerName string, opts GetOptsBuilder h[k] = v } } - resp, err := c.Head(url, &gophercloud.RequestOpts{ + resp, err := c.Head(ctx, url, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{200, 204}, }) diff --git a/openstack/objectstorage/v1/containers/testing/requests_test.go b/openstack/objectstorage/v1/containers/testing/requests_test.go index 890a6cf8de..70a331410f 100644 --- a/openstack/objectstorage/v1/containers/testing/requests_test.go +++ b/openstack/objectstorage/v1/containers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -38,7 +39,7 @@ func TestContainerNames(t *testing.T) { defer th.TeardownHTTP() HandleCreateContainerSuccessfully(t) - _, err := containers.Create(fake.ServiceClient(), tc.containerName, nil).Extract() + _, err := containers.Create(context.TODO(), fake.ServiceClient(), tc.containerName, nil).Extract() th.CheckErr(t, err, &tc.expectedError) }) t.Run("delete", func(t *testing.T) { @@ -46,7 +47,7 @@ func TestContainerNames(t *testing.T) { defer th.TeardownHTTP() HandleDeleteContainerSuccessfully(t, WithPath("/")) - res := containers.Delete(fake.ServiceClient(), tc.containerName) + res := containers.Delete(context.TODO(), fake.ServiceClient(), tc.containerName) th.CheckErr(t, res.Err, &tc.expectedError) }) t.Run("update", func(t *testing.T) { @@ -63,7 +64,7 @@ func TestContainerNames(t *testing.T) { ContainerSyncKey: new(string), ContentType: &contentType, } - res := containers.Update(fake.ServiceClient(), tc.containerName, options) + res := containers.Update(context.TODO(), fake.ServiceClient(), tc.containerName, options) th.CheckErr(t, res.Err, &tc.expectedError) }) t.Run("get", func(t *testing.T) { @@ -71,7 +72,7 @@ func TestContainerNames(t *testing.T) { defer th.TeardownHTTP() HandleGetContainerSuccessfully(t, WithPath("/")) - res := containers.Get(fake.ServiceClient(), tc.containerName, nil) + res := containers.Get(context.TODO(), fake.ServiceClient(), tc.containerName, nil) _, err := res.ExtractMetadata() th.CheckErr(t, err, &tc.expectedError) @@ -88,7 +89,7 @@ func TestListContainerInfo(t *testing.T) { HandleListContainerInfoSuccessfully(t) count := 0 - err := containers.List(fake.ServiceClient(), &containers.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := containers.List(fake.ServiceClient(), &containers.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := containers.ExtractInfo(page) th.AssertNoErr(t, err) @@ -106,7 +107,7 @@ func TestListAllContainerInfo(t *testing.T) { defer th.TeardownHTTP() HandleListContainerInfoSuccessfully(t) - allPages, err := containers.List(fake.ServiceClient(), &containers.ListOpts{}).AllPages() + allPages, err := containers.List(fake.ServiceClient(), &containers.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := containers.ExtractInfo(allPages) th.AssertNoErr(t, err) @@ -119,7 +120,7 @@ func TestListContainerNames(t *testing.T) { HandleListContainerInfoSuccessfully(t) count := 0 - err := containers.List(fake.ServiceClient(), &containers.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := containers.List(fake.ServiceClient(), &containers.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := containers.ExtractNames(page) if err != nil { @@ -140,7 +141,7 @@ func TestListAllContainerNames(t *testing.T) { defer th.TeardownHTTP() HandleListContainerInfoSuccessfully(t) - allPages, err := containers.List(fake.ServiceClient(), &containers.ListOpts{}).AllPages() + allPages, err := containers.List(fake.ServiceClient(), &containers.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := containers.ExtractNames(allPages) th.AssertNoErr(t, err) @@ -152,7 +153,7 @@ func TestListZeroContainerNames(t *testing.T) { defer th.TeardownHTTP() HandleListZeroContainerNames204(t) - allPages, err := containers.List(fake.ServiceClient(), &containers.ListOpts{}).AllPages() + allPages, err := containers.List(fake.ServiceClient(), &containers.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := containers.ExtractNames(allPages) th.AssertNoErr(t, err) @@ -165,7 +166,7 @@ func TestCreateContainer(t *testing.T) { HandleCreateContainerSuccessfully(t) options := containers.CreateOpts{ContentType: "application/json", Metadata: map[string]string{"foo": "bar"}} - res := containers.Create(fake.ServiceClient(), "testContainer", options) + res := containers.Create(context.TODO(), fake.ServiceClient(), "testContainer", options) th.CheckEquals(t, "bar", res.Header["X-Container-Meta-Foo"][0]) expected := &containers.CreateHeader{ @@ -184,7 +185,7 @@ func TestDeleteContainer(t *testing.T) { defer th.TeardownHTTP() HandleDeleteContainerSuccessfully(t) - res := containers.Delete(fake.ServiceClient(), "testContainer") + res := containers.Delete(context.TODO(), fake.ServiceClient(), "testContainer") th.AssertNoErr(t, res.Err) } @@ -200,7 +201,7 @@ func TestBulkDelete(t *testing.T) { Errors: [][]string{}, } - resp, err := containers.BulkDelete(fake.ServiceClient(), []string{"testContainer1", "testContainer2"}).Extract() + resp, err := containers.BulkDelete(context.TODO(), fake.ServiceClient(), []string{"testContainer1", "testContainer2"}).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expected, *resp) } @@ -219,7 +220,7 @@ func TestUpdateContainer(t *testing.T) { ContainerSyncKey: new(string), ContentType: &contentType, } - res := containers.Update(fake.ServiceClient(), "testContainer", options) + res := containers.Update(context.TODO(), fake.ServiceClient(), "testContainer", options) th.AssertNoErr(t, res.Err) } @@ -231,7 +232,7 @@ func TestGetContainer(t *testing.T) { getOpts := containers.GetOpts{ Newest: true, } - res := containers.Get(fake.ServiceClient(), "testContainer", getOpts) + res := containers.Get(context.TODO(), fake.ServiceClient(), "testContainer", getOpts) _, err := res.ExtractMetadata() th.AssertNoErr(t, err) @@ -268,7 +269,7 @@ func TestUpdateContainerVersioningOff(t *testing.T) { ContentType: &contentType, VersionsEnabled: new(bool), } - _, err := containers.Update(fake.ServiceClient(), "testVersioning", options).Extract() + _, err := containers.Update(context.TODO(), fake.ServiceClient(), "testVersioning", options).Extract() th.AssertNoErr(t, err) } @@ -288,6 +289,6 @@ func TestUpdateContainerVersioningOn(t *testing.T) { ContentType: &contentType, VersionsEnabled: &iTrue, } - _, err := containers.Update(fake.ServiceClient(), "testVersioning", options).Extract() + _, err := containers.Update(context.TODO(), fake.ServiceClient(), "testVersioning", options).Extract() th.AssertNoErr(t, err) } diff --git a/openstack/objectstorage/v1/objects/requests.go b/openstack/objectstorage/v1/objects/requests.go index 22c476de55..44a46d76d0 100644 --- a/openstack/objectstorage/v1/objects/requests.go +++ b/openstack/objectstorage/v1/objects/requests.go @@ -2,6 +2,7 @@ package objects import ( "bytes" + "context" "crypto/hmac" "crypto/md5" "crypto/sha1" @@ -140,7 +141,7 @@ func (opts DownloadOpts) ToObjectDownloadParams() (map[string]string, string, er // Download is a function that retrieves the content and metadata for an object. // To extract just the content, call the DownloadResult method ExtractContent, // after checking DownloadResult's Err field. -func Download(c *gophercloud.ServiceClient, containerName, objectName string, opts DownloadOptsBuilder) (r DownloadResult) { +func Download(ctx context.Context, c *gophercloud.ServiceClient, containerName, objectName string, opts DownloadOptsBuilder) (r DownloadResult) { url, err := downloadURL(c, containerName, objectName) if err != nil { r.Err = err @@ -160,7 +161,7 @@ func Download(c *gophercloud.ServiceClient, containerName, objectName string, op url += query } - resp, err := c.Get(url, nil, &gophercloud.RequestOpts{ + resp, err := c.Get(ctx, url, nil, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{200, 206, 304}, KeepResponseBody: true, @@ -251,7 +252,7 @@ func (opts CreateOpts) ToObjectCreateParams() (io.Reader, map[string]string, str // object. If the returned response's ETag header fails to match the local // checksum, the failed request will automatically be retried up to a maximum // of 3 times. -func Create(c *gophercloud.ServiceClient, containerName, objectName string, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, containerName, objectName string, opts CreateOptsBuilder) (r CreateResult) { url, err := createURL(c, containerName, objectName) if err != nil { r.Err = err @@ -272,7 +273,7 @@ func Create(c *gophercloud.ServiceClient, containerName, objectName string, opts b = tmpB } - resp, err := c.Put(url, b, nil, &gophercloud.RequestOpts{ + resp, err := c.Put(ctx, url, b, nil, &gophercloud.RequestOpts{ MoreHeaders: h, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -328,7 +329,7 @@ func (opts CopyOpts) ToObjectCopyQuery() (string, error) { } // Copy is a function that copies one object to another. -func Copy(c *gophercloud.ServiceClient, containerName, objectName string, opts CopyOptsBuilder) (r CopyResult) { +func Copy(ctx context.Context, c *gophercloud.ServiceClient, containerName, objectName string, opts CopyOptsBuilder) (r CopyResult) { h := make(map[string]string) headers, err := opts.ToObjectCopyMap() if err != nil { @@ -373,7 +374,7 @@ func Copy(c *gophercloud.ServiceClient, containerName, objectName string, opts C url += query } - resp, err := c.Request("COPY", url, &gophercloud.RequestOpts{ + resp, err := c.Request(ctx, "COPY", url, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{201}, }) @@ -400,7 +401,7 @@ func (opts DeleteOpts) ToObjectDeleteQuery() (string, error) { } // Delete is a function that deletes an object. -func Delete(c *gophercloud.ServiceClient, containerName, objectName string, opts DeleteOptsBuilder) (r DeleteResult) { +func Delete(ctx context.Context, c *gophercloud.ServiceClient, containerName, objectName string, opts DeleteOptsBuilder) (r DeleteResult) { url, err := deleteURL(c, containerName, objectName) if err != nil { r.Err = err @@ -414,7 +415,7 @@ func Delete(c *gophercloud.ServiceClient, containerName, objectName string, opts } url += query } - resp, err := c.Delete(url, nil) + resp, err := c.Delete(ctx, url, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -450,7 +451,7 @@ func (opts GetOpts) ToObjectGetParams() (map[string]string, string, error) { // Get is a function that retrieves the metadata of an object. To extract just // the custom metadata, pass the GetResult response to the ExtractMetadata // function. -func Get(c *gophercloud.ServiceClient, containerName, objectName string, opts GetOptsBuilder) (r GetResult) { +func Get(ctx context.Context, c *gophercloud.ServiceClient, containerName, objectName string, opts GetOptsBuilder) (r GetResult) { url, err := getURL(c, containerName, objectName) if err != nil { r.Err = err @@ -469,7 +470,7 @@ func Get(c *gophercloud.ServiceClient, containerName, objectName string, opts Ge url += query } - resp, err := c.Head(url, &gophercloud.RequestOpts{ + resp, err := c.Head(ctx, url, &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{200, 204}, }) @@ -514,7 +515,7 @@ func (opts UpdateOpts) ToObjectUpdateMap() (map[string]string, error) { } // Update is a function that creates, updates, or deletes an object's metadata. -func Update(c *gophercloud.ServiceClient, containerName, objectName string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, containerName, objectName string, opts UpdateOptsBuilder) (r UpdateResult) { url, err := updateURL(c, containerName, objectName) if err != nil { r.Err = err @@ -532,7 +533,7 @@ func Update(c *gophercloud.ServiceClient, containerName, objectName string, opts h[k] = v } } - resp, err := c.Post(url, nil, nil, &gophercloud.RequestOpts{ + resp, err := c.Post(ctx, url, nil, nil, &gophercloud.RequestOpts{ MoreHeaders: h, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -589,7 +590,7 @@ type CreateTempURLOpts struct { // CreateTempURL is a function for creating a temporary URL for an object. It // allows users to have "GET" or "POST" access to a particular tenant's object // for a limited amount of time. -func CreateTempURL(c *gophercloud.ServiceClient, containerName, objectName string, opts CreateTempURLOpts) (string, error) { +func CreateTempURL(ctx context.Context, c *gophercloud.ServiceClient, containerName, objectName string, opts CreateTempURLOpts) (string, error) { url, err := getURL(c, containerName, objectName) if err != nil { return "", err @@ -616,14 +617,14 @@ func CreateTempURL(c *gophercloud.ServiceClient, containerName, objectName strin tempURLKey := opts.TempURLKey if tempURLKey == "" { // fallback to a container TempURL key - getHeader, err := containers.Get(c, containerName, nil).Extract() + getHeader, err := containers.Get(ctx, c, containerName, nil).Extract() if err != nil { return "", err } tempURLKey = getHeader.TempURLKey if tempURLKey == "" { // fallback to an account TempURL key - getHeader, err := accounts.Get(c, nil).Extract() + getHeader, err := accounts.Get(ctx, c, nil).Extract() if err != nil { return "", err } @@ -663,7 +664,7 @@ func CreateTempURL(c *gophercloud.ServiceClient, containerName, objectName strin // See: // * https://github.com/openstack/swift/blob/6d3d4197151f44bf28b51257c1a4c5d33411dcae/etc/proxy-server.conf-sample#L1029-L1034 // * https://github.com/openstack/swift/blob/e8cecf7fcc1630ee83b08f9a73e1e59c07f8d372/swift/common/middleware/bulk.py#L309 -func BulkDelete(c *gophercloud.ServiceClient, container string, objects []string) (r BulkDeleteResult) { +func BulkDelete(ctx context.Context, c *gophercloud.ServiceClient, container string, objects []string) (r BulkDeleteResult) { if err := v1.CheckContainerName(container); err != nil { r.Err = err return @@ -683,7 +684,7 @@ func BulkDelete(c *gophercloud.ServiceClient, container string, objects []string body.WriteRune('\n') } - resp, err := c.Post(bulkDeleteURL(c), &body, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Post(ctx, bulkDeleteURL(c), &body, &r.Body, &gophercloud.RequestOpts{ MoreHeaders: map[string]string{ "Accept": "application/json", "Content-Type": "text/plain", diff --git a/openstack/objectstorage/v1/objects/testing/requests_test.go b/openstack/objectstorage/v1/objects/testing/requests_test.go index c11c7d8df6..bb9b5d5ac5 100644 --- a/openstack/objectstorage/v1/objects/testing/requests_test.go +++ b/openstack/objectstorage/v1/objects/testing/requests_test.go @@ -2,6 +2,7 @@ package testing import ( "bytes" + "context" "crypto/md5" "fmt" "io" @@ -42,7 +43,7 @@ func TestContainerNames(t *testing.T) { defer th.TeardownHTTP() HandleListObjectsInfoSuccessfully(t, WithPath("/")) - _, err := objects.List(fake.ServiceClient(), tc.containerName, nil).AllPages() + _, err := objects.List(fake.ServiceClient(), tc.containerName, nil).AllPages(context.TODO()) th.CheckErr(t, err, &tc.expectedError) }) t.Run("download", func(t *testing.T) { @@ -50,7 +51,7 @@ func TestContainerNames(t *testing.T) { defer th.TeardownHTTP() HandleDownloadObjectSuccessfully(t, WithPath("/")) - _, err := objects.Download(fake.ServiceClient(), tc.containerName, "testObject", nil).Extract() + _, err := objects.Download(context.TODO(), fake.ServiceClient(), tc.containerName, "testObject", nil).Extract() th.CheckErr(t, err, &tc.expectedError) }) t.Run("create", func(t *testing.T) { @@ -59,7 +60,7 @@ func TestContainerNames(t *testing.T) { content := "Ceci n'est pas une pipe" HandleCreateTextObjectSuccessfully(t, content, WithPath("/")) - res := objects.Create(fake.ServiceClient(), tc.containerName, "testObject", &objects.CreateOpts{ + res := objects.Create(context.TODO(), fake.ServiceClient(), tc.containerName, "testObject", &objects.CreateOpts{ ContentType: "text/plain", Content: strings.NewReader(content), }) @@ -70,7 +71,7 @@ func TestContainerNames(t *testing.T) { defer th.TeardownHTTP() HandleDeleteObjectSuccessfully(t, WithPath("/")) - res := objects.Delete(fake.ServiceClient(), tc.containerName, "testObject", nil) + res := objects.Delete(context.TODO(), fake.ServiceClient(), tc.containerName, "testObject", nil) th.CheckErr(t, res.Err, &tc.expectedError) }) t.Run("get", func(t *testing.T) { @@ -78,7 +79,7 @@ func TestContainerNames(t *testing.T) { defer th.TeardownHTTP() HandleGetObjectSuccessfully(t, WithPath("/")) - _, err := objects.Get(fake.ServiceClient(), tc.containerName, "testObject", nil).ExtractMetadata() + _, err := objects.Get(context.TODO(), fake.ServiceClient(), tc.containerName, "testObject", nil).ExtractMetadata() th.CheckErr(t, err, &tc.expectedError) }) t.Run("update", func(t *testing.T) { @@ -86,7 +87,7 @@ func TestContainerNames(t *testing.T) { defer th.TeardownHTTP() HandleUpdateObjectSuccessfully(t) - res := objects.Update(fake.ServiceClient(), tc.containerName, "testObject", &objects.UpdateOpts{ + res := objects.Update(context.TODO(), fake.ServiceClient(), tc.containerName, "testObject", &objects.UpdateOpts{ Metadata: map[string]string{"Gophercloud-Test": "objects"}, }) th.CheckErr(t, res.Err, &tc.expectedError) @@ -104,7 +105,7 @@ func TestContainerNames(t *testing.T) { // Append v1/ to client endpoint URL to be compliant with tempURL generator client.Endpoint = client.Endpoint + "v1/" - _, err := objects.CreateTempURL(client, tc.containerName, "testObject/testFile.txt", objects.CreateTempURLOpts{ + _, err := objects.CreateTempURL(context.TODO(), client, tc.containerName, "testObject/testFile.txt", objects.CreateTempURLOpts{ Method: http.MethodGet, TTL: 60, Timestamp: time.Date(2020, 07, 01, 01, 12, 00, 00, time.UTC), @@ -117,7 +118,7 @@ func TestContainerNames(t *testing.T) { defer th.TeardownHTTP() HandleBulkDeleteSuccessfully(t) - res := objects.BulkDelete(fake.ServiceClient(), tc.containerName, []string{"testObject"}) + res := objects.BulkDelete(context.TODO(), fake.ServiceClient(), tc.containerName, []string{"testObject"}) th.CheckErr(t, res.Err, &tc.expectedError) }) }) @@ -129,7 +130,7 @@ func TestDownloadReader(t *testing.T) { defer th.TeardownHTTP() HandleDownloadObjectSuccessfully(t) - response := objects.Download(fake.ServiceClient(), "testContainer", "testObject", nil) + response := objects.Download(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", nil) defer response.Body.Close() // Check reader @@ -143,7 +144,7 @@ func TestDownloadExtraction(t *testing.T) { defer th.TeardownHTTP() HandleDownloadObjectSuccessfully(t) - response := objects.Download(fake.ServiceClient(), "testContainer", "testObject", nil) + response := objects.Download(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", nil) // Check []byte extraction bytes, err := response.ExtractContent() @@ -170,14 +171,14 @@ func TestDownloadWithLastModified(t *testing.T) { options1 := &objects.DownloadOpts{ IfUnmodifiedSince: time.Date(2009, time.November, 10, 22, 59, 59, 0, time.UTC), } - response1 := objects.Download(fake.ServiceClient(), "testContainer", "testObject", options1) + response1 := objects.Download(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", options1) _, err1 := response1.Extract() th.AssertErr(t, err1) options2 := &objects.DownloadOpts{ IfModifiedSince: time.Date(2009, time.November, 10, 23, 0, 1, 0, time.UTC), } - response2 := objects.Download(fake.ServiceClient(), "testContainer", "testObject", options2) + response2 := objects.Download(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", options2) content, err2 := response2.ExtractContent() th.AssertNoErr(t, err2) th.AssertEquals(t, 0, len(content)) @@ -190,7 +191,7 @@ func TestListObjectInfo(t *testing.T) { count := 0 options := &objects.ListOpts{} - err := objects.List(fake.ServiceClient(), "testContainer", options).EachPage(func(page pagination.Page) (bool, error) { + err := objects.List(fake.ServiceClient(), "testContainer", options).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := objects.ExtractInfo(page) th.AssertNoErr(t, err) @@ -210,7 +211,7 @@ func TestListObjectSubdir(t *testing.T) { count := 0 options := &objects.ListOpts{Prefix: "", Delimiter: "/"} - err := objects.List(fake.ServiceClient(), "testContainer", options).EachPage(func(page pagination.Page) (bool, error) { + err := objects.List(fake.ServiceClient(), "testContainer", options).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := objects.ExtractInfo(page) th.AssertNoErr(t, err) @@ -231,7 +232,7 @@ func TestListObjectNames(t *testing.T) { // Check without delimiter. count := 0 options := &objects.ListOpts{} - err := objects.List(fake.ServiceClient(), "testContainer", options).EachPage(func(page pagination.Page) (bool, error) { + err := objects.List(fake.ServiceClient(), "testContainer", options).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := objects.ExtractNames(page) if err != nil { @@ -249,7 +250,7 @@ func TestListObjectNames(t *testing.T) { // Check with delimiter. count = 0 options = &objects.ListOpts{Delimiter: "/"} - err = objects.List(fake.ServiceClient(), "testContainer", options).EachPage(func(page pagination.Page) (bool, error) { + err = objects.List(fake.ServiceClient(), "testContainer", options).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := objects.ExtractNames(page) if err != nil { @@ -272,7 +273,7 @@ func TestListZeroObjectNames204(t *testing.T) { count := 0 options := &objects.ListOpts{} - err := objects.List(fake.ServiceClient(), "testContainer", options).EachPage(func(page pagination.Page) (bool, error) { + err := objects.List(fake.ServiceClient(), "testContainer", options).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := objects.ExtractNames(page) if err != nil { @@ -297,7 +298,7 @@ func TestCreateObject(t *testing.T) { HandleCreateTextObjectSuccessfully(t, content) options := &objects.CreateOpts{ContentType: "text/plain", Content: strings.NewReader(content)} - res := objects.Create(fake.ServiceClient(), "testContainer", "testObject", options) + res := objects.Create(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", options) th.AssertNoErr(t, res.Err) } @@ -313,7 +314,7 @@ func TestCreateObjectWithCacheControl(t *testing.T) { CacheControl: `max-age="3600", public`, Content: strings.NewReader(content), } - res := objects.Create(fake.ServiceClient(), "testContainer", "testObject", options) + res := objects.Create(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", options) th.AssertNoErr(t, res.Err) } @@ -325,7 +326,7 @@ func TestCreateObjectWithoutContentType(t *testing.T) { HandleCreateTypelessObjectSuccessfully(t, content) - res := objects.Create(fake.ServiceClient(), "testContainer", "testObject", &objects.CreateOpts{Content: strings.NewReader(content)}) + res := objects.Create(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", &objects.CreateOpts{Content: strings.NewReader(content)}) th.AssertNoErr(t, res.Err) } @@ -340,7 +341,7 @@ func TestErrorIsRaisedForChecksumMismatch(t *testing.T) { }) content := strings.NewReader("The sky was the color of television, tuned to a dead channel.") - res := Create(fake.ServiceClient(), "testContainer", "testObject", &CreateOpts{Content: content}) + res := Create(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", &CreateOpts{Content: content}) err := fmt.Errorf("Local checksum does not match API ETag header") th.AssertDeepEquals(t, err, res.Err) @@ -354,7 +355,7 @@ func TestCopyObject(t *testing.T) { HandleCopyObjectSuccessfully(t, "/newTestContainer/newTestObject") options := &objects.CopyOpts{Destination: "/newTestContainer/newTestObject"} - res := objects.Copy(fake.ServiceClient(), "testContainer", "testObject", options) + res := objects.Copy(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", options) th.AssertNoErr(t, res.Err) }) t.Run("slash", func(t *testing.T) { @@ -363,7 +364,7 @@ func TestCopyObject(t *testing.T) { HandleCopyObjectSuccessfully(t, "/newTestContainer/path%2Fto%2FnewTestObject") options := &objects.CopyOpts{Destination: "/newTestContainer/path/to/newTestObject"} - res := objects.Copy(fake.ServiceClient(), "testContainer", "testObject", options) + res := objects.Copy(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", options) th.AssertNoErr(t, res.Err) }) t.Run("emojis", func(t *testing.T) { @@ -372,7 +373,7 @@ func TestCopyObject(t *testing.T) { HandleCopyObjectSuccessfully(t, "/newTestContainer/new%F0%9F%98%8ATest%2C%3B%22O%28bject%21_%E7%AF%84") options := &objects.CopyOpts{Destination: "/newTestContainer/new😊Test,;\"O(bject!_範"} - res := objects.Copy(fake.ServiceClient(), "testContainer", "testObject", options) + res := objects.Copy(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", options) th.AssertNoErr(t, res.Err) }) } @@ -383,7 +384,7 @@ func TestCopyObjectVersion(t *testing.T) { HandleCopyObjectVersionSuccessfully(t) options := &objects.CopyOpts{Destination: "/newTestContainer/newTestObject", ObjectVersionID: "123456788"} - res, err := objects.Copy(fake.ServiceClient(), "testContainer", "testObject", options).Extract() + res, err := objects.Copy(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, "123456789", res.ObjectVersionID) } @@ -393,7 +394,7 @@ func TestDeleteObject(t *testing.T) { defer th.TeardownHTTP() HandleDeleteObjectSuccessfully(t) - res := objects.Delete(fake.ServiceClient(), "testContainer", "testObject", nil) + res := objects.Delete(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", nil) th.AssertNoErr(t, res.Err) } @@ -409,7 +410,7 @@ func TestBulkDelete(t *testing.T) { Errors: [][]string{}, } - resp, err := objects.BulkDelete(fake.ServiceClient(), "testContainer", []string{"testObject1", "testObject2"}).Extract() + resp, err := objects.BulkDelete(context.TODO(), fake.ServiceClient(), "testContainer", []string{"testObject1", "testObject2"}).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, expected, *resp) } @@ -430,7 +431,7 @@ func TestUpateObjectMetadata(t *testing.T) { DeleteAt: i, DetectContentType: new(bool), } - res := objects.Update(fake.ServiceClient(), "testContainer", "testObject", options) + res := objects.Update(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", options) th.AssertNoErr(t, res.Err) } @@ -440,14 +441,14 @@ func TestGetObject(t *testing.T) { HandleGetObjectSuccessfully(t) expected := map[string]string{"Gophercloud-Test": "objects"} - actual, err := objects.Get(fake.ServiceClient(), "testContainer", "testObject", nil).ExtractMetadata() + actual, err := objects.Get(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", nil).ExtractMetadata() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expected, actual) getOpts := objects.GetOpts{ Newest: true, } - actualHeaders, err := objects.Get(fake.ServiceClient(), "testContainer", "testObject", getOpts).Extract() + actualHeaders, err := objects.Get(context.TODO(), fake.ServiceClient(), "testContainer", "testObject", getOpts).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, true, actualHeaders.StaticLargeObject) } @@ -531,7 +532,7 @@ func TestCreateTempURL(t *testing.T) { // Append v1/ to client endpoint URL to be compliant with tempURL generator client.Endpoint = client.Endpoint + "v1/" - tempURL, err := objects.CreateTempURL(client, "testContainer", "testObject/testFile.txt", objects.CreateTempURLOpts{ + tempURL, err := objects.CreateTempURL(context.TODO(), client, "testContainer", "testObject/testFile.txt", objects.CreateTempURLOpts{ Method: http.MethodGet, TTL: 60, Timestamp: time.Date(2020, 07, 01, 01, 12, 00, 00, time.UTC), @@ -545,7 +546,7 @@ func TestCreateTempURL(t *testing.T) { th.AssertEquals(t, expectedURL, tempURL) // Test TTL=0, but different timestamp - tempURL, err = objects.CreateTempURL(client, "testContainer", "testObject/testFile.txt", objects.CreateTempURLOpts{ + tempURL, err = objects.CreateTempURL(context.TODO(), client, "testContainer", "testObject/testFile.txt", objects.CreateTempURLOpts{ Method: http.MethodGet, Timestamp: time.Date(2020, 07, 01, 01, 13, 00, 00, time.UTC), }) diff --git a/openstack/objectstorage/v1/swauth/requests.go b/openstack/objectstorage/v1/swauth/requests.go index c8a6914aa2..b8c0befe3d 100644 --- a/openstack/objectstorage/v1/swauth/requests.go +++ b/openstack/objectstorage/v1/swauth/requests.go @@ -1,6 +1,10 @@ package swauth -import "github.com/gophercloud/gophercloud/v2" +import ( + "context" + + "github.com/gophercloud/gophercloud/v2" +) // AuthOptsBuilder describes struct types that can be accepted by the Auth call. type AuthOptsBuilder interface { @@ -22,7 +26,7 @@ func (opts AuthOpts) ToAuthOptsMap() (map[string]string, error) { } // Auth performs an authentication request for a Swauth-based user. -func Auth(c *gophercloud.ProviderClient, opts AuthOptsBuilder) (r GetAuthResult) { +func Auth(ctx context.Context, c *gophercloud.ProviderClient, opts AuthOptsBuilder) (r GetAuthResult) { h := make(map[string]string) if opts != nil { @@ -37,7 +41,7 @@ func Auth(c *gophercloud.ProviderClient, opts AuthOptsBuilder) (r GetAuthResult) } } - resp, err := c.Request("GET", getURL(c), &gophercloud.RequestOpts{ + resp, err := c.Request(ctx, "GET", getURL(c), &gophercloud.RequestOpts{ MoreHeaders: h, OkCodes: []int{200}, }) @@ -47,8 +51,8 @@ func Auth(c *gophercloud.ProviderClient, opts AuthOptsBuilder) (r GetAuthResult) // NewObjectStorageV1 creates a Swauth-authenticated *gophercloud.ServiceClient // client that can issue ObjectStorage-based API calls. -func NewObjectStorageV1(pc *gophercloud.ProviderClient, authOpts AuthOpts) (*gophercloud.ServiceClient, error) { - auth, err := Auth(pc, authOpts).Extract() +func NewObjectStorageV1(ctx context.Context, pc *gophercloud.ProviderClient, authOpts AuthOpts) (*gophercloud.ServiceClient, error) { + auth, err := Auth(ctx, pc, authOpts).Extract() if err != nil { return nil, err } diff --git a/openstack/objectstorage/v1/swauth/testing/requests_test.go b/openstack/objectstorage/v1/swauth/testing/requests_test.go index d5fde5c6c5..cd095d0c17 100644 --- a/openstack/objectstorage/v1/swauth/testing/requests_test.go +++ b/openstack/objectstorage/v1/swauth/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack" @@ -21,7 +22,7 @@ func TestAuth(t *testing.T) { providerClient, err := openstack.NewClient(th.Endpoint()) th.AssertNoErr(t, err) - swiftClient, err := swauth.NewObjectStorageV1(providerClient, authOpts) + swiftClient, err := swauth.NewObjectStorageV1(context.TODO(), providerClient, authOpts) th.AssertNoErr(t, err) th.AssertEquals(t, AuthResult.Token, swiftClient.TokenID) } diff --git a/openstack/orchestration/v1/apiversions/testing/requests_test.go b/openstack/orchestration/v1/apiversions/testing/requests_test.go index ed966c0b3b..163469fec1 100644 --- a/openstack/orchestration/v1/apiversions/testing/requests_test.go +++ b/openstack/orchestration/v1/apiversions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -42,7 +43,7 @@ func TestListVersions(t *testing.T) { count := 0 - apiversions.ListVersions(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + apiversions.ListVersions(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := apiversions.ExtractAPIVersions(page) if err != nil { @@ -81,7 +82,7 @@ func TestNonJSONCannotBeExtractedIntoAPIVersions(t *testing.T) { w.WriteHeader(http.StatusOK) }) - apiversions.ListVersions(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + apiversions.ListVersions(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { if _, err := apiversions.ExtractAPIVersions(page); err == nil { t.Fatalf("Expected error, got nil") } diff --git a/openstack/orchestration/v1/buildinfo/requests.go b/openstack/orchestration/v1/buildinfo/requests.go index 4706b93090..8f8b9c496a 100644 --- a/openstack/orchestration/v1/buildinfo/requests.go +++ b/openstack/orchestration/v1/buildinfo/requests.go @@ -1,10 +1,14 @@ package buildinfo -import "github.com/gophercloud/gophercloud/v2" +import ( + "context" + + "github.com/gophercloud/gophercloud/v2" +) // Get retreives data for the given stack template. -func Get(c *gophercloud.ServiceClient) (r GetResult) { - resp, err := c.Get(getURL(c), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient) (r GetResult) { + resp, err := c.Get(ctx, getURL(c), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/orchestration/v1/buildinfo/testing/requests_test.go b/openstack/orchestration/v1/buildinfo/testing/requests_test.go index c9cc0df4a0..5177e7d409 100644 --- a/openstack/orchestration/v1/buildinfo/testing/requests_test.go +++ b/openstack/orchestration/v1/buildinfo/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/orchestration/v1/buildinfo" @@ -13,7 +14,7 @@ func TestGetTemplate(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t, GetOutput) - actual, err := buildinfo.Get(fake.ServiceClient()).Extract() + actual, err := buildinfo.Get(context.TODO(), fake.ServiceClient()).Extract() th.AssertNoErr(t, err) expected := GetExpected diff --git a/openstack/orchestration/v1/resourcetypes/requests.go b/openstack/orchestration/v1/resourcetypes/requests.go index 87c7498c16..f45d138cda 100644 --- a/openstack/orchestration/v1/resourcetypes/requests.go +++ b/openstack/orchestration/v1/resourcetypes/requests.go @@ -1,6 +1,8 @@ package resourcetypes import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) @@ -51,7 +53,7 @@ func (opts ListOpts) ToResourceTypeListQuery() (string, error) { } // List makes a request against the API to list available resource types. -func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) (r ListResult) { +func List(ctx context.Context, client *gophercloud.ServiceClient, opts ListOptsBuilder) (r ListResult) { url := listURL(client) if opts == nil { @@ -64,14 +66,14 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) (r ListResult } url += query - resp, err := client.Get(url, &r.Body, nil) + resp, err := client.Get(ctx, url, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetSchema retreives the schema for a given resource type. -func GetSchema(client *gophercloud.ServiceClient, resourceType string) (r GetSchemaResult) { - resp, err := client.Get(getSchemaURL(client, resourceType), &r.Body, nil) +func GetSchema(ctx context.Context, client *gophercloud.ServiceClient, resourceType string) (r GetSchemaResult) { + resp, err := client.Get(ctx, getSchemaURL(client, resourceType), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -104,7 +106,7 @@ func (opts GenerateTemplateOpts) ToGenerateTemplateQuery() (string, error) { } // GenerateTemplate retreives an example template for a given resource type. -func GenerateTemplate(client *gophercloud.ServiceClient, resourceType string, opts GenerateTemplateOptsBuilder) (r TemplateResult) { +func GenerateTemplate(ctx context.Context, client *gophercloud.ServiceClient, resourceType string, opts GenerateTemplateOptsBuilder) (r TemplateResult) { url := generateTemplateURL(client, resourceType) if opts == nil { opts = GenerateTemplateOpts{} @@ -115,7 +117,7 @@ func GenerateTemplate(client *gophercloud.ServiceClient, resourceType string, op return } url += query - resp, err := client.Get(url, &r.Body, nil) + resp, err := client.Get(ctx, url, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/orchestration/v1/resourcetypes/testing/requests_test.go b/openstack/orchestration/v1/resourcetypes/testing/requests_test.go index 8f0f3540f0..b426d55f6a 100644 --- a/openstack/orchestration/v1/resourcetypes/testing/requests_test.go +++ b/openstack/orchestration/v1/resourcetypes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/orchestration/v1/resourcetypes" @@ -13,7 +14,7 @@ func TestBasicListResourceTypes(t *testing.T) { defer th.TeardownHTTP() HandleListSuccessfully(t) - result := resourcetypes.List(fake.ServiceClient(), nil) + result := resourcetypes.List(context.TODO(), fake.ServiceClient(), nil) th.AssertNoErr(t, result.Err) actual, err := result.Extract() @@ -27,7 +28,7 @@ func TestFullListResourceTypes(t *testing.T) { defer th.TeardownHTTP() HandleListSuccessfully(t) - result := resourcetypes.List(fake.ServiceClient(), resourcetypes.ListOpts{ + result := resourcetypes.List(context.TODO(), fake.ServiceClient(), resourcetypes.ListOpts{ WithDescription: true, }) th.AssertNoErr(t, result.Err) @@ -43,7 +44,7 @@ func TestFilteredListResourceTypes(t *testing.T) { defer th.TeardownHTTP() HandleListSuccessfully(t) - result := resourcetypes.List(fake.ServiceClient(), resourcetypes.ListOpts{ + result := resourcetypes.List(context.TODO(), fake.ServiceClient(), resourcetypes.ListOpts{ NameRegex: listFilterRegex, WithDescription: true, }) @@ -60,7 +61,7 @@ func TestGetSchema(t *testing.T) { defer th.TeardownHTTP() HandleGetSchemaSuccessfully(t) - result := resourcetypes.GetSchema(fake.ServiceClient(), "OS::Test::TestServer") + result := resourcetypes.GetSchema(context.TODO(), fake.ServiceClient(), "OS::Test::TestServer") th.AssertNoErr(t, result.Err) actual, err := result.Extract() @@ -74,7 +75,7 @@ func TestGenerateTemplate(t *testing.T) { defer th.TeardownHTTP() HandleGenerateTemplateSuccessfully(t) - result := resourcetypes.GenerateTemplate(fake.ServiceClient(), "OS::Heat::None", nil) + result := resourcetypes.GenerateTemplate(context.TODO(), fake.ServiceClient(), "OS::Heat::None", nil) th.AssertNoErr(t, result.Err) actual, err := result.Extract() diff --git a/openstack/orchestration/v1/stackevents/requests.go b/openstack/orchestration/v1/stackevents/requests.go index c6d21c185e..71836e0541 100644 --- a/openstack/orchestration/v1/stackevents/requests.go +++ b/openstack/orchestration/v1/stackevents/requests.go @@ -1,13 +1,15 @@ package stackevents import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) // Find retrieves stack events for the given stack name. -func Find(c *gophercloud.ServiceClient, stackName string) (r FindResult) { - resp, err := c.Get(findURL(c, stackName), &r.Body, nil) +func Find(ctx context.Context, c *gophercloud.ServiceClient, stackName string) (r FindResult) { + resp, err := c.Get(ctx, findURL(c, stackName), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -177,8 +179,8 @@ func ListResourceEvents(client *gophercloud.ServiceClient, stackName, stackID, r } // Get retreives data for the given stack resource. -func Get(c *gophercloud.ServiceClient, stackName, stackID, resourceName, eventID string) (r GetResult) { - resp, err := c.Get(getURL(c, stackName, stackID, resourceName, eventID), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, stackName, stackID, resourceName, eventID string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, stackName, stackID, resourceName, eventID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/orchestration/v1/stackevents/testing/requests_test.go b/openstack/orchestration/v1/stackevents/testing/requests_test.go index c3706e0991..bed2d8a2bf 100644 --- a/openstack/orchestration/v1/stackevents/testing/requests_test.go +++ b/openstack/orchestration/v1/stackevents/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/orchestration/v1/stackevents" @@ -14,7 +15,7 @@ func TestFindEvents(t *testing.T) { defer th.TeardownHTTP() HandleFindSuccessfully(t, FindOutput) - actual, err := stackevents.Find(fake.ServiceClient(), "postman_stack").Extract() + actual, err := stackevents.Find(context.TODO(), fake.ServiceClient(), "postman_stack").Extract() th.AssertNoErr(t, err) expected := FindExpected @@ -27,7 +28,7 @@ func TestList(t *testing.T) { HandleListSuccessfully(t, ListOutput) count := 0 - err := stackevents.List(fake.ServiceClient(), "hello_world", "49181cd6-169a-4130-9455-31185bbfc5bf", nil).EachPage(func(page pagination.Page) (bool, error) { + err := stackevents.List(fake.ServiceClient(), "hello_world", "49181cd6-169a-4130-9455-31185bbfc5bf", nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := stackevents.ExtractEvents(page) th.AssertNoErr(t, err) @@ -46,7 +47,7 @@ func TestListResourceEvents(t *testing.T) { HandleListResourceEventsSuccessfully(t, ListResourceEventsOutput) count := 0 - err := stackevents.ListResourceEvents(fake.ServiceClient(), "hello_world", "49181cd6-169a-4130-9455-31185bbfc5bf", "my_resource", nil).EachPage(func(page pagination.Page) (bool, error) { + err := stackevents.ListResourceEvents(fake.ServiceClient(), "hello_world", "49181cd6-169a-4130-9455-31185bbfc5bf", "my_resource", nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := stackevents.ExtractResourceEvents(page) th.AssertNoErr(t, err) @@ -64,7 +65,7 @@ func TestGetEvent(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t, GetOutput) - actual, err := stackevents.Get(fake.ServiceClient(), "hello_world", "49181cd6-169a-4130-9455-31185bbfc5bf", "my_resource", "93940999-7d40-44ae-8de4-19624e7b8d18").Extract() + actual, err := stackevents.Get(context.TODO(), fake.ServiceClient(), "hello_world", "49181cd6-169a-4130-9455-31185bbfc5bf", "my_resource", "93940999-7d40-44ae-8de4-19624e7b8d18").Extract() th.AssertNoErr(t, err) expected := GetExpected diff --git a/openstack/orchestration/v1/stackresources/requests.go b/openstack/orchestration/v1/stackresources/requests.go index 21260fffad..6d1b12b477 100644 --- a/openstack/orchestration/v1/stackresources/requests.go +++ b/openstack/orchestration/v1/stackresources/requests.go @@ -1,13 +1,15 @@ package stackresources import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) // Find retrieves stack resources for the given stack name. -func Find(c *gophercloud.ServiceClient, stackName string) (r FindResult) { - resp, err := c.Get(findURL(c, stackName), &r.Body, nil) +func Find(ctx context.Context, c *gophercloud.ServiceClient, stackName string) (r FindResult) { + resp, err := c.Get(ctx, findURL(c, stackName), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -47,15 +49,15 @@ func List(client *gophercloud.ServiceClient, stackName, stackID string, opts Lis } // Get retreives data for the given stack resource. -func Get(c *gophercloud.ServiceClient, stackName, stackID, resourceName string) (r GetResult) { - resp, err := c.Get(getURL(c, stackName, stackID, resourceName), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, stackName, stackID, resourceName string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, stackName, stackID, resourceName), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Metadata retreives the metadata for the given stack resource. -func Metadata(c *gophercloud.ServiceClient, stackName, stackID, resourceName string) (r MetadataResult) { - resp, err := c.Get(metadataURL(c, stackName, stackID, resourceName), &r.Body, nil) +func Metadata(ctx context.Context, c *gophercloud.ServiceClient, stackName, stackID, resourceName string) (r MetadataResult) { + resp, err := c.Get(ctx, metadataURL(c, stackName, stackID, resourceName), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -68,15 +70,15 @@ func ListTypes(client *gophercloud.ServiceClient) pagination.Pager { } // Schema retreives the schema for the given resource type. -func Schema(c *gophercloud.ServiceClient, resourceType string) (r SchemaResult) { - resp, err := c.Get(schemaURL(c, resourceType), &r.Body, nil) +func Schema(ctx context.Context, c *gophercloud.ServiceClient, resourceType string) (r SchemaResult) { + resp, err := c.Get(ctx, schemaURL(c, resourceType), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Template retreives the template representation for the given resource type. -func Template(c *gophercloud.ServiceClient, resourceType string) (r TemplateResult) { - resp, err := c.Get(templateURL(c, resourceType), &r.Body, nil) +func Template(ctx context.Context, c *gophercloud.ServiceClient, resourceType string) (r TemplateResult) { + resp, err := c.Get(ctx, templateURL(c, resourceType), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -107,13 +109,13 @@ func (opts MarkUnhealthyOpts) ToMarkUnhealthyMap() (map[string]interface{}, erro } // MarkUnhealthy marks the specified resource in the stack as unhealthy. -func MarkUnhealthy(c *gophercloud.ServiceClient, stackName, stackID, resourceName string, opts MarkUnhealthyOptsBuilder) (r MarkUnhealthyResult) { +func MarkUnhealthy(ctx context.Context, c *gophercloud.ServiceClient, stackName, stackID, resourceName string, opts MarkUnhealthyOptsBuilder) (r MarkUnhealthyResult) { b, err := opts.ToMarkUnhealthyMap() if err != nil { r.Err = err return } - resp, err := c.Patch(markUnhealthyURL(c, stackName, stackID, resourceName), b, nil, nil) + resp, err := c.Patch(ctx, markUnhealthyURL(c, stackName, stackID, resourceName), b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/orchestration/v1/stackresources/testing/requests_test.go b/openstack/orchestration/v1/stackresources/testing/requests_test.go index 60624d2823..358b30621b 100644 --- a/openstack/orchestration/v1/stackresources/testing/requests_test.go +++ b/openstack/orchestration/v1/stackresources/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "sort" "testing" @@ -15,7 +16,7 @@ func TestFindResources(t *testing.T) { defer th.TeardownHTTP() HandleFindSuccessfully(t, FindOutput) - actual, err := stackresources.Find(fake.ServiceClient(), "hello_world").Extract() + actual, err := stackresources.Find(context.TODO(), fake.ServiceClient(), "hello_world").Extract() th.AssertNoErr(t, err) expected := FindExpected @@ -28,7 +29,7 @@ func TestListResources(t *testing.T) { HandleListSuccessfully(t, ListOutput) count := 0 - err := stackresources.List(fake.ServiceClient(), "hello_world", "49181cd6-169a-4130-9455-31185bbfc5bf", nil).EachPage(func(page pagination.Page) (bool, error) { + err := stackresources.List(fake.ServiceClient(), "hello_world", "49181cd6-169a-4130-9455-31185bbfc5bf", nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := stackresources.ExtractResources(page) th.AssertNoErr(t, err) @@ -46,7 +47,7 @@ func TestGetResource(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t, GetOutput) - actual, err := stackresources.Get(fake.ServiceClient(), "teststack", "0b1771bd-9336-4f2b-ae86-a80f971faf1e", "wordpress_instance").Extract() + actual, err := stackresources.Get(context.TODO(), fake.ServiceClient(), "teststack", "0b1771bd-9336-4f2b-ae86-a80f971faf1e", "wordpress_instance").Extract() th.AssertNoErr(t, err) expected := GetExpected @@ -58,7 +59,7 @@ func TestResourceMetadata(t *testing.T) { defer th.TeardownHTTP() HandleMetadataSuccessfully(t, MetadataOutput) - actual, err := stackresources.Metadata(fake.ServiceClient(), "teststack", "0b1771bd-9336-4f2b-ae86-a80f971faf1e", "wordpress_instance").Extract() + actual, err := stackresources.Metadata(context.TODO(), fake.ServiceClient(), "teststack", "0b1771bd-9336-4f2b-ae86-a80f971faf1e", "wordpress_instance").Extract() th.AssertNoErr(t, err) expected := MetadataExpected @@ -71,7 +72,7 @@ func TestListResourceTypes(t *testing.T) { HandleListTypesSuccessfully(t, ListTypesOutput) count := 0 - err := stackresources.ListTypes(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { + err := stackresources.ListTypes(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := stackresources.ExtractResourceTypes(page) th.AssertNoErr(t, err) @@ -92,7 +93,7 @@ func TestGetResourceSchema(t *testing.T) { defer th.TeardownHTTP() HandleGetSchemaSuccessfully(t, GetSchemaOutput) - actual, err := stackresources.Schema(fake.ServiceClient(), "OS::Heat::AResourceName").Extract() + actual, err := stackresources.Schema(context.TODO(), fake.ServiceClient(), "OS::Heat::AResourceName").Extract() th.AssertNoErr(t, err) expected := GetSchemaExpected @@ -104,7 +105,7 @@ func TestGetResourceTemplate(t *testing.T) { defer th.TeardownHTTP() HandleGetTemplateSuccessfully(t, GetTemplateOutput) - actual, err := stackresources.Template(fake.ServiceClient(), "OS::Heat::AResourceName").Extract() + actual, err := stackresources.Template(context.TODO(), fake.ServiceClient(), "OS::Heat::AResourceName").Extract() th.AssertNoErr(t, err) expected := GetTemplateExpected @@ -120,6 +121,6 @@ func TestMarkUnhealthyResource(t *testing.T) { MarkUnhealthy: true, ResourceStatusReason: "Kubelet.Ready is Unknown more than 10 mins.", } - err := stackresources.MarkUnhealthy(fake.ServiceClient(), "teststack", "0b1771bd-9336-4f2b-ae86-a80f971faf1e", "wordpress_instance", markUnhealthyOpts).ExtractErr() + err := stackresources.MarkUnhealthy(context.TODO(), fake.ServiceClient(), "teststack", "0b1771bd-9336-4f2b-ae86-a80f971faf1e", "wordpress_instance", markUnhealthyOpts).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/orchestration/v1/stacks/requests.go b/openstack/orchestration/v1/stacks/requests.go index af7f260642..3c8620bc2c 100644 --- a/openstack/orchestration/v1/stacks/requests.go +++ b/openstack/orchestration/v1/stacks/requests.go @@ -1,6 +1,7 @@ package stacks import ( + "context" "fmt" "strings" @@ -85,13 +86,13 @@ func (opts CreateOpts) ToStackCreateMap() (map[string]interface{}, error) { // Create accepts a CreateOpts struct and creates a new stack using the values // provided. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToStackCreateMap() if err != nil { r.Err = fmt.Errorf("error creating the options map: %w", err) return } - resp, err := c.Post(createURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, createURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -173,13 +174,13 @@ func (opts AdoptOpts) ToStackAdoptMap() (map[string]interface{}, error) { // Adopt accepts an AdoptOpts struct and creates a new stack using the resources // from another stack. -func Adopt(c *gophercloud.ServiceClient, opts AdoptOptsBuilder) (r AdoptResult) { +func Adopt(ctx context.Context, c *gophercloud.ServiceClient, opts AdoptOptsBuilder) (r AdoptResult) { b, err := opts.ToStackAdoptMap() if err != nil { r.Err = err return } - resp, err := c.Post(adoptURL(c), b, &r.Body, nil) + resp, err := c.Post(ctx, adoptURL(c), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -294,15 +295,15 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { } // Get retreives a stack based on the stack name and stack ID. -func Get(c *gophercloud.ServiceClient, stackName, stackID string) (r GetResult) { - resp, err := c.Get(getURL(c, stackName, stackID), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, stackName, stackID string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, stackName, stackID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Find retrieves a stack based on the stack name or stack ID. -func Find(c *gophercloud.ServiceClient, stackIdentity string) (r GetResult) { - resp, err := c.Get(findURL(c, stackIdentity), &r.Body, nil) +func Find(ctx context.Context, c *gophercloud.ServiceClient, stackIdentity string) (r GetResult) { + resp, err := c.Get(ctx, findURL(c, stackIdentity), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -401,13 +402,13 @@ func toStackUpdateMap(opts UpdateOpts) (map[string]interface{}, error) { // Update accepts an UpdateOpts struct and updates an existing stack using the // // http PUT verb with the values provided. opts.TemplateOpts is required. -func Update(c *gophercloud.ServiceClient, stackName, stackID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, c *gophercloud.ServiceClient, stackName, stackID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToStackUpdateMap() if err != nil { r.Err = err return } - resp, err := c.Put(updateURL(c, stackName, stackID), b, nil, nil) + resp, err := c.Put(ctx, updateURL(c, stackName, stackID), b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -415,20 +416,20 @@ func Update(c *gophercloud.ServiceClient, stackName, stackID string, opts Update // Update accepts an UpdateOpts struct and updates an existing stack using the // // http PATCH verb with the values provided. opts.TemplateOpts is not required. -func UpdatePatch(c *gophercloud.ServiceClient, stackName, stackID string, opts UpdatePatchOptsBuilder) (r UpdateResult) { +func UpdatePatch(ctx context.Context, c *gophercloud.ServiceClient, stackName, stackID string, opts UpdatePatchOptsBuilder) (r UpdateResult) { b, err := opts.ToStackUpdatePatchMap() if err != nil { r.Err = err return } - resp, err := c.Patch(updateURL(c, stackName, stackID), b, nil, nil) + resp, err := c.Patch(ctx, updateURL(c, stackName, stackID), b, nil, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete deletes a stack based on the stack name and stack ID. -func Delete(c *gophercloud.ServiceClient, stackName, stackID string) (r DeleteResult) { - resp, err := c.Delete(deleteURL(c, stackName, stackID), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, stackName, stackID string) (r DeleteResult) { + resp, err := c.Delete(ctx, deleteURL(c, stackName, stackID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -502,13 +503,13 @@ func (opts PreviewOpts) ToStackPreviewMap() (map[string]interface{}, error) { // Preview accepts a PreviewOptsBuilder interface and creates a preview of a stack using the values // provided. -func Preview(c *gophercloud.ServiceClient, opts PreviewOptsBuilder) (r PreviewResult) { +func Preview(ctx context.Context, c *gophercloud.ServiceClient, opts PreviewOptsBuilder) (r PreviewResult) { b, err := opts.ToStackPreviewMap() if err != nil { r.Err = err return } - resp, err := c.Post(previewURL(c), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Post(ctx, previewURL(c), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -517,8 +518,8 @@ func Preview(c *gophercloud.ServiceClient, opts PreviewOptsBuilder) (r PreviewRe // Abandon deletes the stack with the provided stackName and stackID, but leaves its // resources intact, and returns data describing the stack and its resources. -func Abandon(c *gophercloud.ServiceClient, stackName, stackID string) (r AbandonResult) { - resp, err := c.Delete(abandonURL(c, stackName, stackID), &gophercloud.RequestOpts{ +func Abandon(ctx context.Context, c *gophercloud.ServiceClient, stackName, stackID string) (r AbandonResult) { + resp, err := c.Delete(ctx, abandonURL(c, stackName, stackID), &gophercloud.RequestOpts{ JSONResponse: &r.Body, OkCodes: []int{200}, }) diff --git a/openstack/orchestration/v1/stacks/testing/requests_test.go b/openstack/orchestration/v1/stacks/testing/requests_test.go index 675ce103c0..e5b68cae66 100644 --- a/openstack/orchestration/v1/stacks/testing/requests_test.go +++ b/openstack/orchestration/v1/stacks/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -32,7 +33,7 @@ func TestCreateStack(t *testing.T) { TemplateOpts: template, DisableRollback: gophercloud.Disabled, } - actual, err := stacks.Create(fake.ServiceClient(), createOpts).Extract() + actual, err := stacks.Create(context.TODO(), fake.ServiceClient(), createOpts).Extract() th.AssertNoErr(t, err) expected := CreateExpected @@ -58,7 +59,7 @@ func TestCreateStackMissingRequiredInOpts(t *testing.T) { createOpts := stacks.CreateOpts{ DisableRollback: gophercloud.Disabled, } - r := stacks.Create(fake.ServiceClient(), createOpts) + r := stacks.Create(context.TODO(), fake.ServiceClient(), createOpts) th.AssertEquals(t, "error creating the options map: Missing input for argument [Name]", r.Err.Error()) } @@ -101,7 +102,7 @@ func TestAdoptStack(t *testing.T) { TemplateOpts: template, DisableRollback: gophercloud.Disabled, } - actual, err := stacks.Adopt(fake.ServiceClient(), adoptOpts).Extract() + actual, err := stacks.Adopt(context.TODO(), fake.ServiceClient(), adoptOpts).Extract() th.AssertNoErr(t, err) expected := CreateExpected @@ -114,7 +115,7 @@ func TestListStack(t *testing.T) { HandleListSuccessfully(t, FullListOutput) count := 0 - err := stacks.List(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := stacks.List(fake.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := stacks.ExtractStacks(page) th.AssertNoErr(t, err) @@ -132,7 +133,7 @@ func TestGetStack(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t, GetOutput) - actual, err := stacks.Get(fake.ServiceClient(), "postman_stack", "16ef0584-4458-41eb-87c8-0dc8d5f66c87").Extract() + actual, err := stacks.Get(context.TODO(), fake.ServiceClient(), "postman_stack", "16ef0584-4458-41eb-87c8-0dc8d5f66c87").Extract() th.AssertNoErr(t, err) expected := GetExpected @@ -144,7 +145,7 @@ func TestFindStack(t *testing.T) { defer th.TeardownHTTP() HandleFindSuccessfully(t, GetOutput) - actual, err := stacks.Find(fake.ServiceClient(), "16ef0584-4458-41eb-87c8-0dc8d5f66c87").Extract() + actual, err := stacks.Find(context.TODO(), fake.ServiceClient(), "16ef0584-4458-41eb-87c8-0dc8d5f66c87").Extract() th.AssertNoErr(t, err) expected := GetExpected @@ -171,7 +172,7 @@ func TestUpdateStack(t *testing.T) { updateOpts := &stacks.UpdateOpts{ TemplateOpts: template, } - err := stacks.Update(fake.ServiceClient(), "gophercloud-test-stack-2", "db6977b2-27aa-4775-9ae7-6213212d4ada", updateOpts).ExtractErr() + err := stacks.Update(context.TODO(), fake.ServiceClient(), "gophercloud-test-stack-2", "db6977b2-27aa-4775-9ae7-6213212d4ada", updateOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -188,7 +189,7 @@ func TestUpdateStackNoTemplate(t *testing.T) { } expected := stacks.ErrTemplateRequired{} - err := stacks.Update(fake.ServiceClient(), "gophercloud-test-stack-2", "db6977b2-27aa-4775-9ae7-6213212d4ada", updateOpts).ExtractErr() + err := stacks.Update(context.TODO(), fake.ServiceClient(), "gophercloud-test-stack-2", "db6977b2-27aa-4775-9ae7-6213212d4ada", updateOpts).ExtractErr() th.AssertEquals(t, expected, err) } @@ -203,7 +204,7 @@ func TestUpdatePatchStack(t *testing.T) { updateOpts := &stacks.UpdateOpts{ Parameters: parameters, } - err := stacks.UpdatePatch(fake.ServiceClient(), "gophercloud-test-stack-2", "db6977b2-27aa-4775-9ae7-6213212d4ada", updateOpts).ExtractErr() + err := stacks.UpdatePatch(context.TODO(), fake.ServiceClient(), "gophercloud-test-stack-2", "db6977b2-27aa-4775-9ae7-6213212d4ada", updateOpts).ExtractErr() th.AssertNoErr(t, err) } @@ -212,7 +213,7 @@ func TestDeleteStack(t *testing.T) { defer th.TeardownHTTP() HandleDeleteSuccessfully(t) - err := stacks.Delete(fake.ServiceClient(), "gophercloud-test-stack-2", "db6977b2-27aa-4775-9ae7-6213212d4ada").ExtractErr() + err := stacks.Delete(context.TODO(), fake.ServiceClient(), "gophercloud-test-stack-2", "db6977b2-27aa-4775-9ae7-6213212d4ada").ExtractErr() th.AssertNoErr(t, err) } @@ -239,7 +240,7 @@ func TestPreviewStack(t *testing.T) { TemplateOpts: template, DisableRollback: gophercloud.Disabled, } - actual, err := stacks.Preview(fake.ServiceClient(), previewOpts).Extract() + actual, err := stacks.Preview(context.TODO(), fake.ServiceClient(), previewOpts).Extract() th.AssertNoErr(t, err) expected := PreviewExpected @@ -251,7 +252,7 @@ func TestAbandonStack(t *testing.T) { defer th.TeardownHTTP() HandleAbandonSuccessfully(t, AbandonOutput) - actual, err := stacks.Abandon(fake.ServiceClient(), "postman_stack", "16ef0584-4458-41eb-87c8-0dc8d5f66c8").Extract() + actual, err := stacks.Abandon(context.TODO(), fake.ServiceClient(), "postman_stack", "16ef0584-4458-41eb-87c8-0dc8d5f66c8").Extract() th.AssertNoErr(t, err) expected := AbandonExpected diff --git a/openstack/orchestration/v1/stacktemplates/requests.go b/openstack/orchestration/v1/stacktemplates/requests.go index e29de588ad..c7b3c2c838 100644 --- a/openstack/orchestration/v1/stacktemplates/requests.go +++ b/openstack/orchestration/v1/stacktemplates/requests.go @@ -1,10 +1,14 @@ package stacktemplates -import "github.com/gophercloud/gophercloud/v2" +import ( + "context" + + "github.com/gophercloud/gophercloud/v2" +) // Get retreives data for the given stack template. -func Get(c *gophercloud.ServiceClient, stackName, stackID string) (r GetResult) { - resp, err := c.Get(getURL(c, stackName, stackID), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, stackName, stackID string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, stackName, stackID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -27,13 +31,13 @@ func (opts ValidateOpts) ToStackTemplateValidateMap() (map[string]interface{}, e } // Validate validates the given stack template. -func Validate(c *gophercloud.ServiceClient, opts ValidateOptsBuilder) (r ValidateResult) { +func Validate(ctx context.Context, c *gophercloud.ServiceClient, opts ValidateOptsBuilder) (r ValidateResult) { b, err := opts.ToStackTemplateValidateMap() if err != nil { r.Err = err return } - resp, err := c.Post(validateURL(c), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := c.Post(ctx, validateURL(c), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/orchestration/v1/stacktemplates/testing/requests_test.go b/openstack/orchestration/v1/stacktemplates/testing/requests_test.go index 785ef6605e..f52f4f75d7 100644 --- a/openstack/orchestration/v1/stacktemplates/testing/requests_test.go +++ b/openstack/orchestration/v1/stacktemplates/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/orchestration/v1/stacktemplates" @@ -13,7 +14,7 @@ func TestGetTemplate(t *testing.T) { defer th.TeardownHTTP() HandleGetSuccessfully(t, GetOutput) - actual, err := stacktemplates.Get(fake.ServiceClient(), "postman_stack", "16ef0584-4458-41eb-87c8-0dc8d5f66c87").Extract() + actual, err := stacktemplates.Get(context.TODO(), fake.ServiceClient(), "postman_stack", "16ef0584-4458-41eb-87c8-0dc8d5f66c87").Extract() th.AssertNoErr(t, err) expected := GetExpected @@ -50,7 +51,7 @@ func TestValidateTemplate(t *testing.T) { } }`, } - actual, err := stacktemplates.Validate(fake.ServiceClient(), opts).Extract() + actual, err := stacktemplates.Validate(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) expected := ValidateExpected diff --git a/openstack/placement/v1/resourceproviders/requests.go b/openstack/placement/v1/resourceproviders/requests.go index 156ec2abb3..e9accbfbe2 100644 --- a/openstack/placement/v1/resourceproviders/requests.go +++ b/openstack/placement/v1/resourceproviders/requests.go @@ -1,6 +1,8 @@ package resourceproviders import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -85,14 +87,14 @@ func (opts CreateOpts) ToResourceProviderCreateMap() (map[string]interface{}, er } // Create makes a request against the API to create a resource provider -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToResourceProviderCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(resourceProvidersListURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, resourceProvidersListURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -100,15 +102,15 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete accepts a unique ID and deletes the resource provider associated with it. -func Delete(c *gophercloud.ServiceClient, resourceProviderID string) (r DeleteResult) { - resp, err := c.Delete(deleteURL(c, resourceProviderID), nil) +func Delete(ctx context.Context, c *gophercloud.ServiceClient, resourceProviderID string) (r DeleteResult) { + resp, err := c.Delete(ctx, deleteURL(c, resourceProviderID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves a specific resource provider based on its unique ID. -func Get(c *gophercloud.ServiceClient, resourceProviderID string) (r GetResult) { - resp, err := c.Get(getURL(c, resourceProviderID), &r.Body, nil) +func Get(ctx context.Context, c *gophercloud.ServiceClient, resourceProviderID string) (r GetResult) { + resp, err := c.Get(ctx, getURL(c, resourceProviderID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -136,40 +138,40 @@ func (opts UpdateOpts) ToResourceProviderUpdateMap() (map[string]interface{}, er } // Update makes a request against the API to create a resource provider -func Update(client *gophercloud.ServiceClient, resourceProviderID string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, resourceProviderID string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToResourceProviderUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, resourceProviderID), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, resourceProviderID), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -func GetUsages(client *gophercloud.ServiceClient, resourceProviderID string) (r GetUsagesResult) { - resp, err := client.Get(getResourceProviderUsagesURL(client, resourceProviderID), &r.Body, nil) +func GetUsages(ctx context.Context, client *gophercloud.ServiceClient, resourceProviderID string) (r GetUsagesResult) { + resp, err := client.Get(ctx, getResourceProviderUsagesURL(client, resourceProviderID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -func GetInventories(client *gophercloud.ServiceClient, resourceProviderID string) (r GetInventoriesResult) { - resp, err := client.Get(getResourceProviderInventoriesURL(client, resourceProviderID), &r.Body, nil) +func GetInventories(ctx context.Context, client *gophercloud.ServiceClient, resourceProviderID string) (r GetInventoriesResult) { + resp, err := client.Get(ctx, getResourceProviderInventoriesURL(client, resourceProviderID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -func GetAllocations(client *gophercloud.ServiceClient, resourceProviderID string) (r GetAllocationsResult) { - resp, err := client.Get(getResourceProviderAllocationsURL(client, resourceProviderID), &r.Body, nil) +func GetAllocations(ctx context.Context, client *gophercloud.ServiceClient, resourceProviderID string) (r GetAllocationsResult) { + resp, err := client.Get(ctx, getResourceProviderAllocationsURL(client, resourceProviderID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } -func GetTraits(client *gophercloud.ServiceClient, resourceProviderID string) (r GetTraitsResult) { - resp, err := client.Get(getResourceProviderTraitsURL(client, resourceProviderID), &r.Body, nil) +func GetTraits(ctx context.Context, client *gophercloud.ServiceClient, resourceProviderID string) (r GetTraitsResult) { + resp, err := client.Get(ctx, getResourceProviderTraitsURL(client, resourceProviderID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/placement/v1/resourceproviders/testing/requests_test.go b/openstack/placement/v1/resourceproviders/testing/requests_test.go index be6554bc85..ad0db1475c 100644 --- a/openstack/placement/v1/resourceproviders/testing/requests_test.go +++ b/openstack/placement/v1/resourceproviders/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/placement/v1/resourceproviders" @@ -17,7 +18,7 @@ func TestListResourceProviders(t *testing.T) { HandleResourceProviderList(t) count := 0 - err := resourceproviders.List(fake.ServiceClient(), resourceproviders.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := resourceproviders.List(fake.ServiceClient(), resourceproviders.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := resourceproviders.ExtractResourceProviders(page) @@ -51,7 +52,7 @@ func TestCreateResourceProvider(t *testing.T) { ParentProviderUUID: ExpectedResourceProvider1.ParentProviderUUID, } - actual, err := resourceproviders.Create(fake.ServiceClient(), opts).Extract() + actual, err := resourceproviders.Create(context.TODO(), fake.ServiceClient(), opts).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expected, actual) @@ -65,7 +66,7 @@ func TestGetResourceProvider(t *testing.T) { expected := ExpectedResourceProvider1 - actual, err := resourceproviders.Get(fake.ServiceClient(), ExpectedResourceProvider1.UUID).Extract() + actual, err := resourceproviders.Get(context.TODO(), fake.ServiceClient(), ExpectedResourceProvider1.UUID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, &expected, actual) @@ -77,7 +78,7 @@ func TestDeleteResourceProvider(t *testing.T) { HandleResourceProviderDelete(t) - res := resourceproviders.Delete(fake.ServiceClient(), "b99b3ab4-3aa6-4fba-b827-69b88b9c544a") + res := resourceproviders.Delete(context.TODO(), fake.ServiceClient(), "b99b3ab4-3aa6-4fba-b827-69b88b9c544a") th.AssertNoErr(t, res.Err) } @@ -94,7 +95,7 @@ func TestUpdate(t *testing.T) { Name: &name, ParentProviderUUID: &parentProviderUUID, } - rp, err := resourceproviders.Update(fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() + rp, err := resourceproviders.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, rp.Name, name) @@ -107,7 +108,7 @@ func TestGetResourceProvidersUsages(t *testing.T) { HandleResourceProviderGetUsages(t) - actual, err := resourceproviders.GetUsages(fake.ServiceClient(), ResourceProviderTestID).Extract() + actual, err := resourceproviders.GetUsages(context.TODO(), fake.ServiceClient(), ResourceProviderTestID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedUsages, *actual) } @@ -118,7 +119,7 @@ func TestGetResourceProvidersInventories(t *testing.T) { HandleResourceProviderGetInventories(t) - actual, err := resourceproviders.GetInventories(fake.ServiceClient(), ResourceProviderTestID).Extract() + actual, err := resourceproviders.GetInventories(context.TODO(), fake.ServiceClient(), ResourceProviderTestID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedInventories, *actual) } @@ -129,7 +130,7 @@ func TestGetResourceProvidersAllocations(t *testing.T) { HandleResourceProviderGetAllocations(t) - actual, err := resourceproviders.GetAllocations(fake.ServiceClient(), ResourceProviderTestID).Extract() + actual, err := resourceproviders.GetAllocations(context.TODO(), fake.ServiceClient(), ResourceProviderTestID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedAllocations, *actual) } @@ -140,7 +141,7 @@ func TestGetResourceProvidersTraits(t *testing.T) { HandleResourceProviderGetTraits(t) - actual, err := resourceproviders.GetTraits(fake.ServiceClient(), ResourceProviderTestID).Extract() + actual, err := resourceproviders.GetTraits(context.TODO(), fake.ServiceClient(), ResourceProviderTestID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ExpectedTraits, *actual) } diff --git a/openstack/sharedfilesystems/apiversions/requests.go b/openstack/sharedfilesystems/apiversions/requests.go index a82c605c10..02dccd30d1 100644 --- a/openstack/sharedfilesystems/apiversions/requests.go +++ b/openstack/sharedfilesystems/apiversions/requests.go @@ -1,6 +1,8 @@ package apiversions import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -13,8 +15,8 @@ func List(c *gophercloud.ServiceClient) pagination.Pager { } // Get will get a specific API version, specified by major ID. -func Get(client *gophercloud.ServiceClient, v string) (r GetResult) { - resp, err := client.Get(getURL(client, v), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, v string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, v), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/sharedfilesystems/apiversions/testing/requests_test.go b/openstack/sharedfilesystems/apiversions/testing/requests_test.go index 7a7eef7e5f..1e09f7daac 100644 --- a/openstack/sharedfilesystems/apiversions/testing/requests_test.go +++ b/openstack/sharedfilesystems/apiversions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/sharedfilesystems/apiversions" @@ -14,7 +15,7 @@ func TestListAPIVersions(t *testing.T) { MockListResponse(t) - allVersions, err := apiversions.List(client.ServiceClient()).AllPages() + allVersions, err := apiversions.List(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := apiversions.ExtractAPIVersions(allVersions) @@ -29,7 +30,7 @@ func TestGetAPIVersion(t *testing.T) { MockGetResponse(t) - actual, err := apiversions.Get(client.ServiceClient(), "v2").Extract() + actual, err := apiversions.Get(context.TODO(), client.ServiceClient(), "v2").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, ManilaAPIVersion2Result, *actual) @@ -41,7 +42,7 @@ func TestGetNoAPIVersion(t *testing.T) { MockGetNoResponse(t) - _, err := apiversions.Get(client.ServiceClient(), "v2").Extract() + _, err := apiversions.Get(context.TODO(), client.ServiceClient(), "v2").Extract() th.AssertEquals(t, err.Error(), "Unable to find requested API version") } @@ -51,6 +52,6 @@ func TestGetMultipleAPIVersion(t *testing.T) { MockGetMultipleResponses(t) - _, err := apiversions.Get(client.ServiceClient(), "v2").Extract() + _, err := apiversions.Get(context.TODO(), client.ServiceClient(), "v2").Extract() th.AssertEquals(t, err.Error(), "Found 2 API versions") } diff --git a/openstack/sharedfilesystems/v2/availabilityzones/testing/requests_test.go b/openstack/sharedfilesystems/v2/availabilityzones/testing/requests_test.go index dbe00da14b..8d69781c3d 100644 --- a/openstack/sharedfilesystems/v2/availabilityzones/testing/requests_test.go +++ b/openstack/sharedfilesystems/v2/availabilityzones/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -16,7 +17,7 @@ func TestList(t *testing.T) { MockListResponse(t) - allPages, err := availabilityzones.List(client.ServiceClient()).AllPages() + allPages, err := availabilityzones.List(client.ServiceClient()).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := availabilityzones.ExtractAvailabilityZones(allPages) th.AssertNoErr(t, err) diff --git a/openstack/sharedfilesystems/v2/errors/testing/request_test.go b/openstack/sharedfilesystems/v2/errors/testing/request_test.go index 3c0f5f2500..f405721d7f 100644 --- a/openstack/sharedfilesystems/v2/errors/testing/request_test.go +++ b/openstack/sharedfilesystems/v2/errors/testing/request_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/sharedfilesystems/v2/errors" @@ -16,7 +17,7 @@ func TestCreate(t *testing.T) { MockCreateResponse(t) options := &shares.CreateOpts{Size: 1, Name: "my_test_share", ShareProto: "NFS", SnapshotID: "70bfbebc-d3ff-4528-8bbb-58422daa280b"} - _, err := shares.Create(client.ServiceClient(), options).Extract() + _, err := shares.Create(context.TODO(), client.ServiceClient(), options).Extract() if err == nil { t.Fatal("Expected error") diff --git a/openstack/sharedfilesystems/v2/messages/requests.go b/openstack/sharedfilesystems/v2/messages/requests.go index 53be2c2b45..3162262977 100644 --- a/openstack/sharedfilesystems/v2/messages/requests.go +++ b/openstack/sharedfilesystems/v2/messages/requests.go @@ -1,13 +1,15 @@ package messages import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) // Delete will delete the existing Message with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -67,8 +69,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa // Get retrieves the Message with the provided ID. To extract the Message // object from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/sharedfilesystems/v2/messages/testing/requests_test.go b/openstack/sharedfilesystems/v2/messages/testing/requests_test.go index 257b18c939..75b0b57dc3 100644 --- a/openstack/sharedfilesystems/v2/messages/testing/requests_test.go +++ b/openstack/sharedfilesystems/v2/messages/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -16,7 +17,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := messages.Delete(client.ServiceClient(), "messageID") + res := messages.Delete(context.TODO(), client.ServiceClient(), "messageID") th.AssertNoErr(t, res.Err) } @@ -27,7 +28,7 @@ func TestList(t *testing.T) { MockListResponse(t) - allPages, err := messages.List(client.ServiceClient(), &messages.ListOpts{}).AllPages() + allPages, err := messages.List(client.ServiceClient(), &messages.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := messages.ExtractMessages(allPages) th.AssertNoErr(t, err) @@ -74,7 +75,7 @@ func TestFilteredList(t *testing.T) { RequestID: "req-21767eee-22ca-40a4-b6c0-ae7d35cd434f", } - allPages, err := messages.List(client.ServiceClient(), options).AllPages() + allPages, err := messages.List(client.ServiceClient(), options).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := messages.ExtractMessages(allPages) th.AssertNoErr(t, err) @@ -118,7 +119,7 @@ func TestGet(t *testing.T) { ActionID: "002", } - n, err := messages.Get(client.ServiceClient(), "2076373e-13a7-4b84-9e67-15ce8cceaff8").Extract() + n, err := messages.Get(context.TODO(), client.ServiceClient(), "2076373e-13a7-4b84-9e67-15ce8cceaff8").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &expected, n) diff --git a/openstack/sharedfilesystems/v2/replicas/requests.go b/openstack/sharedfilesystems/v2/replicas/requests.go index 061f7a1dc5..021c1550a7 100644 --- a/openstack/sharedfilesystems/v2/replicas/requests.go +++ b/openstack/sharedfilesystems/v2/replicas/requests.go @@ -1,6 +1,8 @@ package replicas import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -37,13 +39,13 @@ func (opts CreateOpts) ToReplicaCreateMap() (map[string]interface{}, error) { // Create will create a new Share Replica based on the values in CreateOpts. To extract // the Replica object from the response, call the Extract method on the // CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToReplicaCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -112,31 +114,31 @@ func ListDetail(client *gophercloud.ServiceClient, opts ListOptsBuilder) paginat } // Delete will delete an existing Replica with the given UUID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get will get a single share with given UUID -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // ListExportLocations will list replicaID's export locations. // Minimum supported microversion for ListExportLocations is 2.47. -func ListExportLocations(client *gophercloud.ServiceClient, id string) (r ListExportLocationsResult) { - resp, err := client.Get(listExportLocationsURL(client, id), &r.Body, nil) +func ListExportLocations(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ListExportLocationsResult) { + resp, err := client.Get(ctx, listExportLocationsURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetExportLocation will get replicaID's export location by an ID. // Minimum supported microversion for GetExportLocation is 2.47. -func GetExportLocation(client *gophercloud.ServiceClient, replicaID string, id string) (r GetExportLocationResult) { - resp, err := client.Get(getExportLocationURL(client, replicaID, id), &r.Body, nil) +func GetExportLocation(ctx context.Context, client *gophercloud.ServiceClient, replicaID string, id string) (r GetExportLocationResult) { + resp, err := client.Get(ctx, getExportLocationURL(client, replicaID, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -163,14 +165,14 @@ func (opts PromoteOpts) ToReplicaPromoteMap() (map[string]interface{}, error) { // Promote will promote an existing Replica to active state. PromoteResult contains only the error. // To extract it, call the ExtractErr method on the PromoteResult. -func Promote(client *gophercloud.ServiceClient, id string, opts PromoteOptsBuilder) (r PromoteResult) { +func Promote(ctx context.Context, client *gophercloud.ServiceClient, id string, opts PromoteOptsBuilder) (r PromoteResult) { b, err := opts.ToReplicaPromoteMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -179,8 +181,8 @@ func Promote(client *gophercloud.ServiceClient, id string, opts PromoteOptsBuild // Resync a replica with its active mirror. ResyncResult contains only the error. // To extract it, call the ExtractErr method on the ResyncResult. -func Resync(client *gophercloud.ServiceClient, id string) (r ResyncResult) { - resp, err := client.Post(actionURL(client, id), map[string]interface{}{"resync": nil}, nil, &gophercloud.RequestOpts{ +func Resync(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ResyncResult) { + resp, err := client.Post(ctx, actionURL(client, id), map[string]interface{}{"resync": nil}, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -210,13 +212,13 @@ func (opts ResetStatusOpts) ToReplicaResetStatusMap() (map[string]interface{}, e // ResetStatus will reset the Share Replica status with provided information. // ResetStatusResult contains only the error. To extract it, call the ExtractErr // method on the ResetStatusResult. -func ResetStatus(client *gophercloud.ServiceClient, id string, opts ResetStatusOptsBuilder) (r ResetStatusResult) { +func ResetStatus(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ResetStatusOptsBuilder) (r ResetStatusResult) { b, err := opts.ToReplicaResetStatusMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -246,13 +248,13 @@ func (opts ResetStateOpts) ToReplicaResetStateMap() (map[string]interface{}, err // ResetState will reset the Share Replica state with provided information. // ResetStateResult contains only the error. To extract it, call the ExtractErr // method on the ResetStateResult. -func ResetState(client *gophercloud.ServiceClient, id string, opts ResetStateOptsBuilder) (r ResetStateResult) { +func ResetState(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ResetStateOptsBuilder) (r ResetStateResult) { b, err := opts.ToReplicaResetStateMap() if err != nil { r.Err = err return } - resp, err := client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, actionURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -262,8 +264,8 @@ func ResetState(client *gophercloud.ServiceClient, id string, opts ResetStateOpt // ForceDelete force-deletes a Share Replica in any state. ForceDeleteResult // contains only the error. To extract it, call the ExtractErr method on the // ForceDeleteResult. Administrator only. -func ForceDelete(client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) { - resp, err := client.Post(actionURL(client, id), map[string]interface{}{"force_delete": nil}, nil, &gophercloud.RequestOpts{ +func ForceDelete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) { + resp, err := client.Post(ctx, actionURL(client, id), map[string]interface{}{"force_delete": nil}, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/sharedfilesystems/v2/replicas/testing/request_test.go b/openstack/sharedfilesystems/v2/replicas/testing/request_test.go index b3717af3a7..167bc2c879 100644 --- a/openstack/sharedfilesystems/v2/replicas/testing/request_test.go +++ b/openstack/sharedfilesystems/v2/replicas/testing/request_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -27,7 +28,7 @@ func TestCreate(t *testing.T) { ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", AvailabilityZone: "zone-1", } - actual, err := replicas.Create(getClient("2.11"), options).Extract() + actual, err := replicas.Create(context.TODO(), getClient("2.11"), options).Extract() expected := &replicas.Replica{ ID: "3b9c33e8-b136-45c6-84a6-019c8db1d550", @@ -48,7 +49,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - result := replicas.Delete(getClient("2.11"), replicaID) + result := replicas.Delete(context.TODO(), getClient("2.11"), replicaID) th.AssertNoErr(t, result.Err) } @@ -58,7 +59,7 @@ func TestForceDeleteSuccess(t *testing.T) { MockForceDeleteResponse(t) - err := replicas.ForceDelete(getClient("2.11"), replicaID).ExtractErr() + err := replicas.ForceDelete(context.TODO(), getClient("2.11"), replicaID).ExtractErr() th.AssertNoErr(t, err) } @@ -68,7 +69,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - actual, err := replicas.Get(getClient("2.11"), replicaID).Extract() + actual, err := replicas.Get(context.TODO(), getClient("2.11"), replicaID).Extract() expected := &replicas.Replica{ AvailabilityZone: "zone-1", @@ -95,7 +96,7 @@ func TestList(t *testing.T) { listOpts := &replicas.ListOpts{ ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", } - allPages, err := replicas.List(getClient("2.11"), listOpts).AllPages() + allPages, err := replicas.List(getClient("2.11"), listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := replicas.ExtractReplicas(allPages) @@ -134,7 +135,7 @@ func TestListDetail(t *testing.T) { listOpts := &replicas.ListOpts{ ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943", } - allPages, err := replicas.ListDetail(getClient("2.11"), listOpts).AllPages() + allPages, err := replicas.ListDetail(getClient("2.11"), listOpts).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := replicas.ExtractReplicas(allPages) @@ -185,7 +186,7 @@ func TestListExportLocationsSuccess(t *testing.T) { MockListExportLocationsResponse(t) - actual, err := replicas.ListExportLocations(getClient("2.47"), replicaID).Extract() + actual, err := replicas.ListExportLocations(context.TODO(), getClient("2.47"), replicaID).Extract() expected := []replicas.ExportLocation{ { @@ -214,7 +215,7 @@ func TestGetExportLocationSuccess(t *testing.T) { MockGetExportLocationResponse(t) - s, err := replicas.GetExportLocation(getClient("2.47"), replicaID, "ae73e762-e8b9-4aad-aad3-23afb7cd6825").Extract() + s, err := replicas.GetExportLocation(context.TODO(), getClient("2.47"), replicaID, "ae73e762-e8b9-4aad-aad3-23afb7cd6825").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s, &replicas.ExportLocation{ @@ -234,7 +235,7 @@ func TestResetStatusSuccess(t *testing.T) { MockResetStatusResponse(t) - err := replicas.ResetStatus(getClient("2.11"), replicaID, &replicas.ResetStatusOpts{Status: "available"}).ExtractErr() + err := replicas.ResetStatus(context.TODO(), getClient("2.11"), replicaID, &replicas.ResetStatusOpts{Status: "available"}).ExtractErr() th.AssertNoErr(t, err) } @@ -244,7 +245,7 @@ func TestResetStateSuccess(t *testing.T) { MockResetStateResponse(t) - err := replicas.ResetState(getClient("2.11"), replicaID, &replicas.ResetStateOpts{State: "active"}).ExtractErr() + err := replicas.ResetState(context.TODO(), getClient("2.11"), replicaID, &replicas.ResetStateOpts{State: "active"}).ExtractErr() th.AssertNoErr(t, err) } @@ -254,7 +255,7 @@ func TestResyncSuccess(t *testing.T) { MockResyncResponse(t) - err := replicas.Resync(getClient("2.11"), replicaID).ExtractErr() + err := replicas.Resync(context.TODO(), getClient("2.11"), replicaID).ExtractErr() th.AssertNoErr(t, err) } @@ -264,6 +265,6 @@ func TestPromoteSuccess(t *testing.T) { MockPromoteResponse(t) - err := replicas.Promote(getClient("2.11"), replicaID, &replicas.PromoteOpts{QuiesceWaitTime: 30}).ExtractErr() + err := replicas.Promote(context.TODO(), getClient("2.11"), replicaID, &replicas.PromoteOpts{QuiesceWaitTime: 30}).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/sharedfilesystems/v2/schedulerstats/testing/requests_test.go b/openstack/sharedfilesystems/v2/schedulerstats/testing/requests_test.go index ce3b7d43af..5c2ff36ad9 100644 --- a/openstack/sharedfilesystems/v2/schedulerstats/testing/requests_test.go +++ b/openstack/sharedfilesystems/v2/schedulerstats/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/sharedfilesystems/v2/schedulerstats" @@ -15,7 +16,7 @@ func TestListPoolsDetail(t *testing.T) { HandlePoolsListSuccessfully(t) pages := 0 - err := schedulerstats.List(client.ServiceClient(), schedulerstats.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := schedulerstats.List(client.ServiceClient(), schedulerstats.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := schedulerstats.ExtractPools(page) @@ -39,7 +40,7 @@ func TestListPoolsDetail(t *testing.T) { } pages = 0 - err = schedulerstats.ListDetail(client.ServiceClient(), schedulerstats.ListDetailOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err = schedulerstats.ListDetail(client.ServiceClient(), schedulerstats.ListDetailOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := schedulerstats.ExtractPools(page) diff --git a/openstack/sharedfilesystems/v2/securityservices/requests.go b/openstack/sharedfilesystems/v2/securityservices/requests.go index 8a781144be..b27d65e162 100644 --- a/openstack/sharedfilesystems/v2/securityservices/requests.go +++ b/openstack/sharedfilesystems/v2/securityservices/requests.go @@ -1,6 +1,8 @@ package securityservices import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -53,13 +55,13 @@ func (opts CreateOpts) ToSecurityServiceCreateMap() (map[string]interface{}, err // Create will create a new SecurityService based on the values in CreateOpts. To // extract the SecurityService object from the response, call the Extract method // on the CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToSecurityServiceCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -67,8 +69,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete will delete the existing SecurityService with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -128,8 +130,8 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa // Get retrieves the SecurityService with the provided ID. To extract the SecurityService // object from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -172,13 +174,13 @@ func (opts UpdateOpts) ToSecurityServiceUpdateMap() (map[string]interface{}, err // Update will update the SecurityService with provided information. To extract the updated // SecurityService from the response, call the Extract method on the UpdateResult. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToSecurityServiceUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/sharedfilesystems/v2/securityservices/testing/requests_test.go b/openstack/sharedfilesystems/v2/securityservices/testing/requests_test.go index 2c854ac42a..391485cdc2 100644 --- a/openstack/sharedfilesystems/v2/securityservices/testing/requests_test.go +++ b/openstack/sharedfilesystems/v2/securityservices/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -26,7 +27,7 @@ func TestCreate(t *testing.T) { Type: "kerberos", } - s, err := securityservices.Create(client.ServiceClient(), options).Extract() + s, err := securityservices.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, s.Name, "SecServ1") @@ -47,7 +48,7 @@ func TestCreateFails(t *testing.T) { Password: "***", } - _, err := securityservices.Create(client.ServiceClient(), options).Extract() + _, err := securityservices.Create(context.TODO(), client.ServiceClient(), options).Extract() if _, ok := err.(gophercloud.ErrMissingInput); !ok { t.Fatal("ErrMissingInput was expected to occur") } @@ -60,7 +61,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := securityservices.Delete(client.ServiceClient(), "securityServiceID") + res := securityservices.Delete(context.TODO(), client.ServiceClient(), "securityServiceID") th.AssertNoErr(t, res.Err) } @@ -71,7 +72,7 @@ func TestList(t *testing.T) { MockListResponse(t) - allPages, err := securityservices.List(client.ServiceClient(), &securityservices.ListOpts{}).AllPages() + allPages, err := securityservices.List(client.ServiceClient(), &securityservices.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := securityservices.ExtractSecurityServices(allPages) th.AssertNoErr(t, err) @@ -123,7 +124,7 @@ func TestFilteredList(t *testing.T) { Type: "kerberos", } - allPages, err := securityservices.List(client.ServiceClient(), options).AllPages() + allPages, err := securityservices.List(client.ServiceClient(), options).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := securityservices.ExtractSecurityServices(allPages) th.AssertNoErr(t, err) @@ -173,7 +174,7 @@ func TestGet(t *testing.T) { Password: "supersecret", } - n, err := securityservices.Get(client.ServiceClient(), "3c829734-0679-4c17-9637-801da48c0d5f").Extract() + n, err := securityservices.Get(context.TODO(), client.ServiceClient(), "3c829734-0679-4c17-9637-801da48c0d5f").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &expected, n) @@ -203,7 +204,7 @@ func TestUpdate(t *testing.T) { name := "SecServ2" options := securityservices.UpdateOpts{Name: &name} - s, err := securityservices.Update(client.ServiceClient(), "securityServiceID", options).Extract() + s, err := securityservices.Update(context.TODO(), client.ServiceClient(), "securityServiceID", options).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &expected, s) } diff --git a/openstack/sharedfilesystems/v2/services/testing/requests_test.go b/openstack/sharedfilesystems/v2/services/testing/requests_test.go index 530c0b7760..16607415b6 100644 --- a/openstack/sharedfilesystems/v2/services/testing/requests_test.go +++ b/openstack/sharedfilesystems/v2/services/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/sharedfilesystems/v2/services" @@ -15,7 +16,7 @@ func TestListServices(t *testing.T) { HandleListSuccessfully(t) pages := 0 - err := services.List(client.ServiceClient(), services.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := services.List(client.ServiceClient(), services.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := services.ExtractServices(page) diff --git a/openstack/sharedfilesystems/v2/shareaccessrules/requests.go b/openstack/sharedfilesystems/v2/shareaccessrules/requests.go index 2d48827837..3b0c177a4a 100644 --- a/openstack/sharedfilesystems/v2/shareaccessrules/requests.go +++ b/openstack/sharedfilesystems/v2/shareaccessrules/requests.go @@ -1,19 +1,21 @@ package shareaccessrules import ( + "context" + "github.com/gophercloud/gophercloud/v2" ) // Get retrieves details about a share access rule. -func Get(client *gophercloud.ServiceClient, accessID string) (r GetResult) { - resp, err := client.Get(getURL(client, accessID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, accessID string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, accessID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // List gets all access rules of a share. -func List(client *gophercloud.ServiceClient, shareID string) (r ListResult) { - resp, err := client.Get(listURL(client, shareID), &r.Body, nil) +func List(ctx context.Context, client *gophercloud.ServiceClient, shareID string) (r ListResult) { + resp, err := client.Get(ctx, listURL(client, shareID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/sharedfilesystems/v2/shareaccessrules/testing/requests_test.go b/openstack/sharedfilesystems/v2/shareaccessrules/testing/requests_test.go index 4bfd639f27..9c520348f0 100644 --- a/openstack/sharedfilesystems/v2/shareaccessrules/testing/requests_test.go +++ b/openstack/sharedfilesystems/v2/shareaccessrules/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -18,7 +19,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - resp := shareaccessrules.Get(client.ServiceClient(), "507bf114-36f2-4f56-8cf4-857985ca87c1") + resp := shareaccessrules.Get(context.TODO(), client.ServiceClient(), "507bf114-36f2-4f56-8cf4-857985ca87c1") th.AssertNoErr(t, resp.Err) accessRule, err := resp.Extract() diff --git a/openstack/sharedfilesystems/v2/sharenetworks/requests.go b/openstack/sharedfilesystems/v2/sharenetworks/requests.go index 66a5b38523..198925eab2 100644 --- a/openstack/sharedfilesystems/v2/sharenetworks/requests.go +++ b/openstack/sharedfilesystems/v2/sharenetworks/requests.go @@ -1,6 +1,8 @@ package sharenetworks import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -36,13 +38,13 @@ func (opts CreateOpts) ToShareNetworkCreateMap() (map[string]interface{}, error) // Create will create a new ShareNetwork based on the values in CreateOpts. To // extract the ShareNetwork object from the response, call the Extract method // on the CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToShareNetworkCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -50,8 +52,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete will delete the existing ShareNetwork with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -121,8 +123,8 @@ func ListDetail(client *gophercloud.ServiceClient, opts ListOptsBuilder) paginat // Get retrieves the ShareNetwork with the provided ID. To extract the ShareNetwork // object from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -157,13 +159,13 @@ func (opts UpdateOpts) ToShareNetworkUpdateMap() (map[string]interface{}, error) // Update will update the ShareNetwork with provided information. To extract the updated // ShareNetwork from the response, call the Extract method on the UpdateResult. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToShareNetworkUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -191,13 +193,13 @@ func (opts AddSecurityServiceOpts) ToShareNetworkAddSecurityServiceMap() (map[st // AddSecurityService will add the security service to a ShareNetwork. To extract the updated // ShareNetwork from the response, call the Extract method on the UpdateResult. -func AddSecurityService(client *gophercloud.ServiceClient, id string, opts AddSecurityServiceOptsBuilder) (r UpdateResult) { +func AddSecurityService(ctx context.Context, client *gophercloud.ServiceClient, id string, opts AddSecurityServiceOptsBuilder) (r UpdateResult) { b, err := opts.ToShareNetworkAddSecurityServiceMap() if err != nil { r.Err = err return } - resp, err := client.Post(addSecurityServiceURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, addSecurityServiceURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -225,13 +227,13 @@ func (opts RemoveSecurityServiceOpts) ToShareNetworkRemoveSecurityServiceMap() ( // RemoveSecurityService will remove the security service from a ShareNetwork. To extract the updated // ShareNetwork from the response, call the Extract method on the UpdateResult. -func RemoveSecurityService(client *gophercloud.ServiceClient, id string, opts RemoveSecurityServiceOptsBuilder) (r UpdateResult) { +func RemoveSecurityService(ctx context.Context, client *gophercloud.ServiceClient, id string, opts RemoveSecurityServiceOptsBuilder) (r UpdateResult) { b, err := opts.ToShareNetworkRemoveSecurityServiceMap() if err != nil { r.Err = err return } - resp, err := client.Post(removeSecurityServiceURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, removeSecurityServiceURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/sharedfilesystems/v2/sharenetworks/testing/requests_test.go b/openstack/sharedfilesystems/v2/sharenetworks/testing/requests_test.go index c951ad7341..1cbbb6df5b 100644 --- a/openstack/sharedfilesystems/v2/sharenetworks/testing/requests_test.go +++ b/openstack/sharedfilesystems/v2/sharenetworks/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -24,7 +25,7 @@ func TestCreate(t *testing.T) { NeutronSubnetID: "53482b62-2c84-4a53-b6ab-30d9d9800d06", } - n, err := sharenetworks.Create(client.ServiceClient(), options).Extract() + n, err := sharenetworks.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, "my_network") @@ -40,7 +41,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - res := sharenetworks.Delete(client.ServiceClient(), "fa158a3d-6d9f-4187-9ca5-abbb82646eb2") + res := sharenetworks.Delete(context.TODO(), client.ServiceClient(), "fa158a3d-6d9f-4187-9ca5-abbb82646eb2") th.AssertNoErr(t, res.Err) } @@ -51,7 +52,7 @@ func TestListDetail(t *testing.T) { MockListResponse(t) - allPages, err := sharenetworks.ListDetail(client.ServiceClient(), &sharenetworks.ListOpts{}).AllPages() + allPages, err := sharenetworks.ListDetail(client.ServiceClient(), &sharenetworks.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := sharenetworks.ExtractShareNetworks(allPages) @@ -123,7 +124,7 @@ func TestPaginatedListDetail(t *testing.T) { count := 0 - err := sharenetworks.ListDetail(client.ServiceClient(), options).EachPage(func(page pagination.Page) (bool, error) { + err := sharenetworks.ListDetail(client.ServiceClient(), options).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ _, err := sharenetworks.ExtractShareNetworks(page) if err != nil { @@ -162,7 +163,7 @@ func TestGet(t *testing.T) { ProjectID: "16e1ab15c35a457e9c2b2aa189f544e1", } - n, err := sharenetworks.Get(client.ServiceClient(), "7f950b52-6141-4a08-bbb5-bb7ffa3ea5fd").Extract() + n, err := sharenetworks.Get(context.TODO(), client.ServiceClient(), "7f950b52-6141-4a08-bbb5-bb7ffa3ea5fd").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &expected, n) @@ -200,7 +201,7 @@ func TestUpdateNeutron(t *testing.T) { NeutronSubnetID: "new-neutron-subnet-id", } - v, err := sharenetworks.Update(client.ServiceClient(), "713df749-aac0-4a54-af52-10f6c991e80c", options).Extract() + v, err := sharenetworks.Update(context.TODO(), client.ServiceClient(), "713df749-aac0-4a54-af52-10f6c991e80c", options).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &expected, v) } @@ -236,7 +237,7 @@ func TestUpdateNova(t *testing.T) { NovaNetID: "new-nova-id", } - v, err := sharenetworks.Update(client.ServiceClient(), "713df749-aac0-4a54-af52-10f6c991e80c", options).Extract() + v, err := sharenetworks.Update(context.TODO(), client.ServiceClient(), "713df749-aac0-4a54-af52-10f6c991e80c", options).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &expected, v) } @@ -266,7 +267,7 @@ func TestAddSecurityService(t *testing.T) { } options := sharenetworks.AddSecurityServiceOpts{SecurityServiceID: "securityServiceID"} - s, err := sharenetworks.AddSecurityService(client.ServiceClient(), "shareNetworkID", options).Extract() + s, err := sharenetworks.AddSecurityService(context.TODO(), client.ServiceClient(), "shareNetworkID", options).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &expected, s) } @@ -279,6 +280,6 @@ func TestRemoveSecurityService(t *testing.T) { MockRemoveSecurityServiceResponse(t) options := sharenetworks.RemoveSecurityServiceOpts{SecurityServiceID: "securityServiceID"} - _, err := sharenetworks.RemoveSecurityService(client.ServiceClient(), "shareNetworkID", options).Extract() + _, err := sharenetworks.RemoveSecurityService(context.TODO(), client.ServiceClient(), "shareNetworkID", options).Extract() th.AssertNoErr(t, err) } diff --git a/openstack/sharedfilesystems/v2/shares/requests.go b/openstack/sharedfilesystems/v2/shares/requests.go index c5b38628d5..7562b2de19 100644 --- a/openstack/sharedfilesystems/v2/shares/requests.go +++ b/openstack/sharedfilesystems/v2/shares/requests.go @@ -1,6 +1,8 @@ package shares import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -57,13 +59,13 @@ func (opts CreateOpts) ToShareCreateMap() (map[string]interface{}, error) { // Create will create a new Share based on the values in CreateOpts. To extract // the Share object from the response, call the Extract method on the // CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToShareCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -164,31 +166,31 @@ func ListDetail(client *gophercloud.ServiceClient, opts ListOptsBuilder) paginat } // Delete will delete an existing Share with the given UUID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get will get a single share with given UUID -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // ListExportLocations will list shareID's export locations. // Client must have Microversion set; minimum supported microversion for ListExportLocations is 2.9. -func ListExportLocations(client *gophercloud.ServiceClient, id string) (r ListExportLocationsResult) { - resp, err := client.Get(listExportLocationsURL(client, id), &r.Body, nil) +func ListExportLocations(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ListExportLocationsResult) { + resp, err := client.Get(ctx, listExportLocationsURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetExportLocation will get shareID's export location by an ID. // Client must have Microversion set; minimum supported microversion for GetExportLocation is 2.9. -func GetExportLocation(client *gophercloud.ServiceClient, shareID string, id string) (r GetExportLocationResult) { - resp, err := client.Get(getExportLocationURL(client, shareID, id), &r.Body, nil) +func GetExportLocation(ctx context.Context, client *gophercloud.ServiceClient, shareID string, id string) (r GetExportLocationResult) { + resp, err := client.Get(ctx, getExportLocationURL(client, shareID, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -220,13 +222,13 @@ func (opts GrantAccessOpts) ToGrantAccessMap() (map[string]interface{}, error) { // GrantAccess will grant access to a Share based on the values in GrantAccessOpts. To extract // the GrantAccess object from the response, call the Extract method on the GrantAccessResult. // Client must have Microversion set; minimum supported microversion for GrantAccess is 2.7. -func GrantAccess(client *gophercloud.ServiceClient, id string, opts GrantAccessOptsBuilder) (r GrantAccessResult) { +func GrantAccess(ctx context.Context, client *gophercloud.ServiceClient, id string, opts GrantAccessOptsBuilder) (r GrantAccessResult) { b, err := opts.ToGrantAccessMap() if err != nil { r.Err = err return } - resp, err := client.Post(grantAccessURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, grantAccessURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -256,14 +258,14 @@ func (opts RevokeAccessOpts) ToRevokeAccessMap() (map[string]interface{}, error) // RevokeAccessResult contains only the error. To extract it, call the ExtractErr method on // the RevokeAccessResult. Client must have Microversion set; minimum supported microversion // for RevokeAccess is 2.7. -func RevokeAccess(client *gophercloud.ServiceClient, id string, opts RevokeAccessOptsBuilder) (r RevokeAccessResult) { +func RevokeAccess(ctx context.Context, client *gophercloud.ServiceClient, id string, opts RevokeAccessOptsBuilder) (r RevokeAccessResult) { b, err := opts.ToRevokeAccessMap() if err != nil { r.Err = err return } - resp, err := client.Post(revokeAccessURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, revokeAccessURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -273,9 +275,9 @@ func RevokeAccess(client *gophercloud.ServiceClient, id string, opts RevokeAcces // ListAccessRights lists all access rules assigned to a Share based on its id. To extract // the AccessRight slice from the response, call the Extract method on the ListAccessRightsResult. // Client must have Microversion set; minimum supported microversion for ListAccessRights is 2.7. -func ListAccessRights(client *gophercloud.ServiceClient, id string) (r ListAccessRightsResult) { +func ListAccessRights(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ListAccessRightsResult) { requestBody := map[string]interface{}{"access_list": nil} - resp, err := client.Post(listAccessRightsURL(client, id), requestBody, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, listAccessRightsURL(client, id), requestBody, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -305,14 +307,14 @@ func (opts ExtendOpts) ToShareExtendMap() (map[string]interface{}, error) { // Extend will extend the capacity of an existing share. ExtendResult contains only the error. // To extract it, call the ExtractErr method on the ExtendResult. // Client must have Microversion set; minimum supported microversion for Extend is 2.7. -func Extend(client *gophercloud.ServiceClient, id string, opts ExtendOptsBuilder) (r ExtendResult) { +func Extend(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ExtendOptsBuilder) (r ExtendResult) { b, err := opts.ToShareExtendMap() if err != nil { r.Err = err return } - resp, err := client.Post(extendURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, extendURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -342,14 +344,14 @@ func (opts ShrinkOpts) ToShareShrinkMap() (map[string]interface{}, error) { // Shrink will shrink the capacity of an existing share. ShrinkResult contains only the error. // To extract it, call the ExtractErr method on the ShrinkResult. // Client must have Microversion set; minimum supported microversion for Shrink is 2.7. -func Shrink(client *gophercloud.ServiceClient, id string, opts ShrinkOptsBuilder) (r ShrinkResult) { +func Shrink(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ShrinkOptsBuilder) (r ShrinkResult) { b, err := opts.ToShareShrinkMap() if err != nil { r.Err = err return } - resp, err := client.Post(shrinkURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, shrinkURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -382,13 +384,13 @@ func (opts UpdateOpts) ToShareUpdateMap() (map[string]interface{}, error) { // Update will update the Share with provided information. To extract the updated // Share from the response, call the Extract method on the UpdateResult. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToShareUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -397,16 +399,16 @@ func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder // GetMetadata retrieves metadata of the specified share. To extract the retrieved // metadata from the response, call the Extract method on the MetadataResult. -func GetMetadata(client *gophercloud.ServiceClient, id string) (r MetadataResult) { - resp, err := client.Get(getMetadataURL(client, id), &r.Body, nil) +func GetMetadata(ctx context.Context, client *gophercloud.ServiceClient, id string) (r MetadataResult) { + resp, err := client.Get(ctx, getMetadataURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetMetadatum retrieves a single metadata item of the specified share. To extract the retrieved // metadata from the response, call the Extract method on the GetMetadatumResult. -func GetMetadatum(client *gophercloud.ServiceClient, id, key string) (r GetMetadatumResult) { - resp, err := client.Get(getMetadatumURL(client, id, key), &r.Body, nil) +func GetMetadatum(ctx context.Context, client *gophercloud.ServiceClient, id, key string) (r GetMetadatumResult) { + resp, err := client.Get(ctx, getMetadatumURL(client, id, key), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -434,14 +436,14 @@ type SetMetadataOptsBuilder interface { // Existing metadata items are either kept or overwritten by the metadata from the request. // To extract the updated metadata from the response, call the Extract // method on the MetadataResult. -func SetMetadata(client *gophercloud.ServiceClient, id string, opts SetMetadataOptsBuilder) (r MetadataResult) { +func SetMetadata(ctx context.Context, client *gophercloud.ServiceClient, id string, opts SetMetadataOptsBuilder) (r MetadataResult) { b, err := opts.ToSetMetadataMap() if err != nil { r.Err = err return } - resp, err := client.Post(setMetadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, setMetadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -471,14 +473,14 @@ type UpdateMetadataOptsBuilder interface { // All existing metadata items are discarded and replaced by the metadata from the request. // To extract the updated metadata from the response, call the Extract // method on the MetadataResult. -func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) (r MetadataResult) { +func UpdateMetadata(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) (r MetadataResult) { b, err := opts.ToUpdateMetadataMap() if err != nil { r.Err = err return } - resp, err := client.Post(updateMetadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, updateMetadataURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -486,8 +488,8 @@ func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMet } // DeleteMetadatum deletes a single key-value pair from the metadata of the specified share. -func DeleteMetadatum(client *gophercloud.ServiceClient, id, key string) (r DeleteMetadatumResult) { - resp, err := client.Delete(deleteMetadatumURL(client, id, key), &gophercloud.RequestOpts{ +func DeleteMetadatum(ctx context.Context, client *gophercloud.ServiceClient, id, key string) (r DeleteMetadatumResult) { + resp, err := client.Delete(ctx, deleteMetadatumURL(client, id, key), &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -518,14 +520,14 @@ func (opts RevertOpts) ToShareRevertMap() (map[string]interface{}, error) { // Revert will revert the existing share to a Snapshot. RevertResult contains only the error. // To extract it, call the ExtractErr method on the RevertResult. // Client must have Microversion set; minimum supported microversion for Revert is 2.27. -func Revert(client *gophercloud.ServiceClient, id string, opts RevertOptsBuilder) (r RevertResult) { +func Revert(ctx context.Context, client *gophercloud.ServiceClient, id string, opts RevertOptsBuilder) (r RevertResult) { b, err := opts.ToShareRevertMap() if err != nil { r.Err = err return } - resp, err := client.Post(revertURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, revertURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -555,14 +557,14 @@ func (opts ResetStatusOpts) ToShareResetStatusMap() (map[string]interface{}, err // ResetStatus will reset the existing share status. ResetStatusResult contains only the error. // To extract it, call the ExtractErr method on the ResetStatusResult. // Client must have Microversion set; minimum supported microversion for ResetStatus is 2.7. -func ResetStatus(client *gophercloud.ServiceClient, id string, opts ResetStatusOptsBuilder) (r ResetStatusResult) { +func ResetStatus(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ResetStatusOptsBuilder) (r ResetStatusResult) { b, err := opts.ToShareResetStatusMap() if err != nil { r.Err = err return } - resp, err := client.Post(resetStatusURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, resetStatusURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -572,11 +574,11 @@ func ResetStatus(client *gophercloud.ServiceClient, id string, opts ResetStatusO // ForceDelete will delete the existing share in any state. ForceDeleteResult contains only the error. // To extract it, call the ExtractErr method on the ForceDeleteResult. // Client must have Microversion set; minimum supported microversion for ForceDelete is 2.7. -func ForceDelete(client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) { +func ForceDelete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) { b := map[string]interface{}{ "force_delete": nil, } - resp, err := client.Post(forceDeleteURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, forceDeleteURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -587,11 +589,11 @@ func ForceDelete(client *gophercloud.ServiceClient, id string) (r ForceDeleteRes // service without deleting the share. UnmanageResult contains only the error. // To extract it, call the ExtractErr method on the UnmanageResult. // Client must have Microversion set; minimum supported microversion for Unmanage is 2.7. -func Unmanage(client *gophercloud.ServiceClient, id string) (r UnmanageResult) { +func Unmanage(ctx context.Context, client *gophercloud.ServiceClient, id string) (r UnmanageResult) { b := map[string]interface{}{ "unmanage": nil, } - resp, err := client.Post(unmanageURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, unmanageURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/sharedfilesystems/v2/shares/testing/request_test.go b/openstack/sharedfilesystems/v2/shares/testing/request_test.go index abe2105df2..f9af3da84b 100644 --- a/openstack/sharedfilesystems/v2/shares/testing/request_test.go +++ b/openstack/sharedfilesystems/v2/shares/testing/request_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -16,7 +17,7 @@ func TestCreate(t *testing.T) { MockCreateResponse(t) options := &shares.CreateOpts{Size: 1, Name: "my_test_share", ShareProto: "NFS"} - n, err := shares.Create(client.ServiceClient(), options).Extract() + n, err := shares.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, "my_test_share") @@ -38,7 +39,7 @@ func TestUpdate(t *testing.T) { DisplayDescription: &description, IsPublic: &iFalse, } - n, err := shares.Update(client.ServiceClient(), shareID, options).Extract() + n, err := shares.Update(context.TODO(), client.ServiceClient(), shareID, options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, "my_new_test_share") @@ -52,7 +53,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - result := shares.Delete(client.ServiceClient(), shareID) + result := shares.Delete(context.TODO(), client.ServiceClient(), shareID) th.AssertNoErr(t, result.Err) } @@ -62,7 +63,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - s, err := shares.Get(client.ServiceClient(), shareID).Extract() + s, err := shares.Get(context.TODO(), client.ServiceClient(), shareID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s, &shares.Share{ AvailabilityZone: "nova", @@ -112,7 +113,7 @@ func TestListDetail(t *testing.T) { MockListDetailResponse(t) - allPages, err := shares.ListDetail(client.ServiceClient(), &shares.ListOpts{}).AllPages() + allPages, err := shares.ListDetail(client.ServiceClient(), &shares.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) @@ -173,7 +174,7 @@ func TestListExportLocationsSuccess(t *testing.T) { // Client c must have Microversion set; minimum supported microversion for List Export Locations is 2.9 c.Microversion = "2.9" - s, err := shares.ListExportLocations(c, shareID).Extract() + s, err := shares.ListExportLocations(context.TODO(), c, shareID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s, []shares.ExportLocation{ @@ -197,7 +198,7 @@ func TestGetExportLocationSuccess(t *testing.T) { // Client c must have Microversion set; minimum supported microversion for Get Export Location is 2.9 c.Microversion = "2.9" - s, err := shares.GetExportLocation(c, shareID, "80ed63fc-83bc-4afc-b881-da4a345ac83d").Extract() + s, err := shares.GetExportLocation(context.TODO(), c, shareID, "80ed63fc-83bc-4afc-b881-da4a345ac83d").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s, &shares.ExportLocation{ @@ -224,7 +225,7 @@ func TestGrantAcessSuccess(t *testing.T) { grantAccessReq.AccessTo = "0.0.0.0/0" grantAccessReq.AccessLevel = "rw" - s, err := shares.GrantAccess(c, shareID, grantAccessReq).Extract() + s, err := shares.GrantAccess(context.TODO(), c, shareID, grantAccessReq).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s, &shares.AccessRight{ @@ -250,7 +251,7 @@ func TestRevokeAccessSuccess(t *testing.T) { options := &shares.RevokeAccessOpts{AccessID: "a2f226a5-cee8-430b-8a03-78a59bd84ee8"} - err := shares.RevokeAccess(c, shareID, options).ExtractErr() + err := shares.RevokeAccess(context.TODO(), c, shareID, options).ExtractErr() th.AssertNoErr(t, err) } @@ -264,7 +265,7 @@ func TestListAccessRightsSuccess(t *testing.T) { // Client c must have Microversion set; minimum supported microversion for Grant Access is 2.7 c.Microversion = "2.7" - s, err := shares.ListAccessRights(c, shareID).Extract() + s, err := shares.ListAccessRights(context.TODO(), c, shareID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s, []shares.AccessRight{ @@ -290,7 +291,7 @@ func TestExtendSuccess(t *testing.T) { // Client c must have Microversion set; minimum supported microversion for Grant Access is 2.7 c.Microversion = "2.7" - err := shares.Extend(c, shareID, &shares.ExtendOpts{NewSize: 2}).ExtractErr() + err := shares.Extend(context.TODO(), c, shareID, &shares.ExtendOpts{NewSize: 2}).ExtractErr() th.AssertNoErr(t, err) } @@ -304,7 +305,7 @@ func TestShrinkSuccess(t *testing.T) { // Client c must have Microversion set; minimum supported microversion for Grant Access is 2.7 c.Microversion = "2.7" - err := shares.Shrink(c, shareID, &shares.ShrinkOpts{NewSize: 1}).ExtractErr() + err := shares.Shrink(context.TODO(), c, shareID, &shares.ShrinkOpts{NewSize: 1}).ExtractErr() th.AssertNoErr(t, err) } @@ -316,7 +317,7 @@ func TestGetMetadataSuccess(t *testing.T) { c := client.ServiceClient() - actual, err := shares.GetMetadata(c, shareID).Extract() + actual, err := shares.GetMetadata(context.TODO(), c, shareID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, map[string]string{"foo": "bar"}, actual) } @@ -329,7 +330,7 @@ func TestGetMetadatumSuccess(t *testing.T) { c := client.ServiceClient() - actual, err := shares.GetMetadatum(c, shareID, "foo").Extract() + actual, err := shares.GetMetadatum(context.TODO(), c, shareID, "foo").Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, map[string]string{"foo": "bar"}, actual) } @@ -342,7 +343,7 @@ func TestSetMetadataSuccess(t *testing.T) { c := client.ServiceClient() - actual, err := shares.SetMetadata(c, shareID, &shares.SetMetadataOpts{Metadata: map[string]string{"foo": "bar"}}).Extract() + actual, err := shares.SetMetadata(context.TODO(), c, shareID, &shares.SetMetadataOpts{Metadata: map[string]string{"foo": "bar"}}).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, map[string]string{"foo": "bar"}, actual) } @@ -355,7 +356,7 @@ func TestUpdateMetadataSuccess(t *testing.T) { c := client.ServiceClient() - actual, err := shares.UpdateMetadata(c, shareID, &shares.UpdateMetadataOpts{Metadata: map[string]string{"foo": "bar"}}).Extract() + actual, err := shares.UpdateMetadata(context.TODO(), c, shareID, &shares.UpdateMetadataOpts{Metadata: map[string]string{"foo": "bar"}}).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, map[string]string{"foo": "bar"}, actual) } @@ -368,7 +369,7 @@ func TestUnsetMetadataSuccess(t *testing.T) { c := client.ServiceClient() - err := shares.DeleteMetadatum(c, shareID, "foo").ExtractErr() + err := shares.DeleteMetadatum(context.TODO(), c, shareID, "foo").ExtractErr() th.AssertNoErr(t, err) } @@ -382,7 +383,7 @@ func TestRevertSuccess(t *testing.T) { // Client c must have Microversion set; minimum supported microversion for Revert is 2.27 c.Microversion = "2.27" - err := shares.Revert(c, shareID, &shares.RevertOpts{SnapshotID: "ddeac769-9742-497f-b985-5bcfa94a3fd6"}).ExtractErr() + err := shares.Revert(context.TODO(), c, shareID, &shares.RevertOpts{SnapshotID: "ddeac769-9742-497f-b985-5bcfa94a3fd6"}).ExtractErr() th.AssertNoErr(t, err) } @@ -396,7 +397,7 @@ func TestResetStatusSuccess(t *testing.T) { // Client c must have Microversion set; minimum supported microversion for ResetStatus is 2.7 c.Microversion = "2.7" - err := shares.ResetStatus(c, shareID, &shares.ResetStatusOpts{Status: "error"}).ExtractErr() + err := shares.ResetStatus(context.TODO(), c, shareID, &shares.ResetStatusOpts{Status: "error"}).ExtractErr() th.AssertNoErr(t, err) } @@ -410,7 +411,7 @@ func TestForceDeleteSuccess(t *testing.T) { // Client c must have Microversion set; minimum supported microversion for ForceDelete is 2.7 c.Microversion = "2.7" - err := shares.ForceDelete(c, shareID).ExtractErr() + err := shares.ForceDelete(context.TODO(), c, shareID).ExtractErr() th.AssertNoErr(t, err) } @@ -424,6 +425,6 @@ func TestUnmanageSuccess(t *testing.T) { // Client c must have Microversion set; minimum supported microversion for Unmanage is 2.7 c.Microversion = "2.7" - err := shares.Unmanage(c, shareID).ExtractErr() + err := shares.Unmanage(context.TODO(), c, shareID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/sharedfilesystems/v2/sharetransfers/requests.go b/openstack/sharedfilesystems/v2/sharetransfers/requests.go index fc5de44d51..01fa577708 100644 --- a/openstack/sharedfilesystems/v2/sharetransfers/requests.go +++ b/openstack/sharedfilesystems/v2/sharetransfers/requests.go @@ -1,6 +1,8 @@ package sharetransfers import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -27,13 +29,13 @@ func (opts CreateOpts) ToTransferCreateMap() (map[string]interface{}, error) { } // Create will create a share tranfer request based on the values in CreateOpts. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToTransferCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(transferURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, transferURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -56,13 +58,13 @@ func (opts AcceptOpts) ToAcceptMap() (map[string]interface{}, error) { } // Accept will accept a share tranfer request based on the values in AcceptOpts. -func Accept(client *gophercloud.ServiceClient, id string, opts AcceptOpts) (r AcceptResult) { +func Accept(ctx context.Context, client *gophercloud.ServiceClient, id string, opts AcceptOpts) (r AcceptResult) { b, err := opts.ToAcceptMap() if err != nil { r.Err = err return } - resp, err := client.Post(acceptURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, acceptURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -70,8 +72,8 @@ func Accept(client *gophercloud.ServiceClient, id string, opts AcceptOpts) (r Ac } // Delete deletes a share transfer. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), &gophercloud.RequestOpts{ +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), &gophercloud.RequestOpts{ // DELETE requests response with a 200 code, adding it here OkCodes: []int{200, 202, 204}, }) @@ -162,8 +164,8 @@ func ListDetail(client *gophercloud.ServiceClient, opts ListOptsBuilder) paginat // Get retrieves the Transfer with the provided ID. To extract the Transfer object // from the response, call the Extract method on the GetResult. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/sharedfilesystems/v2/sharetransfers/testing/requests_test.go b/openstack/sharedfilesystems/v2/sharetransfers/testing/requests_test.go index bd2e454b46..a0a2fefcfa 100644 --- a/openstack/sharedfilesystems/v2/sharetransfers/testing/requests_test.go +++ b/openstack/sharedfilesystems/v2/sharetransfers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2/openstack/sharedfilesystems/v2/sharetransfers" @@ -14,7 +15,7 @@ func TestCreateTransfer(t *testing.T) { defer th.TeardownHTTP() HandleCreateTransfer(t) - actual, err := sharetransfers.Create(client.ServiceClient(), TransferRequest).Extract() + actual, err := sharetransfers.Create(context.TODO(), client.ServiceClient(), TransferRequest).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, TransferResponse, *actual) } @@ -24,7 +25,7 @@ func TestAcceptTransfer(t *testing.T) { defer th.TeardownHTTP() HandleAcceptTransfer(t) - err := sharetransfers.Accept(client.ServiceClient(), TransferResponse.ID, AcceptRequest).ExtractErr() + err := sharetransfers.Accept(context.TODO(), client.ServiceClient(), TransferResponse.ID, AcceptRequest).ExtractErr() th.AssertNoErr(t, err) } @@ -33,7 +34,7 @@ func TestDeleteTransfer(t *testing.T) { defer th.TeardownHTTP() HandleDeleteTransfer(t) - err := sharetransfers.Delete(client.ServiceClient(), TransferResponse.ID).ExtractErr() + err := sharetransfers.Delete(context.TODO(), client.ServiceClient(), TransferResponse.ID).ExtractErr() th.AssertNoErr(t, err) } @@ -46,7 +47,7 @@ func TestListTransfers(t *testing.T) { expectedResponse[0].AuthKey = "" count := 0 - err := sharetransfers.List(client.ServiceClient(), &sharetransfers.ListOpts{AllTenants: true}).EachPage(func(page pagination.Page) (bool, error) { + err := sharetransfers.List(client.ServiceClient(), &sharetransfers.ListOpts{AllTenants: true}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := sharetransfers.ExtractTransfers(page) @@ -69,7 +70,7 @@ func TestListTransfersDetail(t *testing.T) { expectedResponse[0].AuthKey = "" count := 0 - err := sharetransfers.ListDetail(client.ServiceClient(), &sharetransfers.ListOpts{AllTenants: true}).EachPage(func(page pagination.Page) (bool, error) { + err := sharetransfers.ListDetail(client.ServiceClient(), &sharetransfers.ListOpts{AllTenants: true}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { count++ actual, err := sharetransfers.ExtractTransfers(page) @@ -91,7 +92,7 @@ func TestListTransfersAllPages(t *testing.T) { expectedResponse := TransferListResponse expectedResponse[0].AuthKey = "" - allPages, err := sharetransfers.List(client.ServiceClient(), &sharetransfers.ListOpts{AllTenants: true}).AllPages() + allPages, err := sharetransfers.List(client.ServiceClient(), &sharetransfers.ListOpts{AllTenants: true}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := sharetransfers.ExtractTransfers(allPages) th.AssertNoErr(t, err) @@ -106,7 +107,7 @@ func TestGetTransfer(t *testing.T) { expectedResponse := TransferResponse expectedResponse.AuthKey = "" - actual, err := sharetransfers.Get(client.ServiceClient(), TransferResponse.ID).Extract() + actual, err := sharetransfers.Get(context.TODO(), client.ServiceClient(), TransferResponse.ID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expectedResponse, *actual) } diff --git a/openstack/sharedfilesystems/v2/sharetypes/requests.go b/openstack/sharedfilesystems/v2/sharetypes/requests.go index 93c6c26177..ea6aab3bd5 100644 --- a/openstack/sharedfilesystems/v2/sharetypes/requests.go +++ b/openstack/sharedfilesystems/v2/sharetypes/requests.go @@ -1,6 +1,8 @@ package sharetypes import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -40,13 +42,13 @@ func (opts CreateOpts) ToShareTypeCreateMap() (map[string]interface{}, error) { // Create will create a new ShareType based on the values in CreateOpts. To // extract the ShareType object from the response, call the Extract method // on the CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToShareTypeCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -54,8 +56,8 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete will delete the existing ShareType with the provided ID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -96,15 +98,15 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa } // GetDefault will retrieve the default ShareType. -func GetDefault(client *gophercloud.ServiceClient) (r GetDefaultResult) { - resp, err := client.Get(getDefaultURL(client), &r.Body, nil) +func GetDefault(ctx context.Context, client *gophercloud.ServiceClient) (r GetDefaultResult) { + resp, err := client.Get(ctx, getDefaultURL(client), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // GetExtraSpecs will retrieve the extra specifications for a given ShareType. -func GetExtraSpecs(client *gophercloud.ServiceClient, id string) (r GetExtraSpecsResult) { - resp, err := client.Get(getExtraSpecsURL(client, id), &r.Body, nil) +func GetExtraSpecs(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetExtraSpecsResult) { + resp, err := client.Get(ctx, getExtraSpecsURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -129,14 +131,14 @@ func (opts SetExtraSpecsOpts) ToShareTypeSetExtraSpecsMap() (map[string]interfac // SetExtraSpecs will set new specifications for a ShareType based on the values // in SetExtraSpecsOpts. To extract the extra specifications object from the response, // call the Extract method on the SetExtraSpecsResult. -func SetExtraSpecs(client *gophercloud.ServiceClient, id string, opts SetExtraSpecsOptsBuilder) (r SetExtraSpecsResult) { +func SetExtraSpecs(ctx context.Context, client *gophercloud.ServiceClient, id string, opts SetExtraSpecsOptsBuilder) (r SetExtraSpecsResult) { b, err := opts.ToShareTypeSetExtraSpecsMap() if err != nil { r.Err = err return } - resp, err := client.Post(setExtraSpecsURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, setExtraSpecsURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -144,15 +146,15 @@ func SetExtraSpecs(client *gophercloud.ServiceClient, id string, opts SetExtraSp } // UnsetExtraSpecs will unset an extra specification for an existing ShareType. -func UnsetExtraSpecs(client *gophercloud.ServiceClient, id string, key string) (r UnsetExtraSpecsResult) { - resp, err := client.Delete(unsetExtraSpecsURL(client, id, key), nil) +func UnsetExtraSpecs(ctx context.Context, client *gophercloud.ServiceClient, id string, key string) (r UnsetExtraSpecsResult) { + resp, err := client.Delete(ctx, unsetExtraSpecsURL(client, id, key), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // ShowAccess will show access details for an existing ShareType. -func ShowAccess(client *gophercloud.ServiceClient, id string) (r ShowAccessResult) { - resp, err := client.Get(showAccessURL(client, id), &r.Body, nil) +func ShowAccess(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ShowAccessResult) { + resp, err := client.Get(ctx, showAccessURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -176,14 +178,14 @@ func (opts AccessOpts) ToAddAccessMap() (map[string]interface{}, error) { // AddAccess will add access to a ShareType based on the values // in AccessOpts. -func AddAccess(client *gophercloud.ServiceClient, id string, opts AddAccessOptsBuilder) (r AddAccessResult) { +func AddAccess(ctx context.Context, client *gophercloud.ServiceClient, id string, opts AddAccessOptsBuilder) (r AddAccessResult) { b, err := opts.ToAddAccessMap() if err != nil { r.Err = err return } - resp, err := client.Post(addAccessURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, addAccessURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -204,14 +206,14 @@ func (opts AccessOpts) ToRemoveAccessMap() (map[string]interface{}, error) { // RemoveAccess will remove access to a ShareType based on the values // in AccessOpts. -func RemoveAccess(client *gophercloud.ServiceClient, id string, opts RemoveAccessOptsBuilder) (r RemoveAccessResult) { +func RemoveAccess(ctx context.Context, client *gophercloud.ServiceClient, id string, opts RemoveAccessOptsBuilder) (r RemoveAccessResult) { b, err := opts.ToRemoveAccessMap() if err != nil { r.Err = err return } - resp, err := client.Post(removeAccessURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, removeAccessURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{200, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/sharedfilesystems/v2/sharetypes/testing/requests_test.go b/openstack/sharedfilesystems/v2/sharetypes/testing/requests_test.go index 9329e0694c..99d9c2af29 100644 --- a/openstack/sharedfilesystems/v2/sharetypes/testing/requests_test.go +++ b/openstack/sharedfilesystems/v2/sharetypes/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "github.com/gophercloud/gophercloud/v2" @@ -28,7 +29,7 @@ func TestCreate(t *testing.T) { ExtraSpecs: extraSpecs, } - st, err := sharetypes.Create(client.ServiceClient(), options).Extract() + st, err := sharetypes.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, st.Name, "my_new_share_type") @@ -41,7 +42,7 @@ func TestCreateFails(t *testing.T) { Name: "my_new_share_type", } - _, err := sharetypes.Create(client.ServiceClient(), options).Extract() + _, err := sharetypes.Create(context.TODO(), client.ServiceClient(), options).Extract() if _, ok := err.(gophercloud.ErrMissingInput); !ok { t.Fatal("ErrMissingInput was expected to occur") } @@ -54,7 +55,7 @@ func TestCreateFails(t *testing.T) { ExtraSpecs: extraSpecs, } - _, err = sharetypes.Create(client.ServiceClient(), options).Extract() + _, err = sharetypes.Create(context.TODO(), client.ServiceClient(), options).Extract() if _, ok := err.(gophercloud.ErrMissingInput); !ok { t.Fatal("ErrMissingInput was expected to occur") } @@ -66,7 +67,7 @@ func TestDelete(t *testing.T) { defer th.TeardownHTTP() MockDeleteResponse(t) - res := sharetypes.Delete(client.ServiceClient(), "shareTypeID") + res := sharetypes.Delete(context.TODO(), client.ServiceClient(), "shareTypeID") th.AssertNoErr(t, res.Err) } @@ -77,7 +78,7 @@ func TestList(t *testing.T) { MockListResponse(t) - allPages, err := sharetypes.List(client.ServiceClient(), &sharetypes.ListOpts{}).AllPages() + allPages, err := sharetypes.List(client.ServiceClient(), &sharetypes.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) actual, err := sharetypes.ExtractShareTypes(allPages) th.AssertNoErr(t, err) @@ -115,7 +116,7 @@ func TestGetDefault(t *testing.T) { RequiredExtraSpecs: map[string]interface{}(nil), } - actual, err := sharetypes.GetDefault(client.ServiceClient()).Extract() + actual, err := sharetypes.GetDefault(context.TODO(), client.ServiceClient()).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &expected, actual) } @@ -127,7 +128,7 @@ func TestGetExtraSpecs(t *testing.T) { MockGetExtraSpecsResponse(t) - st, err := sharetypes.GetExtraSpecs(client.ServiceClient(), "shareTypeID").Extract() + st, err := sharetypes.GetExtraSpecs(context.TODO(), client.ServiceClient(), "shareTypeID").Extract() th.AssertNoErr(t, err) th.AssertEquals(t, st["snapshot_support"], "True") @@ -146,7 +147,7 @@ func TestSetExtraSpecs(t *testing.T) { ExtraSpecs: map[string]interface{}{"my_key": "my_value"}, } - es, err := sharetypes.SetExtraSpecs(client.ServiceClient(), "shareTypeID", options).Extract() + es, err := sharetypes.SetExtraSpecs(context.TODO(), client.ServiceClient(), "shareTypeID", options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, es["my_key"], "my_value") @@ -158,7 +159,7 @@ func TestUnsetExtraSpecs(t *testing.T) { defer th.TeardownHTTP() MockUnsetExtraSpecsResponse(t) - res := sharetypes.UnsetExtraSpecs(client.ServiceClient(), "shareTypeID", "my_key") + res := sharetypes.UnsetExtraSpecs(context.TODO(), client.ServiceClient(), "shareTypeID", "my_key") th.AssertNoErr(t, res.Err) } @@ -180,7 +181,7 @@ func TestShowAccess(t *testing.T) { }, } - shareType, err := sharetypes.ShowAccess(client.ServiceClient(), "shareTypeID").Extract() + shareType, err := sharetypes.ShowAccess(context.TODO(), client.ServiceClient(), "shareTypeID").Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, expected, shareType) @@ -197,7 +198,7 @@ func TestAddAccess(t *testing.T) { Project: "e1284adea3ee4d2482af5ed214f3ad90", } - err := sharetypes.AddAccess(client.ServiceClient(), "shareTypeID", options).ExtractErr() + err := sharetypes.AddAccess(context.TODO(), client.ServiceClient(), "shareTypeID", options).ExtractErr() th.AssertNoErr(t, err) } @@ -212,6 +213,6 @@ func TestRemoveAccess(t *testing.T) { Project: "e1284adea3ee4d2482af5ed214f3ad90", } - err := sharetypes.RemoveAccess(client.ServiceClient(), "shareTypeID", options).ExtractErr() + err := sharetypes.RemoveAccess(context.TODO(), client.ServiceClient(), "shareTypeID", options).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/sharedfilesystems/v2/snapshots/requests.go b/openstack/sharedfilesystems/v2/snapshots/requests.go index efaccff78a..5e11d2cbc1 100644 --- a/openstack/sharedfilesystems/v2/snapshots/requests.go +++ b/openstack/sharedfilesystems/v2/snapshots/requests.go @@ -1,6 +1,8 @@ package snapshots import ( + "context" + "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/pagination" ) @@ -39,13 +41,13 @@ func (opts CreateOpts) ToSnapshotCreateMap() (map[string]interface{}, error) { // Create will create a new Snapshot based on the values in CreateOpts. To extract // the Snapshot object from the response, call the Extract method on the // CreateResult. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToSnapshotCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200, 201, 202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -114,15 +116,15 @@ func ListDetail(client *gophercloud.ServiceClient, opts ListOptsBuilder) paginat } // Delete will delete an existing Snapshot with the given UUID. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get will get a single snapshot with given UUID -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } @@ -151,13 +153,13 @@ func (opts UpdateOpts) ToSnapshotUpdateMap() (map[string]interface{}, error) { // Update will update the Snapshot with provided information. To extract the updated // Snapshot from the response, call the Extract method on the UpdateResult. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { +func Update(ctx context.Context, client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { b, err := opts.ToSnapshotUpdateMap() if err != nil { r.Err = err return } - resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Put(ctx, updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{ OkCodes: []int{200}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -188,14 +190,14 @@ func (opts ResetStatusOpts) ToSnapshotResetStatusMap() (map[string]interface{}, // ResetStatus will reset the existing snapshot status. ResetStatusResult contains only the error. // To extract it, call the ExtractErr method on the ResetStatusResult. -func ResetStatus(client *gophercloud.ServiceClient, id string, opts ResetStatusOptsBuilder) (r ResetStatusResult) { +func ResetStatus(ctx context.Context, client *gophercloud.ServiceClient, id string, opts ResetStatusOptsBuilder) (r ResetStatusResult) { b, err := opts.ToSnapshotResetStatusMap() if err != nil { r.Err = err return } - resp, err := client.Post(resetStatusURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, resetStatusURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -204,11 +206,11 @@ func ResetStatus(client *gophercloud.ServiceClient, id string, opts ResetStatusO // ForceDelete will delete the existing snapshot in any state. ForceDeleteResult contains only the error. // To extract it, call the ExtractErr method on the ForceDeleteResult. -func ForceDelete(client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) { +func ForceDelete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) { b := map[string]interface{}{ "force_delete": nil, } - resp, err := client.Post(forceDeleteURL(client, id), b, nil, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, forceDeleteURL(client, id), b, nil, &gophercloud.RequestOpts{ OkCodes: []int{202}, }) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) diff --git a/openstack/sharedfilesystems/v2/snapshots/testing/request_test.go b/openstack/sharedfilesystems/v2/snapshots/testing/request_test.go index 2d0518e35e..759ad0d78d 100644 --- a/openstack/sharedfilesystems/v2/snapshots/testing/request_test.go +++ b/openstack/sharedfilesystems/v2/snapshots/testing/request_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "testing" "time" @@ -16,7 +17,7 @@ func TestCreate(t *testing.T) { MockCreateResponse(t) options := &snapshots.CreateOpts{ShareID: shareID, Name: "test snapshot", Description: "test description"} - n, err := snapshots.Create(client.ServiceClient(), options).Extract() + n, err := snapshots.Create(context.TODO(), client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, "test snapshot") @@ -38,7 +39,7 @@ func TestUpdate(t *testing.T) { DisplayName: &name, DisplayDescription: &description, } - n, err := snapshots.Update(client.ServiceClient(), snapshotID, options).Extract() + n, err := snapshots.Update(context.TODO(), client.ServiceClient(), snapshotID, options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, "my_new_test_snapshot") @@ -51,7 +52,7 @@ func TestDelete(t *testing.T) { MockDeleteResponse(t) - result := snapshots.Delete(client.ServiceClient(), snapshotID) + result := snapshots.Delete(context.TODO(), client.ServiceClient(), snapshotID) th.AssertNoErr(t, result.Err) } @@ -61,7 +62,7 @@ func TestGet(t *testing.T) { MockGetResponse(t) - s, err := snapshots.Get(client.ServiceClient(), snapshotID).Extract() + s, err := snapshots.Get(context.TODO(), client.ServiceClient(), snapshotID).Extract() th.AssertNoErr(t, err) th.AssertDeepEquals(t, s, &snapshots.Snapshot{ ID: snapshotID, @@ -93,7 +94,7 @@ func TestListDetail(t *testing.T) { MockListDetailResponse(t) - allPages, err := snapshots.ListDetail(client.ServiceClient(), &snapshots.ListOpts{}).AllPages() + allPages, err := snapshots.ListDetail(client.ServiceClient(), &snapshots.ListOpts{}).AllPages(context.TODO()) th.AssertNoErr(t, err) @@ -134,7 +135,7 @@ func TestResetStatusSuccess(t *testing.T) { c := client.ServiceClient() - err := snapshots.ResetStatus(c, snapshotID, &snapshots.ResetStatusOpts{Status: "error"}).ExtractErr() + err := snapshots.ResetStatus(context.TODO(), c, snapshotID, &snapshots.ResetStatusOpts{Status: "error"}).ExtractErr() th.AssertNoErr(t, err) } @@ -146,6 +147,6 @@ func TestForceDeleteSuccess(t *testing.T) { c := client.ServiceClient() - err := snapshots.ForceDelete(c, snapshotID).ExtractErr() + err := snapshots.ForceDelete(context.TODO(), c, snapshotID).ExtractErr() th.AssertNoErr(t, err) } diff --git a/openstack/testing/client_test.go b/openstack/testing/client_test.go index 9efa0ac182..2c158dbfc3 100644 --- a/openstack/testing/client_test.go +++ b/openstack/testing/client_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -55,7 +56,7 @@ func TestAuthenticatedClientV3(t *testing.T) { TenantName: "project", IdentityEndpoint: th.Endpoint(), } - client, err := openstack.AuthenticatedClient(options) + client, err := openstack.AuthenticatedClient(context.TODO(), options) th.AssertNoErr(t, err) th.CheckEquals(t, ID, client.TokenID) } @@ -158,7 +159,7 @@ func TestAuthenticatedClientV2(t *testing.T) { Password: "secret", IdentityEndpoint: th.Endpoint(), } - client, err := openstack.AuthenticatedClient(options) + client, err := openstack.AuthenticatedClient(context.TODO(), options) th.AssertNoErr(t, err) th.CheckEquals(t, "01234567890", client.TokenID) } @@ -283,7 +284,7 @@ func TestIdentityAdminV3Client(t *testing.T) { DomainID: "12345", IdentityEndpoint: th.Endpoint(), } - pc, err := openstack.AuthenticatedClient(options) + pc, err := openstack.AuthenticatedClient(context.TODO(), options) th.AssertNoErr(t, err) sc, err := openstack.NewIdentityV3(pc, gophercloud.EndpointOpts{ Availability: gophercloud.AvailabilityAdmin, @@ -300,7 +301,7 @@ func testAuthenticatedClientFails(t *testing.T, endpoint string) { TenantName: "project", IdentityEndpoint: endpoint, } - _, err := openstack.AuthenticatedClient(options) + _, err := openstack.AuthenticatedClient(context.TODO(), options) if err == nil { t.Fatal("expected error but call succeeded") } diff --git a/openstack/utils/choose_version.go b/openstack/utils/choose_version.go index d3c27e241b..6c720e57ef 100644 --- a/openstack/utils/choose_version.go +++ b/openstack/utils/choose_version.go @@ -1,6 +1,7 @@ package utils import ( + "context" "fmt" "strconv" "strings" @@ -27,7 +28,7 @@ var goodStatus = map[string]bool{ // endpoint that is among the recognized versions, it will be used regardless of priority. // It returns the highest-Priority Version, OR exact match with client endpoint, // among the alternatives that are provided, as well as its corresponding endpoint. -func ChooseVersion(client *gophercloud.ProviderClient, recognized []*Version) (*Version, string, error) { +func ChooseVersion(ctx context.Context, client *gophercloud.ProviderClient, recognized []*Version) (*Version, string, error) { type linkResp struct { Href string `json:"href"` Rel string `json:"rel"` @@ -63,7 +64,7 @@ func ChooseVersion(client *gophercloud.ProviderClient, recognized []*Version) (* } var resp response - _, err := client.Request("GET", client.IdentityBase, &gophercloud.RequestOpts{ + _, err := client.Request(ctx, "GET", client.IdentityBase, &gophercloud.RequestOpts{ JSONResponse: &resp, OkCodes: []int{200, 300}, }) @@ -122,7 +123,7 @@ type SupportedMicroversions struct { } // GetSupportedMicroversions returns the minimum and maximum microversion that is supported by the ServiceClient Endpoint. -func GetSupportedMicroversions(client *gophercloud.ServiceClient) (SupportedMicroversions, error) { +func GetSupportedMicroversions(ctx context.Context, client *gophercloud.ServiceClient) (SupportedMicroversions, error) { type valueResp struct { ID string `json:"id"` Status string `json:"status"` @@ -137,7 +138,7 @@ func GetSupportedMicroversions(client *gophercloud.ServiceClient) (SupportedMicr var minVersion, maxVersion string var supportedMicroversions SupportedMicroversions var resp response - _, err := client.Get(client.Endpoint, &resp, &gophercloud.RequestOpts{ + _, err := client.Get(ctx, client.Endpoint, &resp, &gophercloud.RequestOpts{ OkCodes: []int{200, 300}, }) @@ -178,8 +179,8 @@ func GetSupportedMicroversions(client *gophercloud.ServiceClient) (SupportedMicr // RequireMicroversion checks that the required microversion is supported and // returns a ServiceClient with the microversion set. -func RequireMicroversion(client gophercloud.ServiceClient, required string) (gophercloud.ServiceClient, error) { - supportedMicroversions, err := GetSupportedMicroversions(&client) +func RequireMicroversion(ctx context.Context, client gophercloud.ServiceClient, required string) (gophercloud.ServiceClient, error) { + supportedMicroversions, err := GetSupportedMicroversions(ctx, &client) if err != nil { return client, fmt.Errorf("unable to determine supported microversions: %w", err) } diff --git a/openstack/utils/testing/choose_version_test.go b/openstack/utils/testing/choose_version_test.go index 53e76a6523..36d8ac37ec 100644 --- a/openstack/utils/testing/choose_version_test.go +++ b/openstack/utils/testing/choose_version_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "strings" @@ -194,7 +195,7 @@ func TestChooseVersion(t *testing.T) { IdentityBase: testhelper.Endpoint(), IdentityEndpoint: "", } - v, endpoint, err := utils.ChooseVersion(c, []*utils.Version{v2, v3}) + v, endpoint, err := utils.ChooseVersion(context.TODO(), c, []*utils.Version{v2, v3}) if err != nil { t.Fatalf("Unexpected error from ChooseVersion: %v", err) @@ -222,7 +223,7 @@ func TestChooseVersionOpinionatedLink(t *testing.T) { IdentityBase: testhelper.Endpoint(), IdentityEndpoint: testhelper.Endpoint() + "v2.0/", } - v, endpoint, err := utils.ChooseVersion(c, []*utils.Version{v2, v3}) + v, endpoint, err := utils.ChooseVersion(context.TODO(), c, []*utils.Version{v2, v3}) if err != nil { t.Fatalf("Unexpected error from ChooseVersion: %v", err) } @@ -248,7 +249,7 @@ func TestChooseVersionFromSuffix(t *testing.T) { IdentityBase: testhelper.Endpoint(), IdentityEndpoint: testhelper.Endpoint() + "v2.0/", } - v, endpoint, err := utils.ChooseVersion(c, []*utils.Version{v2, v3}) + v, endpoint, err := utils.ChooseVersion(context.TODO(), c, []*utils.Version{v2, v3}) if err != nil { t.Fatalf("Unexpected error from ChooseVersion: %v", err) } @@ -315,7 +316,7 @@ func TestGetSupportedVersions(t *testing.T) { Endpoint: test.Endpoint, } - supported, err := utils.GetSupportedMicroversions(client) + supported, err := utils.GetSupportedMicroversions(context.TODO(), client) if test.ExpectedErr { if err == nil { diff --git a/openstack/workflow/v2/crontriggers/requests.go b/openstack/workflow/v2/crontriggers/requests.go index 851c8c9b35..a6fc577aa4 100644 --- a/openstack/workflow/v2/crontriggers/requests.go +++ b/openstack/workflow/v2/crontriggers/requests.go @@ -1,6 +1,7 @@ package crontriggers import ( + "context" "encoding/json" "fmt" "net/url" @@ -59,29 +60,29 @@ func (opts CreateOpts) ToCronTriggerCreateMap() (map[string]interface{}, error) } // Create requests the creation of a new cron trigger. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToCronTriggerCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, nil) + resp, err := client.Post(ctx, createURL(client), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete deletes the specified cron trigger. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves details of a single cron trigger. // Use Extract to convert its result into an CronTrigger. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/workflow/v2/crontriggers/testing/requests_test.go b/openstack/workflow/v2/crontriggers/testing/requests_test.go index b4f092823b..276031dd8b 100644 --- a/openstack/workflow/v2/crontriggers/testing/requests_test.go +++ b/openstack/workflow/v2/crontriggers/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "net/url" @@ -57,7 +58,7 @@ func TestCreateCronTrigger(t *testing.T) { }, } - actual, err := crontriggers.Create(fake.ServiceClient(), opts).Extract() + actual, err := crontriggers.Create(context.TODO(), fake.ServiceClient(), opts).Extract() if err != nil { t.Fatalf("Unable to create cron trigger: %v", err) } @@ -98,7 +99,7 @@ func TestDeleteCronTrigger(t *testing.T) { w.WriteHeader(http.StatusAccepted) }) - res := crontriggers.Delete(fake.ServiceClient(), "0520ffd8-f7f1-4f2e-845b-55d953a1cf46") + res := crontriggers.Delete(context.TODO(), fake.ServiceClient(), "0520ffd8-f7f1-4f2e-845b-55d953a1cf46") th.AssertNoErr(t, res.Err) } @@ -128,7 +129,7 @@ func TestGetCronTrigger(t *testing.T) { } `) }) - actual, err := crontriggers.Get(fake.ServiceClient(), "0520ffd8-f7f1-4f2e-845b-55d953a1cf46").Extract() + actual, err := crontriggers.Get(context.TODO(), fake.ServiceClient(), "0520ffd8-f7f1-4f2e-845b-55d953a1cf46").Extract() if err != nil { t.Fatalf("Unable to get cron trigger: %v", err) } @@ -199,7 +200,7 @@ func TestListCronTriggers(t *testing.T) { }) pages := 0 // Get all cron triggers - err := crontriggers.List(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := crontriggers.List(fake.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := crontriggers.ExtractCronTriggers(page) if err != nil { diff --git a/openstack/workflow/v2/executions/requests.go b/openstack/workflow/v2/executions/requests.go index d9e3e7ac19..ff18f9cd3e 100644 --- a/openstack/workflow/v2/executions/requests.go +++ b/openstack/workflow/v2/executions/requests.go @@ -1,6 +1,7 @@ package executions import ( + "context" "encoding/json" "fmt" "net/url" @@ -49,29 +50,29 @@ func (opts CreateOpts) ToExecutionCreateMap() (map[string]interface{}, error) { } // Create requests the creation of a new execution. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToExecutionCreateMap() if err != nil { r.Err = err return } - resp, err := client.Post(createURL(client), b, &r.Body, nil) + resp, err := client.Post(ctx, createURL(client), b, &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves details of a single execution. // Use ExtractExecution to convert its result into an Execution. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete deletes the specified execution. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/workflow/v2/executions/testing/requests_test.go b/openstack/workflow/v2/executions/testing/requests_test.go index 841739d730..c51196ffb5 100644 --- a/openstack/workflow/v2/executions/testing/requests_test.go +++ b/openstack/workflow/v2/executions/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "net/url" @@ -53,7 +54,7 @@ func TestCreateExecution(t *testing.T) { Description: "description", } - actual, err := executions.Create(fake.ServiceClient(), opts).Extract() + actual, err := executions.Create(context.TODO(), fake.ServiceClient(), opts).Extract() if err != nil { t.Fatalf("Unable to create execution: %v", err) } @@ -112,7 +113,7 @@ func TestGetExecution(t *testing.T) { `) }) - actual, err := executions.Get(fake.ServiceClient(), "50bb59f1-eb77-4017-a77f-6d575b002667").Extract() + actual, err := executions.Get(context.TODO(), fake.ServiceClient(), "50bb59f1-eb77-4017-a77f-6d575b002667").Extract() if err != nil { t.Fatalf("Unable to get execution: %v", err) } @@ -149,7 +150,7 @@ func TestDeleteExecution(t *testing.T) { th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) w.WriteHeader(http.StatusAccepted) }) - res := executions.Delete(fake.ServiceClient(), "1") + res := executions.Delete(context.TODO(), fake.ServiceClient(), "1") th.AssertNoErr(t, res.Err) } @@ -193,7 +194,7 @@ func TestListExecutions(t *testing.T) { }) pages := 0 // Get all executions - err := executions.List(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := executions.List(fake.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := executions.ExtractExecutions(page) if err != nil { diff --git a/openstack/workflow/v2/workflows/requests.go b/openstack/workflow/v2/workflows/requests.go index 4849ba5fb0..279c8097ac 100644 --- a/openstack/workflow/v2/workflows/requests.go +++ b/openstack/workflow/v2/workflows/requests.go @@ -1,6 +1,7 @@ package workflows import ( + "context" "fmt" "io" "net/url" @@ -37,7 +38,7 @@ func (opts CreateOpts) ToWorkflowCreateParams() (io.Reader, string, error) { } // Create requests the creation of a new execution. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { +func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { url := createURL(client) var b io.Reader if opts != nil { @@ -50,7 +51,7 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create b = tmpB } - resp, err := client.Post(url, b, &r.Body, &gophercloud.RequestOpts{ + resp, err := client.Post(ctx, url, b, &r.Body, &gophercloud.RequestOpts{ MoreHeaders: map[string]string{ "Content-Type": "text/plain", "Accept": "", // Drop default JSON Accept header @@ -61,16 +62,16 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create } // Delete deletes the specified execution. -func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) { - resp, err := client.Delete(deleteURL(client, id), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, id string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, id), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Get retrieves details of a single execution. // Use Extract to convert its result into an Workflow. -func Get(client *gophercloud.ServiceClient, id string) (r GetResult) { - resp, err := client.Get(getURL(client, id), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, id string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, id), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } diff --git a/openstack/workflow/v2/workflows/testing/requests_test.go b/openstack/workflow/v2/workflows/testing/requests_test.go index f6091c483e..1e516010ab 100644 --- a/openstack/workflow/v2/workflows/testing/requests_test.go +++ b/openstack/workflow/v2/workflows/testing/requests_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "net/url" @@ -69,7 +70,7 @@ workflow_echo: Definition: strings.NewReader(definition), } - actual, err := workflows.Create(fake.ServiceClient(), opts).Extract() + actual, err := workflows.Create(context.TODO(), fake.ServiceClient(), opts).Extract() if err != nil { t.Fatalf("Unable to create workflow: %v", err) } @@ -106,7 +107,7 @@ func TestDeleteWorkflow(t *testing.T) { w.WriteHeader(http.StatusAccepted) }) - res := workflows.Delete(fake.ServiceClient(), "604a3a1e-94e3-4066-a34a-aa56873ef236") + res := workflows.Delete(context.TODO(), fake.ServiceClient(), "604a3a1e-94e3-4066-a34a-aa56873ef236") th.AssertNoErr(t, res.Err) } @@ -132,7 +133,7 @@ func TestGetWorkflow(t *testing.T) { } `) }) - actual, err := workflows.Get(fake.ServiceClient(), "1").Extract() + actual, err := workflows.Get(context.TODO(), fake.ServiceClient(), "1").Extract() if err != nil { t.Fatalf("Unable to get workflow: %v", err) } @@ -191,7 +192,7 @@ func TestListWorkflows(t *testing.T) { }) pages := 0 // Get all workflows - err := workflows.List(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) { + err := workflows.List(fake.ServiceClient(), nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { pages++ actual, err := workflows.ExtractWorkflows(page) if err != nil { diff --git a/pagination/http.go b/pagination/http.go index 7781df4528..0ec799e903 100644 --- a/pagination/http.go +++ b/pagination/http.go @@ -53,16 +53,11 @@ func PageResultFromParsed(resp *http.Response, body interface{}) PageResult { } } -// RequestWithContext performs an HTTP request and extracts the http.Response from the result. -func RequestWithContext(ctx context.Context, client *gophercloud.ServiceClient, headers map[string]string, url string) (*http.Response, error) { - return client.GetWithContext(ctx, url, nil, &gophercloud.RequestOpts{ +// Request performs an HTTP request and extracts the http.Response from the result. +func Request(ctx context.Context, client *gophercloud.ServiceClient, headers map[string]string, url string) (*http.Response, error) { + return client.Get(ctx, url, nil, &gophercloud.RequestOpts{ MoreHeaders: headers, OkCodes: []int{200, 204, 300}, KeepResponseBody: true, }) } - -// Request is a compatibility wrapper around RequestWithContext. -func Request(client *gophercloud.ServiceClient, headers map[string]string, url string) (*http.Response, error) { - return RequestWithContext(context.Background(), client, headers, url) -} diff --git a/pagination/pager.go b/pagination/pager.go index 107279bb57..8048f9f74c 100644 --- a/pagination/pager.go +++ b/pagination/pager.go @@ -71,7 +71,7 @@ func (p Pager) WithPageCreator(createPage func(r PageResult) Page) Pager { } func (p Pager) fetchNextPage(ctx context.Context, url string) (Page, error) { - resp, err := RequestWithContext(ctx, p.client, p.Headers, url) + resp, err := Request(ctx, p.client, p.Headers, url) if err != nil { return nil, err } @@ -84,10 +84,10 @@ func (p Pager) fetchNextPage(ctx context.Context, url string) (Page, error) { return p.createPage(remembered), nil } -// EachPageWithContext iterates over each page returned by a Pager, yielding -// one at a time to a handler function. Return "false" from the handler to -// prematurely stop iterating. -func (p Pager) EachPageWithContext(ctx context.Context, handler func(context.Context, Page) (bool, error)) error { +// EachPage iterates over each page returned by a Pager, yielding one at a time +// to a handler function. Return "false" from the handler to prematurely stop +// iterating. +func (p Pager) EachPage(ctx context.Context, handler func(context.Context, Page) (bool, error)) error { if p.Err != nil { return p.Err } @@ -133,16 +133,9 @@ func (p Pager) EachPageWithContext(ctx context.Context, handler func(context.Con } } -// EachPage is a compatibility wrapper around EachPageWithContext. -func (p Pager) EachPage(handler func(Page) (bool, error)) error { - return p.EachPageWithContext(context.Background(), func(_ context.Context, p Page) (bool, error) { - return handler(p) - }) -} - -// AllPagesWithContext returns all the pages from a `List` operation in a single page, +// AllPages returns all the pages from a `List` operation in a single page, // allowing the user to retrieve all the pages at once. -func (p Pager) AllPagesWithContext(ctx context.Context) (Page, error) { +func (p Pager) AllPages(ctx context.Context) (Page, error) { if p.Err != nil { return nil, p.Err } @@ -175,7 +168,7 @@ func (p Pager) AllPagesWithContext(ctx context.Context) (Page, error) { // key is the map key for the page body if the body type is `map[string]interface{}`. var key string // Iterate over the pages to concatenate the bodies. - err = p.EachPage(func(page Page) (bool, error) { + err = p.EachPage(ctx, func(_ context.Context, page Page) (bool, error) { b := page.GetBody().(map[string]interface{}) for k, v := range b { // If it's a linked page, we don't want the `links`, we want the other one. @@ -198,7 +191,7 @@ func (p Pager) AllPagesWithContext(ctx context.Context) (Page, error) { body.SetMapIndex(reflect.ValueOf(key), reflect.ValueOf(pagesSlice)) case []byte: // Iterate over the pages to concatenate the bodies. - err = p.EachPage(func(page Page) (bool, error) { + err = p.EachPage(ctx, func(_ context.Context, page Page) (bool, error) { b := page.GetBody().([]byte) pagesSlice = append(pagesSlice, b) // seperate pages with a comma @@ -222,7 +215,7 @@ func (p Pager) AllPagesWithContext(ctx context.Context) (Page, error) { body.SetBytes(b) case []interface{}: // Iterate over the pages to concatenate the bodies. - err = p.EachPage(func(page Page) (bool, error) { + err = p.EachPage(ctx, func(_ context.Context, page Page) (bool, error) { b := page.GetBody().([]interface{}) pagesSlice = append(pagesSlice, b...) return true, nil @@ -261,8 +254,3 @@ func (p Pager) AllPagesWithContext(ctx context.Context) (Page, error) { // `Extract*` methods will work. return page.Elem().Interface().(Page), err } - -// AllPages is a compatibility wrapper around AllPagesWithContext. -func (p Pager) AllPages() (Page, error) { - return p.AllPagesWithContext(context.Background()) -} diff --git a/pagination/testing/linked_test.go b/pagination/testing/linked_test.go index 93e5278b47..f73c3e14e2 100644 --- a/pagination/testing/linked_test.go +++ b/pagination/testing/linked_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "reflect" @@ -61,7 +62,7 @@ func TestEnumerateLinked(t *testing.T) { defer testhelper.TeardownHTTP() callCount := 0 - err := pager.EachPage(func(page pagination.Page) (bool, error) { + err := pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { actual, err := ExtractLinkedInts(page) if err != nil { return false, err @@ -102,7 +103,7 @@ func TestAllPagesLinked(t *testing.T) { pager := createLinked(t) defer testhelper.TeardownHTTP() - page, err := pager.AllPages() + page, err := pager.AllPages(context.TODO()) testhelper.AssertNoErr(t, err) expected := []int{1, 2, 3, 4, 5, 6, 7, 8, 9} diff --git a/pagination/testing/marker_test.go b/pagination/testing/marker_test.go index 2ca5035ecc..a8a01fe9ca 100644 --- a/pagination/testing/marker_test.go +++ b/pagination/testing/marker_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "strings" @@ -83,7 +84,7 @@ func TestEnumerateMarker(t *testing.T) { defer testhelper.TeardownHTTP() callCount := 0 - err := pager.EachPage(func(page pagination.Page) (bool, error) { + err := pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { actual, err := ExtractMarkerStrings(page) if err != nil { return false, err @@ -117,7 +118,7 @@ func TestAllPagesMarker(t *testing.T) { pager := createMarkerPaged(t) defer testhelper.TeardownHTTP() - page, err := pager.AllPages() + page, err := pager.AllPages(context.TODO()) testhelper.AssertNoErr(t, err) expected := []string{"aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg", "hhh", "iii"} diff --git a/pagination/testing/single_test.go b/pagination/testing/single_test.go index 094ed85270..21daedff0a 100644 --- a/pagination/testing/single_test.go +++ b/pagination/testing/single_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -52,7 +53,7 @@ func TestEnumerateSinglePaged(t *testing.T) { pager := setupSinglePaged() defer testhelper.TeardownHTTP() - err := pager.EachPage(func(page pagination.Page) (bool, error) { + err := pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { callCount++ expected := []int{1, 2, 3} @@ -69,7 +70,7 @@ func TestAllPagesSingle(t *testing.T) { pager := setupSinglePaged() defer testhelper.TeardownHTTP() - page, err := pager.AllPages() + page, err := pager.AllPages(context.TODO()) testhelper.AssertNoErr(t, err) expected := []int{1, 2, 3} diff --git a/provider_client.go b/provider_client.go index 1309ecbcdb..f2fb077b8c 100644 --- a/provider_client.go +++ b/provider_client.go @@ -355,19 +355,14 @@ type requestState struct { var applicationJSON = "application/json" -// RequestWithContext performs an HTTP request using the ProviderClient's +// Request performs an HTTP request using the ProviderClient's // current HTTPClient. An authentication header will automatically be provided. -func (client *ProviderClient) RequestWithContext(ctx context.Context, method, url string, options *RequestOpts) (*http.Response, error) { +func (client *ProviderClient) Request(ctx context.Context, method, url string, options *RequestOpts) (*http.Response, error) { return client.doRequest(ctx, method, url, options, &requestState{ hasReauthenticated: false, }) } -// Request is a compatibility wrapper for Request. -func (client *ProviderClient) Request(method, url string, options *RequestOpts) (*http.Response, error) { - return client.RequestWithContext(context.Background(), method, url, options) -} - func (client *ProviderClient) doRequest(ctx context.Context, method, url string, options *RequestOpts, state *requestState) (*http.Response, error) { var body io.Reader var contentType *string diff --git a/service_client.go b/service_client.go index b8e6fd1a38..61834cc613 100644 --- a/service_client.go +++ b/service_client.go @@ -60,88 +60,58 @@ func (client *ServiceClient) initReqOpts(JSONBody interface{}, JSONResponse inte } } -// GetWithContext calls `Request` with the "GET" HTTP verb. -func (client *ServiceClient) GetWithContext(ctx context.Context, url string, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { +// Get calls `Request` with the "GET" HTTP verb. +func (client *ServiceClient) Get(ctx context.Context, url string, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { if opts == nil { opts = new(RequestOpts) } client.initReqOpts(nil, JSONResponse, opts) - return client.RequestWithContext(ctx, "GET", url, opts) + return client.Request(ctx, "GET", url, opts) } -// Get is a compatibility wrapper for GetWithContext. -func (client *ServiceClient) Get(url string, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { - return client.GetWithContext(context.Background(), url, JSONResponse, opts) -} - -// PostWithContext calls `Request` with the "POST" HTTP verb. -func (client *ServiceClient) PostWithContext(ctx context.Context, url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { +// Post calls `Request` with the "POST" HTTP verb. +func (client *ServiceClient) Post(ctx context.Context, url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { if opts == nil { opts = new(RequestOpts) } client.initReqOpts(JSONBody, JSONResponse, opts) - return client.RequestWithContext(ctx, "POST", url, opts) -} - -// Post is a compatibility wrapper for PostWithContext. -func (client *ServiceClient) Post(url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { - return client.PostWithContext(context.Background(), url, JSONBody, JSONResponse, opts) + return client.Request(ctx, "POST", url, opts) } -// PutWithContext calls `Request` with the "PUT" HTTP verb. -func (client *ServiceClient) PutWithContext(ctx context.Context, url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { +// Put calls `Request` with the "PUT" HTTP verb. +func (client *ServiceClient) Put(ctx context.Context, url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { if opts == nil { opts = new(RequestOpts) } client.initReqOpts(JSONBody, JSONResponse, opts) - return client.RequestWithContext(ctx, "PUT", url, opts) + return client.Request(ctx, "PUT", url, opts) } -// Put is a compatibility wrapper for PurWithContext. -func (client *ServiceClient) Put(url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { - return client.PutWithContext(context.Background(), url, JSONBody, JSONResponse, opts) -} - -// PatchWithContext calls `Request` with the "PATCH" HTTP verb. -func (client *ServiceClient) PatchWithContext(ctx context.Context, url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { +// Patch calls `Request` with the "PATCH" HTTP verb. +func (client *ServiceClient) Patch(ctx context.Context, url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { if opts == nil { opts = new(RequestOpts) } client.initReqOpts(JSONBody, JSONResponse, opts) - return client.RequestWithContext(ctx, "PATCH", url, opts) -} - -// Patch is a compatibility wrapper for PatchWithContext. -func (client *ServiceClient) Patch(url string, JSONBody interface{}, JSONResponse interface{}, opts *RequestOpts) (*http.Response, error) { - return client.PatchWithContext(context.Background(), url, JSONBody, JSONResponse, opts) + return client.Request(ctx, "PATCH", url, opts) } -// DeleteWithContext calls `Request` with the "DELETE" HTTP verb. -func (client *ServiceClient) DeleteWithContext(ctx context.Context, url string, opts *RequestOpts) (*http.Response, error) { +// Delete calls `Request` with the "DELETE" HTTP verb. +func (client *ServiceClient) Delete(ctx context.Context, url string, opts *RequestOpts) (*http.Response, error) { if opts == nil { opts = new(RequestOpts) } client.initReqOpts(nil, nil, opts) - return client.RequestWithContext(ctx, "DELETE", url, opts) -} - -// Delete is a compatibility wrapper for DeleteWithContext. -func (client *ServiceClient) Delete(url string, opts *RequestOpts) (*http.Response, error) { - return client.DeleteWithContext(context.Background(), url, opts) + return client.Request(ctx, "DELETE", url, opts) } -// HeadWithContext calls `Request` with the "HEAD" HTTP verb. -func (client *ServiceClient) HeadWithContext(ctx context.Context, url string, opts *RequestOpts) (*http.Response, error) { +// Head calls `Request` with the "HEAD" HTTP verb. +func (client *ServiceClient) Head(ctx context.Context, url string, opts *RequestOpts) (*http.Response, error) { if opts == nil { opts = new(RequestOpts) } client.initReqOpts(nil, nil, opts) - return client.RequestWithContext(ctx, "HEAD", url, opts) -} - -// Head is a compatibility wrapper for HeadWithContext. -func (client *ServiceClient) Head(url string, opts *RequestOpts) (*http.Response, error) { - return client.HeadWithContext(context.Background(), url, opts) + return client.Request(ctx, "HEAD", url, opts) } func (client *ServiceClient) setMicroversionHeader(opts *RequestOpts) { @@ -164,7 +134,7 @@ func (client *ServiceClient) setMicroversionHeader(opts *RequestOpts) { } // Request carries out the HTTP operation for the service client -func (client *ServiceClient) RequestWithContext(ctx context.Context, method, url string, options *RequestOpts) (*http.Response, error) { +func (client *ServiceClient) Request(ctx context.Context, method, url string, options *RequestOpts) (*http.Response, error) { if options.MoreHeaders == nil { options.MoreHeaders = make(map[string]string) } @@ -182,12 +152,7 @@ func (client *ServiceClient) RequestWithContext(ctx context.Context, method, url options.MoreHeaders[k] = v } } - return client.ProviderClient.RequestWithContext(ctx, method, url, options) -} - -// Request is a compatibility wrapper for RequestWithContext. -func (client *ServiceClient) Request(method, url string, options *RequestOpts) (*http.Response, error) { - return client.RequestWithContext(context.Background(), method, url, options) + return client.ProviderClient.Request(ctx, method, url, options) } // ParseResponse is a helper function to parse http.Response to constituents. diff --git a/testing/provider_client_test.go b/testing/provider_client_test.go index b502dc36b6..337520bdab 100644 --- a/testing/provider_client_test.go +++ b/testing/provider_client_test.go @@ -112,7 +112,7 @@ func TestConcurrentReauth(t *testing.T) { wg.Add(1) go func() { defer wg.Done() - resp, err := p.Request("GET", fmt.Sprintf("%s/route", th.Endpoint()), reqopts) + resp, err := p.Request(context.TODO(), "GET", fmt.Sprintf("%s/route", th.Endpoint()), reqopts) th.CheckNoErr(t, err) if resp == nil { t.Errorf("got a nil response") @@ -190,7 +190,7 @@ func TestReauthEndLoop(t *testing.T) { wg.Add(1) go func() { defer wg.Done() - _, err := p.Request("GET", fmt.Sprintf("%s/route", th.Endpoint()), reqopts) + _, err := p.Request(context.TODO(), "GET", fmt.Sprintf("%s/route", th.Endpoint()), reqopts) mut.Lock() defer mut.Unlock() @@ -293,7 +293,7 @@ func TestRequestThatCameDuringReauthWaitsUntilItIsCompleted(t *testing.T) { if i != 0 { <-info.reauthCh } - resp, err := p.Request("GET", fmt.Sprintf("%s/route", th.Endpoint()), reqopts) + resp, err := p.Request(context.TODO(), "GET", fmt.Sprintf("%s/route", th.Endpoint()), reqopts) th.CheckNoErr(t, err) if resp == nil { t.Errorf("got a nil response") @@ -363,7 +363,7 @@ func TestRequestReauthsAtMostOnce(t *testing.T) { // the part before the colon), but when encountering another 401 response, we // did not attempt reauthentication again and just passed that 401 response to // the caller as ErrDefault401. - _, err := p.Request("GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) + _, err := p.Request(context.TODO(), "GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) expectedErrorMessage := "Successfully re-authenticated, but got error executing request: Authentication failed" th.AssertEquals(t, expectedErrorMessage, err.Error()) } @@ -377,7 +377,7 @@ func TestRequestWithContext(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) p := &gophercloud.ProviderClient{Context: ctx} - res, err := p.Request("GET", ts.URL, &gophercloud.RequestOpts{KeepResponseBody: true}) + res, err := p.Request(context.TODO(), "GET", ts.URL, &gophercloud.RequestOpts{KeepResponseBody: true}) th.AssertNoErr(t, err) _, err = io.ReadAll(res.Body) th.AssertNoErr(t, err) @@ -385,7 +385,7 @@ func TestRequestWithContext(t *testing.T) { th.AssertNoErr(t, err) cancel() - res, err = p.Request("GET", ts.URL, &gophercloud.RequestOpts{}) + res, err = p.Request(context.TODO(), "GET", ts.URL, &gophercloud.RequestOpts{}) if err == nil { t.Fatal("expecting error, got nil") } @@ -415,7 +415,7 @@ func TestRequestConnectionReuse(t *testing.T) { p := &gophercloud.ProviderClient{} for i := 0; i < iter; i++ { - _, err := p.Request("GET", ts.URL, &gophercloud.RequestOpts{KeepResponseBody: false}) + _, err := p.Request(context.TODO(), "GET", ts.URL, &gophercloud.RequestOpts{KeepResponseBody: false}) th.AssertNoErr(t, err) } @@ -443,7 +443,7 @@ func TestRequestConnectionClose(t *testing.T) { p := &gophercloud.ProviderClient{} for i := 0; i < iter; i++ { - _, err := p.Request("GET", ts.URL, &gophercloud.RequestOpts{KeepResponseBody: true}) + _, err := p.Request(context.TODO(), "GET", ts.URL, &gophercloud.RequestOpts{KeepResponseBody: true}) th.AssertNoErr(t, err) } @@ -509,7 +509,7 @@ func TestRequestRetry(t *testing.T) { http.Error(w, "retry later", http.StatusTooManyRequests) }) - _, err := p.Request("GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) + _, err := p.Request(context.TODO(), "GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) if err == nil { t.Fatal("expecting error, got nil") } @@ -536,7 +536,7 @@ func TestRequestRetryHTTPDate(t *testing.T) { http.Error(w, "retry later", http.StatusTooManyRequests) }) - _, err := p.Request("GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) + _, err := p.Request(context.TODO(), "GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) if err == nil { t.Fatal("expecting error, got nil") } @@ -563,7 +563,7 @@ func TestRequestRetryError(t *testing.T) { http.Error(w, "retry later", http.StatusTooManyRequests) }) - _, err := p.Request("GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) + _, err := p.Request(context.TODO(), "GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) if err == nil { t.Fatal("expecting error, got nil") } @@ -588,7 +588,7 @@ func TestRequestRetrySuccess(t *testing.T) { http.Error(w, "retry later", http.StatusOK) }) - _, err := p.Request("GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) + _, err := p.Request(context.TODO(), "GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) if err != nil { t.Fatal(err) } @@ -624,7 +624,7 @@ func TestRequestRetryContext(t *testing.T) { http.Error(w, "retry later", http.StatusTooManyRequests) }) - _, err := p.Request("GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) + _, err := p.Request(context.TODO(), "GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) if err == nil { t.Fatal("expecting error, got nil") } @@ -656,7 +656,7 @@ func TestRequestGeneralRetry(t *testing.T) { } }) - _, err := p.Request("GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) + _, err := p.Request(context.TODO(), "GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) if err != nil { t.Fatal("expecting nil, got err") } @@ -684,7 +684,7 @@ func TestRequestGeneralRetryAbort(t *testing.T) { } }) - _, err := p.Request("GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) + _, err := p.Request(context.TODO(), "GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) if err == nil { t.Fatal("expecting err, got nil") } @@ -700,7 +700,7 @@ func TestRequestWrongOkCode(t *testing.T) { p := &gophercloud.ProviderClient{} - _, err := p.Request("DELETE", ts.URL, &gophercloud.RequestOpts{}) + _, err := p.Request(context.TODO(), "DELETE", ts.URL, &gophercloud.RequestOpts{}) th.AssertErr(t, err) if urErr, ok := err.(gophercloud.ErrUnexpectedResponseCode); ok { // DELETE expects a 202 or 204 by default diff --git a/testing/service_client_test.go b/testing/service_client_test.go index 63524e92d5..6253b698d2 100644 --- a/testing/service_client_test.go +++ b/testing/service_client_test.go @@ -1,6 +1,7 @@ package testing import ( + "context" "fmt" "net/http" "testing" @@ -28,7 +29,7 @@ func TestMoreHeaders(t *testing.T) { "custom": "header", } c.ProviderClient = new(gophercloud.ProviderClient) - resp, err := c.Get(fmt.Sprintf("%s/route", th.Endpoint()), nil, nil) + resp, err := c.Get(context.TODO(), fmt.Sprintf("%s/route", th.Endpoint()), nil, nil) th.AssertNoErr(t, err) th.AssertEquals(t, resp.Request.Header.Get("custom"), "header") } From 5e203ec737dcd3c1afd96d4b3bcae0d6111b4b8f Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Wed, 21 Feb 2024 18:11:01 +0000 Subject: [PATCH 12/19] compute: Use volumeID, not attachmentID for volume attachments The volume attachments API operates on volumes, not attachments. Correct the variable name. Signed-off-by: Stephen Finucane Closes: #2861 --- openstack/compute/v2/extensions/volumeattach/doc.go | 4 ++-- openstack/compute/v2/extensions/volumeattach/requests.go | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/openstack/compute/v2/extensions/volumeattach/doc.go b/openstack/compute/v2/extensions/volumeattach/doc.go index 484eb20000..857ab19cc5 100644 --- a/openstack/compute/v2/extensions/volumeattach/doc.go +++ b/openstack/compute/v2/extensions/volumeattach/doc.go @@ -20,9 +20,9 @@ Example to Attach a Volume Example to Detach a Volume serverID := "7ac8686c-de71-4acb-9600-ec18b1a1ed6d" - attachmentID := "ed081613-1c9b-4231-aa5e-ebfd4d87f983" + volumeID := "ed081613-1c9b-4231-aa5e-ebfd4d87f983" - err := volumeattach.Delete(computeClient, serverID, attachmentID).ExtractErr() + err := volumeattach.Delete(computeClient, serverID, volumeID).ExtractErr() if err != nil { panic(err) } diff --git a/openstack/compute/v2/extensions/volumeattach/requests.go b/openstack/compute/v2/extensions/volumeattach/requests.go index 12b70aae68..492dc09498 100644 --- a/openstack/compute/v2/extensions/volumeattach/requests.go +++ b/openstack/compute/v2/extensions/volumeattach/requests.go @@ -58,16 +58,16 @@ func Create(ctx context.Context, client *gophercloud.ServiceClient, serverID str } // Get returns public data about a previously created VolumeAttachment. -func Get(ctx context.Context, client *gophercloud.ServiceClient, serverID, attachmentID string) (r GetResult) { - resp, err := client.Get(ctx, getURL(client, serverID, attachmentID), &r.Body, nil) +func Get(ctx context.Context, client *gophercloud.ServiceClient, serverID, volumeID string) (r GetResult) { + resp, err := client.Get(ctx, getURL(client, serverID, volumeID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } // Delete requests the deletion of a previous stored VolumeAttachment from // the server. -func Delete(ctx context.Context, client *gophercloud.ServiceClient, serverID, attachmentID string) (r DeleteResult) { - resp, err := client.Delete(ctx, deleteURL(client, serverID, attachmentID), nil) +func Delete(ctx context.Context, client *gophercloud.ServiceClient, serverID, volumeID string) (r DeleteResult) { + resp, err := client.Delete(ctx, deleteURL(client, serverID, volumeID), nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) return } From 7098c19a89a58ff97ee6700efb86d595bf8783aa Mon Sep 17 00:00:00 2001 From: Pierre Prinetti Date: Mon, 26 Feb 2024 17:54:45 +0100 Subject: [PATCH 13/19] CHANGELOG: Add context --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0e59fddb8..37692596bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ BREAKING CHANGES: * [GH-2560](https://github.com/gophercloud/gophercloud/pull/2560) loadbalancer: Use CreateMemberOpts instead of BatchUpdateMemberOpts in PoolCreateOpts * [GH-2886](https://github.com/gophercloud/gophercloud/pull/2886) ports: Fix value_specs implementation * [GH-2665](https://github.com/gophercloud/gophercloud/pull/2665) Cinder: Remove multiatttach request parameter +* [GH-2936](https://github.com/gophercloud/gophercloud/pull/2936) Make Gophercloud context-aware: all function signatures triggering an HTTP call now accept a context.Context for tracing and cancellation New features and improvements: From e3b57db087413b1f92c40af79afb318db35a1062 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Feb 2024 09:37:53 +0000 Subject: [PATCH 14/19] build(deps): bump golang.org/x/crypto from 0.19.0 to 0.20.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.19.0 to 0.20.0. - [Commits](https://github.com/golang/crypto/compare/v0.19.0...v0.20.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 998e430b0c..eade2a66d8 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/gophercloud/gophercloud/v2 go 1.21.6 require ( - golang.org/x/crypto v0.19.0 + golang.org/x/crypto v0.20.0 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/go.sum b/go.sum index 6d66f158ca..b1239ddefe 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= 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= From eb19b362fa756d31be8efc3484127e16d37c0062 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Thu, 22 Feb 2024 18:13:48 +0000 Subject: [PATCH 15/19] Rename imageservice -> image To align with other services. Signed-off-by: Stephen Finucane --- ...l-imageservice.yaml => functional-image.yaml} | 12 ++++++------ internal/acceptance/clients/clients.go | 6 +++--- .../{imageservice => image}/v2/imagedata_test.go | 2 +- .../v2/imageimport_test.go | 8 ++++---- .../{imageservice => image}/v2/images_test.go | 16 ++++++++-------- .../{imageservice => image}/v2/imageservice.go | 16 ++++++++-------- .../{imageservice => image}/v2/tasks_test.go | 14 +++++++------- openstack/client.go | 6 +++--- openstack/{imageservice => image}/v2/README.md | 0 .../{imageservice => image}/v2/imagedata/doc.go | 0 .../v2/imagedata/requests.go | 2 +- .../v2/imagedata/results.go | 0 .../v2/imagedata/testing/doc.go | 0 .../v2/imagedata/testing/fixtures_test.go | 0 .../v2/imagedata/testing/requests_test.go | 2 +- .../{imageservice => image}/v2/imagedata/urls.go | 0 .../v2/imageimport/doc.go | 2 +- .../v2/imageimport/requests.go | 0 .../v2/imageimport/results.go | 0 .../v2/imageimport/testing/doc.go | 0 .../v2/imageimport/testing/fixtures_test.go | 0 .../v2/imageimport/testing/requests_test.go | 2 +- .../v2/imageimport/urls.go | 0 .../{imageservice => image}/v2/images/doc.go | 0 .../v2/images/requests.go | 0 .../{imageservice => image}/v2/images/results.go | 2 +- .../v2/images/testing/doc.go | 0 .../v2/images/testing/fixtures_test.go | 0 .../v2/images/testing/requests_test.go | 2 +- .../{imageservice => image}/v2/images/types.go | 0 .../{imageservice => image}/v2/images/urls.go | 0 .../{imageservice => image}/v2/members/doc.go | 0 .../v2/members/requests.go | 0 .../v2/members/results.go | 0 .../v2/members/testing/doc.go | 0 .../v2/members/testing/fixtures_test.go | 0 .../v2/members/testing/requests_test.go | 2 +- .../{imageservice => image}/v2/members/urls.go | 0 .../{imageservice => image}/v2/tasks/doc.go | 2 +- .../{imageservice => image}/v2/tasks/requests.go | 8 ++++---- .../{imageservice => image}/v2/tasks/results.go | 0 .../v2/tasks/testing/doc.go | 0 .../v2/tasks/testing/fixtures_test.go | 2 +- .../v2/tasks/testing/requests_test.go | 2 +- .../{imageservice => image}/v2/tasks/urls.go | 0 45 files changed, 54 insertions(+), 54 deletions(-) rename .github/workflows/{functional-imageservice.yaml => functional-image.yaml} (89%) rename internal/acceptance/openstack/{imageservice => image}/v2/imagedata_test.go (93%) rename internal/acceptance/openstack/{imageservice => image}/v2/imageimport_test.go (76%) rename internal/acceptance/openstack/{imageservice => image}/v2/images_test.go (91%) rename internal/acceptance/openstack/{imageservice => image}/v2/imageservice.go (89%) rename internal/acceptance/openstack/{imageservice => image}/v2/tasks_test.go (76%) rename openstack/{imageservice => image}/v2/README.md (100%) rename openstack/{imageservice => image}/v2/imagedata/doc.go (100%) rename openstack/{imageservice => image}/v2/imagedata/requests.go (98%) rename openstack/{imageservice => image}/v2/imagedata/results.go (100%) rename openstack/{imageservice => image}/v2/imagedata/testing/doc.go (100%) rename openstack/{imageservice => image}/v2/imagedata/testing/fixtures_test.go (100%) rename openstack/{imageservice => image}/v2/imagedata/testing/requests_test.go (96%) rename openstack/{imageservice => image}/v2/imagedata/urls.go (100%) rename openstack/{imageservice => image}/v2/imageimport/doc.go (94%) rename openstack/{imageservice => image}/v2/imageimport/requests.go (100%) rename openstack/{imageservice => image}/v2/imageimport/results.go (100%) rename openstack/{imageservice => image}/v2/imageimport/testing/doc.go (100%) rename openstack/{imageservice => image}/v2/imageimport/testing/fixtures_test.go (100%) rename openstack/{imageservice => image}/v2/imageimport/testing/requests_test.go (95%) rename openstack/{imageservice => image}/v2/imageimport/urls.go (100%) rename openstack/{imageservice => image}/v2/images/doc.go (100%) rename openstack/{imageservice => image}/v2/images/requests.go (100%) rename openstack/{imageservice => image}/v2/images/results.go (99%) rename openstack/{imageservice => image}/v2/images/testing/doc.go (100%) rename openstack/{imageservice => image}/v2/images/testing/fixtures_test.go (100%) rename openstack/{imageservice => image}/v2/images/testing/requests_test.go (99%) rename openstack/{imageservice => image}/v2/images/types.go (100%) rename openstack/{imageservice => image}/v2/images/urls.go (100%) rename openstack/{imageservice => image}/v2/members/doc.go (100%) rename openstack/{imageservice => image}/v2/members/requests.go (100%) rename openstack/{imageservice => image}/v2/members/results.go (100%) rename openstack/{imageservice => image}/v2/members/testing/doc.go (100%) rename openstack/{imageservice => image}/v2/members/testing/fixtures_test.go (100%) rename openstack/{imageservice => image}/v2/members/testing/requests_test.go (98%) rename openstack/{imageservice => image}/v2/members/urls.go (100%) rename openstack/{imageservice => image}/v2/tasks/doc.go (98%) rename openstack/{imageservice => image}/v2/tasks/requests.go (93%) rename openstack/{imageservice => image}/v2/tasks/results.go (100%) rename openstack/{imageservice => image}/v2/tasks/testing/doc.go (100%) rename openstack/{imageservice => image}/v2/tasks/testing/fixtures_test.go (98%) rename openstack/{imageservice => image}/v2/tasks/testing/requests_test.go (98%) rename openstack/{imageservice => image}/v2/tasks/urls.go (100%) diff --git a/.github/workflows/functional-imageservice.yaml b/.github/workflows/functional-image.yaml similarity index 89% rename from .github/workflows/functional-imageservice.yaml rename to .github/workflows/functional-image.yaml index 252e4b571c..d842f10591 100644 --- a/.github/workflows/functional-imageservice.yaml +++ b/.github/workflows/functional-image.yaml @@ -1,12 +1,12 @@ -name: functional-imageservice +name: functional-image on: pull_request: paths: - - '**imageservice**' + - '**image**' schedule: - cron: '0 0 */3 * *' jobs: - functional-imageservice: + functional-image: strategy: fail-fast: false matrix: @@ -36,7 +36,7 @@ jobs: openstack_version: "stable/victoria" ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} - name: Deploy OpenStack ${{ matrix.name }} with Glance and run imageservice acceptance tests + name: Deploy OpenStack ${{ matrix.name }} with Glance and run image acceptance tests steps: - name: Checkout Gophercloud uses: actions/checkout@v4 @@ -52,7 +52,7 @@ jobs: run: ./script/acceptancetest env: DEVSTACK_PATH: ${{ github.workspace }}/devstack - ACCEPTANCE_TESTS_FILTER: "^.*imageservice.*$" + ACCEPTANCE_TESTS_FILTER: "^.*image.*$" OS_BRANCH: ${{ matrix.openstack_version }} - name: Generate logs on failure run: ./script/collectlogs @@ -61,5 +61,5 @@ jobs: if: failure() uses: actions/upload-artifact@v4 with: - name: functional-imageservice-${{ matrix.name }} + name: functional-image-${{ matrix.name }} path: /tmp/devstack-logs/* diff --git a/internal/acceptance/clients/clients.go b/internal/acceptance/clients/clients.go index 05f45fe56d..3de05132fd 100644 --- a/internal/acceptance/clients/clients.go +++ b/internal/acceptance/clients/clients.go @@ -463,10 +463,10 @@ func NewIdentityV3UnauthenticatedClient() (*gophercloud.ServiceClient, error) { return openstack.NewIdentityV3(client, gophercloud.EndpointOpts{}) } -// NewImageServiceV2Client returns a *ServiceClient for making calls to the +// NewImageV2Client returns a *ServiceClient for making calls to the // OpenStack Image v2 API. An error will be returned if authentication or // client creation was not possible. -func NewImageServiceV2Client() (*gophercloud.ServiceClient, error) { +func NewImageV2Client() (*gophercloud.ServiceClient, error) { ao, err := openstack.AuthOptionsFromEnv() if err != nil { return nil, err @@ -479,7 +479,7 @@ func NewImageServiceV2Client() (*gophercloud.ServiceClient, error) { client = configureDebug(client) - return openstack.NewImageServiceV2(client, gophercloud.EndpointOpts{ + return openstack.NewImageV2(client, gophercloud.EndpointOpts{ Region: os.Getenv("OS_REGION_NAME"), }) } diff --git a/internal/acceptance/openstack/imageservice/v2/imagedata_test.go b/internal/acceptance/openstack/image/v2/imagedata_test.go similarity index 93% rename from internal/acceptance/openstack/imageservice/v2/imagedata_test.go rename to internal/acceptance/openstack/image/v2/imagedata_test.go index e6d43a1259..4ea210b945 100644 --- a/internal/acceptance/openstack/imageservice/v2/imagedata_test.go +++ b/internal/acceptance/openstack/image/v2/imagedata_test.go @@ -9,7 +9,7 @@ import ( ) func TestImageStage(t *testing.T) { - client, err := clients.NewImageServiceV2Client() + client, err := clients.NewImageV2Client() th.AssertNoErr(t, err) image, err := CreateEmptyImage(t, client) diff --git a/internal/acceptance/openstack/imageservice/v2/imageimport_test.go b/internal/acceptance/openstack/image/v2/imageimport_test.go similarity index 76% rename from internal/acceptance/openstack/imageservice/v2/imageimport_test.go rename to internal/acceptance/openstack/image/v2/imageimport_test.go index a2b26f6832..65cef05da3 100644 --- a/internal/acceptance/openstack/imageservice/v2/imageimport_test.go +++ b/internal/acceptance/openstack/image/v2/imageimport_test.go @@ -1,5 +1,5 @@ -//go:build acceptance || imageservice || imageimport -// +build acceptance imageservice imageimport +//go:build acceptance || image || imageimport +// +build acceptance image imageimport package v2 @@ -12,7 +12,7 @@ import ( ) func TestGetImportInfo(t *testing.T) { - client, err := clients.NewImageServiceV2Client() + client, err := clients.NewImageV2Client() th.AssertNoErr(t, err) importInfo, err := GetImportInfo(t, client) @@ -22,7 +22,7 @@ func TestGetImportInfo(t *testing.T) { } func TestCreateImport(t *testing.T) { - client, err := clients.NewImageServiceV2Client() + client, err := clients.NewImageV2Client() th.AssertNoErr(t, err) image, err := CreateEmptyImage(t, client) diff --git a/internal/acceptance/openstack/imageservice/v2/images_test.go b/internal/acceptance/openstack/image/v2/images_test.go similarity index 91% rename from internal/acceptance/openstack/imageservice/v2/images_test.go rename to internal/acceptance/openstack/image/v2/images_test.go index 1013d66d3d..2ebe82b695 100644 --- a/internal/acceptance/openstack/imageservice/v2/images_test.go +++ b/internal/acceptance/openstack/image/v2/images_test.go @@ -1,5 +1,5 @@ -//go:build acceptance || imageservice || images -// +build acceptance imageservice images +//go:build acceptance || image || images +// +build acceptance image images package v2 @@ -11,13 +11,13 @@ import ( "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" - "github.com/gophercloud/gophercloud/v2/openstack/imageservice/v2/images" + "github.com/gophercloud/gophercloud/v2/openstack/image/v2/images" "github.com/gophercloud/gophercloud/v2/pagination" th "github.com/gophercloud/gophercloud/v2/testhelper" ) func TestImagesListEachPage(t *testing.T) { - client, err := clients.NewImageServiceV2Client() + client, err := clients.NewImageV2Client() th.AssertNoErr(t, err) listOpts := images.ListOpts{ @@ -41,7 +41,7 @@ func TestImagesListEachPage(t *testing.T) { } func TestImagesListAllPages(t *testing.T) { - client, err := clients.NewImageServiceV2Client() + client, err := clients.NewImageV2Client() th.AssertNoErr(t, err) image, err := CreateEmptyImage(t, client) @@ -70,7 +70,7 @@ func TestImagesListAllPages(t *testing.T) { } func TestImagesListByDate(t *testing.T) { - client, err := clients.NewImageServiceV2Client() + client, err := clients.NewImageV2Client() th.AssertNoErr(t, err) date := time.Date(2014, 1, 1, 1, 1, 1, 0, time.UTC) @@ -118,7 +118,7 @@ func TestImagesListByDate(t *testing.T) { } func TestImagesFilter(t *testing.T) { - client, err := clients.NewImageServiceV2Client() + client, err := clients.NewImageV2Client() th.AssertNoErr(t, err) image, err := CreateEmptyImage(t, client) @@ -143,7 +143,7 @@ func TestImagesFilter(t *testing.T) { } func TestImagesUpdate(t *testing.T) { - client, err := clients.NewImageServiceV2Client() + client, err := clients.NewImageV2Client() th.AssertNoErr(t, err) image, err := CreateEmptyImage(t, client) diff --git a/internal/acceptance/openstack/imageservice/v2/imageservice.go b/internal/acceptance/openstack/image/v2/imageservice.go similarity index 89% rename from internal/acceptance/openstack/imageservice/v2/imageservice.go rename to internal/acceptance/openstack/image/v2/imageservice.go index b44526e26e..baccc68ae3 100644 --- a/internal/acceptance/openstack/imageservice/v2/imageservice.go +++ b/internal/acceptance/openstack/image/v2/imageservice.go @@ -1,4 +1,4 @@ -// Package v2 contains common functions for creating imageservice resources +// Package v2 contains common functions for creating image resources // for use in acceptance tests. See the `*_test.go` files for example usages. package v2 @@ -11,10 +11,10 @@ import ( "github.com/gophercloud/gophercloud/v2" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" - "github.com/gophercloud/gophercloud/v2/openstack/imageservice/v2/imagedata" - "github.com/gophercloud/gophercloud/v2/openstack/imageservice/v2/imageimport" - "github.com/gophercloud/gophercloud/v2/openstack/imageservice/v2/images" - "github.com/gophercloud/gophercloud/v2/openstack/imageservice/v2/tasks" + "github.com/gophercloud/gophercloud/v2/openstack/image/v2/imagedata" + "github.com/gophercloud/gophercloud/v2/openstack/image/v2/imageimport" + "github.com/gophercloud/gophercloud/v2/openstack/image/v2/images" + "github.com/gophercloud/gophercloud/v2/openstack/image/v2/tasks" th "github.com/gophercloud/gophercloud/v2/testhelper" ) @@ -77,7 +77,7 @@ const ImportImageURL = "http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_ // CreateTask will create a task to import the CirrOS image. // An error will be returned if a task couldn't be created. func CreateTask(t *testing.T, client *gophercloud.ServiceClient, imageURL string) (*tasks.Task, error) { - t.Logf("Attempting to create an Imageservice import task with image: %s", imageURL) + t.Logf("Attempting to create an Image service import task with image: %s", imageURL) opts := tasks.CreateOpts{ Type: "import", Input: map[string]interface{}{ @@ -104,7 +104,7 @@ func CreateTask(t *testing.T, client *gophercloud.ServiceClient, imageURL string // GetImportInfo will retrieve Import API information. func GetImportInfo(t *testing.T, client *gophercloud.ServiceClient) (*imageimport.ImportInfo, error) { - t.Log("Attempting to get the Imageservice Import API information") + t.Log("Attempting to get the Image service Import API information") importInfo, err := imageimport.Get(context.TODO(), client).Extract() if err != nil { return nil, err @@ -159,7 +159,7 @@ func DeleteImageFile(t *testing.T, filepath string) { t.Logf("Successfully deleted image file %s", filepath) } -// ImportImage will import image data from the remote source to the Imageservice. +// ImportImage will import image data from the remote source to the Image service. func ImportImage(t *testing.T, client *gophercloud.ServiceClient, imageID string) error { importOpts := imageimport.CreateOpts{ Name: imageimport.WebDownloadMethod, diff --git a/internal/acceptance/openstack/imageservice/v2/tasks_test.go b/internal/acceptance/openstack/image/v2/tasks_test.go similarity index 76% rename from internal/acceptance/openstack/imageservice/v2/tasks_test.go rename to internal/acceptance/openstack/image/v2/tasks_test.go index 1a722f19bc..fd2f2664e2 100644 --- a/internal/acceptance/openstack/imageservice/v2/tasks_test.go +++ b/internal/acceptance/openstack/image/v2/tasks_test.go @@ -1,5 +1,5 @@ -//go:build acceptance || imageservice || tasks -// +build acceptance imageservice tasks +//go:build acceptance || image || tasks +// +build acceptance image tasks package v2 @@ -9,13 +9,13 @@ import ( "github.com/gophercloud/gophercloud/v2/internal/acceptance/clients" "github.com/gophercloud/gophercloud/v2/internal/acceptance/tools" - "github.com/gophercloud/gophercloud/v2/openstack/imageservice/v2/tasks" + "github.com/gophercloud/gophercloud/v2/openstack/image/v2/tasks" "github.com/gophercloud/gophercloud/v2/pagination" th "github.com/gophercloud/gophercloud/v2/testhelper" ) func TestTasksListEachPage(t *testing.T) { - client, err := clients.NewImageServiceV2Client() + client, err := clients.NewImageV2Client() th.AssertNoErr(t, err) listOpts := tasks.ListOpts{ @@ -36,7 +36,7 @@ func TestTasksListEachPage(t *testing.T) { } func TestTasksListAllPages(t *testing.T) { - client, err := clients.NewImageServiceV2Client() + client, err := clients.NewImageV2Client() th.AssertNoErr(t, err) listOpts := tasks.ListOpts{} @@ -53,12 +53,12 @@ func TestTasksListAllPages(t *testing.T) { } func TestTaskCreate(t *testing.T) { - client, err := clients.NewImageServiceV2Client() + client, err := clients.NewImageV2Client() th.AssertNoErr(t, err) task, err := CreateTask(t, client, ImportImageURL) if err != nil { - t.Fatalf("Unable to create an Imageservice task: %v", err) + t.Fatalf("Unable to create an Image service task: %v", err) } tools.PrintResource(t, task) diff --git a/openstack/client.go b/openstack/client.go index ca3007be07..4fe07da4c4 100644 --- a/openstack/client.go +++ b/openstack/client.go @@ -434,9 +434,9 @@ func NewDNSV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) ( return sc, err } -// NewImageServiceV2 creates a ServiceClient that may be used to access the v2 -// image service. -func NewImageServiceV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { +// NewImageV2 creates a ServiceClient that may be used to access the v2 image +// service. +func NewImageV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { sc, err := initClientOpts(client, eo, "image") sc.ResourceBase = sc.Endpoint + "v2/" return sc, err diff --git a/openstack/imageservice/v2/README.md b/openstack/image/v2/README.md similarity index 100% rename from openstack/imageservice/v2/README.md rename to openstack/image/v2/README.md diff --git a/openstack/imageservice/v2/imagedata/doc.go b/openstack/image/v2/imagedata/doc.go similarity index 100% rename from openstack/imageservice/v2/imagedata/doc.go rename to openstack/image/v2/imagedata/doc.go diff --git a/openstack/imageservice/v2/imagedata/requests.go b/openstack/image/v2/imagedata/requests.go similarity index 98% rename from openstack/imageservice/v2/imagedata/requests.go rename to openstack/image/v2/imagedata/requests.go index 1e56bc2264..fd0f3e7ffd 100644 --- a/openstack/imageservice/v2/imagedata/requests.go +++ b/openstack/image/v2/imagedata/requests.go @@ -17,7 +17,7 @@ func Upload(ctx context.Context, client *gophercloud.ServiceClient, id string, d return } -// Stage performs PUT call on the existing image object in the Imageservice with +// Stage performs PUT call on the existing image object in the Image service with // the provided file. // Existing image object must be in the "queued" status. func Stage(ctx context.Context, client *gophercloud.ServiceClient, id string, data io.Reader) (r StageResult) { diff --git a/openstack/imageservice/v2/imagedata/results.go b/openstack/image/v2/imagedata/results.go similarity index 100% rename from openstack/imageservice/v2/imagedata/results.go rename to openstack/image/v2/imagedata/results.go diff --git a/openstack/imageservice/v2/imagedata/testing/doc.go b/openstack/image/v2/imagedata/testing/doc.go similarity index 100% rename from openstack/imageservice/v2/imagedata/testing/doc.go rename to openstack/image/v2/imagedata/testing/doc.go diff --git a/openstack/imageservice/v2/imagedata/testing/fixtures_test.go b/openstack/image/v2/imagedata/testing/fixtures_test.go similarity index 100% rename from openstack/imageservice/v2/imagedata/testing/fixtures_test.go rename to openstack/image/v2/imagedata/testing/fixtures_test.go diff --git a/openstack/imageservice/v2/imagedata/testing/requests_test.go b/openstack/image/v2/imagedata/testing/requests_test.go similarity index 96% rename from openstack/imageservice/v2/imagedata/testing/requests_test.go rename to openstack/image/v2/imagedata/testing/requests_test.go index a36d0a929c..8e1461e1c7 100644 --- a/openstack/imageservice/v2/imagedata/testing/requests_test.go +++ b/openstack/image/v2/imagedata/testing/requests_test.go @@ -6,7 +6,7 @@ import ( "io" "testing" - "github.com/gophercloud/gophercloud/v2/openstack/imageservice/v2/imagedata" + "github.com/gophercloud/gophercloud/v2/openstack/image/v2/imagedata" th "github.com/gophercloud/gophercloud/v2/testhelper" fakeclient "github.com/gophercloud/gophercloud/v2/testhelper/client" ) diff --git a/openstack/imageservice/v2/imagedata/urls.go b/openstack/image/v2/imagedata/urls.go similarity index 100% rename from openstack/imageservice/v2/imagedata/urls.go rename to openstack/image/v2/imagedata/urls.go diff --git a/openstack/imageservice/v2/imageimport/doc.go b/openstack/image/v2/imageimport/doc.go similarity index 94% rename from openstack/imageservice/v2/imageimport/doc.go rename to openstack/image/v2/imageimport/doc.go index 775a3630b7..dc163ab3b3 100644 --- a/openstack/imageservice/v2/imageimport/doc.go +++ b/openstack/image/v2/imageimport/doc.go @@ -1,6 +1,6 @@ /* Package imageimport enables management of images import and retrieval of the -Imageservice Import API information. +Image service Import API information. Example to Get an information about the Import API diff --git a/openstack/imageservice/v2/imageimport/requests.go b/openstack/image/v2/imageimport/requests.go similarity index 100% rename from openstack/imageservice/v2/imageimport/requests.go rename to openstack/image/v2/imageimport/requests.go diff --git a/openstack/imageservice/v2/imageimport/results.go b/openstack/image/v2/imageimport/results.go similarity index 100% rename from openstack/imageservice/v2/imageimport/results.go rename to openstack/image/v2/imageimport/results.go diff --git a/openstack/imageservice/v2/imageimport/testing/doc.go b/openstack/image/v2/imageimport/testing/doc.go similarity index 100% rename from openstack/imageservice/v2/imageimport/testing/doc.go rename to openstack/image/v2/imageimport/testing/doc.go diff --git a/openstack/imageservice/v2/imageimport/testing/fixtures_test.go b/openstack/image/v2/imageimport/testing/fixtures_test.go similarity index 100% rename from openstack/imageservice/v2/imageimport/testing/fixtures_test.go rename to openstack/image/v2/imageimport/testing/fixtures_test.go diff --git a/openstack/imageservice/v2/imageimport/testing/requests_test.go b/openstack/image/v2/imageimport/testing/requests_test.go similarity index 95% rename from openstack/imageservice/v2/imageimport/testing/requests_test.go rename to openstack/image/v2/imageimport/testing/requests_test.go index 3de8cc8054..ae353ad0ac 100644 --- a/openstack/imageservice/v2/imageimport/testing/requests_test.go +++ b/openstack/image/v2/imageimport/testing/requests_test.go @@ -6,7 +6,7 @@ import ( "net/http" "testing" - "github.com/gophercloud/gophercloud/v2/openstack/imageservice/v2/imageimport" + "github.com/gophercloud/gophercloud/v2/openstack/image/v2/imageimport" th "github.com/gophercloud/gophercloud/v2/testhelper" fakeclient "github.com/gophercloud/gophercloud/v2/testhelper/client" ) diff --git a/openstack/imageservice/v2/imageimport/urls.go b/openstack/image/v2/imageimport/urls.go similarity index 100% rename from openstack/imageservice/v2/imageimport/urls.go rename to openstack/image/v2/imageimport/urls.go diff --git a/openstack/imageservice/v2/images/doc.go b/openstack/image/v2/images/doc.go similarity index 100% rename from openstack/imageservice/v2/images/doc.go rename to openstack/image/v2/images/doc.go diff --git a/openstack/imageservice/v2/images/requests.go b/openstack/image/v2/images/requests.go similarity index 100% rename from openstack/imageservice/v2/images/requests.go rename to openstack/image/v2/images/requests.go diff --git a/openstack/imageservice/v2/images/results.go b/openstack/image/v2/images/results.go similarity index 99% rename from openstack/imageservice/v2/images/results.go rename to openstack/image/v2/images/results.go index 96644a9aeb..e46d6f9842 100644 --- a/openstack/imageservice/v2/images/results.go +++ b/openstack/image/v2/images/results.go @@ -20,7 +20,7 @@ type Image struct { Name string `json:"name"` // Status is the image status. It can be "queued" or "active" - // See imageservice/v2/images/type.go + // See image/v2/images/type.go Status ImageStatus `json:"status"` // Tags is a list of image tags. Tags are arbitrarily defined strings diff --git a/openstack/imageservice/v2/images/testing/doc.go b/openstack/image/v2/images/testing/doc.go similarity index 100% rename from openstack/imageservice/v2/images/testing/doc.go rename to openstack/image/v2/images/testing/doc.go diff --git a/openstack/imageservice/v2/images/testing/fixtures_test.go b/openstack/image/v2/images/testing/fixtures_test.go similarity index 100% rename from openstack/imageservice/v2/images/testing/fixtures_test.go rename to openstack/image/v2/images/testing/fixtures_test.go diff --git a/openstack/imageservice/v2/images/testing/requests_test.go b/openstack/image/v2/images/testing/requests_test.go similarity index 99% rename from openstack/imageservice/v2/images/testing/requests_test.go rename to openstack/image/v2/images/testing/requests_test.go index a4aaf0a9ef..2872e79b69 100644 --- a/openstack/imageservice/v2/images/testing/requests_test.go +++ b/openstack/image/v2/images/testing/requests_test.go @@ -5,7 +5,7 @@ import ( "testing" "time" - "github.com/gophercloud/gophercloud/v2/openstack/imageservice/v2/images" + "github.com/gophercloud/gophercloud/v2/openstack/image/v2/images" "github.com/gophercloud/gophercloud/v2/pagination" th "github.com/gophercloud/gophercloud/v2/testhelper" fakeclient "github.com/gophercloud/gophercloud/v2/testhelper/client" diff --git a/openstack/imageservice/v2/images/types.go b/openstack/image/v2/images/types.go similarity index 100% rename from openstack/imageservice/v2/images/types.go rename to openstack/image/v2/images/types.go diff --git a/openstack/imageservice/v2/images/urls.go b/openstack/image/v2/images/urls.go similarity index 100% rename from openstack/imageservice/v2/images/urls.go rename to openstack/image/v2/images/urls.go diff --git a/openstack/imageservice/v2/members/doc.go b/openstack/image/v2/members/doc.go similarity index 100% rename from openstack/imageservice/v2/members/doc.go rename to openstack/image/v2/members/doc.go diff --git a/openstack/imageservice/v2/members/requests.go b/openstack/image/v2/members/requests.go similarity index 100% rename from openstack/imageservice/v2/members/requests.go rename to openstack/image/v2/members/requests.go diff --git a/openstack/imageservice/v2/members/results.go b/openstack/image/v2/members/results.go similarity index 100% rename from openstack/imageservice/v2/members/results.go rename to openstack/image/v2/members/results.go diff --git a/openstack/imageservice/v2/members/testing/doc.go b/openstack/image/v2/members/testing/doc.go similarity index 100% rename from openstack/imageservice/v2/members/testing/doc.go rename to openstack/image/v2/members/testing/doc.go diff --git a/openstack/imageservice/v2/members/testing/fixtures_test.go b/openstack/image/v2/members/testing/fixtures_test.go similarity index 100% rename from openstack/imageservice/v2/members/testing/fixtures_test.go rename to openstack/image/v2/members/testing/fixtures_test.go diff --git a/openstack/imageservice/v2/members/testing/requests_test.go b/openstack/image/v2/members/testing/requests_test.go similarity index 98% rename from openstack/imageservice/v2/members/testing/requests_test.go rename to openstack/image/v2/members/testing/requests_test.go index 04717bfeea..981a22ffff 100644 --- a/openstack/imageservice/v2/members/testing/requests_test.go +++ b/openstack/image/v2/members/testing/requests_test.go @@ -5,7 +5,7 @@ import ( "testing" "time" - "github.com/gophercloud/gophercloud/v2/openstack/imageservice/v2/members" + "github.com/gophercloud/gophercloud/v2/openstack/image/v2/members" "github.com/gophercloud/gophercloud/v2/pagination" th "github.com/gophercloud/gophercloud/v2/testhelper" fakeclient "github.com/gophercloud/gophercloud/v2/testhelper/client" diff --git a/openstack/imageservice/v2/members/urls.go b/openstack/image/v2/members/urls.go similarity index 100% rename from openstack/imageservice/v2/members/urls.go rename to openstack/image/v2/members/urls.go diff --git a/openstack/imageservice/v2/tasks/doc.go b/openstack/image/v2/tasks/doc.go similarity index 98% rename from openstack/imageservice/v2/tasks/doc.go rename to openstack/image/v2/tasks/doc.go index 7904c6a832..689a1c7327 100644 --- a/openstack/imageservice/v2/tasks/doc.go +++ b/openstack/image/v2/tasks/doc.go @@ -1,6 +1,6 @@ /* Package tasks enables management and retrieval of tasks from the OpenStack -Imageservice. +Image service. Example to List Tasks diff --git a/openstack/imageservice/v2/tasks/requests.go b/openstack/image/v2/tasks/requests.go similarity index 93% rename from openstack/imageservice/v2/tasks/requests.go rename to openstack/image/v2/tasks/requests.go index fa6972b529..241e2ab7a7 100644 --- a/openstack/imageservice/v2/tasks/requests.go +++ b/openstack/image/v2/tasks/requests.go @@ -33,7 +33,7 @@ type ListOptsBuilder interface { } // ListOpts allows the filtering and sorting of paginated collections through -// the OpenStack Imageservice tasks API. +// the OpenStack Image service tasks API. type ListOpts struct { // Integer value for the limit of values to return. Limit int `q:"limit"` @@ -90,7 +90,7 @@ func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { }) } -// Get retrieves a specific Imageservice task based on its ID. +// Get retrieves a specific Image service task based on its ID. func Get(ctx context.Context, c *gophercloud.ServiceClient, taskID string) (r GetResult) { resp, err := c.Get(ctx, getURL(c, taskID), &r.Body, nil) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) @@ -102,7 +102,7 @@ type CreateOptsBuilder interface { ToTaskCreateMap() (map[string]interface{}, error) } -// CreateOpts specifies parameters of a new Imageservice task. +// CreateOpts specifies parameters of a new Image service task. type CreateOpts struct { Type string `json:"type" required:"true"` Input map[string]interface{} `json:"input"` @@ -117,7 +117,7 @@ func (opts CreateOpts) ToTaskCreateMap() (map[string]interface{}, error) { return b, nil } -// Create requests the creation of a new Imageservice task on the server. +// Create requests the creation of a new Image service task on the server. func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) { b, err := opts.ToTaskCreateMap() if err != nil { diff --git a/openstack/imageservice/v2/tasks/results.go b/openstack/image/v2/tasks/results.go similarity index 100% rename from openstack/imageservice/v2/tasks/results.go rename to openstack/image/v2/tasks/results.go diff --git a/openstack/imageservice/v2/tasks/testing/doc.go b/openstack/image/v2/tasks/testing/doc.go similarity index 100% rename from openstack/imageservice/v2/tasks/testing/doc.go rename to openstack/image/v2/tasks/testing/doc.go diff --git a/openstack/imageservice/v2/tasks/testing/fixtures_test.go b/openstack/image/v2/tasks/testing/fixtures_test.go similarity index 98% rename from openstack/imageservice/v2/tasks/testing/fixtures_test.go rename to openstack/image/v2/tasks/testing/fixtures_test.go index fc42383c92..de52a936c0 100644 --- a/openstack/imageservice/v2/tasks/testing/fixtures_test.go +++ b/openstack/image/v2/tasks/testing/fixtures_test.go @@ -3,7 +3,7 @@ package testing import ( "time" - "github.com/gophercloud/gophercloud/v2/openstack/imageservice/v2/tasks" + "github.com/gophercloud/gophercloud/v2/openstack/image/v2/tasks" ) // TasksListResult represents raw server response from a server to a list call. diff --git a/openstack/imageservice/v2/tasks/testing/requests_test.go b/openstack/image/v2/tasks/testing/requests_test.go similarity index 98% rename from openstack/imageservice/v2/tasks/testing/requests_test.go rename to openstack/image/v2/tasks/testing/requests_test.go index e6c8781d61..a8cc870fab 100644 --- a/openstack/imageservice/v2/tasks/testing/requests_test.go +++ b/openstack/image/v2/tasks/testing/requests_test.go @@ -7,7 +7,7 @@ import ( "testing" "time" - "github.com/gophercloud/gophercloud/v2/openstack/imageservice/v2/tasks" + "github.com/gophercloud/gophercloud/v2/openstack/image/v2/tasks" "github.com/gophercloud/gophercloud/v2/pagination" th "github.com/gophercloud/gophercloud/v2/testhelper" fakeclient "github.com/gophercloud/gophercloud/v2/testhelper/client" diff --git a/openstack/imageservice/v2/tasks/urls.go b/openstack/image/v2/tasks/urls.go similarity index 100% rename from openstack/imageservice/v2/tasks/urls.go rename to openstack/image/v2/tasks/urls.go From f54c4c5ab10e2d3b29f1546608b9896583d21c2e Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Mon, 4 Mar 2024 15:40:27 +0100 Subject: [PATCH 16/19] Drop CI coverage for Victoria-Yoga Yoga has entered, and the rest will soon enter, the unmaintained [1] phase. This means that the CI stability will be in the hands of a small group of volunteers and will no longer be the responsibility of the project teams. I don't believe the Gophercloud project can maintain CI jobs on these branches in the long run, hence removing them. [1] https://docs.openstack.org/project-team-guide/stable-branches.html#unmaintained --- .github/workflows/functional-baremetal.yaml | 12 ---------- .github/workflows/functional-basic.yaml | 12 ---------- .../workflows/functional-blockstorage.yaml | 12 ---------- .github/workflows/functional-clustering.yaml | 12 ---------- .github/workflows/functional-compute.yaml | 12 ---------- .../workflows/functional-containerinfra.yaml | 24 ------------------- .github/workflows/functional-dns.yaml | 12 ---------- .github/workflows/functional-identity.yaml | 12 ---------- .github/workflows/functional-image.yaml | 12 ---------- .github/workflows/functional-keymanager.yaml | 12 ---------- .../workflows/functional-loadbalancer.yaml | 12 ---------- .github/workflows/functional-messaging.yaml | 12 ---------- .github/workflows/functional-networking.yaml | 12 ---------- .../workflows/functional-objectstorage.yaml | 12 ---------- .../workflows/functional-orchestration.yaml | 12 ---------- .github/workflows/functional-placement.yaml | 12 ---------- .../functional-sharedfilesystems.yaml | 12 ---------- 17 files changed, 216 deletions(-) diff --git a/.github/workflows/functional-baremetal.yaml b/.github/workflows/functional-baremetal.yaml index 8753d091f2..068537d901 100644 --- a/.github/workflows/functional-baremetal.yaml +++ b/.github/workflows/functional-baremetal.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Ironic and run baremetal acceptance tests steps: diff --git a/.github/workflows/functional-basic.yaml b/.github/workflows/functional-basic.yaml index 11048088fb..bf8b40457a 100644 --- a/.github/workflows/functional-basic.yaml +++ b/.github/workflows/functional-basic.yaml @@ -26,18 +26,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with defaults and run basic acceptance tests steps: diff --git a/.github/workflows/functional-blockstorage.yaml b/.github/workflows/functional-blockstorage.yaml index 1ee43e742c..c6526df766 100644 --- a/.github/workflows/functional-blockstorage.yaml +++ b/.github/workflows/functional-blockstorage.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Cinder and run blockstorage acceptance tests steps: diff --git a/.github/workflows/functional-clustering.yaml b/.github/workflows/functional-clustering.yaml index 3ed60f16cb..79b0fbc246 100644 --- a/.github/workflows/functional-clustering.yaml +++ b/.github/workflows/functional-clustering.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Senlin and run clustering acceptance tests steps: diff --git a/.github/workflows/functional-compute.yaml b/.github/workflows/functional-compute.yaml index de667ed055..e1aa044663 100644 --- a/.github/workflows/functional-compute.yaml +++ b/.github/workflows/functional-compute.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Nova and run compute acceptance tests steps: diff --git a/.github/workflows/functional-containerinfra.yaml b/.github/workflows/functional-containerinfra.yaml index 17be7db52a..ee332836a8 100644 --- a/.github/workflows/functional-containerinfra.yaml +++ b/.github/workflows/functional-containerinfra.yaml @@ -35,30 +35,6 @@ jobs: devstack_conf_overrides: | enable_plugin magnum https://github.com/openstack/magnum stable/zed MAGNUMCLIENT_BRANCH=stable/zed - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - devstack_conf_overrides: | - enable_plugin magnum https://github.com/openstack/magnum stable/yoga - MAGNUMCLIENT_BRANCH=stable/yoga - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - devstack_conf_overrides: | - enable_plugin magnum https://github.com/openstack/magnum xena-eol - MAGNUMCLIENT_BRANCH=xena-eol - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - devstack_conf_overrides: | - enable_plugin magnum https://github.com/openstack/magnum wallaby-eol - MAGNUMCLIENT_BRANCH=wallaby-eol - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" - devstack_conf_overrides: | - enable_plugin magnum https://github.com/openstack/magnum victoria-eol - MAGNUMCLIENT_BRANCH=victoria-em runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Magnum and run containerinfra acceptance tests steps: diff --git a/.github/workflows/functional-dns.yaml b/.github/workflows/functional-dns.yaml index 4e789e088c..a652daa508 100644 --- a/.github/workflows/functional-dns.yaml +++ b/.github/workflows/functional-dns.yaml @@ -24,18 +24,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Designate and run dns acceptance tests steps: diff --git a/.github/workflows/functional-identity.yaml b/.github/workflows/functional-identity.yaml index d0966abecb..895cbe3df3 100644 --- a/.github/workflows/functional-identity.yaml +++ b/.github/workflows/functional-identity.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Keystone and run identity acceptance tests steps: diff --git a/.github/workflows/functional-image.yaml b/.github/workflows/functional-image.yaml index d842f10591..2b96be230f 100644 --- a/.github/workflows/functional-image.yaml +++ b/.github/workflows/functional-image.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Glance and run image acceptance tests steps: diff --git a/.github/workflows/functional-keymanager.yaml b/.github/workflows/functional-keymanager.yaml index abcb66392a..f734d1cbf2 100644 --- a/.github/workflows/functional-keymanager.yaml +++ b/.github/workflows/functional-keymanager.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Barbican and run keymanager acceptance tests steps: diff --git a/.github/workflows/functional-loadbalancer.yaml b/.github/workflows/functional-loadbalancer.yaml index 5a16b1fb4a..f619d2b873 100644 --- a/.github/workflows/functional-loadbalancer.yaml +++ b/.github/workflows/functional-loadbalancer.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Octavia and run loadbalancer acceptance tests steps: diff --git a/.github/workflows/functional-messaging.yaml b/.github/workflows/functional-messaging.yaml index 84d155440b..ebf1a86857 100644 --- a/.github/workflows/functional-messaging.yaml +++ b/.github/workflows/functional-messaging.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Zaqar and run messaging acceptance tests steps: diff --git a/.github/workflows/functional-networking.yaml b/.github/workflows/functional-networking.yaml index db8fda07f3..ff3307b666 100644 --- a/.github/workflows/functional-networking.yaml +++ b/.github/workflows/functional-networking.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Neutron and run networking acceptance tests steps: diff --git a/.github/workflows/functional-objectstorage.yaml b/.github/workflows/functional-objectstorage.yaml index d4f3c8320b..c1c6d2037e 100644 --- a/.github/workflows/functional-objectstorage.yaml +++ b/.github/workflows/functional-objectstorage.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Swift and run objectstorage acceptance tests steps: diff --git a/.github/workflows/functional-orchestration.yaml b/.github/workflows/functional-orchestration.yaml index 3424aa1374..b7d1908380 100644 --- a/.github/workflows/functional-orchestration.yaml +++ b/.github/workflows/functional-orchestration.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Heat and run orchestration acceptance tests steps: diff --git a/.github/workflows/functional-placement.yaml b/.github/workflows/functional-placement.yaml index 3cc2d74597..31894c6f9f 100644 --- a/.github/workflows/functional-placement.yaml +++ b/.github/workflows/functional-placement.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Placement and run placement acceptance tests steps: diff --git a/.github/workflows/functional-sharedfilesystems.yaml b/.github/workflows/functional-sharedfilesystems.yaml index c7a107864b..1be0b3ecda 100644 --- a/.github/workflows/functional-sharedfilesystems.yaml +++ b/.github/workflows/functional-sharedfilesystems.yaml @@ -23,18 +23,6 @@ jobs: - name: "zed" openstack_version: "stable/zed" ubuntu_version: "20.04" - - name: "yoga" - openstack_version: "stable/yoga" - ubuntu_version: "20.04" - - name: "xena" - openstack_version: "stable/xena" - ubuntu_version: "20.04" - - name: "wallaby" - openstack_version: "stable/wallaby" - ubuntu_version: "20.04" - - name: "victoria" - openstack_version: "stable/victoria" - ubuntu_version: "20.04" runs-on: ubuntu-${{ matrix.ubuntu_version }} name: Deploy OpenStack ${{ matrix.name }} with Manila and run sharedfilesystems acceptance tests steps: From 0c1958249484cdaff39dd864b1427cbb14b93a21 Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Mon, 4 Mar 2024 16:04:39 +0100 Subject: [PATCH 17/19] Work around broken dnsmasq in the Ironic plugin --- .github/workflows/functional-baremetal.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/functional-baremetal.yaml b/.github/workflows/functional-baremetal.yaml index 068537d901..7cd5556835 100644 --- a/.github/workflows/functional-baremetal.yaml +++ b/.github/workflows/functional-baremetal.yaml @@ -36,6 +36,9 @@ jobs: run: sudo apt update && sudo apt -y upgrade shell: bash if: matrix.ubuntu_version == '20.04' + - name: Work around broken dnsmasq + run: sudo apt-get purge -y dnsmasq-base + if: matrix.ubuntu_version == '22.04' - name: Deploy devstack uses: EmilienM/devstack-action@c41f86d8df58b53c55f070207b6dfce656788cfd with: From 5a3a62ce3d32a34a5024a490c4059eee249a9183 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Mar 2024 09:53:30 +0000 Subject: [PATCH 18/19] build(deps): bump golang.org/x/crypto from 0.20.0 to 0.21.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.20.0 to 0.21.0. - [Commits](https://github.com/golang/crypto/compare/v0.20.0...v0.21.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index eade2a66d8..16fba4e88e 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module github.com/gophercloud/gophercloud/v2 go 1.21.6 require ( - golang.org/x/crypto v0.20.0 + golang.org/x/crypto v0.21.0 gopkg.in/yaml.v2 v2.4.0 ) -require golang.org/x/sys v0.17.0 // indirect +require golang.org/x/sys v0.18.0 // indirect diff --git a/go.sum b/go.sum index b1239ddefe..567ebb0d14 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,9 @@ -golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= -golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= -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/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +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.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= From c312f03d962b835a5a5a74f80001aeaf272e3301 Mon Sep 17 00:00:00 2001 From: Pierre Prinetti Date: Wed, 6 Mar 2024 16:38:26 +0100 Subject: [PATCH 19/19] Remove context from the Provider client Now that Gophercloud has per-call context, the `context.Context` in the Provider client is redundant and difficult to get right. This patch removes support for attaching a context to the Provider client. --- CHANGELOG.md | 1 + internal/ctxt/merge.go | 52 ------------- internal/ctxt/merge_test.go | 133 -------------------------------- provider_client.go | 19 +---- testing/provider_client_test.go | 12 ++- 5 files changed, 9 insertions(+), 208 deletions(-) delete mode 100644 internal/ctxt/merge.go delete mode 100644 internal/ctxt/merge_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 37692596bc..3495030478 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ BREAKING CHANGES: * [GH-2886](https://github.com/gophercloud/gophercloud/pull/2886) ports: Fix value_specs implementation * [GH-2665](https://github.com/gophercloud/gophercloud/pull/2665) Cinder: Remove multiatttach request parameter * [GH-2936](https://github.com/gophercloud/gophercloud/pull/2936) Make Gophercloud context-aware: all function signatures triggering an HTTP call now accept a context.Context for tracing and cancellation +* [GH-2970](https://github.com/gophercloud/gophercloud/pull/2970) Remove context from the Provider client New features and improvements: diff --git a/internal/ctxt/merge.go b/internal/ctxt/merge.go deleted file mode 100644 index 5575596a4e..0000000000 --- a/internal/ctxt/merge.go +++ /dev/null @@ -1,52 +0,0 @@ -// package ctxt implements context merging. -package ctxt - -import ( - "context" - "time" -) - -type mergeContext struct { - context.Context - ctx2 context.Context -} - -// Merge returns a context that is cancelled when at least one of the parents -// is cancelled. The returned context also returns the values of ctx1, or ctx2 -// if nil. -func Merge(ctx1, ctx2 context.Context) (context.Context, context.CancelFunc) { - ctx, cancel := context.WithCancelCause(ctx1) - stop := context.AfterFunc(ctx2, func() { - cancel(context.Cause(ctx2)) - }) - - return &mergeContext{ - Context: ctx, - ctx2: ctx2, - }, func() { - stop() - cancel(context.Canceled) - } -} - -// Value returns ctx2's value if ctx's is nil. -func (ctx *mergeContext) Value(key any) any { - if v := ctx.Context.Value(key); v != nil { - return v - } - return ctx.ctx2.Value(key) -} - -// Deadline returns the earlier deadline of the two parents of ctx. -func (ctx *mergeContext) Deadline() (time.Time, bool) { - if d1, ok := ctx.Context.Deadline(); ok { - if d2, ok := ctx.ctx2.Deadline(); ok { - if d1.Before(d2) { - return d1, true - } - return d2, true - } - return d1, ok - } - return ctx.ctx2.Deadline() -} diff --git a/internal/ctxt/merge_test.go b/internal/ctxt/merge_test.go deleted file mode 100644 index a179bd661b..0000000000 --- a/internal/ctxt/merge_test.go +++ /dev/null @@ -1,133 +0,0 @@ -package ctxt_test - -import ( - "context" - "testing" - "time" - - "github.com/gophercloud/gophercloud/v2/internal/ctxt" -) - -func TestMerge(t *testing.T) { - t.Run("returns values from both parents", func(t *testing.T) { - ctx1 := context.WithValue(context.Background(), - "key1", "value1") - - ctx2 := context.WithValue(context.WithValue(context.Background(), - "key1", "this value should be overridden"), - "key2", "value2") - - ctx, cancel := ctxt.Merge(ctx1, ctx2) - defer cancel() - - if v1 := ctx.Value("key1"); v1 != nil { - if s1, ok := v1.(string); ok { - if s1 != "value1" { - t.Errorf("found value for key1 %q, expected %q", s1, "value1") - } - } else { - t.Errorf("key1 is not the expected type string") - } - } else { - t.Errorf("key1 returned nil") - } - - if v2 := ctx.Value("key2"); v2 != nil { - if s2, ok := v2.(string); ok { - if s2 != "value2" { - t.Errorf("found value for key2 %q, expected %q", s2, "value2") - } - } else { - t.Errorf("key2 is not the expected type string") - } - } else { - t.Errorf("key2 returned nil") - } - }) - - t.Run("first parent cancels", func(t *testing.T) { - ctx1, cancel1 := context.WithCancel(context.Background()) - ctx2, cancel2 := context.WithCancel(context.Background()) - defer cancel2() - - ctx, cancel := ctxt.Merge(ctx1, ctx2) - defer cancel() - - if err := ctx.Err(); err != nil { - t.Errorf("context unexpectedly done: %v", err) - } - - cancel1() - time.Sleep(1 * time.Millisecond) - if err := ctx.Err(); err == nil { - t.Errorf("context not done despite parent1 cancelled") - } - }) - - t.Run("second parent cancels", func(t *testing.T) { - ctx1, cancel1 := context.WithCancel(context.Background()) - ctx2, cancel2 := context.WithCancel(context.Background()) - defer cancel1() - - ctx, cancel := ctxt.Merge(ctx1, ctx2) - defer cancel() - - if err := ctx.Err(); err != nil { - t.Errorf("context unexpectedly done: %v", err) - } - - cancel2() - time.Sleep(1 * time.Millisecond) - if err := ctx.Err(); err == nil { - t.Errorf("context not done despite parent2 cancelled") - } - }) - - t.Run("inherits deadline from first parent", func(t *testing.T) { - now := time.Now() - t1 := now.Add(time.Hour) - t2 := t1.Add(time.Second) - - ctx1, cancel1 := context.WithDeadline(context.Background(), t1) - ctx2, cancel2 := context.WithDeadline(context.Background(), t2) - defer cancel1() - defer cancel2() - - ctx, cancel := ctxt.Merge(ctx1, ctx2) - defer cancel() - - if err := ctx.Err(); err != nil { - t.Errorf("context unexpectedly done: %v", err) - } - - if deadline, ok := ctx.Deadline(); ok { - if deadline != t1 { - t.Errorf("expected deadline to be %v, found %v", t1, deadline) - } - } - }) - - t.Run("inherits deadline from second parent", func(t *testing.T) { - now := time.Now() - t2 := now.Add(time.Hour) - t1 := t2.Add(time.Second) - - ctx1, cancel1 := context.WithDeadline(context.Background(), t1) - ctx2, cancel2 := context.WithDeadline(context.Background(), t2) - defer cancel1() - defer cancel2() - - ctx, cancel := ctxt.Merge(ctx1, ctx2) - defer cancel() - - if err := ctx.Err(); err != nil { - t.Errorf("context unexpectedly done: %v", err) - } - - if deadline, ok := ctx.Deadline(); ok { - if deadline != t2 { - t.Errorf("expected deadline to be %v, found %v", t2, deadline) - } - } - }) -} diff --git a/provider_client.go b/provider_client.go index f2fb077b8c..cffa6408ad 100644 --- a/provider_client.go +++ b/provider_client.go @@ -9,8 +9,6 @@ import ( "net/http" "strings" "sync" - - "github.com/gophercloud/gophercloud/v2/internal/ctxt" ) // DefaultUserAgent is the default User-Agent string set in the request header. @@ -89,11 +87,6 @@ type ProviderClient struct { // with the token and reauth func zeroed. Such client can be used to perform reauthorization. Throwaway bool - // Context is the context passed to the HTTP request. Values set on the - // per-call context, when available, override values set on this - // context. - Context context.Context - // Retry backoff func is called when rate limited. RetryBackoffFunc RetryBackoffFunc @@ -392,12 +385,6 @@ func (client *ProviderClient) doRequest(ctx context.Context, method, url string, body = options.RawBody } - if client.Context != nil { - var cancel context.CancelFunc - ctx, cancel = ctxt.Merge(ctx, client.Context) - defer cancel() - } - req, err := http.NewRequestWithContext(ctx, method, url, body) if err != nil { return nil, err @@ -555,7 +542,7 @@ func (client *ProviderClient) doRequest(ctx context.Context, method, url string, var e error state.retries = state.retries + 1 - e = f(client.Context, &respErr, err, state.retries) + e = f(ctx, &respErr, err, state.retries) if e != nil { return resp, e @@ -592,7 +579,7 @@ func (client *ProviderClient) doRequest(ctx context.Context, method, url string, if err != nil && client.RetryFunc != nil { var e error state.retries = state.retries + 1 - e = client.RetryFunc(client.Context, method, url, options, err, state.retries) + e = client.RetryFunc(ctx, method, url, options, err, state.retries) if e != nil { return resp, e } @@ -616,7 +603,7 @@ func (client *ProviderClient) doRequest(ctx context.Context, method, url string, if client.RetryFunc != nil { var e error state.retries = state.retries + 1 - e = client.RetryFunc(client.Context, method, url, options, err, state.retries) + e = client.RetryFunc(ctx, method, url, options, err, state.retries) if e != nil { return resp, e } diff --git a/testing/provider_client_test.go b/testing/provider_client_test.go index 337520bdab..54c0d1e784 100644 --- a/testing/provider_client_test.go +++ b/testing/provider_client_test.go @@ -375,9 +375,9 @@ func TestRequestWithContext(t *testing.T) { defer ts.Close() ctx, cancel := context.WithCancel(context.Background()) - p := &gophercloud.ProviderClient{Context: ctx} + p := &gophercloud.ProviderClient{} - res, err := p.Request(context.TODO(), "GET", ts.URL, &gophercloud.RequestOpts{KeepResponseBody: true}) + res, err := p.Request(ctx, "GET", ts.URL, &gophercloud.RequestOpts{KeepResponseBody: true}) th.AssertNoErr(t, err) _, err = io.ReadAll(res.Body) th.AssertNoErr(t, err) @@ -385,7 +385,7 @@ func TestRequestWithContext(t *testing.T) { th.AssertNoErr(t, err) cancel() - res, err = p.Request(context.TODO(), "GET", ts.URL, &gophercloud.RequestOpts{}) + res, err = p.Request(ctx, "GET", ts.URL, &gophercloud.RequestOpts{}) if err == nil { t.Fatal("expecting error, got nil") } @@ -605,9 +605,7 @@ func TestRequestRetryContext(t *testing.T) { cancel() }() - p := &gophercloud.ProviderClient{ - Context: ctx, - } + p := &gophercloud.ProviderClient{} p.UseTokenLock() p.SetToken(client.TokenID) p.MaxBackoffRetries = 3 @@ -624,7 +622,7 @@ func TestRequestRetryContext(t *testing.T) { http.Error(w, "retry later", http.StatusTooManyRequests) }) - _, err := p.Request(context.TODO(), "GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) + _, err := p.Request(ctx, "GET", th.Endpoint()+"/route", &gophercloud.RequestOpts{}) if err == nil { t.Fatal("expecting error, got nil") }