mirror of https://github.com/kubernetes/kops.git
update gophercloud deps
This commit is contained in:
parent
e9368feab4
commit
c7e0585e3a
2
go.mod
2
go.mod
|
@ -55,7 +55,7 @@ require (
|
||||||
github.com/google/go-tpm v0.3.2
|
github.com/google/go-tpm v0.3.2
|
||||||
github.com/google/go-tpm-tools v0.3.0-beta1
|
github.com/google/go-tpm-tools v0.3.0-beta1
|
||||||
github.com/google/uuid v1.2.0
|
github.com/google/uuid v1.2.0
|
||||||
github.com/gophercloud/gophercloud v0.18.0
|
github.com/gophercloud/gophercloud v0.23.0
|
||||||
github.com/hashicorp/hcl/v2 v2.10.1
|
github.com/hashicorp/hcl/v2 v2.10.1
|
||||||
github.com/hashicorp/vault/api v1.1.1
|
github.com/hashicorp/vault/api v1.1.1
|
||||||
github.com/jacksontj/memberlistmesh v0.0.0-20190905163944-93462b9d2bb7
|
github.com/jacksontj/memberlistmesh v0.0.0-20190905163944-93462b9d2bb7
|
||||||
|
|
4
go.sum
4
go.sum
|
@ -702,8 +702,8 @@ github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2c
|
||||||
github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=
|
github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=
|
||||||
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/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
|
github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
|
||||||
github.com/gophercloud/gophercloud v0.18.0 h1:V6hcuMPmjXg+js9flU8T3RIHDCjV7F5CG5GD0MRhP/w=
|
github.com/gophercloud/gophercloud v0.23.0 h1:I3P10oKlGu3DHP9PrEWMr1ya+/+3Rc9uRHNkRZ9wO7g=
|
||||||
github.com/gophercloud/gophercloud v0.18.0/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4=
|
github.com/gophercloud/gophercloud v0.23.0/go.mod h1:MRw6uyLj8uCGbIvBlqL7QW67t0QtNZnzydUzewo1Ioc=
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
||||||
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=
|
||||||
|
|
|
@ -54,7 +54,7 @@ require (
|
||||||
github.com/google/gofuzz v1.2.0 // indirect
|
github.com/google/gofuzz v1.2.0 // indirect
|
||||||
github.com/google/uuid v1.2.0 // indirect
|
github.com/google/uuid v1.2.0 // indirect
|
||||||
github.com/googleapis/gax-go/v2 v2.1.0 // indirect
|
github.com/googleapis/gax-go/v2 v2.1.0 // indirect
|
||||||
github.com/gophercloud/gophercloud v0.18.0 // indirect
|
github.com/gophercloud/gophercloud v0.23.0 // indirect
|
||||||
github.com/hashicorp/errwrap v1.0.0 // indirect
|
github.com/hashicorp/errwrap v1.0.0 // indirect
|
||||||
github.com/hashicorp/go-cleanhttp v0.5.1 // indirect
|
github.com/hashicorp/go-cleanhttp v0.5.1 // indirect
|
||||||
github.com/hashicorp/go-multierror v1.1.0 // indirect
|
github.com/hashicorp/go-multierror v1.1.0 // indirect
|
||||||
|
|
|
@ -874,8 +874,8 @@ github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3i
|
||||||
github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
|
github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
|
||||||
github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
|
github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
|
||||||
github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
|
github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
|
||||||
github.com/gophercloud/gophercloud v0.18.0 h1:V6hcuMPmjXg+js9flU8T3RIHDCjV7F5CG5GD0MRhP/w=
|
github.com/gophercloud/gophercloud v0.23.0 h1:I3P10oKlGu3DHP9PrEWMr1ya+/+3Rc9uRHNkRZ9wO7g=
|
||||||
github.com/gophercloud/gophercloud v0.18.0/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4=
|
github.com/gophercloud/gophercloud v0.23.0/go.mod h1:MRw6uyLj8uCGbIvBlqL7QW67t0QtNZnzydUzewo1Ioc=
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
||||||
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=
|
||||||
|
|
|
@ -31,7 +31,7 @@ func (c *openstackCloud) GetKeypair(name string) (*keypairs.KeyPair, error) {
|
||||||
func getKeypair(c OpenstackCloud, name string) (*keypairs.KeyPair, error) {
|
func getKeypair(c OpenstackCloud, name string) (*keypairs.KeyPair, error) {
|
||||||
var k *keypairs.KeyPair
|
var k *keypairs.KeyPair
|
||||||
done, err := vfs.RetryWithBackoff(readBackoff, func() (bool, error) {
|
done, err := vfs.RetryWithBackoff(readBackoff, func() (bool, error) {
|
||||||
rs, err := keypairs.Get(c.ComputeClient(), name).Extract()
|
rs, err := keypairs.Get(c.ComputeClient(), name, nil).Extract()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err.Error() == ErrNotFound {
|
if err.Error() == ErrNotFound {
|
||||||
return true, nil
|
return true, nil
|
||||||
|
@ -80,7 +80,7 @@ func (c *openstackCloud) DeleteKeyPair(name string) error {
|
||||||
|
|
||||||
func deleteKeyPair(c OpenstackCloud, name string) error {
|
func deleteKeyPair(c OpenstackCloud, name string) error {
|
||||||
done, err := vfs.RetryWithBackoff(deleteBackoff, func() (bool, error) {
|
done, err := vfs.RetryWithBackoff(deleteBackoff, func() (bool, error) {
|
||||||
err := keypairs.Delete(c.ComputeClient(), name).ExtractErr()
|
err := keypairs.Delete(c.ComputeClient(), name, nil).ExtractErr()
|
||||||
if err != nil && !isNotFound(err) {
|
if err != nil && !isNotFound(err) {
|
||||||
return false, fmt.Errorf("error deleting keypair: %v", err)
|
return false, fmt.Errorf("error deleting keypair: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ func (c *openstackCloud) ListKeypairs() ([]keypairs.KeyPair, error) {
|
||||||
func listKeypairs(c OpenstackCloud) ([]keypairs.KeyPair, error) {
|
func listKeypairs(c OpenstackCloud) ([]keypairs.KeyPair, error) {
|
||||||
var k []keypairs.KeyPair
|
var k []keypairs.KeyPair
|
||||||
done, err := vfs.RetryWithBackoff(readBackoff, func() (bool, error) {
|
done, err := vfs.RetryWithBackoff(readBackoff, func() (bool, error) {
|
||||||
allPages, err := keypairs.List(c.ComputeClient()).AllPages()
|
allPages, err := keypairs.List(c.ComputeClient(), nil).AllPages()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("error listing keypairs: %v", err)
|
return false, fmt.Errorf("error listing keypairs: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
**/*.swp
|
**/*.swp
|
||||||
.idea
|
.idea
|
||||||
.vscode
|
.vscode
|
||||||
|
testing_*.coverprofile
|
||||||
|
|
|
@ -7,43 +7,419 @@
|
||||||
nodeset: ubuntu-xenial-ut
|
nodeset: ubuntu-xenial-ut
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: gophercloud-acceptance-test
|
name: gophercloud-acceptance-test-base
|
||||||
parent: golang-test
|
parent: golang-test
|
||||||
description: |
|
|
||||||
Run gophercloud acceptance test on master branch
|
|
||||||
run: .zuul/playbooks/gophercloud-acceptance-test/run.yaml
|
run: .zuul/playbooks/gophercloud-acceptance-test/run.yaml
|
||||||
|
description: |
|
||||||
|
Base job for all gophercloud acceptance tests
|
||||||
timeout: 18000 # 5 hours
|
timeout: 18000 # 5 hours
|
||||||
|
abstract: true
|
||||||
nodeset: ubuntu-focal
|
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_services:
|
||||||
|
- designate
|
||||||
|
- 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:
|
- job:
|
||||||
name: gophercloud-acceptance-test-ironic
|
name: gophercloud-acceptance-test-ironic
|
||||||
parent: golang-test
|
parent: gophercloud-acceptance-test-base
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud ironic acceptance test on master branch
|
Run gophercloud ironic acceptance test on master branch
|
||||||
run: .zuul/playbooks/gophercloud-acceptance-test-ironic/run.yaml
|
files:
|
||||||
nodeset: ubuntu-focal
|
- ^.*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:
|
- job:
|
||||||
name: gophercloud-acceptance-test-ussuri
|
name: gophercloud-acceptance-test-compute-ussuri
|
||||||
parent: gophercloud-acceptance-test
|
parent: gophercloud-acceptance-test-compute
|
||||||
|
nodeset: ubuntu-bionic
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on ussuri branch
|
Run gophercloud compute acceptance test on ussuri branch
|
||||||
vars:
|
vars:
|
||||||
global_env:
|
global_env:
|
||||||
OS_BRANCH: stable/ussuri
|
OS_BRANCH: stable/ussuri
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: gophercloud-acceptance-test-train
|
name: gophercloud-acceptance-test-networking-ussuri
|
||||||
parent: gophercloud-acceptance-test
|
parent: gophercloud-acceptance-test-networking
|
||||||
|
nodeset: ubuntu-bionic
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on train branch
|
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:
|
vars:
|
||||||
global_env:
|
global_env:
|
||||||
OS_BRANCH: stable/train
|
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:
|
- job:
|
||||||
name: gophercloud-acceptance-test-stein
|
name: gophercloud-acceptance-test-stein
|
||||||
parent: gophercloud-acceptance-test
|
parent: gophercloud-acceptance-test-legacy
|
||||||
|
nodeset: ubuntu-xenial
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on stein branch
|
Run gophercloud acceptance test on stein branch
|
||||||
vars:
|
vars:
|
||||||
|
@ -52,7 +428,8 @@
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: gophercloud-acceptance-test-rocky
|
name: gophercloud-acceptance-test-rocky
|
||||||
parent: gophercloud-acceptance-test
|
parent: gophercloud-acceptance-test-legacy
|
||||||
|
nodeset: ubuntu-xenial
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on rocky branch
|
Run gophercloud acceptance test on rocky branch
|
||||||
vars:
|
vars:
|
||||||
|
@ -61,7 +438,7 @@
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: gophercloud-acceptance-test-queens
|
name: gophercloud-acceptance-test-queens
|
||||||
parent: gophercloud-acceptance-test
|
parent: gophercloud-acceptance-test-legacy
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on queens branch
|
Run gophercloud acceptance test on queens branch
|
||||||
nodeset: ubuntu-xenial
|
nodeset: ubuntu-xenial
|
||||||
|
@ -73,7 +450,7 @@
|
||||||
# not building correctly. This might be a temporary issue.
|
# not building correctly. This might be a temporary issue.
|
||||||
- job:
|
- job:
|
||||||
name: gophercloud-acceptance-test-pike
|
name: gophercloud-acceptance-test-pike
|
||||||
parent: gophercloud-acceptance-test
|
parent: gophercloud-acceptance-test-legacy
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on pike branch
|
Run gophercloud acceptance test on pike branch
|
||||||
nodeset: ubuntu-xenial
|
nodeset: ubuntu-xenial
|
||||||
|
@ -83,7 +460,7 @@
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: gophercloud-acceptance-test-ocata
|
name: gophercloud-acceptance-test-ocata
|
||||||
parent: gophercloud-acceptance-test
|
parent: gophercloud-acceptance-test-legacy
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on ocata branch
|
Run gophercloud acceptance test on ocata branch
|
||||||
nodeset: ubuntu-xenial
|
nodeset: ubuntu-xenial
|
||||||
|
@ -95,7 +472,7 @@
|
||||||
# not building correctly. This might be a temporary issue.
|
# not building correctly. This might be a temporary issue.
|
||||||
- job:
|
- job:
|
||||||
name: gophercloud-acceptance-test-newton
|
name: gophercloud-acceptance-test-newton
|
||||||
parent: gophercloud-acceptance-test
|
parent: gophercloud-acceptance-test-legacy
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on newton branch
|
Run gophercloud acceptance test on newton branch
|
||||||
nodeset: ubuntu-xenial
|
nodeset: ubuntu-xenial
|
||||||
|
@ -108,29 +485,47 @@
|
||||||
check:
|
check:
|
||||||
jobs:
|
jobs:
|
||||||
- gophercloud-unittest
|
- gophercloud-unittest
|
||||||
- gophercloud-acceptance-test
|
- gophercloud-acceptance-test-compute
|
||||||
|
- gophercloud-acceptance-test-networking
|
||||||
|
- gophercloud-acceptance-test-storage
|
||||||
- gophercloud-acceptance-test-ironic
|
- gophercloud-acceptance-test-ironic
|
||||||
recheck-newton:
|
recheck-newton:
|
||||||
jobs:
|
jobs:
|
||||||
- gophercloud-acceptance-test-newton
|
- gophercloud-acceptance-test-compute-newton
|
||||||
|
- gophercloud-acceptance-test-networking-newton
|
||||||
|
- gophercloud-acceptance-test-storage-newton
|
||||||
recheck-ocata:
|
recheck-ocata:
|
||||||
jobs:
|
jobs:
|
||||||
- gophercloud-acceptance-test-ocata
|
- gophercloud-acceptance-test-compute-ocata
|
||||||
|
- gophercloud-acceptance-test-networking-ocata
|
||||||
|
- gophercloud-acceptance-test-storage-ocata
|
||||||
recheck-pike:
|
recheck-pike:
|
||||||
jobs:
|
jobs:
|
||||||
- gophercloud-acceptance-test-pike
|
- gophercloud-acceptance-test-compute-pike
|
||||||
|
- gophercloud-acceptance-test-networking-pike
|
||||||
|
- gophercloud-acceptance-test-storage-pike
|
||||||
recheck-queens:
|
recheck-queens:
|
||||||
jobs:
|
jobs:
|
||||||
- gophercloud-acceptance-test-queens
|
- gophercloud-acceptance-test-compute-queens
|
||||||
|
- gophercloud-acceptance-test-networking-queens
|
||||||
|
- gophercloud-acceptance-test-storage-queens
|
||||||
recheck-rocky:
|
recheck-rocky:
|
||||||
jobs:
|
jobs:
|
||||||
- gophercloud-acceptance-test-rocky
|
- gophercloud-acceptance-test-compute-rocky
|
||||||
|
- gophercloud-acceptance-test-networking-rocky
|
||||||
|
- gophercloud-acceptance-test-storage-rocky
|
||||||
recheck-stein:
|
recheck-stein:
|
||||||
jobs:
|
jobs:
|
||||||
- gophercloud-acceptance-test-stein
|
- gophercloud-acceptance-test-compute-stein
|
||||||
|
- gophercloud-acceptance-test-networking-stein
|
||||||
|
- gophercloud-acceptance-test-storage-stein
|
||||||
recheck-train:
|
recheck-train:
|
||||||
jobs:
|
jobs:
|
||||||
- gophercloud-acceptance-test-train
|
- gophercloud-acceptance-test-compute-train
|
||||||
|
- gophercloud-acceptance-test-networking-train
|
||||||
|
- gophercloud-acceptance-test-storage-train
|
||||||
recheck-ussuri:
|
recheck-ussuri:
|
||||||
jobs:
|
jobs:
|
||||||
- gophercloud-acceptance-test-ussuri
|
- gophercloud-acceptance-test-compute-ussuri
|
||||||
|
- gophercloud-acceptance-test-networking-ussuri
|
||||||
|
- gophercloud-acceptance-test-storage-ussuri
|
||||||
|
|
|
@ -1,4 +1,97 @@
|
||||||
## 0.19.0 (Unreleased)
|
## 0.23.0 (November 12, 2021)
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
* Added `networking/v2/extensions/agents.ListBGPSpeakers` [GH-2229](https://github.com/gophercloud/gophercloud/pull/2229)
|
||||||
|
* Added `networking/v2/extensions/bgp/speakers.BGPSpeaker` [GH-2229](https://github.com/gophercloud/gophercloud/pull/2229)
|
||||||
|
* Added `identity/v3/roles.Project.Domain` [GH-2235](https://github.com/gophercloud/gophercloud/pull/2235)
|
||||||
|
* Added `identity/v3/roles.User.Domain` [GH-2235](https://github.com/gophercloud/gophercloud/pull/2235)
|
||||||
|
* Added `identity/v3/roles.Group.Domain` [GH-2235](https://github.com/gophercloud/gophercloud/pull/2235)
|
||||||
|
* Added `loadbalancer/v2/pools.CreateOpts.Tags` [GH-2237](https://github.com/gophercloud/gophercloud/pull/2237)
|
||||||
|
* Added `loadbalancer/v2/pools.UpdateOpts.Tags` [GH-2237](https://github.com/gophercloud/gophercloud/pull/2237)
|
||||||
|
* Added `loadbalancer/v2/pools.Pool.Tags` [GH-2237](https://github.com/gophercloud/gophercloud/pull/2237)
|
||||||
|
* Added `networking/v2/extensions/bgp/speakers.List` [GH-2238](https://github.com/gophercloud/gophercloud/pull/2238)
|
||||||
|
* Added `networking/v2/extensions/bgp/speakers.Get` [GH-2238](https://github.com/gophercloud/gophercloud/pull/2238)
|
||||||
|
* Added `compute/v2/extensions/keypairs.CreateOpts.Type` [GH-2231](https://github.com/gophercloud/gophercloud/pull/2231)
|
||||||
|
* When doing Keystone re-authentification, keep the error if it failed [GH-2259](https://github.com/gophercloud/gophercloud/pull/2259)
|
||||||
|
* Added new loadbalancer pool monitor types (TLS-HELLO, UDP-CONNECT and SCTP) [GH-2237](https://github.com/gophercloud/gophercloud/pull/2261)
|
||||||
|
|
||||||
|
## 0.22.0 (October 7, 2021)
|
||||||
|
|
||||||
|
BREAKING CHANGES
|
||||||
|
|
||||||
|
* The types of several Object Storage Update fields have been changed to pointers in order to allow the value to be unset via the HTTP headers:
|
||||||
|
* `objectstorage/v1/accounts.UpdateOpts.ContentType`
|
||||||
|
* `objectstorage/v1/accounts.UpdateOpts.DetectContentType`
|
||||||
|
* `objectstorage/v1/containers.UpdateOpts.ContainerRead`
|
||||||
|
* `objectstorage/v1/containers.UpdateOpts.ContainerSyncTo`
|
||||||
|
* `objectstorage/v1/containers.UpdateOpts.ContainerSyncKey`
|
||||||
|
* `objectstorage/v1/containers.UpdateOpts.ContainerWrite`
|
||||||
|
* `objectstorage/v1/containers.UpdateOpts.ContentType`
|
||||||
|
* `objectstorage/v1/containers.UpdateOpts.DetectContentType`
|
||||||
|
* `objectstorage/v1/objects.UpdateOpts.ContentDisposition`
|
||||||
|
* `objectstorage/v1/objects.UpdateOpts.ContentEncoding`
|
||||||
|
* `objectstorage/v1/objects.UpdateOpts.ContentType`
|
||||||
|
* `objectstorage/v1/objects.UpdateOpts.DeleteAfter`
|
||||||
|
* `objectstorage/v1/objects.UpdateOpts.DeleteAt`
|
||||||
|
* `objectstorage/v1/objects.UpdateOpts.DetectContentType`
|
||||||
|
|
||||||
|
BUG FIXES
|
||||||
|
|
||||||
|
* Fixed issue with not being able to unset Object Storage values via HTTP headers [GH-2218](https://github.com/gophercloud/gophercloud/pull/2218)
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
* Added `compute/v2/servers.Server.ServerGroups` [GH-2217](https://github.com/gophercloud/gophercloud/pull/2217)
|
||||||
|
* Added `imageservice/v2/images.ReplaceImageProtected` to allow the `protected` field to be updated [GH-2221](https://github.com/gophercloud/gophercloud/pull/2221)
|
||||||
|
* More details added to the 404/Not Found error message [GH-2223](https://github.com/gophercloud/gophercloud/pull/2223)
|
||||||
|
* Added `openstack/baremetal/v1/nodes.CreateSubscriptionOpts.HttpHeaders` [GH-2224](https://github.com/gophercloud/gophercloud/pull/2224)
|
||||||
|
|
||||||
|
## 0.21.0 (September 14, 2021)
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
* Added `blockstorage/extensions/volumehost` [GH-2212](https://github.com/gophercloud/gophercloud/pull/2212)
|
||||||
|
* Added `loadbalancer/v2/listeners.CreateOpts.Tags` [GH-2214](https://github.com/gophercloud/gophercloud/pull/2214)
|
||||||
|
* Added `loadbalancer/v2/listeners.UpdateOpts.Tags` [GH-2214](https://github.com/gophercloud/gophercloud/pull/2214)
|
||||||
|
* Added `loadbalancer/v2/listeners.Listener.Tags` [GH-2214](https://github.com/gophercloud/gophercloud/pull/2214)
|
||||||
|
|
||||||
|
## 0.20.0 (August 10, 2021)
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
* Added `RetryFunc` to enable custom retry functions. [GH-2194](https://github.com/gophercloud/gophercloud/pull/2194)
|
||||||
|
* Added `openstack/baremetal/v1/nodes.GetVendorPassthruMethods` [GH-2201](https://github.com/gophercloud/gophercloud/pull/2201)
|
||||||
|
* Added `openstack/baremetal/v1/nodes.GetAllSubscriptions` [GH-2201](https://github.com/gophercloud/gophercloud/pull/2201)
|
||||||
|
* Added `openstack/baremetal/v1/nodes.GetSubscription` [GH-2201](https://github.com/gophercloud/gophercloud/pull/2201)
|
||||||
|
* Added `openstack/baremetal/v1/nodes.DeleteSubscription` [GH-2201](https://github.com/gophercloud/gophercloud/pull/2201)
|
||||||
|
* Added `openstack/baremetal/v1/nodes.CreateSubscription` [GH-2201](https://github.com/gophercloud/gophercloud/pull/2201)
|
||||||
|
|
||||||
|
## 0.19.0 (July 22, 2021)
|
||||||
|
|
||||||
|
NOTES / BREAKING CHANGES
|
||||||
|
|
||||||
|
* `compute/v2/extensions/keypairs.List` now takes a `ListOptsBuilder` argument [GH-2186](https://github.com/gophercloud/gophercloud/pull/2186)
|
||||||
|
* `compute/v2/extensions/keypairs.Get` now takes a `GetOptsBuilder` argument [GH-2186](https://github.com/gophercloud/gophercloud/pull/2186)
|
||||||
|
* `compute/v2/extensions/keypairs.Delete` now takes a `DeleteOptsBuilder` argument [GH-2186](https://github.com/gophercloud/gophercloud/pull/2186)
|
||||||
|
* `compute/v2/extensions/hypervisors.List` now takes a `ListOptsBuilder` argument [GH-2187](https://github.com/gophercloud/gophercloud/pull/2187)
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
* Added `blockstorage/v3/qos.List` [GH-2167](https://github.com/gophercloud/gophercloud/pull/2167)
|
||||||
|
* Added `compute/v2/extensions/volumeattach.CreateOpts.Tag` [GH-2177](https://github.com/gophercloud/gophercloud/pull/2177)
|
||||||
|
* Added `compute/v2/extensions/volumeattach.CreateOpts.DeleteOnTermination` [GH-2177](https://github.com/gophercloud/gophercloud/pull/2177)
|
||||||
|
* Added `compute/v2/extensions/volumeattach.VolumeAttachment.Tag` [GH-2177](https://github.com/gophercloud/gophercloud/pull/2177)
|
||||||
|
* Added `compute/v2/extensions/volumeattach.VolumeAttachment.DeleteOnTermination` [GH-2177](https://github.com/gophercloud/gophercloud/pull/2177)
|
||||||
|
* Added `db/v1/instances.Instance.Address` [GH-2179](https://github.com/gophercloud/gophercloud/pull/2179)
|
||||||
|
* Added `compute/v2/servers.ListOpts.AvailabilityZone` [GH-2098](https://github.com/gophercloud/gophercloud/pull/2098)
|
||||||
|
* Added `compute/v2/extensions/keypairs.ListOpts` [GH-2186](https://github.com/gophercloud/gophercloud/pull/2186)
|
||||||
|
* Added `compute/v2/extensions/keypairs.GetOpts` [GH-2186](https://github.com/gophercloud/gophercloud/pull/2186)
|
||||||
|
* Added `compute/v2/extensions/keypairs.DeleteOpts` [GH-2186](https://github.com/gophercloud/gophercloud/pull/2186)
|
||||||
|
* Added `objectstorage/v2/containers.GetHeader.Timestamp` [GH-2185](https://github.com/gophercloud/gophercloud/pull/2185)
|
||||||
|
* Added `compute/v2/extensions.ListOpts` [GH-2187](https://github.com/gophercloud/gophercloud/pull/2187)
|
||||||
|
* Added `sharedfilesystems/v2/shares.Share.CreateShareFromSnapshotSupport` [GH-2191](https://github.com/gophercloud/gophercloud/pull/2191)
|
||||||
|
* Added `compute/v2/servers.Network.Tag` for use in `CreateOpts` [GH-2193](https://github.com/gophercloud/gophercloud/pull/2193)
|
||||||
|
|
||||||
## 0.18.0 (June 11, 2021)
|
## 0.18.0 (June 11, 2021)
|
||||||
|
|
||||||
|
|
|
@ -11,30 +11,18 @@ Gophercloud is an OpenStack Go SDK.
|
||||||
|
|
||||||
## How to install
|
## How to install
|
||||||
|
|
||||||
Before installing, you need to ensure that your [GOPATH environment variable](https://golang.org/doc/code.html#GOPATH)
|
Reference a Gophercloud package in your code:
|
||||||
is pointing to an appropriate directory where you want to install Gophercloud:
|
|
||||||
|
|
||||||
```bash
|
```Go
|
||||||
mkdir $HOME/go
|
import "github.com/gophercloud/gophercloud"
|
||||||
export GOPATH=$HOME/go
|
|
||||||
```
|
```
|
||||||
|
|
||||||
To protect yourself against changes in your dependencies, we highly recommend choosing a
|
Then update your `go.mod`:
|
||||||
[dependency management solution](https://github.com/golang/go/wiki/PackageManagementTools) for
|
|
||||||
your projects, such as [godep](https://github.com/tools/godep). Once this is set up, you can install
|
|
||||||
Gophercloud as a dependency like so:
|
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
go get github.com/gophercloud/gophercloud
|
go mod tidy
|
||||||
|
|
||||||
# Edit your code to import relevant packages from "github.com/gophercloud/gophercloud"
|
|
||||||
|
|
||||||
godep save ./...
|
|
||||||
```
|
```
|
||||||
|
|
||||||
This will install all the source files you need into a `Godeps/_workspace` directory, which is
|
|
||||||
referenceable from your own source files when you use the `godep go` command.
|
|
||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
|
|
||||||
### Credentials
|
### Credentials
|
||||||
|
|
|
@ -179,7 +179,11 @@ func (e ErrDefault403) Error() string {
|
||||||
return e.choseErrString()
|
return e.choseErrString()
|
||||||
}
|
}
|
||||||
func (e ErrDefault404) Error() string {
|
func (e ErrDefault404) Error() string {
|
||||||
return "Resource not found"
|
e.DefaultErrString = fmt.Sprintf(
|
||||||
|
"Resource not found: [%s %s], error message: %s",
|
||||||
|
e.Method, e.URL, e.Body,
|
||||||
|
)
|
||||||
|
return e.choseErrString()
|
||||||
}
|
}
|
||||||
func (e ErrDefault405) Error() string {
|
func (e ErrDefault405) Error() string {
|
||||||
return "Method not allowed"
|
return "Method not allowed"
|
||||||
|
@ -273,10 +277,11 @@ func (e ErrTimeOut) Error() string {
|
||||||
type ErrUnableToReauthenticate struct {
|
type ErrUnableToReauthenticate struct {
|
||||||
BaseError
|
BaseError
|
||||||
ErrOriginal error
|
ErrOriginal error
|
||||||
|
ErrReauth error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e ErrUnableToReauthenticate) Error() string {
|
func (e ErrUnableToReauthenticate) Error() string {
|
||||||
e.DefaultErrString = fmt.Sprintf("Unable to re-authenticate: %s", e.ErrOriginal)
|
e.DefaultErrString = fmt.Sprintf("Unable to re-authenticate: %s: %s", e.ErrOriginal, e.ErrReauth)
|
||||||
return e.choseErrString()
|
return e.choseErrString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,29 @@ servers with a specified key pair.
|
||||||
|
|
||||||
Example to List Key Pairs
|
Example to List Key Pairs
|
||||||
|
|
||||||
allPages, err := keypairs.List(computeClient).AllPages()
|
allPages, err := keypairs.List(computeClient, nil).AllPages()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
allKeyPairs, err := keypairs.ExtractKeyPairs(allPages)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, kp := range allKeyPairs {
|
||||||
|
fmt.Printf("%+v\n", kp)
|
||||||
|
}
|
||||||
|
|
||||||
|
Example to List Key Pairs using microversion 2.10 or greater
|
||||||
|
|
||||||
|
client.Microversion = "2.10"
|
||||||
|
|
||||||
|
listOpts := keypairs.ListOpts{
|
||||||
|
UserID: "user-id",
|
||||||
|
}
|
||||||
|
|
||||||
|
allPages, err := keypairs.List(computeClient, listOpts).AllPages()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -45,7 +67,20 @@ Example to Import a Key Pair
|
||||||
|
|
||||||
Example to Delete a Key Pair
|
Example to Delete a Key Pair
|
||||||
|
|
||||||
err := keypairs.Delete(computeClient, "keypair-name").ExtractErr()
|
err := keypairs.Delete(computeClient, "keypair-name", nil).ExtractErr()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
Example to Delete a Key Pair owned by a certain user using microversion 2.10 or greater
|
||||||
|
|
||||||
|
client.Microversion = "2.10"
|
||||||
|
|
||||||
|
deleteOpts := keypairs.DeleteOpts{
|
||||||
|
UserID: "user-id",
|
||||||
|
}
|
||||||
|
|
||||||
|
err := keypairs.Delete(client, "keypair-name", deleteOpts).ExtractErr()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -67,5 +102,19 @@ Example to Create a Server With a Key Pair
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Example to Get a Key Pair owned by a certain user using microversion 2.10 or greater
|
||||||
|
|
||||||
|
client.Microversion = "2.10"
|
||||||
|
|
||||||
|
getOpts := keypairs.GetOpts{
|
||||||
|
UserID: "user-id",
|
||||||
|
}
|
||||||
|
|
||||||
|
keypair, err := keypairs.Get(computeClient, "keypair-name", getOpts).Extract()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package keypairs
|
package keypairs
|
||||||
|
|
|
@ -31,9 +31,36 @@ func (opts CreateOptsExt) ToServerCreateMap() (map[string]interface{}, error) {
|
||||||
return base, nil
|
return base, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ListOptsBuilder allows extensions to add additional parameters to the
|
||||||
|
// List request.
|
||||||
|
type ListOptsBuilder interface {
|
||||||
|
ToKeyPairListQuery() (string, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListOpts enables listing KeyPairs based on specific attributes.
|
||||||
|
type ListOpts struct {
|
||||||
|
// UserID is the user ID that owns the key pair.
|
||||||
|
// This requires microversion 2.10 or higher.
|
||||||
|
UserID string `q:"user_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToKeyPairListQuery formats a ListOpts into a query string.
|
||||||
|
func (opts ListOpts) ToKeyPairListQuery() (string, error) {
|
||||||
|
q, err := gophercloud.BuildQueryString(opts)
|
||||||
|
return q.String(), err
|
||||||
|
}
|
||||||
|
|
||||||
// List returns a Pager that allows you to iterate over a collection of KeyPairs.
|
// List returns a Pager that allows you to iterate over a collection of KeyPairs.
|
||||||
func List(client *gophercloud.ServiceClient) pagination.Pager {
|
func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager {
|
||||||
return pagination.NewPager(client, listURL(client), func(r pagination.PageResult) pagination.Page {
|
url := listURL(client)
|
||||||
|
if opts != nil {
|
||||||
|
query, err := opts.ToKeyPairListQuery()
|
||||||
|
if err != nil {
|
||||||
|
return pagination.Pager{Err: err}
|
||||||
|
}
|
||||||
|
url += query
|
||||||
|
}
|
||||||
|
return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page {
|
||||||
return KeyPairPage{pagination.SinglePageBase(r)}
|
return KeyPairPage{pagination.SinglePageBase(r)}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -49,6 +76,15 @@ type CreateOpts struct {
|
||||||
// Name is a friendly name to refer to this KeyPair in other services.
|
// Name is a friendly name to refer to this KeyPair in other services.
|
||||||
Name string `json:"name" required:"true"`
|
Name string `json:"name" required:"true"`
|
||||||
|
|
||||||
|
// UserID [optional] is the user_id for a keypair.
|
||||||
|
// This allows administrative users to upload keys for other users than themselves.
|
||||||
|
// This requires microversion 2.10 or higher.
|
||||||
|
UserID string `json:"user_id,omitempty"`
|
||||||
|
|
||||||
|
// The type of the keypair. Allowed values are ssh or x509
|
||||||
|
// This requires microversion 2.2 or higher.
|
||||||
|
Type string `json:"type,omitempty"`
|
||||||
|
|
||||||
// PublicKey [optional] is a pregenerated OpenSSH-formatted public key.
|
// PublicKey [optional] is a pregenerated OpenSSH-formatted public key.
|
||||||
// If provided, this key will be imported and no new key will be created.
|
// If provided, this key will be imported and no new key will be created.
|
||||||
PublicKey string `json:"public_key,omitempty"`
|
PublicKey string `json:"public_key,omitempty"`
|
||||||
|
@ -74,16 +110,74 @@ func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r Create
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetOptsBuilder allows extensions to add additional parameters to the
|
||||||
|
// Get request.
|
||||||
|
type GetOptsBuilder interface {
|
||||||
|
ToKeyPairGetQuery() (string, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOpts enables retrieving KeyPairs based on specific attributes.
|
||||||
|
type GetOpts struct {
|
||||||
|
// UserID is the user ID that owns the key pair.
|
||||||
|
// This requires microversion 2.10 or higher.
|
||||||
|
UserID string `q:"user_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToKeyPairGetQuery formats a GetOpts into a query string.
|
||||||
|
func (opts GetOpts) ToKeyPairGetQuery() (string, error) {
|
||||||
|
q, err := gophercloud.BuildQueryString(opts)
|
||||||
|
return q.String(), err
|
||||||
|
}
|
||||||
|
|
||||||
// Get returns public data about a previously uploaded KeyPair.
|
// Get returns public data about a previously uploaded KeyPair.
|
||||||
func Get(client *gophercloud.ServiceClient, name string) (r GetResult) {
|
func Get(client *gophercloud.ServiceClient, name string, opts GetOptsBuilder) (r GetResult) {
|
||||||
resp, err := client.Get(getURL(client, name), &r.Body, nil)
|
url := getURL(client, name)
|
||||||
|
if opts != nil {
|
||||||
|
query, err := opts.ToKeyPairGetQuery()
|
||||||
|
if err != nil {
|
||||||
|
r.Err = err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
url += query
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.Get(url, &r.Body, nil)
|
||||||
_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
|
_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteOptsBuilder allows extensions to add additional parameters to the
|
||||||
|
// Delete request.
|
||||||
|
type DeleteOptsBuilder interface {
|
||||||
|
ToKeyPairDeleteQuery() (string, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteOpts enables deleting KeyPairs based on specific attributes.
|
||||||
|
type DeleteOpts struct {
|
||||||
|
// UserID is the user ID of the user that owns the key pair.
|
||||||
|
// This requires microversion 2.10 or higher.
|
||||||
|
UserID string `q:"user_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToKeyPairDeleteQuery formats a DeleteOpts into a query string.
|
||||||
|
func (opts DeleteOpts) ToKeyPairDeleteQuery() (string, error) {
|
||||||
|
q, err := gophercloud.BuildQueryString(opts)
|
||||||
|
return q.String(), err
|
||||||
|
}
|
||||||
|
|
||||||
// Delete requests the deletion of a previous stored KeyPair from the server.
|
// Delete requests the deletion of a previous stored KeyPair from the server.
|
||||||
func Delete(client *gophercloud.ServiceClient, name string) (r DeleteResult) {
|
func Delete(client *gophercloud.ServiceClient, name string, opts DeleteOptsBuilder) (r DeleteResult) {
|
||||||
resp, err := client.Delete(deleteURL(client, name), nil)
|
url := deleteURL(client, name)
|
||||||
|
if opts != nil {
|
||||||
|
query, err := opts.ToKeyPairDeleteQuery()
|
||||||
|
if err != nil {
|
||||||
|
r.Err = err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
url += query
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := client.Delete(url, nil)
|
||||||
_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
|
_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,9 @@ type KeyPair struct {
|
||||||
|
|
||||||
// UserID is the user who owns this KeyPair.
|
// UserID is the user who owns this KeyPair.
|
||||||
UserID string `json:"user_id"`
|
UserID string `json:"user_id"`
|
||||||
|
|
||||||
|
// The type of the keypair
|
||||||
|
Type string `json:"type"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// KeyPairPage stores a single page of all KeyPair results from a List call.
|
// KeyPairPage stores a single page of all KeyPair results from a List call.
|
||||||
|
|
|
@ -26,6 +26,14 @@ type CreateOpts struct {
|
||||||
|
|
||||||
// VolumeID is the ID of the volume to attach to the instance.
|
// VolumeID is the ID of the volume to attach to the instance.
|
||||||
VolumeID string `json:"volumeId" required:"true"`
|
VolumeID string `json:"volumeId" required:"true"`
|
||||||
|
|
||||||
|
// Tag is a device role tag that can be applied to a volume when attaching
|
||||||
|
// it to the VM. Requires 2.49 microversion
|
||||||
|
Tag string `json:"tag,omitempty"`
|
||||||
|
|
||||||
|
// DeleteOnTermination specifies whether or not to delete the volume when the server
|
||||||
|
// is destroyed. Requires 2.79 microversion
|
||||||
|
DeleteOnTermination bool `json:"delete_on_termination,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToVolumeAttachmentCreateMap constructs a request body from CreateOpts.
|
// ToVolumeAttachmentCreateMap constructs a request body from CreateOpts.
|
||||||
|
|
|
@ -19,6 +19,14 @@ type VolumeAttachment struct {
|
||||||
|
|
||||||
// ServerID is the ID of the instance that has the volume attached.
|
// ServerID is the ID of the instance that has the volume attached.
|
||||||
ServerID string `json:"serverId"`
|
ServerID string `json:"serverId"`
|
||||||
|
|
||||||
|
// Tag is a device role tag that can be applied to a volume when attaching
|
||||||
|
// it to the VM. Requires 2.70 microversion
|
||||||
|
Tag *string `json:"tag"`
|
||||||
|
|
||||||
|
// DeleteOnTermination specifies whether or not to delete the volume when the server
|
||||||
|
// is destroyed. Requires 2.79 microversion
|
||||||
|
DeleteOnTermination *bool `json:"delete_on_termination"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// VolumeAttachmentPage stores a single page all of VolumeAttachment
|
// VolumeAttachmentPage stores a single page all of VolumeAttachment
|
||||||
|
|
13
vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/requests.go
generated
vendored
13
vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/requests.go
generated
vendored
|
@ -83,6 +83,9 @@ type ListOpts struct {
|
||||||
// This requires the client to be set to microversion 2.26 or later.
|
// This requires the client to be set to microversion 2.26 or later.
|
||||||
// NotTagsAny filters on specific server tags. At least one of the tags must be absent for the server.
|
// NotTagsAny filters on specific server tags. At least one of the tags must be absent for the server.
|
||||||
NotTagsAny string `q:"not-tags-any"`
|
NotTagsAny string `q:"not-tags-any"`
|
||||||
|
|
||||||
|
// Display servers based on their availability zone (Admin only until microversion 2.82).
|
||||||
|
AvailabilityZone string `q:"availability_zone"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToServerListQuery formats a ListOpts into a query string.
|
// ToServerListQuery formats a ListOpts into a query string.
|
||||||
|
@ -125,6 +128,13 @@ type Network struct {
|
||||||
|
|
||||||
// FixedIP specifies a fixed IPv4 address to be used on this network.
|
// FixedIP specifies a fixed IPv4 address to be used on this network.
|
||||||
FixedIP string
|
FixedIP string
|
||||||
|
|
||||||
|
// Tag may contain an optional device role tag for the server's virtual
|
||||||
|
// network interface. This can be used to identify network interfaces when
|
||||||
|
// multiple networks are connected to one server.
|
||||||
|
//
|
||||||
|
// Requires microversion 2.32 through 2.36 or 2.42 or later.
|
||||||
|
Tag string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Personality is an array of files that are injected into the server at launch.
|
// Personality is an array of files that are injected into the server at launch.
|
||||||
|
@ -258,6 +268,9 @@ func (opts CreateOpts) ToServerCreateMap() (map[string]interface{}, error) {
|
||||||
if net.FixedIP != "" {
|
if net.FixedIP != "" {
|
||||||
networks[i]["fixed_ip"] = net.FixedIP
|
networks[i]["fixed_ip"] = net.FixedIP
|
||||||
}
|
}
|
||||||
|
if net.Tag != "" {
|
||||||
|
networks[i]["tag"] = net.Tag
|
||||||
|
}
|
||||||
}
|
}
|
||||||
b["networks"] = networks
|
b["networks"] = networks
|
||||||
}
|
}
|
||||||
|
|
6
vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/results.go
generated
vendored
6
vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/results.go
generated
vendored
|
@ -221,6 +221,12 @@ type Server struct {
|
||||||
// Tags is a slice/list of string tags in a server.
|
// Tags is a slice/list of string tags in a server.
|
||||||
// The requires microversion 2.26 or later.
|
// The requires microversion 2.26 or later.
|
||||||
Tags *[]string `json:"tags"`
|
Tags *[]string `json:"tags"`
|
||||||
|
|
||||||
|
// ServerGroups is a slice of strings containing the UUIDs of the
|
||||||
|
// server groups to which the server belongs. Currently this can
|
||||||
|
// contain at most one entry.
|
||||||
|
// New in microversion 2.71
|
||||||
|
ServerGroups *[]string `json:"server_groups"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type AttachedVolume struct {
|
type AttachedVolume struct {
|
||||||
|
|
14
vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/requests.go
generated
vendored
14
vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/requests.go
generated
vendored
|
@ -373,6 +373,20 @@ func (r ReplaceImageMinRam) ToImagePatchMap() map[string]interface{} {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReplaceImageProtected represents an updated protected property request.
|
||||||
|
type ReplaceImageProtected struct {
|
||||||
|
NewProtected bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToImagePatchMap assembles a request body based on ReplaceImageProtected
|
||||||
|
func (r ReplaceImageProtected) ToImagePatchMap() map[string]interface{} {
|
||||||
|
return map[string]interface{}{
|
||||||
|
"op": "replace",
|
||||||
|
"path": "/protected",
|
||||||
|
"value": r.NewProtected,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// UpdateOp represents a valid update operation.
|
// UpdateOp represents a valid update operation.
|
||||||
type UpdateOp string
|
type UpdateOp string
|
||||||
|
|
||||||
|
|
3
vendor/github.com/gophercloud/gophercloud/openstack/loadbalancer/v2/listeners/doc.go
generated
vendored
3
vendor/github.com/gophercloud/gophercloud/openstack/loadbalancer/v2/listeners/doc.go
generated
vendored
|
@ -31,6 +31,7 @@ Example to Create a Listener
|
||||||
AdminStateUp: gophercloud.Enabled,
|
AdminStateUp: gophercloud.Enabled,
|
||||||
DefaultPoolID: "41efe233-7591-43c5-9cf7-923964759f9e",
|
DefaultPoolID: "41efe233-7591-43c5-9cf7-923964759f9e",
|
||||||
ProtocolPort: 3306,
|
ProtocolPort: 3306,
|
||||||
|
Tags: []string{"test", "stage"},
|
||||||
}
|
}
|
||||||
|
|
||||||
listener, err := listeners.Create(networkClient, createOpts).Extract()
|
listener, err := listeners.Create(networkClient, createOpts).Extract()
|
||||||
|
@ -44,10 +45,12 @@ Example to Update a Listener
|
||||||
|
|
||||||
i1001 := 1001
|
i1001 := 1001
|
||||||
i181000 := 181000
|
i181000 := 181000
|
||||||
|
newTags := []string{"prod"}
|
||||||
updateOpts := listeners.UpdateOpts{
|
updateOpts := listeners.UpdateOpts{
|
||||||
ConnLimit: &i1001,
|
ConnLimit: &i1001,
|
||||||
TimeoutClientData: &i181000,
|
TimeoutClientData: &i181000,
|
||||||
TimeoutMemberData: &i181000,
|
TimeoutMemberData: &i181000,
|
||||||
|
Tags: &newTags,
|
||||||
}
|
}
|
||||||
|
|
||||||
listener, err := listeners.Update(networkClient, listenerID, updateOpts).Extract()
|
listener, err := listeners.Update(networkClient, listenerID, updateOpts).Extract()
|
||||||
|
|
|
@ -167,6 +167,9 @@ type CreateOpts struct {
|
||||||
|
|
||||||
// A list of TLS protocol versions. Available from microversion 2.17
|
// A list of TLS protocol versions. Available from microversion 2.17
|
||||||
TLSVersions []TLSVersion `json:"tls_versions,omitempty"`
|
TLSVersions []TLSVersion `json:"tls_versions,omitempty"`
|
||||||
|
|
||||||
|
// Tags is a set of resource tags. New in version 2.5
|
||||||
|
Tags []string `json:"tags,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToListenerCreateMap builds a request body from CreateOpts.
|
// ToListenerCreateMap builds a request body from CreateOpts.
|
||||||
|
@ -249,6 +252,9 @@ type UpdateOpts struct {
|
||||||
|
|
||||||
// A list of TLS protocol versions. Available from microversion 2.17
|
// A list of TLS protocol versions. Available from microversion 2.17
|
||||||
TLSVersions *[]TLSVersion `json:"tls_versions,omitempty"`
|
TLSVersions *[]TLSVersion `json:"tls_versions,omitempty"`
|
||||||
|
|
||||||
|
// Tags is a set of resource tags. New in version 2.5
|
||||||
|
Tags *[]string `json:"tags,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToListenerUpdateMap builds a request body from UpdateOpts.
|
// ToListenerUpdateMap builds a request body from UpdateOpts.
|
||||||
|
|
|
@ -86,6 +86,10 @@ type Listener struct {
|
||||||
|
|
||||||
// A list of TLS protocol versions. Available from microversion 2.17
|
// A list of TLS protocol versions. Available from microversion 2.17
|
||||||
TLSVersions []string `json:"tls_versions"`
|
TLSVersions []string `json:"tls_versions"`
|
||||||
|
|
||||||
|
// Tags is a list of resource tags. Tags are arbitrarily defined strings
|
||||||
|
// attached to the resource. New in version 2.5
|
||||||
|
Tags []string `json:"tags"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Stats struct {
|
type Stats struct {
|
||||||
|
|
|
@ -75,6 +75,9 @@ const (
|
||||||
TypeTCP = "TCP"
|
TypeTCP = "TCP"
|
||||||
TypeHTTP = "HTTP"
|
TypeHTTP = "HTTP"
|
||||||
TypeHTTPS = "HTTPS"
|
TypeHTTPS = "HTTPS"
|
||||||
|
TypeTLSHELLO = "TLS-HELLO"
|
||||||
|
TypeUDPConnect = "UDP-CONNECT"
|
||||||
|
TypeSCTP = "SCTP"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
@ -18,6 +18,9 @@ type PoolID struct {
|
||||||
// TCP: used to connect to the members using TCP.
|
// TCP: used to connect to the members using TCP.
|
||||||
// HTTP: used to send an HTTP request to the member.
|
// HTTP: used to send an HTTP request to the member.
|
||||||
// HTTPS: used to send a secure HTTP request to the member.
|
// HTTPS: used to send a secure HTTP request to the member.
|
||||||
|
// TLS-HELLO: used to send TLS-HELLO request to the member.
|
||||||
|
// UDP-CONNECT: used to send UDP-CONNECT request to the member.
|
||||||
|
// SCTP: used to send SCTP request to the member.
|
||||||
//
|
//
|
||||||
// When a pool has several monitors associated with it, each member of the pool
|
// When a pool has several monitors associated with it, each member of the pool
|
||||||
// is monitored by all these monitors. If any monitor declares the member as
|
// is monitored by all these monitors. If any monitor declares the member as
|
||||||
|
@ -35,7 +38,7 @@ type Monitor struct {
|
||||||
ProjectID string `json:"project_id"`
|
ProjectID string `json:"project_id"`
|
||||||
|
|
||||||
// The type of probe sent by the load balancer to verify the member state,
|
// The type of probe sent by the load balancer to verify the member state,
|
||||||
// which is PING, TCP, HTTP, or HTTPS.
|
// which is PING, TCP, HTTP, HTTPS, TLS-HELLO, UDP-CONNECT or SCTP.
|
||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
|
|
||||||
// The time, in seconds, between sending probes to members.
|
// The time, in seconds, between sending probes to members.
|
||||||
|
|
3
vendor/github.com/gophercloud/gophercloud/openstack/loadbalancer/v2/pools/doc.go
generated
vendored
3
vendor/github.com/gophercloud/gophercloud/openstack/loadbalancer/v2/pools/doc.go
generated
vendored
|
@ -28,6 +28,7 @@ Example to Create a Pool
|
||||||
LBMethod: pools.LBMethodRoundRobin,
|
LBMethod: pools.LBMethodRoundRobin,
|
||||||
Protocol: "HTTP",
|
Protocol: "HTTP",
|
||||||
Name: "Example pool",
|
Name: "Example pool",
|
||||||
|
Tags: []string{"test"},
|
||||||
LoadbalancerID: "79e05663-7f03-45d2-a092-8b94062f22ab",
|
LoadbalancerID: "79e05663-7f03-45d2-a092-8b94062f22ab",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,8 +41,10 @@ Example to Update a Pool
|
||||||
|
|
||||||
poolID := "d67d56a6-4a86-4688-a282-f46444705c64"
|
poolID := "d67d56a6-4a86-4688-a282-f46444705c64"
|
||||||
|
|
||||||
|
newTags := []string{"prod"}
|
||||||
updateOpts := pools.UpdateOpts{
|
updateOpts := pools.UpdateOpts{
|
||||||
Name: "new-name",
|
Name: "new-name",
|
||||||
|
Tags: &newTags,
|
||||||
}
|
}
|
||||||
|
|
||||||
pool, err := pools.Update(networkClient, poolID, updateOpts).Extract()
|
pool, err := pools.Update(networkClient, poolID, updateOpts).Extract()
|
||||||
|
|
|
@ -135,6 +135,9 @@ type CreateOpts struct {
|
||||||
// This is only possible to use when creating a fully populated
|
// This is only possible to use when creating a fully populated
|
||||||
// Loadbalancer.
|
// Loadbalancer.
|
||||||
Monitor *monitors.CreateOpts `json:"healthmonitor,omitempty"`
|
Monitor *monitors.CreateOpts `json:"healthmonitor,omitempty"`
|
||||||
|
|
||||||
|
// Tags is a set of resource tags. New in version 2.5
|
||||||
|
Tags []string `json:"tags,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToPoolCreateMap builds a request body from CreateOpts.
|
// ToPoolCreateMap builds a request body from CreateOpts.
|
||||||
|
@ -185,6 +188,9 @@ type UpdateOpts struct {
|
||||||
// The administrative state of the Pool. A valid value is true (UP)
|
// The administrative state of the Pool. A valid value is true (UP)
|
||||||
// or false (DOWN).
|
// or false (DOWN).
|
||||||
AdminStateUp *bool `json:"admin_state_up,omitempty"`
|
AdminStateUp *bool `json:"admin_state_up,omitempty"`
|
||||||
|
|
||||||
|
// Tags is a set of resource tags. New in version 2.5
|
||||||
|
Tags *[]string `json:"tags,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToPoolUpdateMap builds a request body from UpdateOpts.
|
// ToPoolUpdateMap builds a request body from UpdateOpts.
|
||||||
|
|
4
vendor/github.com/gophercloud/gophercloud/openstack/loadbalancer/v2/pools/results.go
generated
vendored
4
vendor/github.com/gophercloud/gophercloud/openstack/loadbalancer/v2/pools/results.go
generated
vendored
|
@ -102,6 +102,10 @@ type Pool struct {
|
||||||
|
|
||||||
// The operating status of the pool.
|
// The operating status of the pool.
|
||||||
OperatingStatus string `json:"operating_status"`
|
OperatingStatus string `json:"operating_status"`
|
||||||
|
|
||||||
|
// Tags is a list of resource tags. Tags are arbitrarily defined strings
|
||||||
|
// attached to the resource. New in version 2.5
|
||||||
|
Tags []string `json:"tags"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PoolPage is the page returned by a pager when traversing over a
|
// PoolPage is the page returned by a pager when traversing over a
|
||||||
|
|
|
@ -29,7 +29,7 @@ Example to List Networks with External Information
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, network := range allNetworks {
|
for _, network := range allNetworks {
|
||||||
fmt.Println("%+v\n", network)
|
fmt.Printf("%+v\n", network)
|
||||||
}
|
}
|
||||||
|
|
||||||
Example to Create a Network with External Information
|
Example to Create a Network with External Information
|
||||||
|
|
|
@ -54,8 +54,8 @@ type UpdateOptsBuilder interface {
|
||||||
type UpdateOpts struct {
|
type UpdateOpts struct {
|
||||||
Metadata map[string]string
|
Metadata map[string]string
|
||||||
RemoveMetadata []string
|
RemoveMetadata []string
|
||||||
ContentType string `h:"Content-Type"`
|
ContentType *string `h:"Content-Type"`
|
||||||
DetectContentType bool `h:"X-Detect-Content-Type"`
|
DetectContentType *bool `h:"X-Detect-Content-Type"`
|
||||||
TempURLKey string `h:"X-Account-Meta-Temp-URL-Key"`
|
TempURLKey string `h:"X-Account-Meta-Temp-URL-Key"`
|
||||||
TempURLKey2 string `h:"X-Account-Meta-Temp-URL-Key-2"`
|
TempURLKey2 string `h:"X-Account-Meta-Temp-URL-Key-2"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -154,12 +154,12 @@ type UpdateOptsBuilder interface {
|
||||||
type UpdateOpts struct {
|
type UpdateOpts struct {
|
||||||
Metadata map[string]string
|
Metadata map[string]string
|
||||||
RemoveMetadata []string
|
RemoveMetadata []string
|
||||||
ContainerRead string `h:"X-Container-Read"`
|
ContainerRead *string `h:"X-Container-Read"`
|
||||||
ContainerSyncTo string `h:"X-Container-Sync-To"`
|
ContainerSyncTo *string `h:"X-Container-Sync-To"`
|
||||||
ContainerSyncKey string `h:"X-Container-Sync-Key"`
|
ContainerSyncKey *string `h:"X-Container-Sync-Key"`
|
||||||
ContainerWrite string `h:"X-Container-Write"`
|
ContainerWrite *string `h:"X-Container-Write"`
|
||||||
ContentType string `h:"Content-Type"`
|
ContentType *string `h:"Content-Type"`
|
||||||
DetectContentType bool `h:"X-Detect-Content-Type"`
|
DetectContentType *bool `h:"X-Detect-Content-Type"`
|
||||||
RemoveVersionsLocation string `h:"X-Remove-Versions-Location"`
|
RemoveVersionsLocation string `h:"X-Remove-Versions-Location"`
|
||||||
VersionsLocation string `h:"X-Versions-Location"`
|
VersionsLocation string `h:"X-Versions-Location"`
|
||||||
RemoveHistoryLocation string `h:"X-Remove-History-Location"`
|
RemoveHistoryLocation string `h:"X-Remove-History-Location"`
|
||||||
|
|
|
@ -28,7 +28,7 @@ type ContainerPage struct {
|
||||||
pagination.MarkerPageBase
|
pagination.MarkerPageBase
|
||||||
}
|
}
|
||||||
|
|
||||||
//IsEmpty returns true if a ListResult contains no container names.
|
// IsEmpty returns true if a ListResult contains no container names.
|
||||||
func (r ContainerPage) IsEmpty() (bool, error) {
|
func (r ContainerPage) IsEmpty() (bool, error) {
|
||||||
names, err := ExtractNames(r)
|
names, err := ExtractNames(r)
|
||||||
return len(names) == 0, err
|
return len(names) == 0, err
|
||||||
|
@ -104,6 +104,7 @@ type GetHeader struct {
|
||||||
StoragePolicy string `json:"X-Storage-Policy"`
|
StoragePolicy string `json:"X-Storage-Policy"`
|
||||||
TempURLKey string `json:"X-Container-Meta-Temp-URL-Key"`
|
TempURLKey string `json:"X-Container-Meta-Temp-URL-Key"`
|
||||||
TempURLKey2 string `json:"X-Container-Meta-Temp-URL-Key-2"`
|
TempURLKey2 string `json:"X-Container-Meta-Temp-URL-Key-2"`
|
||||||
|
Timestamp float64 `json:"X-Timestamp,string"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *GetHeader) UnmarshalJSON(b []byte) error {
|
func (r *GetHeader) UnmarshalJSON(b []byte) error {
|
||||||
|
@ -114,6 +115,7 @@ func (r *GetHeader) UnmarshalJSON(b []byte) error {
|
||||||
Read string `json:"X-Container-Read"`
|
Read string `json:"X-Container-Read"`
|
||||||
Date gophercloud.JSONRFC1123 `json:"Date"`
|
Date gophercloud.JSONRFC1123 `json:"Date"`
|
||||||
}
|
}
|
||||||
|
|
||||||
err := json.Unmarshal(b, &s)
|
err := json.Unmarshal(b, &s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
12
vendor/github.com/gophercloud/gophercloud/openstack/objectstorage/v1/objects/requests.go
generated
vendored
12
vendor/github.com/gophercloud/gophercloud/openstack/objectstorage/v1/objects/requests.go
generated
vendored
|
@ -394,12 +394,12 @@ type UpdateOptsBuilder interface {
|
||||||
type UpdateOpts struct {
|
type UpdateOpts struct {
|
||||||
Metadata map[string]string
|
Metadata map[string]string
|
||||||
RemoveMetadata []string
|
RemoveMetadata []string
|
||||||
ContentDisposition string `h:"Content-Disposition"`
|
ContentDisposition *string `h:"Content-Disposition"`
|
||||||
ContentEncoding string `h:"Content-Encoding"`
|
ContentEncoding *string `h:"Content-Encoding"`
|
||||||
ContentType string `h:"Content-Type"`
|
ContentType *string `h:"Content-Type"`
|
||||||
DeleteAfter int64 `h:"X-Delete-After"`
|
DeleteAfter *int64 `h:"X-Delete-After"`
|
||||||
DeleteAt int64 `h:"X-Delete-At"`
|
DeleteAt *int64 `h:"X-Delete-At"`
|
||||||
DetectContentType bool `h:"X-Detect-Content-Type"`
|
DetectContentType *bool `h:"X-Detect-Content-Type"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToObjectUpdateMap formats a UpdateOpts into a map of headers.
|
// ToObjectUpdateMap formats a UpdateOpts into a map of headers.
|
||||||
|
|
|
@ -445,6 +445,9 @@ func BuildHeaders(opts interface{}) (map[string]string, error) {
|
||||||
|
|
||||||
// if the field is set, add it to the slice of query pieces
|
// if the field is set, add it to the slice of query pieces
|
||||||
if !isZero(v) {
|
if !isZero(v) {
|
||||||
|
if v.Kind() == reflect.Ptr {
|
||||||
|
v = v.Elem()
|
||||||
|
}
|
||||||
switch v.Kind() {
|
switch v.Kind() {
|
||||||
case reflect.String:
|
case reflect.String:
|
||||||
optsMap[tags[0]] = v.String()
|
optsMap[tags[0]] = v.String()
|
||||||
|
|
|
@ -25,7 +25,13 @@ type UserAgent struct {
|
||||||
prepend []string
|
prepend []string
|
||||||
}
|
}
|
||||||
|
|
||||||
type RetryFunc func(context.Context, *ErrUnexpectedResponseCode, error, uint) error
|
type RetryBackoffFunc func(context.Context, *ErrUnexpectedResponseCode, error, uint) error
|
||||||
|
|
||||||
|
// RetryFunc is a catch-all function for retrying failed API requests.
|
||||||
|
// If it returns nil, the request will be retried. If it returns an error,
|
||||||
|
// the request method will exit with that error. failCount is the number of
|
||||||
|
// times the request has failed (starting at 1).
|
||||||
|
type RetryFunc func(context context.Context, method, url string, options *RequestOpts, err error, failCount uint) error
|
||||||
|
|
||||||
// Prepend prepends a user-defined string to the default User-Agent string. Users
|
// Prepend prepends a user-defined string to the default User-Agent string. Users
|
||||||
// may pass in one or more strings to prepend.
|
// may pass in one or more strings to prepend.
|
||||||
|
@ -85,12 +91,16 @@ type ProviderClient struct {
|
||||||
// Context is the context passed to the HTTP request.
|
// Context is the context passed to the HTTP request.
|
||||||
Context context.Context
|
Context context.Context
|
||||||
|
|
||||||
// Retry backoff func
|
// Retry backoff func is called when rate limited.
|
||||||
RetryBackoffFunc RetryFunc
|
RetryBackoffFunc RetryBackoffFunc
|
||||||
|
|
||||||
// MaxBackoffRetries set the maximum number of backoffs. When not set, defaults to DefaultMaxBackoffRetries
|
// MaxBackoffRetries set the maximum number of backoffs. When not set, defaults to DefaultMaxBackoffRetries
|
||||||
MaxBackoffRetries uint
|
MaxBackoffRetries uint
|
||||||
|
|
||||||
|
// A general failed request handler method - this is always called in the end if a request failed. Leave as nil
|
||||||
|
// to abort when an error is encountered.
|
||||||
|
RetryFunc RetryFunc
|
||||||
|
|
||||||
// mut is a mutex for the client. It protects read and write access to client attributes such as getting
|
// mut is a mutex for the client. It protects read and write access to client attributes such as getting
|
||||||
// and setting the TokenID.
|
// and setting the TokenID.
|
||||||
mut *sync.RWMutex
|
mut *sync.RWMutex
|
||||||
|
@ -398,11 +408,7 @@ func (client *ProviderClient) doRequest(method, url string, options *RequestOpts
|
||||||
|
|
||||||
if options.MoreHeaders != nil {
|
if options.MoreHeaders != nil {
|
||||||
for k, v := range options.MoreHeaders {
|
for k, v := range options.MoreHeaders {
|
||||||
if v != "" {
|
|
||||||
req.Header.Set(k, v)
|
req.Header.Set(k, v)
|
||||||
} else {
|
|
||||||
req.Header.Del(k)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -416,6 +422,16 @@ func (client *ProviderClient) doRequest(method, url string, options *RequestOpts
|
||||||
// Issue the request.
|
// Issue the request.
|
||||||
resp, err := client.HTTPClient.Do(req)
|
resp, err := client.HTTPClient.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if client.RetryFunc != nil {
|
||||||
|
var e error
|
||||||
|
state.retries = state.retries + 1
|
||||||
|
e = client.RetryFunc(client.Context, method, url, options, err, state.retries)
|
||||||
|
if e != nil {
|
||||||
|
return nil, e
|
||||||
|
}
|
||||||
|
|
||||||
|
return client.doRequest(method, url, options, state)
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -459,6 +475,7 @@ func (client *ProviderClient) doRequest(method, url string, options *RequestOpts
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e := &ErrUnableToReauthenticate{}
|
e := &ErrUnableToReauthenticate{}
|
||||||
e.ErrOriginal = respErr
|
e.ErrOriginal = respErr
|
||||||
|
e.ErrReauth = err
|
||||||
return nil, e
|
return nil, e
|
||||||
}
|
}
|
||||||
if options.RawBody != nil {
|
if options.RawBody != nil {
|
||||||
|
@ -550,6 +567,17 @@ func (client *ProviderClient) doRequest(method, url string, options *RequestOpts
|
||||||
err = respErr
|
err = respErr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
if e != nil {
|
||||||
|
return resp, e
|
||||||
|
}
|
||||||
|
|
||||||
|
return client.doRequest(method, url, options, state)
|
||||||
|
}
|
||||||
|
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -563,6 +591,16 @@ func (client *ProviderClient) doRequest(method, url string, options *RequestOpts
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
if err := json.NewDecoder(resp.Body).Decode(options.JSONResponse); err != nil {
|
if err := json.NewDecoder(resp.Body).Decode(options.JSONResponse); err != nil {
|
||||||
|
if client.RetryFunc != nil {
|
||||||
|
var e error
|
||||||
|
state.retries = state.retries + 1
|
||||||
|
e = client.RetryFunc(client.Context, method, url, options, err, state.retries)
|
||||||
|
if e != nil {
|
||||||
|
return resp, e
|
||||||
|
}
|
||||||
|
|
||||||
|
return client.doRequest(method, url, options, state)
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -411,7 +411,7 @@ github.com/googleapis/gnostic/compiler
|
||||||
github.com/googleapis/gnostic/extensions
|
github.com/googleapis/gnostic/extensions
|
||||||
github.com/googleapis/gnostic/jsonschema
|
github.com/googleapis/gnostic/jsonschema
|
||||||
github.com/googleapis/gnostic/openapiv2
|
github.com/googleapis/gnostic/openapiv2
|
||||||
# github.com/gophercloud/gophercloud v0.18.0
|
# github.com/gophercloud/gophercloud v0.23.0
|
||||||
## explicit; go 1.13
|
## explicit; go 1.13
|
||||||
github.com/gophercloud/gophercloud
|
github.com/gophercloud/gophercloud
|
||||||
github.com/gophercloud/gophercloud/openstack
|
github.com/gophercloud/gophercloud/openstack
|
||||||
|
|
Loading…
Reference in New Issue