build(deps): bump github.com/gophercloud/gophercloud

Bumps [github.com/gophercloud/gophercloud](https://github.com/gophercloud/gophercloud) from 0.24.0 to 1.0.0.
- [Release notes](https://github.com/gophercloud/gophercloud/releases)
- [Changelog](https://github.com/gophercloud/gophercloud/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gophercloud/gophercloud/compare/v0.24.0...v1.0.0)

---
updated-dependencies:
- dependency-name: github.com/gophercloud/gophercloud
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
dependabot[bot] 2022-08-30 13:45:04 +00:00 committed by Ondřej Budai
parent 8f26317115
commit c864343770
20 changed files with 174 additions and 603 deletions

2
go.mod
View file

@ -26,7 +26,7 @@ require (
github.com/golang-jwt/jwt/v4 v4.4.2 github.com/golang-jwt/jwt/v4 v4.4.2
github.com/google/go-cmp v0.5.8 github.com/google/go-cmp v0.5.8
github.com/google/uuid v1.3.0 github.com/google/uuid v1.3.0
github.com/gophercloud/gophercloud v0.24.0 github.com/gophercloud/gophercloud v1.0.0
github.com/hashicorp/go-retryablehttp v0.7.1 github.com/hashicorp/go-retryablehttp v0.7.1
github.com/jackc/pgtype v1.12.0 github.com/jackc/pgtype v1.12.0
github.com/jackc/pgx/v4 v4.17.1 github.com/jackc/pgx/v4 v4.17.1

4
go.sum
View file

@ -814,8 +814,8 @@ github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2c
github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ= github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ=
github.com/gophercloud/gophercloud v0.24.0 h1:jDsIMGJ1KZpAjYfQgGI2coNQj5Q83oPzuiGJRFWgMzw= github.com/gophercloud/gophercloud v1.0.0 h1:9nTGx0jizmHxDobe4mck89FyQHVyA3CaXLIUSGJjP9k=
github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= github.com/gophercloud/gophercloud v1.0.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU=
github.com/gordonklaus/ineffassign v0.0.0-20210225214923-2e10b2664254/go.mod h1:M9mZEtGIsR1oDaZagNPNG9iq9n2HrhZ17dsXk73V3Lw= github.com/gordonklaus/ineffassign v0.0.0-20210225214923-2e10b2664254/go.mod h1:M9mZEtGIsR1oDaZagNPNG9iq9n2HrhZ17dsXk73V3Lw=

View file

@ -1,533 +0,0 @@
- job:
name: gophercloud-unittest
parent: golang-test
description: |
Run gophercloud unit test
run: .zuul/playbooks/gophercloud-unittest/run.yaml
nodeset: ubuntu-xenial-ut
- job:
name: gophercloud-acceptance-test-base
parent: golang-test
run: .zuul/playbooks/gophercloud-acceptance-test/run.yaml
description: |
Base job for all gophercloud acceptance tests
timeout: 18000 # 5 hours
abstract: true
nodeset: ubuntu-focal
irrelevant-files:
- ^.*\.md$
- ^LICENSE$
- job:
name: gophercloud-acceptance-test-compute
parent: gophercloud-acceptance-test-base
description: |
Run gophercloud compute acceptance test on master branch. This runs when any file is patched
except if it's doc.
vars:
# the list of all available tests can generated by:
# find acceptance/openstack -name '*_test.go' -exec dirname {} \; | sort -n | uniq -c | awk '{print $2}'
acceptance_tests:
- acceptance/openstack
- acceptance/openstack/compute/v2
- acceptance/openstack/container/v1
- acceptance/openstack/identity/v2
- acceptance/openstack/identity/v3
- acceptance/openstack/keymanager/v1
- acceptance/openstack/orchestration/v1
- acceptance/openstack/placement/v1
devstack_services:
- barbican
- heat
- zun
- job:
name: gophercloud-acceptance-test-networking
parent: gophercloud-acceptance-test-base
description: |
Run gophercloud networking acceptance test on master branch
files:
- ^.*dns.*$
- ^.*loadbalancer.*$
- ^.*networking.*$
vars:
prefetch_amphora: true
devstack_env:
OCTAVIA_AMP_IMAGE_FILE: /opt/octavia-amphora/amphora-x64-haproxy.qcow2
# the list of all available tests can generated by:
# find acceptance/openstack -name '*_test.go' -exec dirname {} \; | sort -n | uniq -c | awk '{print $2}'
acceptance_tests:
- acceptance/openstack/dns/v2
- acceptance/openstack/loadbalancer/v2
- acceptance/openstack/networking/v2
- acceptance/openstack/networking/v2/extensions
- acceptance/openstack/networking/v2/extensions/agents
- acceptance/openstack/networking/v2/extensions/dns
- acceptance/openstack/networking/v2/extensions/layer3
- acceptance/openstack/networking/v2/extensions/mtu
- acceptance/openstack/networking/v2/extensions/networkipavailabilities
- acceptance/openstack/networking/v2/extensions/portsbinding
- acceptance/openstack/networking/v2/extensions/qos/policies
- acceptance/openstack/networking/v2/extensions/qos/rules
- acceptance/openstack/networking/v2/extensions/qos/ruletypes
- acceptance/openstack/networking/v2/extensions/quotas
- acceptance/openstack/networking/v2/extensions/rbacpolicies
- acceptance/openstack/networking/v2/extensions/subnetpools
- acceptance/openstack/networking/v2/extensions/trunks
- acceptance/openstack/networking/v2/extensions/vlantransparent
devstack_projects: 'openstack/neutron-dynamic-routing'
devstack_services:
- designate
- neutron-dynamic-routing
- neutron-ext
- octavia
- job:
name: gophercloud-acceptance-test-storage
parent: gophercloud-acceptance-test-base
description: |
Run gophercloud storage acceptance test on master branch
files:
- ^.*blockstorage.*$
- ^.*imageservice.*$
- ^.*objectstorage.*$
- ^.*sharedfilesystems.*$
vars:
acceptance_tests:
- acceptance/openstack/blockstorage
- acceptance/openstack/blockstorage/extensions
- acceptance/openstack/blockstorage/v3
- acceptance/openstack/imageservice/v2
- acceptance/openstack/objectstorage/v1
- acceptance/openstack/sharedfilesystems/v2
- acceptance/openstack/sharedfilesystems/v2/messages
devstack_services:
- manila
- job:
name: gophercloud-acceptance-test-ironic
parent: gophercloud-acceptance-test-base
description: |
Run gophercloud ironic acceptance test on master branch
files:
- ^.*baremetal.*$
vars:
devstack_services:
- ironic
devstack_override_enabled_services: 'g-api,g-reg,q-agt,q-dhcp,q-l3,q-svc,key,mysql,rabbit,ir-api,ir-cond,s-account,s-container,s-object,s-proxy'
devstack_projects: 'openstack/ironic-python-agent-builder openstack/ironic'
acceptance_tests:
- acceptance/openstack/baremetal/v1
- job:
name: gophercloud-acceptance-test-compute-ussuri
parent: gophercloud-acceptance-test-compute
nodeset: ubuntu-bionic
description: |
Run gophercloud compute acceptance test on ussuri branch
vars:
global_env:
OS_BRANCH: stable/ussuri
- job:
name: gophercloud-acceptance-test-networking-ussuri
parent: gophercloud-acceptance-test-networking
nodeset: ubuntu-bionic
description: |
Run gophercloud networking acceptance test on ussuri branch
vars:
global_env:
OS_BRANCH: stable/ussuri
- job:
name: gophercloud-acceptance-test-storage-ussuri
parent: gophercloud-acceptance-test-storage
nodeset: ubuntu-bionic
description: |
Run gophercloud storage test on ussuri branch
vars:
global_env:
OS_BRANCH: stable/ussuri
- job:
name: gophercloud-acceptance-test-compute-train
parent: gophercloud-acceptance-test-compute
nodeset: ubuntu-xenial
description: |
Run gophercloud compute acceptance test on train branch
vars:
global_env:
OS_BRANCH: stable/train
- job:
name: gophercloud-acceptance-test-networking-train
parent: gophercloud-acceptance-test-networking
nodeset: ubuntu-xenial
description: |
Run gophercloud networking acceptance test on train branch
vars:
global_env:
OS_BRANCH: stable/train
- job:
name: gophercloud-acceptance-test-storage-train
parent: gophercloud-acceptance-test-storage
nodeset: ubuntu-xenial
description: |
Run gophercloud storage acceptance test on train branch
vars:
global_env:
OS_BRANCH: stable/train
- job:
name: gophercloud-acceptance-test-compute-stein
parent: gophercloud-acceptance-test-compute
nodeset: ubuntu-xenial
description: |
Run gophercloud compute acceptance test on stein branch
vars:
global_env:
OS_BRANCH: stable/stein
- job:
name: gophercloud-acceptance-test-networking-stein
parent: gophercloud-acceptance-test-networking
nodeset: ubuntu-xenial
description: |
Run gophercloud networking acceptance test on stein branch
vars:
global_env:
OS_BRANCH: stable/stein
- job:
name: gophercloud-acceptance-test-storage-stein
parent: gophercloud-acceptance-test-storage
nodeset: ubuntu-xenial
description: |
Run gophercloud storage acceptance test on stein branch
vars:
global_env:
OS_BRANCH: stable/stein
- job:
name: gophercloud-acceptance-test-compute-rocky
parent: gophercloud-acceptance-test-compute
nodeset: ubuntu-xenial
description: |
Run gophercloud compute acceptance test on rocky branch
vars:
global_env:
OS_BRANCH: stable/rocky
- job:
name: gophercloud-acceptance-test-networking-rocky
parent: gophercloud-acceptance-test-networking
nodeset: ubuntu-xenial
description: |
Run gophercloud networking acceptance test on rocky branch
vars:
global_env:
OS_BRANCH: stable/rocky
- job:
name: gophercloud-acceptance-test-storage-rocky
parent: gophercloud-acceptance-test-storage
nodeset: ubuntu-xenial
description: |
Run gophercloud storage acceptance test on rocky branch
vars:
global_env:
OS_BRANCH: stable/rocky
- job:
name: gophercloud-acceptance-test-compute-queens
parent: gophercloud-acceptance-test-compute
description: |
Run gophercloud compute acceptance test on queens branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/queens
- job:
name: gophercloud-acceptance-test-networking-queens
parent: gophercloud-acceptance-test-networking
description: |
Run gophercloud networking acceptance test on queens branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/queens
- job:
name: gophercloud-acceptance-test-storage-queens
parent: gophercloud-acceptance-test-storage
description: |
Run gophercloud storage acceptance test on queens branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/queens
# NOTE: A Pike-based devstack environment is currently
# not building correctly. This might be a temporary issue.
- job:
name: gophercloud-acceptance-test-compute-pike
parent: gophercloud-acceptance-test-compute
description: |
Run gophercloud compute acceptance test on pike branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/pike
- job:
name: gophercloud-acceptance-test-networking-pike
parent: gophercloud-acceptance-test-networking
description: |
Run gophercloud networking acceptance test on pike branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/pike
- job:
name: gophercloud-acceptance-test-storage-pike
parent: gophercloud-acceptance-test-storage
description: |
Run gophercloud storage acceptance test on pike branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/pike
- job:
name: gophercloud-acceptance-test-compute-ocata
parent: gophercloud-acceptance-test-compute
description: |
Run gophercloud compute acceptance test on ocata branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/ocata
- job:
name: gophercloud-acceptance-test-networking-ocata
parent: gophercloud-acceptance-test-networking
description: |
Run gophercloud networking acceptance test on ocata branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/ocata
- job:
name: gophercloud-acceptance-test-storage-ocata
parent: gophercloud-acceptance-test-storage
description: |
Run gophercloud storage acceptance test on ocata branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/ocata
# NOTE: A Newton-based devstack environment is currently
# not building correctly. This might be a temporary issue.
- job:
name: gophercloud-acceptance-test-compute-newton
parent: gophercloud-acceptance-test-compute
description: |
Run gophercloud compute acceptance test on newton branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/newton
- job:
name: gophercloud-acceptance-test-networking-newton
parent: gophercloud-acceptance-test-networking
description: |
Run gophercloud networking acceptance test on newton branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/newton
- job:
name: gophercloud-acceptance-test-storage-newton
parent: gophercloud-acceptance-test-storage
description: |
Run gophercloud storage acceptance test on newton branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/newton
# The following jobs are maintained because they are parents
# for gophercloud v0.4.0 acceptance tests in theopenlab/openlab-zuul-jobs.
# TODO(emilien) update the childs to use the new variants.
- job:
name: gophercloud-acceptance-test-legacy
parent: gophercloud-acceptance-test-base
description: |
THIS JOB REMAINS FOR LEGACY. Will be removed soon to be replaced by its variants.
Run gophercloud acceptance test on the master branch. This runs when any file is patched
except if it's doc.
vars:
# the list of all available tests can generated by:
# find acceptance/openstack -name '*_test.go' -exec dirname {} \; | sort -n | uniq -c | awk '{print $2}'
acceptance_tests:
- acceptance/openstack
- acceptance/openstack/blockstorage
- acceptance/openstack/blockstorage/extensions
- acceptance/openstack/blockstorage/v3
- acceptance/openstack/compute/v2
- acceptance/openstack/container/v1
- acceptance/openstack/dns/v2
- acceptance/openstack/identity/v2
- acceptance/openstack/identity/v3
- acceptance/openstack/imageservice/v2
- acceptance/openstack/keymanager/v1
- acceptance/openstack/loadbalancer/v2
- acceptance/openstack/networking/v2
- acceptance/openstack/networking/v2/extensions
- acceptance/openstack/networking/v2/extensions/agents
- acceptance/openstack/networking/v2/extensions/dns
- acceptance/openstack/networking/v2/extensions/layer3
- acceptance/openstack/networking/v2/extensions/mtu
- acceptance/openstack/networking/v2/extensions/networkipavailabilities
- acceptance/openstack/networking/v2/extensions/portsbinding
- acceptance/openstack/networking/v2/extensions/qos/policies
- acceptance/openstack/networking/v2/extensions/qos/rules
- acceptance/openstack/networking/v2/extensions/qos/ruletypes
- acceptance/openstack/networking/v2/extensions/quotas
- acceptance/openstack/networking/v2/extensions/rbacpolicies
- acceptance/openstack/networking/v2/extensions/subnetpools
- acceptance/openstack/networking/v2/extensions/trunks
- acceptance/openstack/networking/v2/extensions/vlantransparent
- acceptance/openstack/objectstorage/v1
- acceptance/openstack/orchestration/v1
- acceptance/openstack/placement/v1
- acceptance/openstack/sharedfilesystems/v2
- acceptance/openstack/sharedfilesystems/v2/messages
devstack_services:
- designate
- manila
- neutron-ext
- octavia
- zun
- job:
name: gophercloud-acceptance-test-stein
parent: gophercloud-acceptance-test-legacy
nodeset: ubuntu-xenial
description: |
Run gophercloud acceptance test on stein branch
vars:
global_env:
OS_BRANCH: stable/stein
- job:
name: gophercloud-acceptance-test-rocky
parent: gophercloud-acceptance-test-legacy
nodeset: ubuntu-xenial
description: |
Run gophercloud acceptance test on rocky branch
vars:
global_env:
OS_BRANCH: stable/rocky
- job:
name: gophercloud-acceptance-test-queens
parent: gophercloud-acceptance-test-legacy
description: |
Run gophercloud acceptance test on queens branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/queens
# NOTE: A Pike-based devstack environment is currently
# not building correctly. This might be a temporary issue.
- job:
name: gophercloud-acceptance-test-pike
parent: gophercloud-acceptance-test-legacy
description: |
Run gophercloud acceptance test on pike branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/pike
- job:
name: gophercloud-acceptance-test-ocata
parent: gophercloud-acceptance-test-legacy
description: |
Run gophercloud acceptance test on ocata branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/ocata
# NOTE: A Newton-based devstack environment is currently
# not building correctly. This might be a temporary issue.
- job:
name: gophercloud-acceptance-test-newton
parent: gophercloud-acceptance-test-legacy
description: |
Run gophercloud acceptance test on newton branch
nodeset: ubuntu-xenial
vars:
global_env:
OS_BRANCH: stable/newton
- project:
name: gophercloud/gophercloud
check:
jobs:
- gophercloud-unittest
- gophercloud-acceptance-test-compute
- gophercloud-acceptance-test-networking
- gophercloud-acceptance-test-storage
- gophercloud-acceptance-test-ironic
recheck-newton:
jobs:
- gophercloud-acceptance-test-compute-newton
- gophercloud-acceptance-test-networking-newton
- gophercloud-acceptance-test-storage-newton
recheck-ocata:
jobs:
- gophercloud-acceptance-test-compute-ocata
- gophercloud-acceptance-test-networking-ocata
- gophercloud-acceptance-test-storage-ocata
recheck-pike:
jobs:
- gophercloud-acceptance-test-compute-pike
- gophercloud-acceptance-test-networking-pike
- gophercloud-acceptance-test-storage-pike
recheck-queens:
jobs:
- gophercloud-acceptance-test-compute-queens
- gophercloud-acceptance-test-networking-queens
- gophercloud-acceptance-test-storage-queens
recheck-rocky:
jobs:
- gophercloud-acceptance-test-compute-rocky
- gophercloud-acceptance-test-networking-rocky
- gophercloud-acceptance-test-storage-rocky
recheck-stein:
jobs:
- gophercloud-acceptance-test-compute-stein
- gophercloud-acceptance-test-networking-stein
- gophercloud-acceptance-test-storage-stein
recheck-train:
jobs:
- gophercloud-acceptance-test-compute-train
- gophercloud-acceptance-test-networking-train
- gophercloud-acceptance-test-storage-train
recheck-ussuri:
jobs:
- gophercloud-acceptance-test-compute-ussuri
- gophercloud-acceptance-test-networking-ussuri
- gophercloud-acceptance-test-storage-ussuri

View file

@ -1,3 +1,62 @@
## 1.0.0 (2022-08-29)
UPGRADE NOTES + PROMISE OF COMPATIBILITY
* Introducing Gophercloud v1! Like for every other release so far, all clients will upgrade automatically with `go get -d github.com/gophercloud/gophercloud` unless the dependency is pinned in `go.mod`.
* Gophercloud v1 comes with a promise of compatibility: no breaking changes are expected to merge before v2.0.0.
IMPROVEMENTS
* Added `compute.v2/extensions/services.Delete` [GH-2427](https://github.com/gophercloud/gophercloud/pull/2427)
* Added support for `standard-attr-revisions` to `networking/v2/networks`, `networking/v2/ports`, and `networking/v2/subnets` [GH-2437](https://github.com/gophercloud/gophercloud/pull/2437)
* Added `updated_at` and `created_at` fields to `networking/v2/ports.Port` [GH-2445](https://github.com/gophercloud/gophercloud/pull/2445)
## 0.25.0 (May 30, 2022)
BREAKING CHANGES
* Replaced `blockstorage/noauth.NewBlockStorageNoAuth` with `NewBlockStorageNoAuthV2` and `NewBlockStorageNoAuthV3` [GH-2343](https://github.com/gophercloud/gophercloud/pull/2343)
* Renamed `blockstorage/extensions/schedulerstats.Capabilities`'s `GoodnessFuction` field to `GoodnessFunction` [GH-2346](https://github.com/gophercloud/gophercloud/pull/2346)
IMPROVEMENTS
* Added `RequestOpts.OmitHeaders` to provider client [GH-2315](https://github.com/gophercloud/gophercloud/pull/2315)
* Added `identity/v3/extensions/projectendpoints.List` [GH-2304](https://github.com/gophercloud/gophercloud/pull/2304)
* Added `identity/v3/extensions/projectendpoints.Create` [GH-2304](https://github.com/gophercloud/gophercloud/pull/2304)
* Added `identity/v3/extensions/projectendpoints.Delete` [GH-2304](https://github.com/gophercloud/gophercloud/pull/2304)
* Added protocol `any` to `networking/v2/extensions/security/rules.Create` [GH-2310](https://github.com/gophercloud/gophercloud/pull/2310)
* Added `REDIRECT_PREFIX` and `REDIRECT_HTTP_CODE` to `loadbalancer/v2/l7policies.Create` [GH-2324](https://github.com/gophercloud/gophercloud/pull/2324)
* Added `SOURCE_IP_PORT` LB method to `loadbalancer/v2/pools.Create` [GH-2300](https://github.com/gophercloud/gophercloud/pull/2300)
* Added `AllocatedCapacityGB` capability to `blockstorage/extensions/schedulerstats.Capabilities` [GH-2348](https://github.com/gophercloud/gophercloud/pull/2348)
* Added `Metadata` to `dns/v2/recordset.RecordSet` [GH-2353](https://github.com/gophercloud/gophercloud/pull/2353)
* Added missing fields to `compute/v2/extensions/servergroups.List` [GH-2355](https://github.com/gophercloud/gophercloud/pull/2355)
* Added missing labels fields to `containerinfra/v1/nodegroups` [GH-2377](https://github.com/gophercloud/gophercloud/pull/2377)
* Added missing fields to `loadbalancer/v2/listeners.Listener` [GH-2407](https://github.com/gophercloud/gophercloud/pull/2407)
* Added `identity/v3/limits.List` [GH-2360](https://github.com/gophercloud/gophercloud/pull/2360)
* Added `ParentProviderUUID` to `placement/v1/resourceproviders.Create` [GH-2356](https://github.com/gophercloud/gophercloud/pull/2356)
* Added `placement/v1/resourceproviders.Delete` [GH-2357](https://github.com/gophercloud/gophercloud/pull/2357)
* Added `placement/v1/resourceproviders.Get` [GH-2358](https://github.com/gophercloud/gophercloud/pull/2358)
* Added `placement/v1/resourceproviders.Update` [GH-2359](https://github.com/gophercloud/gophercloud/pull/2359)
* Added `networking/v2/extensions/bgp/peers.List` [GH-2241](https://github.com/gophercloud/gophercloud/pull/2241)
* Added `networking/v2/extensions/bgp/peers.Get` [GH-2241](https://github.com/gophercloud/gophercloud/pull/2241)
* Added `networking/v2/extensions/bgp/peers.Create` [GH-2388](https://github.com/gophercloud/gophercloud/pull/2388)
* Added `networking/v2/extensions/bgp/peers.Delete` [GH-2388](https://github.com/gophercloud/gophercloud/pull/2388)
* Added `networking/v2/extensions/bgp/peers.Update` [GH-2396](https://github.com/gophercloud/gophercloud/pull/2396)
* Added `networking/v2/extensions/bgp/speakers.Create` [GH-2395](https://github.com/gophercloud/gophercloud/pull/2395)
* Added `networking/v2/extensions/bgp/speakers.Delete` [GH-2395](https://github.com/gophercloud/gophercloud/pull/2395)
* Added `networking/v2/extensions/bgp/speakers.Update` [GH-2400](https://github.com/gophercloud/gophercloud/pull/2400)
* Added `networking/v2/extensions/bgp/speakers.AddBGPPeer` [GH-2400](https://github.com/gophercloud/gophercloud/pull/2400)
* Added `networking/v2/extensions/bgp/speakers.RemoveBGPPeer` [GH-2400](https://github.com/gophercloud/gophercloud/pull/2400)
* Added `networking/v2/extensions/bgp/speakers.GetAdvertisedRoutes` [GH-2406](https://github.com/gophercloud/gophercloud/pull/2406)
* Added `networking/v2/extensions/bgp/speakers.AddGatewayNetwork` [GH-2406](https://github.com/gophercloud/gophercloud/pull/2406)
* Added `networking/v2/extensions/bgp/speakers.RemoveGatewayNetwork` [GH-2406](https://github.com/gophercloud/gophercloud/pull/2406)
* Added `baremetal/v1/nodes.SetMaintenance` and `baremetal/v1/nodes.UnsetMaintenance` [GH-2384](https://github.com/gophercloud/gophercloud/pull/2384)
* Added `sharedfilesystems/v2/services.List` [GH-2350](https://github.com/gophercloud/gophercloud/pull/2350)
* Added `sharedfilesystems/v2/schedulerstats.List` [GH-2350](https://github.com/gophercloud/gophercloud/pull/2350)
* Added `sharedfilesystems/v2/schedulerstats.ListDetail` [GH-2350](https://github.com/gophercloud/gophercloud/pull/2350)
* Added ability to handle 502 and 504 errors [GH-2245](https://github.com/gophercloud/gophercloud/pull/2245)
* Added `IncludeSubtree` to `identity/v3/roles.ListAssignments` [GH-2411](https://github.com/gophercloud/gophercloud/pull/2411)
## 0.24.0 (December 13, 2021) ## 0.24.0 (December 13, 2021)
UPGRADE NOTES UPGRADE NOTES

View file

@ -1,4 +1,5 @@
Copyright 2012-2013 Rackspace, Inc. Copyright 2012-2013 Rackspace, Inc.
Copyright Gophercloud authors
Licensed under the Apache License, Version 2.0 (the "License"); you may not use Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the this file except in compliance with the License. You may obtain a copy of the

View file

@ -126,7 +126,9 @@ Have a look at the [FAQ](./docs/FAQ.md) for some tips on customizing the way Gop
## Backwards-Compatibility Guarantees ## Backwards-Compatibility Guarantees
None. Vendor it and write tests covering the parts you use. Gophercloud versioning follows [semver](https://semver.org/spec/v2.0.0.html).
Before `v1.0.0`, there were no guarantees. Starting with v1, there will be no breaking changes within a major release.
## Contributing ## Contributing

View file

@ -12,20 +12,20 @@ provider.
An example of manually providing authentication information: An example of manually providing authentication information:
opts := gophercloud.AuthOptions{ opts := gophercloud.AuthOptions{
IdentityEndpoint: "https://openstack.example.com:5000/v2.0", IdentityEndpoint: "https://openstack.example.com:5000/v2.0",
Username: "{username}", Username: "{username}",
Password: "{password}", Password: "{password}",
TenantID: "{tenant_id}", TenantID: "{tenant_id}",
} }
provider, err := openstack.AuthenticatedClient(opts) provider, err := openstack.AuthenticatedClient(opts)
An example of using AuthOptionsFromEnv(), where the environment variables can An example of using AuthOptionsFromEnv(), where the environment variables can
be read from a file, such as a standard openrc file: be read from a file, such as a standard openrc file:
opts, err := openstack.AuthOptionsFromEnv() opts, err := openstack.AuthOptionsFromEnv()
provider, err := openstack.AuthenticatedClient(opts) provider, err := openstack.AuthenticatedClient(opts)
*/ */
type AuthOptions struct { type AuthOptions struct {
// IdentityEndpoint specifies the HTTP endpoint that is required to work with // IdentityEndpoint specifies the HTTP endpoint that is required to work with

View file

@ -3,7 +3,7 @@ Package gophercloud provides a multi-vendor interface to OpenStack-compatible
clouds. The library has a three-level hierarchy: providers, services, and clouds. The library has a three-level hierarchy: providers, services, and
resources. resources.
Authenticating with Providers # Authenticating with Providers
Provider structs represent the cloud providers that offer and manage a Provider structs represent the cloud providers that offer and manage a
collection of services. You will generally want to create one Provider collection of services. You will generally want to create one Provider
@ -49,7 +49,7 @@ instead of "project".
opts, err := openstack.AuthOptionsFromEnv() opts, err := openstack.AuthOptionsFromEnv()
provider, err := openstack.AuthenticatedClient(opts) provider, err := openstack.AuthenticatedClient(opts)
Service Clients # Service Clients
Service structs are specific to a provider and handle all of the logic and Service structs are specific to a provider and handle all of the logic and
operations for a particular OpenStack service. Examples of services include: operations for a particular OpenStack service. Examples of services include:
@ -60,7 +60,7 @@ pass in the parent provider, like so:
client, err := openstack.NewComputeV2(provider, opts) client, err := openstack.NewComputeV2(provider, opts)
Resources # Resources
Resource structs are the domain models that services make use of in order Resource structs are the domain models that services make use of in order
to work with and represent the state of API resources: to work with and represent the state of API resources:
@ -144,6 +144,5 @@ An example retry backoff function, which respects the 429 HTTP response code and
return nil return nil
} }
*/ */
package gophercloud package gophercloud

View file

@ -156,11 +156,21 @@ type ErrDefault500 struct {
ErrUnexpectedResponseCode ErrUnexpectedResponseCode
} }
// ErrDefault502 is the default error type returned on a 502 HTTP response code.
type ErrDefault502 struct {
ErrUnexpectedResponseCode
}
// ErrDefault503 is the default error type returned on a 503 HTTP response code. // ErrDefault503 is the default error type returned on a 503 HTTP response code.
type ErrDefault503 struct { type ErrDefault503 struct {
ErrUnexpectedResponseCode ErrUnexpectedResponseCode
} }
// ErrDefault504 is the default error type returned on a 504 HTTP response code.
type ErrDefault504 struct {
ErrUnexpectedResponseCode
}
func (e ErrDefault400) Error() string { func (e ErrDefault400) Error() string {
e.DefaultErrString = fmt.Sprintf( e.DefaultErrString = fmt.Sprintf(
"Bad request with: [%s %s], error message: %s", "Bad request with: [%s %s], error message: %s",
@ -198,10 +208,16 @@ func (e ErrDefault429) Error() string {
func (e ErrDefault500) Error() string { func (e ErrDefault500) Error() string {
return "Internal Server Error" return "Internal Server Error"
} }
func (e ErrDefault502) Error() string {
return "Bad Gateway"
}
func (e ErrDefault503) Error() string { func (e ErrDefault503) Error() string {
return "The service is currently unable to handle the request due to a temporary" + return "The service is currently unable to handle the request due to a temporary" +
" overloading or maintenance. This is a temporary condition. Try again later." " overloading or maintenance. This is a temporary condition. Try again later."
} }
func (e ErrDefault504) Error() string {
return "Gateway Timeout"
}
// Err400er is the interface resource error types implement to override the error message // Err400er is the interface resource error types implement to override the error message
// from a 400 error. // from a 400 error.
@ -257,12 +273,24 @@ type Err500er interface {
Error500(ErrUnexpectedResponseCode) error Error500(ErrUnexpectedResponseCode) error
} }
// Err502er is the interface resource error types implement to override the error message
// from a 502 error.
type Err502er interface {
Error502(ErrUnexpectedResponseCode) error
}
// Err503er is the interface resource error types implement to override the error message // Err503er is the interface resource error types implement to override the error message
// from a 503 error. // from a 503 error.
type Err503er interface { type Err503er interface {
Error503(ErrUnexpectedResponseCode) error Error503(ErrUnexpectedResponseCode) error
} }
// Err504er is the interface resource error types implement to override the error message
// from a 504 error.
type Err504er interface {
Error504(ErrUnexpectedResponseCode) error
}
// ErrTimeOut is the error type returned when an operations times out. // ErrTimeOut is the error type returned when an operations times out.
type ErrTimeOut struct { type ErrTimeOut struct {
BaseError BaseError

View file

@ -412,19 +412,19 @@ func (opts RebootOpts) ToServerRebootMap() (map[string]interface{}, error) {
} }
/* /*
Reboot requests that a given server reboot. Reboot requests that a given server reboot.
Two methods exist for rebooting a server: Two methods exist for rebooting a server:
HardReboot (aka PowerCycle) starts the server instance by physically cutting HardReboot (aka PowerCycle) starts the server instance by physically cutting
power to the machine, or if a VM, terminating it at the hypervisor level. power to the machine, or if a VM, terminating it at the hypervisor level.
It's done. Caput. Full stop. It's done. Caput. Full stop.
Then, after a brief while, power is restored or the VM instance restarted. Then, after a brief while, power is restored or the VM instance restarted.
SoftReboot (aka OSReboot) simply tells the OS to restart under its own SoftReboot (aka OSReboot) simply tells the OS to restart under its own
procedure. procedure.
E.g., in Linux, asking it to enter runlevel 6, or executing E.g., in Linux, asking it to enter runlevel 6, or executing
"sudo shutdown -r now", or by asking Windows to rtart the machine. "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(client *gophercloud.ServiceClient, id string, opts RebootOptsBuilder) (r ActionResult) {
b, err := opts.ToServerRebootMap() b, err := opts.ToServerRebootMap()

View file

@ -99,7 +99,8 @@ type GetPasswordResult struct {
// If privateKey != nil the password is decrypted with the private key. // If privateKey != nil the password is decrypted with the private key.
// If privateKey == nil the encrypted password is returned and can be decrypted // If privateKey == nil the encrypted password is returned and can be decrypted
// with: // with:
// echo '<pwd>' | base64 -D | openssl rsautl -decrypt -inkey <private_key> //
// echo '<pwd>' | base64 -D | openssl rsautl -decrypt -inkey <private_key>
func (r GetPasswordResult) ExtractPassword(privateKey *rsa.PrivateKey) (string, error) { func (r GetPasswordResult) ExtractPassword(privateKey *rsa.PrivateKey) (string, error) {
var s struct { var s struct {
Password string `json:"password"` Password string `json:"password"`

View file

@ -89,7 +89,7 @@ func Create(client *gophercloud.ServiceClient, auth AuthOptionsBuilder) (r Creat
} }
resp, err := client.Post(CreateURL(client), b, &r.Body, &gophercloud.RequestOpts{ resp, err := client.Post(CreateURL(client), b, &r.Body, &gophercloud.RequestOpts{
OkCodes: []int{200, 203}, OkCodes: []int{200, 203},
MoreHeaders: map[string]string{"X-Auth-Token": ""}, OmitHeaders: []string{"X-Auth-Token"},
}) })
_, r.Header, r.Err = gophercloud.ParseResponse(resp, err) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
return return

View file

@ -36,6 +36,5 @@ Example to auth a client using EC2 access and secret keys
if err != nil { if err != nil {
panic(err) panic(err)
} }
*/ */
package ec2tokens package ec2tokens

View file

@ -118,6 +118,5 @@ Example to Create a Token using OAuth1 method
if err != nil { if err != nil {
panic(err) panic(err)
} }
*/ */
package oauth1 package oauth1

View file

@ -103,6 +103,5 @@ Example to Create a Token from a Username and Password with Project Name Scope
if err != nil { if err != nil {
panic(err) panic(err)
} }
*/ */
package tokens package tokens

View file

@ -135,7 +135,7 @@ func Create(c *gophercloud.ServiceClient, opts AuthOptionsBuilder) (r CreateResu
} }
resp, err := c.Post(tokenURL(c), b, &r.Body, &gophercloud.RequestOpts{ resp, err := c.Post(tokenURL(c), b, &r.Body, &gophercloud.RequestOpts{
MoreHeaders: map[string]string{"X-Auth-Token": ""}, OmitHeaders: []string{"X-Auth-Token"},
}) })
_, r.Header, r.Err = gophercloud.ParseResponse(resp, err) _, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
return return

View file

@ -18,18 +18,18 @@ Example to Upload Image Data
Example to Stage Image Data Example to Stage Image Data
imageID := "da3b75d9-3f4a-40e7-8a2c-bfab23927dea" imageID := "da3b75d9-3f4a-40e7-8a2c-bfab23927dea"
imageData, err := os.Open("/path/to/image/file") imageData, err := os.Open("/path/to/image/file")
if err != nil { if err != nil {
panic(err) panic(err)
} }
defer imageData.Close() defer imageData.Close()
err = imagedata.Stage(imageClient, imageID, imageData).ExtractErr() err = imagedata.Stage(imageClient, imageID, imageData).ExtractErr()
if err != nil { if err != nil {
panic(err) panic(err)
} }
Example to Download Image Data Example to Download Image Data

View file

@ -15,17 +15,17 @@ BuildRequestBody builds a map[string]interface from the given `struct`. If
parent is not an empty string, the final map[string]interface returned will parent is not an empty string, the final map[string]interface returned will
encapsulate the built one. For example: encapsulate the built one. For example:
disk := 1 disk := 1
createOpts := flavors.CreateOpts{ createOpts := flavors.CreateOpts{
ID: "1", ID: "1",
Name: "m1.tiny", Name: "m1.tiny",
Disk: &disk, Disk: &disk,
RAM: 512, RAM: 512,
VCPUs: 1, VCPUs: 1,
RxTxFactor: 1.0, RxTxFactor: 1.0,
} }
body, err := gophercloud.BuildRequestBody(createOpts, "flavor") body, err := gophercloud.BuildRequestBody(createOpts, "flavor")
The above example can be run as-is, however it is recommended to look at how The above example can be run as-is, however it is recommended to look at how
BuildRequestBody is used within Gophercloud to more fully understand how it BuildRequestBody is used within Gophercloud to more fully understand how it
@ -401,22 +401,22 @@ It accepts an arbitrary tagged structure and produces a string map that's
suitable for use as the HTTP headers of an outgoing request. Field names are suitable for use as the HTTP headers of an outgoing request. Field names are
mapped to header names based in "h" tags. mapped to header names based in "h" tags.
type struct Something { type struct Something {
Bar string `h:"x_bar"` Bar string `h:"x_bar"`
Baz int `h:"lorem_ipsum"` Baz int `h:"lorem_ipsum"`
} }
instance := Something{ instance := Something{
Bar: "AAA", Bar: "AAA",
Baz: "BBB", Baz: "BBB",
} }
will be converted into: will be converted into:
map[string]string{ map[string]string{
"x_bar": "AAA", "x_bar": "AAA",
"lorem_ipsum": "BBB", "lorem_ipsum": "BBB",
} }
Untagged fields and fields left at their zero values are skipped. Integers, Untagged fields and fields left at their zero values are skipped. Integers,
booleans and string values are supported. booleans and string values are supported.

View file

@ -325,10 +325,12 @@ type RequestOpts struct {
// OkCodes contains a list of numeric HTTP status codes that should be interpreted as success. If // OkCodes contains a list of numeric HTTP status codes that should be interpreted as success. If
// the response has a different code, an error will be returned. // the response has a different code, an error will be returned.
OkCodes []int OkCodes []int
// MoreHeaders specifies additional HTTP headers to be provide on the request. If a header is // MoreHeaders specifies additional HTTP headers to be provided on the request.
// provided with a blank value (""), that header will be *omitted* instead: use this to suppress // MoreHeaders will be overridden by OmitHeaders
// the default Accept header or an inferred Content-Type, for example.
MoreHeaders map[string]string MoreHeaders map[string]string
// OmitHeaders specifies the HTTP headers which should be omitted.
// OmitHeaders will override MoreHeaders
OmitHeaders []string
// ErrorContext specifies the resource error type to return if an error is encountered. // ErrorContext specifies the resource error type to return if an error is encountered.
// This lets resources override default error messages based on the response status code. // This lets resources override default error messages based on the response status code.
ErrorContext error ErrorContext error
@ -396,7 +398,8 @@ func (client *ProviderClient) doRequest(method, url string, options *RequestOpts
req = req.WithContext(client.Context) req = req.WithContext(client.Context)
} }
// Populate the request headers. Apply options.MoreHeaders last, to give the caller the chance to // Populate the request headers.
// Apply options.MoreHeaders and options.OmitHeaders, to give the caller the chance to
// modify or omit any header. // modify or omit any header.
if contentType != nil { if contentType != nil {
req.Header.Set("Content-Type", *contentType) req.Header.Set("Content-Type", *contentType)
@ -412,6 +415,10 @@ func (client *ProviderClient) doRequest(method, url string, options *RequestOpts
} }
} }
for _, v := range options.OmitHeaders {
req.Header.Del(v)
}
// get latest token from client // get latest token from client
for k, v := range client.AuthenticatedHeaders() { for k, v := range client.AuthenticatedHeaders() {
req.Header.Set(k, v) req.Header.Set(k, v)
@ -556,11 +563,21 @@ func (client *ProviderClient) doRequest(method, url string, options *RequestOpts
if error500er, ok := errType.(Err500er); ok { if error500er, ok := errType.(Err500er); ok {
err = error500er.Error500(respErr) err = error500er.Error500(respErr)
} }
case http.StatusBadGateway:
err = ErrDefault502{respErr}
if error502er, ok := errType.(Err502er); ok {
err = error502er.Error502(respErr)
}
case http.StatusServiceUnavailable: case http.StatusServiceUnavailable:
err = ErrDefault503{respErr} err = ErrDefault503{respErr}
if error503er, ok := errType.(Err503er); ok { if error503er, ok := errType.(Err503er); ok {
err = error503er.Error503(respErr) err = error503er.Error503(respErr)
} }
case http.StatusGatewayTimeout:
err = ErrDefault504{respErr}
if error504er, ok := errType.(Err504er); ok {
err = error504er.Error504(respErr)
}
} }
if err == nil { if err == nil {

2
vendor/modules.txt vendored
View file

@ -330,7 +330,7 @@ github.com/googleapis/gax-go/v2
github.com/googleapis/gax-go/v2/apierror github.com/googleapis/gax-go/v2/apierror
github.com/googleapis/gax-go/v2/apierror/internal/proto github.com/googleapis/gax-go/v2/apierror/internal/proto
github.com/googleapis/gax-go/v2/internal github.com/googleapis/gax-go/v2/internal
# github.com/gophercloud/gophercloud v0.24.0 # github.com/gophercloud/gophercloud v1.0.0
## explicit ## explicit
github.com/gophercloud/gophercloud github.com/gophercloud/gophercloud
github.com/gophercloud/gophercloud/openstack github.com/gophercloud/gophercloud/openstack