build(deps): bump github.com/gophercloud/gophercloud
Bumps [github.com/gophercloud/gophercloud](https://github.com/gophercloud/gophercloud) from 0.11.0 to 0.20.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.11.0...v0.20.0) --- updated-dependencies: - dependency-name: github.com/gophercloud/gophercloud dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
parent
24727bb2e3
commit
839a708755
20 changed files with 593 additions and 194 deletions
2
go.mod
2
go.mod
|
|
@ -22,7 +22,7 @@ require (
|
||||||
github.com/golang/protobuf v1.4.3
|
github.com/golang/protobuf v1.4.3
|
||||||
github.com/google/go-cmp v0.5.4
|
github.com/google/go-cmp v0.5.4
|
||||||
github.com/google/uuid v1.3.0
|
github.com/google/uuid v1.3.0
|
||||||
github.com/gophercloud/gophercloud v0.11.0
|
github.com/gophercloud/gophercloud v0.20.0
|
||||||
github.com/jackc/pgtype v1.8.1
|
github.com/jackc/pgtype v1.8.1
|
||||||
github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c
|
github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c
|
||||||
github.com/julienschmidt/httprouter v1.3.0
|
github.com/julienschmidt/httprouter v1.3.0
|
||||||
|
|
|
||||||
10
go.sum
10
go.sum
|
|
@ -250,8 +250,8 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
|
||||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
|
github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||||
github.com/gophercloud/gophercloud v0.11.0 h1:pYMP9UZBdQa3lsfIZ1tZor4EbtxiuB6BHhocenkiH/E=
|
github.com/gophercloud/gophercloud v0.20.0 h1:1+4jrsjVhdX5omlAo4jkmFc6ftLbuXLzgFo4i6lH+Gk=
|
||||||
github.com/gophercloud/gophercloud v0.11.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss=
|
github.com/gophercloud/gophercloud v0.20.0/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4=
|
||||||
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/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
|
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
|
||||||
|
|
@ -567,10 +567,10 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U
|
||||||
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
|
||||||
golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||||
|
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||||
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI=
|
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI=
|
||||||
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
|
@ -629,7 +629,6 @@ golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLL
|
||||||
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
|
@ -695,7 +694,6 @@ golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
|
@ -767,7 +765,6 @@ golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtn
|
||||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
|
@ -918,7 +915,6 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
|
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
|
||||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
|
|
|
||||||
25
vendor/github.com/gophercloud/gophercloud/.travis.yml
generated
vendored
25
vendor/github.com/gophercloud/gophercloud/.travis.yml
generated
vendored
|
|
@ -1,25 +0,0 @@
|
||||||
language: go
|
|
||||||
sudo: false
|
|
||||||
install:
|
|
||||||
- GO111MODULE=off go get golang.org/x/crypto/ssh
|
|
||||||
- GO111MODULE=off go get -v -tags 'fixtures acceptance' ./...
|
|
||||||
- GO111MODULE=off go get github.com/wadey/gocovmerge
|
|
||||||
- GO111MODULE=off go get github.com/mattn/goveralls
|
|
||||||
- GO111MODULE=off go get golang.org/x/tools/cmd/goimports
|
|
||||||
go:
|
|
||||||
- "1.11"
|
|
||||||
- "1.12"
|
|
||||||
- "1.13"
|
|
||||||
- "tip"
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- secure: "xSQsAG5wlL9emjbCdxzz/hYQsSpJ/bABO1kkbwMSISVcJ3Nk0u4ywF+LS4bgeOnwPfmFvNTOqVDu3RwEvMeWXSI76t1piCPcObutb2faKLVD/hLoAS76gYX+Z8yGWGHrSB7Do5vTPj1ERe2UljdrnsSeOXzoDwFxYRaZLX4bBOB4AyoGvRniil5QXPATiA1tsWX1VMicj8a4F8X+xeESzjt1Q5Iy31e7vkptu71bhvXCaoo5QhYwT+pLR9dN0S1b7Ro0KVvkRefmr1lUOSYd2e74h6Lc34tC1h3uYZCS4h47t7v5cOXvMNxinEj2C51RvbjvZI1RLVdkuAEJD1Iz4+Ote46nXbZ//6XRZMZz/YxQ13l7ux1PFjgEB6HAapmF5Xd8PRsgeTU9LRJxpiTJ3P5QJ3leS1va8qnziM5kYipj/Rn+V8g2ad/rgkRox9LSiR9VYZD2Pe45YCb1mTKSl2aIJnV7nkOqsShY5LNB4JZSg7xIffA+9YVDktw8dJlATjZqt7WvJJ49g6A61mIUV4C15q2JPGKTkZzDiG81NtmS7hFa7k0yaE2ELgYocbcuyUcAahhxntYTC0i23nJmEHVNiZmBO3u7EgpWe4KGVfumU+lt12tIn5b3dZRBBUk3QakKKozSK1QPHGpk/AZGrhu7H6l8to6IICKWtDcyMPQ="
|
|
||||||
- GO111MODULE=on
|
|
||||||
before_script:
|
|
||||||
- go vet ./...
|
|
||||||
script:
|
|
||||||
- ./script/coverage
|
|
||||||
- ./script/unittest
|
|
||||||
- ./script/format
|
|
||||||
after_success:
|
|
||||||
- $HOME/gopath/bin/goveralls -service=travis-ci -coverprofile=cover.out
|
|
||||||
37
vendor/github.com/gophercloud/gophercloud/.zuul.yaml
generated
vendored
37
vendor/github.com/gophercloud/gophercloud/.zuul.yaml
generated
vendored
|
|
@ -12,7 +12,8 @@
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on master branch
|
Run gophercloud acceptance test on master branch
|
||||||
run: .zuul/playbooks/gophercloud-acceptance-test/run.yaml
|
run: .zuul/playbooks/gophercloud-acceptance-test/run.yaml
|
||||||
nodeset: ubuntu-bionic
|
timeout: 18000 # 5 hours
|
||||||
|
nodeset: ubuntu-focal
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: gophercloud-acceptance-test-ironic
|
name: gophercloud-acceptance-test-ironic
|
||||||
|
|
@ -20,7 +21,25 @@
|
||||||
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
|
run: .zuul/playbooks/gophercloud-acceptance-test-ironic/run.yaml
|
||||||
nodeset: ubuntu-bionic
|
nodeset: ubuntu-focal
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: gophercloud-acceptance-test-ussuri
|
||||||
|
parent: gophercloud-acceptance-test
|
||||||
|
description: |
|
||||||
|
Run gophercloud acceptance test on ussuri branch
|
||||||
|
vars:
|
||||||
|
global_env:
|
||||||
|
OS_BRANCH: stable/ussuri
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: gophercloud-acceptance-test-train
|
||||||
|
parent: gophercloud-acceptance-test
|
||||||
|
description: |
|
||||||
|
Run gophercloud acceptance test on train branch
|
||||||
|
vars:
|
||||||
|
global_env:
|
||||||
|
OS_BRANCH: stable/train
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: gophercloud-acceptance-test-stein
|
name: gophercloud-acceptance-test-stein
|
||||||
|
|
@ -45,15 +64,19 @@
|
||||||
parent: gophercloud-acceptance-test
|
parent: gophercloud-acceptance-test
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on queens branch
|
Run gophercloud acceptance test on queens branch
|
||||||
|
nodeset: ubuntu-xenial
|
||||||
vars:
|
vars:
|
||||||
global_env:
|
global_env:
|
||||||
OS_BRANCH: stable/queens
|
OS_BRANCH: stable/queens
|
||||||
|
|
||||||
|
# NOTE: A Pike-based devstack environment is currently
|
||||||
|
# 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
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on pike branch
|
Run gophercloud acceptance test on pike branch
|
||||||
|
nodeset: ubuntu-xenial
|
||||||
vars:
|
vars:
|
||||||
global_env:
|
global_env:
|
||||||
OS_BRANCH: stable/pike
|
OS_BRANCH: stable/pike
|
||||||
|
|
@ -63,15 +86,19 @@
|
||||||
parent: gophercloud-acceptance-test
|
parent: gophercloud-acceptance-test
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on ocata branch
|
Run gophercloud acceptance test on ocata branch
|
||||||
|
nodeset: ubuntu-xenial
|
||||||
vars:
|
vars:
|
||||||
global_env:
|
global_env:
|
||||||
OS_BRANCH: stable/ocata
|
OS_BRANCH: stable/ocata
|
||||||
|
|
||||||
|
# NOTE: A Newton-based devstack environment is currently
|
||||||
|
# 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
|
||||||
description: |
|
description: |
|
||||||
Run gophercloud acceptance test on newton branch
|
Run gophercloud acceptance test on newton branch
|
||||||
|
nodeset: ubuntu-xenial
|
||||||
vars:
|
vars:
|
||||||
global_env:
|
global_env:
|
||||||
OS_BRANCH: stable/newton
|
OS_BRANCH: stable/newton
|
||||||
|
|
@ -101,3 +128,9 @@
|
||||||
recheck-stein:
|
recheck-stein:
|
||||||
jobs:
|
jobs:
|
||||||
- gophercloud-acceptance-test-stein
|
- gophercloud-acceptance-test-stein
|
||||||
|
recheck-train:
|
||||||
|
jobs:
|
||||||
|
- gophercloud-acceptance-test-train
|
||||||
|
recheck-ussuri:
|
||||||
|
jobs:
|
||||||
|
- gophercloud-acceptance-test-ussuri
|
||||||
|
|
|
||||||
256
vendor/github.com/gophercloud/gophercloud/CHANGELOG.md
generated
vendored
256
vendor/github.com/gophercloud/gophercloud/CHANGELOG.md
generated
vendored
|
|
@ -1,4 +1,256 @@
|
||||||
## 0.12.0 (Unreleased)
|
## 0.21.0 (Unreleased)
|
||||||
|
|
||||||
|
## 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)
|
||||||
|
|
||||||
|
NOTES / BREAKING CHANGES
|
||||||
|
|
||||||
|
* As of [GH-2160](https://github.com/gophercloud/gophercloud/pull/2160), Gophercloud no longer URL encodes Object Storage containers and object names. You can still encode them yourself before passing the names to the Object Storage functions.
|
||||||
|
|
||||||
|
* `baremetal/v1/nodes.ListBIOSSettings` now takes three parameters. The third, new, parameter is `ListBIOSSettingsOptsBuilder` [GH-2174](https://github.com/gophercloud/gophercloud/pull/2174)
|
||||||
|
|
||||||
|
BUG FIXES
|
||||||
|
|
||||||
|
* Fixed expected OK codes to use default codes [GH-2173](https://github.com/gophercloud/gophercloud/pull/2173)
|
||||||
|
* Fixed inablity to create sub-containers (objects with `/` in their name) [GH-2160](https://github.com/gophercloud/gophercloud/pull/2160)
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
* Added `orchestration/v1/stacks.ListOpts.ShowHidden` [GH-2104](https://github.com/gophercloud/gophercloud/pull/2104)
|
||||||
|
* Added `loadbalancer/v2/listeners.ProtocolSCTP` [GH-2149](https://github.com/gophercloud/gophercloud/pull/2149)
|
||||||
|
* Added `loadbalancer/v2/listeners.CreateOpts.TLSVersions` [GH-2150](https://github.com/gophercloud/gophercloud/pull/2150)
|
||||||
|
* Added `loadbalancer/v2/listeners.UpdateOpts.TLSVersions` [GH-2150](https://github.com/gophercloud/gophercloud/pull/2150)
|
||||||
|
* Added `baremetal/v1/nodes.CreateOpts.NetworkData` [GH-2154](https://github.com/gophercloud/gophercloud/pull/2154)
|
||||||
|
* Added `baremetal/v1/nodes.Node.NetworkData` [GH-2154](https://github.com/gophercloud/gophercloud/pull/2154)
|
||||||
|
* Added `loadbalancer/v2/pools.ProtocolPROXYV2` [GH-2158](https://github.com/gophercloud/gophercloud/pull/2158)
|
||||||
|
* Added `loadbalancer/v2/pools.ProtocolSCTP` [GH-2158](https://github.com/gophercloud/gophercloud/pull/2158)
|
||||||
|
* Added `placement/v1/resourceproviders.GetAllocations` [GH-2162](https://github.com/gophercloud/gophercloud/pull/2162)
|
||||||
|
* Added `baremetal/v1/nodes.CreateOpts.BIOSInterface` [GH-2164](https://github.com/gophercloud/gophercloud/pull/2164)
|
||||||
|
* Added `baremetal/v1/nodes.Node.BIOSInterface` [GH-2164](https://github.com/gophercloud/gophercloud/pull/2164)
|
||||||
|
* Added `baremetal/v1/nodes.NodeValidation.BIOS` [GH-2164](https://github.com/gophercloud/gophercloud/pull/2164)
|
||||||
|
* Added `baremetal/v1/nodes.ListBIOSSettings` [GH-2171](https://github.com/gophercloud/gophercloud/pull/2171)
|
||||||
|
* Added `baremetal/v1/nodes.GetBIOSSetting` [GH-2171](https://github.com/gophercloud/gophercloud/pull/2171)
|
||||||
|
* Added `baremetal/v1/nodes.ListBIOSSettingsOpts` [GH-2174](https://github.com/gophercloud/gophercloud/pull/2174)
|
||||||
|
* Added `baremetal/v1/nodes.BIOSSetting.AttributeType` [GH-2174](https://github.com/gophercloud/gophercloud/pull/2174)
|
||||||
|
* Added `baremetal/v1/nodes.BIOSSetting.AllowableValues` [GH-2174](https://github.com/gophercloud/gophercloud/pull/2174)
|
||||||
|
* Added `baremetal/v1/nodes.BIOSSetting.LowerBound` [GH-2174](https://github.com/gophercloud/gophercloud/pull/2174)
|
||||||
|
* Added `baremetal/v1/nodes.BIOSSetting.UpperBound` [GH-2174](https://github.com/gophercloud/gophercloud/pull/2174)
|
||||||
|
* Added `baremetal/v1/nodes.BIOSSetting.MinLength` [GH-2174](https://github.com/gophercloud/gophercloud/pull/2174)
|
||||||
|
* Added `baremetal/v1/nodes.BIOSSetting.MaxLength` [GH-2174](https://github.com/gophercloud/gophercloud/pull/2174)
|
||||||
|
* Added `baremetal/v1/nodes.BIOSSetting.ReadOnly` [GH-2174](https://github.com/gophercloud/gophercloud/pull/2174)
|
||||||
|
* Added `baremetal/v1/nodes.BIOSSetting.ResetRequired` [GH-2174](https://github.com/gophercloud/gophercloud/pull/2174)
|
||||||
|
* Added `baremetal/v1/nodes.BIOSSetting.Unique` [GH-2174](https://github.com/gophercloud/gophercloud/pull/2174)
|
||||||
|
|
||||||
|
## 0.17.0 (April 9, 2021)
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
* `networking/v2/extensions/quotas.QuotaDetail.Reserved` can handle both `int` and `string` values [GH-2126](https://github.com/gophercloud/gophercloud/pull/2126)
|
||||||
|
* Added `blockstorage/v3/volumetypes.ListExtraSpecs` [GH-2123](https://github.com/gophercloud/gophercloud/pull/2123)
|
||||||
|
* Added `blockstorage/v3/volumetypes.GetExtraSpec` [GH-2123](https://github.com/gophercloud/gophercloud/pull/2123)
|
||||||
|
* Added `blockstorage/v3/volumetypes.CreateExtraSpecs` [GH-2123](https://github.com/gophercloud/gophercloud/pull/2123)
|
||||||
|
* Added `blockstorage/v3/volumetypes.UpdateExtraSpec` [GH-2123](https://github.com/gophercloud/gophercloud/pull/2123)
|
||||||
|
* Added `blockstorage/v3/volumetypes.DeleteExtraSpec` [GH-2123](https://github.com/gophercloud/gophercloud/pull/2123)
|
||||||
|
* Added `identity/v3/roles.ListAssignmentOpts.IncludeNames` [GH-2133](https://github.com/gophercloud/gophercloud/pull/2133)
|
||||||
|
* Added `identity/v3/roles.AssignedRoles.Name` [GH-2133](https://github.com/gophercloud/gophercloud/pull/2133)
|
||||||
|
* Added `identity/v3/roles.Domain.Name` [GH-2133](https://github.com/gophercloud/gophercloud/pull/2133)
|
||||||
|
* Added `identity/v3/roles.Project.Name` [GH-2133](https://github.com/gophercloud/gophercloud/pull/2133)
|
||||||
|
* Added `identity/v3/roles.User.Name` [GH-2133](https://github.com/gophercloud/gophercloud/pull/2133)
|
||||||
|
* Added `identity/v3/roles.Group.Name` [GH-2133](https://github.com/gophercloud/gophercloud/pull/2133)
|
||||||
|
* Added `blockstorage/extensions/availabilityzones.List` [GH-2135](https://github.com/gophercloud/gophercloud/pull/2135)
|
||||||
|
* Added `blockstorage/v3/volumetypes.ListAccesses` [GH-2138](https://github.com/gophercloud/gophercloud/pull/2138)
|
||||||
|
* Added `blockstorage/v3/volumetypes.AddAccess` [GH-2138](https://github.com/gophercloud/gophercloud/pull/2138)
|
||||||
|
* Added `blockstorage/v3/volumetypes.RemoveAccess` [GH-2138](https://github.com/gophercloud/gophercloud/pull/2138)
|
||||||
|
* Added `blockstorage/v3/qos.Create` [GH-2140](https://github.com/gophercloud/gophercloud/pull/2140)
|
||||||
|
* Added `blockstorage/v3/qos.Delete` [GH-2140](https://github.com/gophercloud/gophercloud/pull/2140)
|
||||||
|
|
||||||
|
## 0.16.0 (February 23, 2021)
|
||||||
|
|
||||||
|
UPGRADE NOTES
|
||||||
|
|
||||||
|
* `baremetal/v1/nodes.CleanStep.Interface` has changed from `string` to `StepInterface` [GH-2120](https://github.com/gophercloud/gophercloud/pull/2120)
|
||||||
|
|
||||||
|
BUG FIXES
|
||||||
|
|
||||||
|
* Fixed `xor` logic issues in `loadbalancers/v2/l7policies.CreateOpts` [GH-2087](https://github.com/gophercloud/gophercloud/pull/2087)
|
||||||
|
* Fixed `xor` logic issues in `loadbalancers/v2/listeners.CreateOpts` [GH-2087](https://github.com/gophercloud/gophercloud/pull/2087)
|
||||||
|
* Fixed `If-Modified-Since` so it's correctly sent in a `objectstorage/v1/objects.Download` request [GH-2108](https://github.com/gophercloud/gophercloud/pull/2108)
|
||||||
|
* Fixed `If-Unmodified-Since` so it's correctly sent in a `objectstorage/v1/objects.Download` request [GH-2108](https://github.com/gophercloud/gophercloud/pull/2108)
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
* Added `blockstorage/extensions/limits.Get` [GH-2084](https://github.com/gophercloud/gophercloud/pull/2084)
|
||||||
|
* `clustering/v1/clusters.RemoveNodes` now returns an `ActionResult` [GH-2089](https://github.com/gophercloud/gophercloud/pull/2089)
|
||||||
|
* Added `identity/v3/projects.ListAvailable` [GH-2090](https://github.com/gophercloud/gophercloud/pull/2090)
|
||||||
|
* Added `blockstorage/extensions/backups.ListDetail` [GH-2085](https://github.com/gophercloud/gophercloud/pull/2085)
|
||||||
|
* Allow all ports to be removed in `networking/v2/extensions/fwaas_v2/groups.UpdateOpts` [GH-2073]
|
||||||
|
* Added `imageservice/v2/images.ListOpts.Hidden` [GH-2094](https://github.com/gophercloud/gophercloud/pull/2094)
|
||||||
|
* Added `imageservice/v2/images.CreateOpts.Hidden` [GH-2094](https://github.com/gophercloud/gophercloud/pull/2094)
|
||||||
|
* Added `imageservice/v2/images.ReplaceImageHidden` [GH-2094](https://github.com/gophercloud/gophercloud/pull/2094)
|
||||||
|
* Added `imageservice/v2/images.Image.Hidden` [GH-2094](https://github.com/gophercloud/gophercloud/pull/2094)
|
||||||
|
* Added `containerinfra/v1/clusters.CreateOpts.MasterLBEnabled` [GH-2102](https://github.com/gophercloud/gophercloud/pull/2102)
|
||||||
|
* Added the ability to define a custom function to handle "Retry-After" (429) responses [GH-2097](https://github.com/gophercloud/gophercloud/pull/2097)
|
||||||
|
* Added `baremetal/v1/nodes.JBOD` constant for the `RAIDLevel` type [GH-2103](https://github.com/gophercloud/gophercloud/pull/2103)
|
||||||
|
* Added support for Block Storage quotas of volume typed resources [GH-2109](https://github.com/gophercloud/gophercloud/pull/2109)
|
||||||
|
* Added `blockstorage/extensions/volumeactions.ChangeType` [GH-2113](https://github.com/gophercloud/gophercloud/pull/2113)
|
||||||
|
* Added `baremetal/v1/nodes.DeployStep` [GH-2120](https://github.com/gophercloud/gophercloud/pull/2120)
|
||||||
|
* Added `baremetal/v1/nodes.ProvisionStateOpts.DeploySteps` [GH-2120](https://github.com/gophercloud/gophercloud/pull/2120)
|
||||||
|
* Added `baremetal/v1/nodes.CreateOpts.AutomatedClean` [GH-2122](https://github.com/gophercloud/gophercloud/pull/2122)
|
||||||
|
|
||||||
|
## 0.15.0 (December 27, 2020)
|
||||||
|
|
||||||
|
BREAKING CHANGES
|
||||||
|
|
||||||
|
* `compute/v2/extensions/servergroups.List` now takes a `ListOpts` parameter. You can pass `nil` if you don't need to use this.
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
* Added `loadbalancer/v2/pools.CreateMemberOpts.Tags` [GH-2056](https://github.com/gophercloud/gophercloud/pull/2056)
|
||||||
|
* Added `loadbalancer/v2/pools.UpdateMemberOpts.Backup` [GH-2056](https://github.com/gophercloud/gophercloud/pull/2056)
|
||||||
|
* Added `loadbalancer/v2/pools.UpdateMemberOpts.MonitorAddress` [GH-2056](https://github.com/gophercloud/gophercloud/pull/2056)
|
||||||
|
* Added `loadbalancer/v2/pools.UpdateMemberOpts.MonitorPort` [GH-2056](https://github.com/gophercloud/gophercloud/pull/2056)
|
||||||
|
* Added `loadbalancer/v2/pools.UpdateMemberOpts.Tags` [GH-2056](https://github.com/gophercloud/gophercloud/pull/2056)
|
||||||
|
* Added `loadbalancer/v2/pools.BatchUpdateMemberOpts.Backup` [GH-2056](https://github.com/gophercloud/gophercloud/pull/2056)
|
||||||
|
* Added `loadbalancer/v2/pools.BatchUpdateMemberOpts.MonitorAddress` [GH-2056](https://github.com/gophercloud/gophercloud/pull/2056)
|
||||||
|
* Added `loadbalancer/v2/pools.BatchUpdateMemberOpts.MonitorPort` [GH-2056](https://github.com/gophercloud/gophercloud/pull/2056)
|
||||||
|
* Added `loadbalancer/v2/pools.BatchUpdateMemberOpts.Tags` [GH-2056](https://github.com/gophercloud/gophercloud/pull/2056)
|
||||||
|
* Added `networking/v2/extensions/quotas.GetDetail` [GH-2061](https://github.com/gophercloud/gophercloud/pull/2061)
|
||||||
|
* Added `networking/v2/extensions/quotas.UpdateOpts.Trunk` [GH-2061](https://github.com/gophercloud/gophercloud/pull/2061)
|
||||||
|
* Added `objectstorage/v1/accounts.UpdateOpts.RemoveMetadata` [GH-2063](https://github.com/gophercloud/gophercloud/pull/2063)
|
||||||
|
* Added `objectstorage/v1/objects.UpdateOpts.RemoveMetadata` [GH-2063](https://github.com/gophercloud/gophercloud/pull/2063)
|
||||||
|
* Added `identity/v3/catalog.List` [GH-2067](https://github.com/gophercloud/gophercloud/pull/2067)
|
||||||
|
* Added `networking/v2/extensions/fwaas_v2/policies.List` [GH-2057](https://github.com/gophercloud/gophercloud/pull/2057)
|
||||||
|
* Added `networking/v2/extensions/fwaas_v2/policies.Create` [GH-2057](https://github.com/gophercloud/gophercloud/pull/2057)
|
||||||
|
* Added `networking/v2/extensions/fwaas_v2/policies.Get` [GH-2057](https://github.com/gophercloud/gophercloud/pull/2057)
|
||||||
|
* Added `networking/v2/extensions/fwaas_v2/policies.Update` [GH-2057](https://github.com/gophercloud/gophercloud/pull/2057)
|
||||||
|
* Added `networking/v2/extensions/fwaas_v2/policies.Delete` [GH-2057](https://github.com/gophercloud/gophercloud/pull/2057)
|
||||||
|
* Added `compute/v2/extensions/servergroups.ListOpts.AllProjects` [GH-2070](https://github.com/gophercloud/gophercloud/pull/2070)
|
||||||
|
* Added `objectstorage/v1/containers.CreateOpts.StoragePolicy` [GH-2075](https://github.com/gophercloud/gophercloud/pull/2075)
|
||||||
|
* Added `blockstorage/v3/snapshots.Update` [GH-2081](https://github.com/gophercloud/gophercloud/pull/2081)
|
||||||
|
* Added `loadbalancer/v2/l7policies.CreateOpts.Rules` [GH-2077](https://github.com/gophercloud/gophercloud/pull/2077)
|
||||||
|
* Added `loadbalancer/v2/listeners.CreateOpts.DefaultPool` [GH-2077](https://github.com/gophercloud/gophercloud/pull/2077)
|
||||||
|
* Added `loadbalancer/v2/listeners.CreateOpts.L7Policies` [GH-2077](https://github.com/gophercloud/gophercloud/pull/2077)
|
||||||
|
* Added `loadbalancer/v2/listeners.Listener.DefaultPool` [GH-2077](https://github.com/gophercloud/gophercloud/pull/2077)
|
||||||
|
* Added `loadbalancer/v2/loadbalancers.CreateOpts.Listeners` [GH-2077](https://github.com/gophercloud/gophercloud/pull/2077)
|
||||||
|
* Added `loadbalancer/v2/loadbalancers.CreateOpts.Pools` [GH-2077](https://github.com/gophercloud/gophercloud/pull/2077)
|
||||||
|
* Added `loadbalancer/v2/pools.CreateOpts.Members` [GH-2077](https://github.com/gophercloud/gophercloud/pull/2077)
|
||||||
|
* Added `loadbalancer/v2/pools.CreateOpts.Monitor` [GH-2077](https://github.com/gophercloud/gophercloud/pull/2077)
|
||||||
|
|
||||||
|
|
||||||
|
## 0.14.0 (November 11, 2020)
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
* Added `identity/v3/endpoints.Endpoint.Enabled` [GH-2030](https://github.com/gophercloud/gophercloud/pull/2030)
|
||||||
|
* Added `containerinfra/v1/clusters.Upgrade` [GH-2032](https://github.com/gophercloud/gophercloud/pull/2032)
|
||||||
|
* Added `compute/apiversions.List` [GH-2037](https://github.com/gophercloud/gophercloud/pull/2037)
|
||||||
|
* Added `compute/apiversions.Get` [GH-2037](https://github.com/gophercloud/gophercloud/pull/2037)
|
||||||
|
* Added `compute/v2/servers.ListOpts.IP` [GH-2038](https://github.com/gophercloud/gophercloud/pull/2038)
|
||||||
|
* Added `compute/v2/servers.ListOpts.IP6` [GH-2038](https://github.com/gophercloud/gophercloud/pull/2038)
|
||||||
|
* Added `compute/v2/servers.ListOpts.UserID` [GH-2038](https://github.com/gophercloud/gophercloud/pull/2038)
|
||||||
|
* Added `dns/v2/transfer/accept.List` [GH-2041](https://github.com/gophercloud/gophercloud/pull/2041)
|
||||||
|
* Added `dns/v2/transfer/accept.Get` [GH-2041](https://github.com/gophercloud/gophercloud/pull/2041)
|
||||||
|
* Added `dns/v2/transfer/accept.Create` [GH-2041](https://github.com/gophercloud/gophercloud/pull/2041)
|
||||||
|
* Added `dns/v2/transfer/requests.List` [GH-2041](https://github.com/gophercloud/gophercloud/pull/2041)
|
||||||
|
* Added `dns/v2/transfer/requests.Get` [GH-2041](https://github.com/gophercloud/gophercloud/pull/2041)
|
||||||
|
* Added `dns/v2/transfer/requests.Update` [GH-2041](https://github.com/gophercloud/gophercloud/pull/2041)
|
||||||
|
* Added `dns/v2/transfer/requests.Delete` [GH-2041](https://github.com/gophercloud/gophercloud/pull/2041)
|
||||||
|
* Added `baremetal/v1/nodes.RescueWait` [GH-2052](https://github.com/gophercloud/gophercloud/pull/2052)
|
||||||
|
* Added `baremetal/v1/nodes.Unrescuing` [GH-2052](https://github.com/gophercloud/gophercloud/pull/2052)
|
||||||
|
* Added `networking/v2/extensions/fwaas_v2/groups.List` [GH-2050](https://github.com/gophercloud/gophercloud/pull/2050)
|
||||||
|
* Added `networking/v2/extensions/fwaas_v2/groups.Get` [GH-2050](https://github.com/gophercloud/gophercloud/pull/2050)
|
||||||
|
* Added `networking/v2/extensions/fwaas_v2/groups.Create` [GH-2050](https://github.com/gophercloud/gophercloud/pull/2050)
|
||||||
|
* Added `networking/v2/extensions/fwaas_v2/groups.Update` [GH-2050](https://github.com/gophercloud/gophercloud/pull/2050)
|
||||||
|
* Added `networking/v2/extensions/fwaas_v2/groups.Delete` [GH-2050](https://github.com/gophercloud/gophercloud/pull/2050)
|
||||||
|
|
||||||
|
BUG FIXES
|
||||||
|
|
||||||
|
* Changed `networking/v2/extensions/layer3/routers.Routes` from `[]Route` to `*[]Route` [GH-2043](https://github.com/gophercloud/gophercloud/pull/2043)
|
||||||
|
|
||||||
|
## 0.13.0 (September 27, 2020)
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
* Added `ProtocolTerminatedHTTPS` as a valid listener protocol to `loadbalancer/v2/listeners` [GH-1992](https://github.com/gophercloud/gophercloud/pull/1992)
|
||||||
|
* Added `objectstorage/v1/objects.CreateTempURLOpts.Timestamp` [GH-1994](https://github.com/gophercloud/gophercloud/pull/1994)
|
||||||
|
* Added `compute/v2/extensions/schedulerhints.SchedulerHints.DifferentCell` [GH-2012](https://github.com/gophercloud/gophercloud/pull/2012)
|
||||||
|
* Added `loadbalancer/v2/quotas.Get` [GH-2010](https://github.com/gophercloud/gophercloud/pull/2010)
|
||||||
|
* Added `messaging/v2/queues.CreateOpts.EnableEncryptMessages` [GH-2016](https://github.com/gophercloud/gophercloud/pull/2016)
|
||||||
|
* Added `messaging/v2/queues.ListOpts.Name` [GH-2018](https://github.com/gophercloud/gophercloud/pull/2018)
|
||||||
|
* Added `messaging/v2/queues.ListOpts.WithCount` [GH-2018](https://github.com/gophercloud/gophercloud/pull/2018)
|
||||||
|
* Added `loadbalancer/v2/quotas.Update` [GH-2023](https://github.com/gophercloud/gophercloud/pull/2023)
|
||||||
|
* Added `loadbalancer/v2/loadbalancers.ListOpts.AvailabilityZone` [GH-2026](https://github.com/gophercloud/gophercloud/pull/2026)
|
||||||
|
* Added `loadbalancer/v2/loadbalancers.CreateOpts.AvailabilityZone` [GH-2026](https://github.com/gophercloud/gophercloud/pull/2026)
|
||||||
|
* Added `loadbalancer/v2/loadbalancers.LoadBalancer.AvailabilityZone` [GH-2026](https://github.com/gophercloud/gophercloud/pull/2026)
|
||||||
|
* Added `networking/v2/extensions/layer3/routers.ListL3Agents` [GH-2025](https://github.com/gophercloud/gophercloud/pull/2025)
|
||||||
|
|
||||||
|
BUG FIXES
|
||||||
|
|
||||||
|
* Fixed URL escaping in `objectstorage/v1/objects.CreateTempURL` [GH-1994](https://github.com/gophercloud/gophercloud/pull/1994)
|
||||||
|
* Remove unused `ServiceClient` from `compute/v2/servers.CreateOpts` [GH-2004](https://github.com/gophercloud/gophercloud/pull/2004)
|
||||||
|
* Changed `objectstorage/v1/objects.CreateOpts.DeleteAfter` from `int` to `int64` [GH-2014](https://github.com/gophercloud/gophercloud/pull/2014)
|
||||||
|
* Changed `objectstorage/v1/objects.CreateOpts.DeleteAt` from `int` to `int64` [GH-2014](https://github.com/gophercloud/gophercloud/pull/2014)
|
||||||
|
* Changed `objectstorage/v1/objects.UpdateOpts.DeleteAfter` from `int` to `int64` [GH-2014](https://github.com/gophercloud/gophercloud/pull/2014)
|
||||||
|
* Changed `objectstorage/v1/objects.UpdateOpts.DeleteAt` from `int` to `int64` [GH-2014](https://github.com/gophercloud/gophercloud/pull/2014)
|
||||||
|
|
||||||
|
|
||||||
|
## 0.12.0 (June 25, 2020)
|
||||||
|
|
||||||
|
UPGRADE NOTES
|
||||||
|
|
||||||
|
* The URL used in the `compute/v2/extensions/bootfromvolume` package has been changed from `os-volumes_boot` to `servers`.
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
* The URL used in the `compute/v2/extensions/bootfromvolume` package has been changed from `os-volumes_boot` to `servers` [GH-1973](https://github.com/gophercloud/gophercloud/pull/1973)
|
||||||
|
* Modify `baremetal/v1/nodes.LogicalDisk.PhysicalDisks` type to support physical disks hints [GH-1982](https://github.com/gophercloud/gophercloud/pull/1982)
|
||||||
|
* Added `baremetalintrospection/httpbasic` which provides an HTTP Basic Auth client [GH-1986](https://github.com/gophercloud/gophercloud/pull/1986)
|
||||||
|
* Added `baremetal/httpbasic` which provides an HTTP Basic Auth client [GH-1983](https://github.com/gophercloud/gophercloud/pull/1983)
|
||||||
|
* Added `containerinfra/v1/clusters.CreateOpts.MergeLabels` [GH-1985](https://github.com/gophercloud/gophercloud/pull/1985)
|
||||||
|
|
||||||
|
BUG FIXES
|
||||||
|
|
||||||
|
* Changed `containerinfra/v1/clusters.Cluster.HealthStatusReason` from `string` to `map[string]interface{}` [GH-1968](https://github.com/gophercloud/gophercloud/pull/1968)
|
||||||
|
* Fixed marshalling of `blockstorage/extensions/backups.ImportBackup.Metadata` [GH-1967](https://github.com/gophercloud/gophercloud/pull/1967)
|
||||||
|
* Fixed typo of "OAUth" to "OAuth" in `identity/v3/extensions/oauth1` [GH-1969](https://github.com/gophercloud/gophercloud/pull/1969)
|
||||||
|
* Fixed goroutine leak during reauthentication [GH-1978](https://github.com/gophercloud/gophercloud/pull/1978)
|
||||||
|
* Changed `baremetalintrospection/v1/introspection.RootDiskType.Size` from `int` to `int64` [GH-1988](https://github.com/gophercloud/gophercloud/pull/1988)
|
||||||
|
|
||||||
## 0.11.0 (May 14, 2020)
|
## 0.11.0 (May 14, 2020)
|
||||||
|
|
||||||
|
|
@ -176,7 +428,7 @@ IMPROVEMENTS
|
||||||
* Added `MonitorAddress` to `loadbalancer/v2/pools.CreateMemberOpts` [GH-1824](https://github.com/gophercloud/gophercloud/pull/1824)
|
* Added `MonitorAddress` to `loadbalancer/v2/pools.CreateMemberOpts` [GH-1824](https://github.com/gophercloud/gophercloud/pull/1824)
|
||||||
* Added `MonitorPort` to `loadbalancer/v2/pools.CreateMemberOpts` [GH-1824](https://github.com/gophercloud/gophercloud/pull/1824)
|
* Added `MonitorPort` to `loadbalancer/v2/pools.CreateMemberOpts` [GH-1824](https://github.com/gophercloud/gophercloud/pull/1824)
|
||||||
* Changed `Impersonation` to a non-required field in `identity/v3/extensions/trusts.CreateOpts` [GH-1818](https://github.com/gophercloud/gophercloud/pull/1818)
|
* Changed `Impersonation` to a non-required field in `identity/v3/extensions/trusts.CreateOpts` [GH-1818](https://github.com/gophercloud/gophercloud/pull/1818)
|
||||||
* Added `InsertHeaders` to `loadbalancer/v2/listeners.UpdateOpts` [GH-1835]
|
* Added `InsertHeaders` to `loadbalancer/v2/listeners.UpdateOpts` [GH-1835](https://github.com/gophercloud/gophercloud/pull/1835)
|
||||||
* Added `NUMATopology` to `baremetalintrospection/v1/introspection.Data` [GH-1842](https://github.com/gophercloud/gophercloud/pull/1842)
|
* Added `NUMATopology` to `baremetalintrospection/v1/introspection.Data` [GH-1842](https://github.com/gophercloud/gophercloud/pull/1842)
|
||||||
* Added `placement/v1/resourceproviders.Create` [GH-1841](https://github.com/gophercloud/gophercloud/pull/1841)
|
* Added `placement/v1/resourceproviders.Create` [GH-1841](https://github.com/gophercloud/gophercloud/pull/1841)
|
||||||
* Added `blockstorage/extensions/volumeactions.UploadImageOpts.Visibility` [GH-1873](https://github.com/gophercloud/gophercloud/pull/1873)
|
* Added `blockstorage/extensions/volumeactions.UploadImageOpts.Visibility` [GH-1873](https://github.com/gophercloud/gophercloud/pull/1873)
|
||||||
|
|
|
||||||
7
vendor/github.com/gophercloud/gophercloud/README.md
generated
vendored
7
vendor/github.com/gophercloud/gophercloud/README.md
generated
vendored
|
|
@ -60,6 +60,13 @@ prompted for your password.
|
||||||
|
|
||||||
### Authentication
|
### Authentication
|
||||||
|
|
||||||
|
> NOTE: It is now recommended to use the `clientconfig` package found at
|
||||||
|
> https://github.com/gophercloud/utils/tree/master/openstack/clientconfig
|
||||||
|
> for all authentication purposes.
|
||||||
|
>
|
||||||
|
> The below documentation is still relevant. clientconfig simply implements
|
||||||
|
> the below and presents it in an easier and more flexible way.
|
||||||
|
|
||||||
Once you have access to your credentials, you can begin plugging them into
|
Once you have access to your credentials, you can begin plugging them into
|
||||||
Gophercloud. The next step is authentication, and this is handled by a base
|
Gophercloud. The next step is authentication, and this is handled by a base
|
||||||
"Provider" struct. To get one, you can either pass in your credentials
|
"Provider" struct. To get one, you can either pass in your credentials
|
||||||
|
|
|
||||||
39
vendor/github.com/gophercloud/gophercloud/doc.go
generated
vendored
39
vendor/github.com/gophercloud/gophercloud/doc.go
generated
vendored
|
|
@ -106,5 +106,44 @@ intermediary processing on each page, you can use the AllPages method:
|
||||||
This top-level package contains utility functions and data types that are used
|
This top-level package contains utility functions and data types that are used
|
||||||
throughout the provider and service packages. Of particular note for end users
|
throughout the provider and service packages. Of particular note for end users
|
||||||
are the AuthOptions and EndpointOpts structs.
|
are the AuthOptions and EndpointOpts structs.
|
||||||
|
|
||||||
|
An example retry backoff function, which respects the 429 HTTP response code and a "Retry-After" header:
|
||||||
|
|
||||||
|
endpoint := "http://localhost:5000"
|
||||||
|
provider, err := openstack.NewClient(endpoint)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
provider.MaxBackoffRetries = 3 // max three retries
|
||||||
|
provider.RetryBackoffFunc = func(ctx context.Context, respErr *ErrUnexpectedResponseCode, e error, retries uint) error {
|
||||||
|
retryAfter := respErr.ResponseHeader.Get("Retry-After")
|
||||||
|
if retryAfter == "" {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
|
||||||
|
var sleep time.Duration
|
||||||
|
|
||||||
|
// Parse delay seconds or HTTP date
|
||||||
|
if v, err := strconv.ParseUint(retryAfter, 10, 32); err == nil {
|
||||||
|
sleep = time.Duration(v) * time.Second
|
||||||
|
} else if v, err := time.Parse(http.TimeFormat, retryAfter); err == nil {
|
||||||
|
sleep = time.Until(v)
|
||||||
|
} else {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
|
||||||
|
if ctx != nil {
|
||||||
|
select {
|
||||||
|
case <-time.After(sleep):
|
||||||
|
case <-ctx.Done():
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
time.Sleep(sleep)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package gophercloud
|
package gophercloud
|
||||||
|
|
|
||||||
14
vendor/github.com/gophercloud/gophercloud/go.mod
generated
vendored
14
vendor/github.com/gophercloud/gophercloud/go.mod
generated
vendored
|
|
@ -1,13 +1,9 @@
|
||||||
module github.com/gophercloud/gophercloud
|
module github.com/gophercloud/gophercloud
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
|
||||||
require (
|
require (
|
||||||
golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e
|
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad
|
||||||
golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933 // indirect
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 // indirect
|
||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e // indirect
|
gopkg.in/yaml.v2 v2.3.0
|
||||||
golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9 // indirect
|
|
||||||
golang.org/x/text v0.3.2 // indirect
|
|
||||||
golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371 // indirect
|
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 // indirect
|
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
|
|
||||||
gopkg.in/yaml.v2 v2.2.7
|
|
||||||
)
|
)
|
||||||
|
|
|
||||||
32
vendor/github.com/gophercloud/gophercloud/go.sum
generated
vendored
32
vendor/github.com/gophercloud/gophercloud/go.sum
generated
vendored
|
|
@ -1,26 +1,18 @@
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
|
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e h1:egKlR8l7Nu9vHGWbcUV8lqR4987UfUbBd7GbhqGzNYU=
|
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY=
|
||||||
golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4=
|
||||||
golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw=
|
||||||
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221 h1:/ZHdbVpdR/jk3g30/d4yUL0JU9kksj8+F/bnQUVLGDM=
|
||||||
|
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||||
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
|
||||||
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
|
||||||
golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
|
||||||
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
|
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo=
|
|
||||||
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
|
|
|
||||||
1
vendor/github.com/gophercloud/gophercloud/internal/pkg.go
generated
vendored
1
vendor/github.com/gophercloud/gophercloud/internal/pkg.go
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
package internal
|
|
||||||
34
vendor/github.com/gophercloud/gophercloud/internal/util.go
generated
vendored
34
vendor/github.com/gophercloud/gophercloud/internal/util.go
generated
vendored
|
|
@ -1,34 +0,0 @@
|
||||||
package internal
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
// RemainingKeys will inspect a struct and compare it to a map. Any struct
|
|
||||||
// field that does not have a JSON tag that matches a key in the map or
|
|
||||||
// a matching lower-case field in the map will be returned as an extra.
|
|
||||||
//
|
|
||||||
// This is useful for determining the extra fields returned in response bodies
|
|
||||||
// for resources that can contain an arbitrary or dynamic number of fields.
|
|
||||||
func RemainingKeys(s interface{}, m map[string]interface{}) (extras map[string]interface{}) {
|
|
||||||
extras = make(map[string]interface{})
|
|
||||||
for k, v := range m {
|
|
||||||
extras[k] = v
|
|
||||||
}
|
|
||||||
|
|
||||||
valueOf := reflect.ValueOf(s)
|
|
||||||
typeOf := reflect.TypeOf(s)
|
|
||||||
for i := 0; i < valueOf.NumField(); i++ {
|
|
||||||
field := typeOf.Field(i)
|
|
||||||
|
|
||||||
lowerField := strings.ToLower(field.Name)
|
|
||||||
delete(extras, lowerField)
|
|
||||||
|
|
||||||
if tagValue := field.Tag.Get("json"); tagValue != "" && tagValue != "-" {
|
|
||||||
delete(extras, tagValue)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
35
vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/requests.go
generated
vendored
35
vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers/requests.go
generated
vendored
|
|
@ -29,6 +29,14 @@ type ListOpts struct {
|
||||||
// Flavor is the name of the flavor in URL format.
|
// Flavor is the name of the flavor in URL format.
|
||||||
Flavor string `q:"flavor"`
|
Flavor string `q:"flavor"`
|
||||||
|
|
||||||
|
// IP is a regular expression to match the IPv4 address of the server.
|
||||||
|
IP string `q:"ip"`
|
||||||
|
|
||||||
|
// This requires the client to be set to microversion 2.5 or later, unless
|
||||||
|
// the user is an admin.
|
||||||
|
// IP is a regular expression to match the IPv6 address of the server.
|
||||||
|
IP6 string `q:"ip6"`
|
||||||
|
|
||||||
// Name of the server as a string; can be queried with regular expressions.
|
// Name of the server as a string; can be queried with regular expressions.
|
||||||
// Realize that ?name=bob returns both bob and bobb. If you need to match bob
|
// Realize that ?name=bob returns both bob and bobb. If you need to match bob
|
||||||
// only, you can use a regular expression matching the syntax of the
|
// only, you can use a regular expression matching the syntax of the
|
||||||
|
|
@ -55,6 +63,11 @@ type ListOpts struct {
|
||||||
// Setting "AllTenants = true" is required.
|
// Setting "AllTenants = true" is required.
|
||||||
TenantID string `q:"tenant_id"`
|
TenantID string `q:"tenant_id"`
|
||||||
|
|
||||||
|
// This requires the client to be set to microversion 2.83 or later, unless
|
||||||
|
// the user is an admin.
|
||||||
|
// UserID lists servers for a particular user.
|
||||||
|
UserID string `q:"user_id"`
|
||||||
|
|
||||||
// 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.
|
||||||
// Tags filters on specific server tags. All tags must be present for the server.
|
// Tags filters on specific server tags. All tags must be present for the server.
|
||||||
Tags string `q:"tags"`
|
Tags string `q:"tags"`
|
||||||
|
|
@ -70,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.
|
||||||
|
|
@ -112,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.
|
||||||
|
|
@ -199,10 +222,6 @@ type CreateOpts struct {
|
||||||
// Max specifies Maximum number of servers to launch.
|
// Max specifies Maximum number of servers to launch.
|
||||||
Max int `json:"max_count,omitempty"`
|
Max int `json:"max_count,omitempty"`
|
||||||
|
|
||||||
// ServiceClient will allow calls to be made to retrieve an image or
|
|
||||||
// flavor ID by name.
|
|
||||||
ServiceClient *gophercloud.ServiceClient `json:"-"`
|
|
||||||
|
|
||||||
// Tags allows a server to be tagged with single-word metadata.
|
// Tags allows a server to be tagged with single-word metadata.
|
||||||
// Requires microversion 2.52 or later.
|
// Requires microversion 2.52 or later.
|
||||||
Tags []string `json:"tags,omitempty"`
|
Tags []string `json:"tags,omitempty"`
|
||||||
|
|
@ -211,7 +230,6 @@ type CreateOpts struct {
|
||||||
// ToServerCreateMap assembles a request body based on the contents of a
|
// ToServerCreateMap assembles a request body based on the contents of a
|
||||||
// CreateOpts.
|
// CreateOpts.
|
||||||
func (opts CreateOpts) ToServerCreateMap() (map[string]interface{}, error) {
|
func (opts CreateOpts) ToServerCreateMap() (map[string]interface{}, error) {
|
||||||
opts.ServiceClient = nil
|
|
||||||
b, err := gophercloud.BuildRequestBody(opts, "")
|
b, err := gophercloud.BuildRequestBody(opts, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -250,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
|
||||||
}
|
}
|
||||||
|
|
@ -447,10 +468,6 @@ type RebuildOpts struct {
|
||||||
// Personality [optional] includes files to inject into the server at launch.
|
// Personality [optional] includes files to inject into the server at launch.
|
||||||
// Rebuild will base64-encode file contents for you.
|
// Rebuild will base64-encode file contents for you.
|
||||||
Personality Personality `json:"personality,omitempty"`
|
Personality Personality `json:"personality,omitempty"`
|
||||||
|
|
||||||
// ServiceClient will allow calls to be made to retrieve an image or
|
|
||||||
// flavor ID by name.
|
|
||||||
ServiceClient *gophercloud.ServiceClient `json:"-"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToServerRebuildMap formats a RebuildOpts struct into a map for use in JSON
|
// ToServerRebuildMap formats a RebuildOpts struct into a map for use in JSON
|
||||||
|
|
|
||||||
2
vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/doc.go
generated
vendored
2
vendor/github.com/gophercloud/gophercloud/openstack/identity/v2/tenants/doc.go
generated
vendored
|
|
@ -8,7 +8,7 @@ for more information.
|
||||||
|
|
||||||
Example to List Tenants
|
Example to List Tenants
|
||||||
|
|
||||||
listOpts := tenants.ListOpts{
|
listOpts := &tenants.ListOpts{
|
||||||
Limit: 2,
|
Limit: 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -96,8 +96,8 @@ type Token struct {
|
||||||
OAuthToken string `q:"oauth_token"`
|
OAuthToken string `q:"oauth_token"`
|
||||||
// OAuthTokenSecret is the secret value associated with the OAuth Token.
|
// OAuthTokenSecret is the secret value associated with the OAuth Token.
|
||||||
OAuthTokenSecret string `q:"oauth_token_secret"`
|
OAuthTokenSecret string `q:"oauth_token_secret"`
|
||||||
// OAUthExpiresAt is the date and time when an OAuth token expires.
|
// OAuthExpiresAt is the date and time when an OAuth token expires.
|
||||||
OAUthExpiresAt *time.Time `q:"-"`
|
OAuthExpiresAt *time.Time `q:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TokenResult is a struct to handle
|
// TokenResult is a struct to handle
|
||||||
|
|
@ -127,7 +127,7 @@ func (r TokenResult) Extract() (*Token, error) {
|
||||||
if t, err := time.Parse(gophercloud.RFC3339Milli, v); err != nil {
|
if t, err := time.Parse(gophercloud.RFC3339Milli, v); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else {
|
} else {
|
||||||
token.OAUthExpiresAt = &t
|
token.OAuthExpiresAt = &t
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
20
vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/requests.go
generated
vendored
20
vendor/github.com/gophercloud/gophercloud/openstack/imageservice/v2/images/requests.go
generated
vendored
|
|
@ -41,6 +41,9 @@ type ListOpts struct {
|
||||||
// Visibility filters on the visibility of the image.
|
// Visibility filters on the visibility of the image.
|
||||||
Visibility ImageVisibility `q:"visibility"`
|
Visibility ImageVisibility `q:"visibility"`
|
||||||
|
|
||||||
|
// Hidden filters on the hidden status of the image.
|
||||||
|
Hidden bool `q:"os_hidden"`
|
||||||
|
|
||||||
// MemberStatus filters on the member status of the image.
|
// MemberStatus filters on the member status of the image.
|
||||||
MemberStatus ImageMemberStatus `q:"member_status"`
|
MemberStatus ImageMemberStatus `q:"member_status"`
|
||||||
|
|
||||||
|
|
@ -155,6 +158,9 @@ type CreateOpts struct {
|
||||||
// Visibility defines who can see/use the image.
|
// Visibility defines who can see/use the image.
|
||||||
Visibility *ImageVisibility `json:"visibility,omitempty"`
|
Visibility *ImageVisibility `json:"visibility,omitempty"`
|
||||||
|
|
||||||
|
// Hidden is whether the image is listed in default image list or not.
|
||||||
|
Hidden *bool `json:"os_hidden,omitempty"`
|
||||||
|
|
||||||
// Tags is a set of image tags.
|
// Tags is a set of image tags.
|
||||||
Tags []string `json:"tags,omitempty"`
|
Tags []string `json:"tags,omitempty"`
|
||||||
|
|
||||||
|
|
@ -283,6 +289,20 @@ func (r UpdateVisibility) ToImagePatchMap() map[string]interface{} {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReplaceImageHidden represents an updated os_hidden property request.
|
||||||
|
type ReplaceImageHidden struct {
|
||||||
|
NewHidden bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToImagePatchMap assembles a request body based on ReplaceImageHidden.
|
||||||
|
func (r ReplaceImageHidden) ToImagePatchMap() map[string]interface{} {
|
||||||
|
return map[string]interface{}{
|
||||||
|
"op": "replace",
|
||||||
|
"path": "/os_hidden",
|
||||||
|
"value": r.NewHidden,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ReplaceImageName represents an updated image_name property request.
|
// ReplaceImageName represents an updated image_name property request.
|
||||||
type ReplaceImageName struct {
|
type ReplaceImageName struct {
|
||||||
NewName string
|
NewName string
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gophercloud/gophercloud"
|
"github.com/gophercloud/gophercloud"
|
||||||
"github.com/gophercloud/gophercloud/internal"
|
|
||||||
"github.com/gophercloud/gophercloud/pagination"
|
"github.com/gophercloud/gophercloud/pagination"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -54,6 +53,9 @@ type Image struct {
|
||||||
// Visibility defines who can see/use the image.
|
// Visibility defines who can see/use the image.
|
||||||
Visibility ImageVisibility `json:"visibility"`
|
Visibility ImageVisibility `json:"visibility"`
|
||||||
|
|
||||||
|
// Hidden is whether the image is listed in default image list or not.
|
||||||
|
Hidden bool `json:"os_hidden"`
|
||||||
|
|
||||||
// Checksum is the checksum of the data that's associated with the image.
|
// Checksum is the checksum of the data that's associated with the image.
|
||||||
Checksum string `json:"checksum"`
|
Checksum string `json:"checksum"`
|
||||||
|
|
||||||
|
|
@ -132,7 +134,7 @@ func (r *Image) UnmarshalJSON(b []byte) error {
|
||||||
delete(resultMap, "size")
|
delete(resultMap, "size")
|
||||||
delete(resultMap, "openstack-image-import-methods")
|
delete(resultMap, "openstack-image-import-methods")
|
||||||
delete(resultMap, "openstack-image-store-ids")
|
delete(resultMap, "openstack-image-store-ids")
|
||||||
r.Properties = internal.RemainingKeys(Image{}, resultMap)
|
r.Properties = gophercloud.RemainingKeys(Image{}, resultMap)
|
||||||
}
|
}
|
||||||
|
|
||||||
if v := strings.FieldsFunc(strings.TrimSpace(s.OpenStackImageImportMethods), splitFunc); len(v) > 0 {
|
if v := strings.FieldsFunc(strings.TrimSpace(s.OpenStackImageImportMethods), splitFunc); len(v) > 0 {
|
||||||
|
|
|
||||||
2
vendor/github.com/gophercloud/gophercloud/pagination/linked.go
generated
vendored
2
vendor/github.com/gophercloud/gophercloud/pagination/linked.go
generated
vendored
|
|
@ -40,7 +40,7 @@ func (current LinkedPageBase) NextPageURL() (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
key, path = path[0], path[1:len(path)]
|
key, path = path[0], path[1:]
|
||||||
|
|
||||||
value, ok := submap[key]
|
value, ok := submap[key]
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
|
||||||
134
vendor/github.com/gophercloud/gophercloud/provider_client.go
generated
vendored
134
vendor/github.com/gophercloud/gophercloud/provider_client.go
generated
vendored
|
|
@ -13,7 +13,10 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// DefaultUserAgent is the default User-Agent string set in the request header.
|
// DefaultUserAgent is the default User-Agent string set in the request header.
|
||||||
const DefaultUserAgent = "gophercloud/2.0.0"
|
const (
|
||||||
|
DefaultUserAgent = "gophercloud/2.0.0"
|
||||||
|
DefaultMaxBackoffRetries = 60
|
||||||
|
)
|
||||||
|
|
||||||
// UserAgent represents a User-Agent header.
|
// UserAgent represents a User-Agent header.
|
||||||
type UserAgent struct {
|
type UserAgent struct {
|
||||||
|
|
@ -22,6 +25,14 @@ type UserAgent struct {
|
||||||
prepend []string
|
prepend []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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.
|
||||||
func (ua *UserAgent) Prepend(s ...string) {
|
func (ua *UserAgent) Prepend(s ...string) {
|
||||||
|
|
@ -80,6 +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 is called when rate limited.
|
||||||
|
RetryBackoffFunc RetryBackoffFunc
|
||||||
|
|
||||||
|
// MaxBackoffRetries set the maximum number of backoffs. When not set, defaults to DefaultMaxBackoffRetries
|
||||||
|
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
|
||||||
|
|
@ -94,10 +115,32 @@ type ProviderClient struct {
|
||||||
// reauthlock represents a set of attributes used to help in the reauthentication process.
|
// reauthlock represents a set of attributes used to help in the reauthentication process.
|
||||||
type reauthlock struct {
|
type reauthlock struct {
|
||||||
sync.RWMutex
|
sync.RWMutex
|
||||||
// This channel is non-nil during reauthentication. It can be used to ask the
|
ongoing *reauthFuture
|
||||||
// goroutine doing Reauthenticate() for its result. Look at the implementation
|
}
|
||||||
// of Reauthenticate() for details.
|
|
||||||
ongoing chan<- (chan<- error)
|
// reauthFuture represents future result of the reauthentication process.
|
||||||
|
// while done channel is not closed, reauthentication is in progress.
|
||||||
|
// when done channel is closed, err contains the result of reauthentication.
|
||||||
|
type reauthFuture struct {
|
||||||
|
done chan struct{}
|
||||||
|
err error
|
||||||
|
}
|
||||||
|
|
||||||
|
func newReauthFuture() *reauthFuture {
|
||||||
|
return &reauthFuture{
|
||||||
|
make(chan struct{}),
|
||||||
|
nil,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *reauthFuture) Set(err error) {
|
||||||
|
f.err = err
|
||||||
|
close(f.done)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *reauthFuture) Get() error {
|
||||||
|
<-f.done
|
||||||
|
return f.err
|
||||||
}
|
}
|
||||||
|
|
||||||
// AuthenticatedHeaders returns a map of HTTP headers that are common for all
|
// AuthenticatedHeaders returns a map of HTTP headers that are common for all
|
||||||
|
|
@ -112,9 +155,7 @@ func (client *ProviderClient) AuthenticatedHeaders() (m map[string]string) {
|
||||||
ongoing := client.reauthmut.ongoing
|
ongoing := client.reauthmut.ongoing
|
||||||
client.reauthmut.Unlock()
|
client.reauthmut.Unlock()
|
||||||
if ongoing != nil {
|
if ongoing != nil {
|
||||||
responseChannel := make(chan error)
|
_ = ongoing.Get()
|
||||||
ongoing <- responseChannel
|
|
||||||
_ = <-responseChannel
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
t := client.Token()
|
t := client.Token()
|
||||||
|
|
@ -237,21 +278,19 @@ func (client *ProviderClient) Reauthenticate(previousToken string) error {
|
||||||
return client.ReauthFunc()
|
return client.ReauthFunc()
|
||||||
}
|
}
|
||||||
|
|
||||||
messages := make(chan (chan<- error))
|
future := newReauthFuture()
|
||||||
|
|
||||||
// Check if a Reauthenticate is in progress, or start one if not.
|
// Check if a Reauthenticate is in progress, or start one if not.
|
||||||
client.reauthmut.Lock()
|
client.reauthmut.Lock()
|
||||||
ongoing := client.reauthmut.ongoing
|
ongoing := client.reauthmut.ongoing
|
||||||
if ongoing == nil {
|
if ongoing == nil {
|
||||||
client.reauthmut.ongoing = messages
|
client.reauthmut.ongoing = future
|
||||||
}
|
}
|
||||||
client.reauthmut.Unlock()
|
client.reauthmut.Unlock()
|
||||||
|
|
||||||
// If Reauthenticate is running elsewhere, wait for its result.
|
// If Reauthenticate is running elsewhere, wait for its result.
|
||||||
if ongoing != nil {
|
if ongoing != nil {
|
||||||
responseChannel := make(chan error)
|
return ongoing.Get()
|
||||||
ongoing <- responseChannel
|
|
||||||
return <-responseChannel
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Perform the actual reauthentication.
|
// Perform the actual reauthentication.
|
||||||
|
|
@ -264,22 +303,10 @@ func (client *ProviderClient) Reauthenticate(previousToken string) error {
|
||||||
|
|
||||||
// Mark Reauthenticate as finished.
|
// Mark Reauthenticate as finished.
|
||||||
client.reauthmut.Lock()
|
client.reauthmut.Lock()
|
||||||
|
client.reauthmut.ongoing.Set(err)
|
||||||
client.reauthmut.ongoing = nil
|
client.reauthmut.ongoing = nil
|
||||||
client.reauthmut.Unlock()
|
client.reauthmut.Unlock()
|
||||||
|
|
||||||
// Report result to all other interested goroutines.
|
|
||||||
//
|
|
||||||
// This happens in a separate goroutine because another goroutine might have
|
|
||||||
// acquired a copy of `client.reauthmut.ongoing` before we cleared it, but not
|
|
||||||
// have come around to sending its request. By answering in a goroutine, we
|
|
||||||
// can have that goroutine linger until all responseChannels have been sent.
|
|
||||||
// When GC has collected all sendings ends of the channel, our receiving end
|
|
||||||
// will be closed and the goroutine will end.
|
|
||||||
go func() {
|
|
||||||
for responseChannel := range messages {
|
|
||||||
responseChannel <- err
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -317,6 +344,8 @@ type requestState struct {
|
||||||
// reauthenticate, but keep getting 401 responses with the fresh token, reauthenticating some more
|
// reauthenticate, but keep getting 401 responses with the fresh token, reauthenticating some more
|
||||||
// will just get us into an infinite loop.
|
// will just get us into an infinite loop.
|
||||||
hasReauthenticated bool
|
hasReauthenticated bool
|
||||||
|
// Retry-After backoff counter, increments during each backoff call
|
||||||
|
retries uint
|
||||||
}
|
}
|
||||||
|
|
||||||
var applicationJSON = "application/json"
|
var applicationJSON = "application/json"
|
||||||
|
|
@ -397,6 +426,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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -421,7 +460,7 @@ func (client *ProviderClient) doRequest(method, url string, options *RequestOpts
|
||||||
respErr := ErrUnexpectedResponseCode{
|
respErr := ErrUnexpectedResponseCode{
|
||||||
URL: url,
|
URL: url,
|
||||||
Method: method,
|
Method: method,
|
||||||
Expected: options.OkCodes,
|
Expected: okc,
|
||||||
Actual: resp.StatusCode,
|
Actual: resp.StatusCode,
|
||||||
Body: body,
|
Body: body,
|
||||||
ResponseHeader: resp.Header,
|
ResponseHeader: resp.Header,
|
||||||
|
|
@ -492,11 +531,29 @@ func (client *ProviderClient) doRequest(method, url string, options *RequestOpts
|
||||||
if error409er, ok := errType.(Err409er); ok {
|
if error409er, ok := errType.(Err409er); ok {
|
||||||
err = error409er.Error409(respErr)
|
err = error409er.Error409(respErr)
|
||||||
}
|
}
|
||||||
case 429:
|
case http.StatusTooManyRequests, 498:
|
||||||
err = ErrDefault429{respErr}
|
err = ErrDefault429{respErr}
|
||||||
if error429er, ok := errType.(Err429er); ok {
|
if error429er, ok := errType.(Err429er); ok {
|
||||||
err = error429er.Error429(respErr)
|
err = error429er.Error429(respErr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maxTries := client.MaxBackoffRetries
|
||||||
|
if maxTries == 0 {
|
||||||
|
maxTries = DefaultMaxBackoffRetries
|
||||||
|
}
|
||||||
|
|
||||||
|
if f := client.RetryBackoffFunc; f != nil && state.retries < maxTries {
|
||||||
|
var e error
|
||||||
|
|
||||||
|
state.retries = state.retries + 1
|
||||||
|
e = f(client.Context, &respErr, err, state.retries)
|
||||||
|
|
||||||
|
if e != nil {
|
||||||
|
return resp, e
|
||||||
|
}
|
||||||
|
|
||||||
|
return client.doRequest(method, url, options, state)
|
||||||
|
}
|
||||||
case http.StatusInternalServerError:
|
case http.StatusInternalServerError:
|
||||||
err = ErrDefault500{respErr}
|
err = ErrDefault500{respErr}
|
||||||
if error500er, ok := errType.(Err500er); ok {
|
if error500er, ok := errType.(Err500er); ok {
|
||||||
|
|
@ -513,6 +570,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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -526,6 +594,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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
122
vendor/github.com/gophercloud/gophercloud/util.go
generated
vendored
122
vendor/github.com/gophercloud/gophercloud/util.go
generated
vendored
|
|
@ -4,10 +4,85 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// NormalizePathURL is used to convert rawPath to a fqdn, using basePath as
|
||||||
|
// a reference in the filesystem, if necessary. basePath is assumed to contain
|
||||||
|
// either '.' when first used, or the file:// type fqdn of the parent resource.
|
||||||
|
// e.g. myFavScript.yaml => file://opt/lib/myFavScript.yaml
|
||||||
|
func NormalizePathURL(basePath, rawPath string) (string, error) {
|
||||||
|
u, err := url.Parse(rawPath)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
// if a scheme is defined, it must be a fqdn already
|
||||||
|
if u.Scheme != "" {
|
||||||
|
return u.String(), nil
|
||||||
|
}
|
||||||
|
// if basePath is a url, then child resources are assumed to be relative to it
|
||||||
|
bu, err := url.Parse(basePath)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
var basePathSys, absPathSys string
|
||||||
|
if bu.Scheme != "" {
|
||||||
|
basePathSys = filepath.FromSlash(bu.Path)
|
||||||
|
absPathSys = filepath.Join(basePathSys, rawPath)
|
||||||
|
bu.Path = filepath.ToSlash(absPathSys)
|
||||||
|
return bu.String(), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
absPathSys = filepath.Join(basePath, rawPath)
|
||||||
|
u.Path = filepath.ToSlash(absPathSys)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
u.Scheme = "file"
|
||||||
|
return u.String(), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NormalizeURL is an internal function to be used by provider clients.
|
||||||
|
//
|
||||||
|
// It ensures that each endpoint URL has a closing `/`, as expected by
|
||||||
|
// ServiceClient's methods.
|
||||||
|
func NormalizeURL(url string) string {
|
||||||
|
if !strings.HasSuffix(url, "/") {
|
||||||
|
return url + "/"
|
||||||
|
}
|
||||||
|
return url
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemainingKeys will inspect a struct and compare it to a map. Any struct
|
||||||
|
// field that does not have a JSON tag that matches a key in the map or
|
||||||
|
// a matching lower-case field in the map will be returned as an extra.
|
||||||
|
//
|
||||||
|
// This is useful for determining the extra fields returned in response bodies
|
||||||
|
// for resources that can contain an arbitrary or dynamic number of fields.
|
||||||
|
func RemainingKeys(s interface{}, m map[string]interface{}) (extras map[string]interface{}) {
|
||||||
|
extras = make(map[string]interface{})
|
||||||
|
for k, v := range m {
|
||||||
|
extras[k] = v
|
||||||
|
}
|
||||||
|
|
||||||
|
valueOf := reflect.ValueOf(s)
|
||||||
|
typeOf := reflect.TypeOf(s)
|
||||||
|
for i := 0; i < valueOf.NumField(); i++ {
|
||||||
|
field := typeOf.Field(i)
|
||||||
|
|
||||||
|
lowerField := strings.ToLower(field.Name)
|
||||||
|
delete(extras, lowerField)
|
||||||
|
|
||||||
|
if tagValue := field.Tag.Get("json"); tagValue != "" && tagValue != "-" {
|
||||||
|
delete(extras, tagValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// WaitFor polls a predicate function, once per second, up to a timeout limit.
|
// WaitFor polls a predicate function, once per second, up to a timeout limit.
|
||||||
// This is useful to wait for a resource to transition to a certain state.
|
// This is useful to wait for a resource to transition to a certain state.
|
||||||
// To handle situations when the predicate might hang indefinitely, the
|
// To handle situations when the predicate might hang indefinitely, the
|
||||||
|
|
@ -53,50 +128,3 @@ func WaitFor(timeout int, predicate func() (bool, error)) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NormalizeURL is an internal function to be used by provider clients.
|
|
||||||
//
|
|
||||||
// It ensures that each endpoint URL has a closing `/`, as expected by
|
|
||||||
// ServiceClient's methods.
|
|
||||||
func NormalizeURL(url string) string {
|
|
||||||
if !strings.HasSuffix(url, "/") {
|
|
||||||
return url + "/"
|
|
||||||
}
|
|
||||||
return url
|
|
||||||
}
|
|
||||||
|
|
||||||
// NormalizePathURL is used to convert rawPath to a fqdn, using basePath as
|
|
||||||
// a reference in the filesystem, if necessary. basePath is assumed to contain
|
|
||||||
// either '.' when first used, or the file:// type fqdn of the parent resource.
|
|
||||||
// e.g. myFavScript.yaml => file://opt/lib/myFavScript.yaml
|
|
||||||
func NormalizePathURL(basePath, rawPath string) (string, error) {
|
|
||||||
u, err := url.Parse(rawPath)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
// if a scheme is defined, it must be a fqdn already
|
|
||||||
if u.Scheme != "" {
|
|
||||||
return u.String(), nil
|
|
||||||
}
|
|
||||||
// if basePath is a url, then child resources are assumed to be relative to it
|
|
||||||
bu, err := url.Parse(basePath)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
var basePathSys, absPathSys string
|
|
||||||
if bu.Scheme != "" {
|
|
||||||
basePathSys = filepath.FromSlash(bu.Path)
|
|
||||||
absPathSys = filepath.Join(basePathSys, rawPath)
|
|
||||||
bu.Path = filepath.ToSlash(absPathSys)
|
|
||||||
return bu.String(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
absPathSys = filepath.Join(basePath, rawPath)
|
|
||||||
u.Path = filepath.ToSlash(absPathSys)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
u.Scheme = "file"
|
|
||||||
return u.String(), nil
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
||||||
3
vendor/modules.txt
vendored
3
vendor/modules.txt
vendored
|
|
@ -164,10 +164,9 @@ github.com/google/go-cmp/cmp/internal/value
|
||||||
github.com/google/uuid
|
github.com/google/uuid
|
||||||
# github.com/googleapis/gax-go/v2 v2.0.5
|
# github.com/googleapis/gax-go/v2 v2.0.5
|
||||||
github.com/googleapis/gax-go/v2
|
github.com/googleapis/gax-go/v2
|
||||||
# github.com/gophercloud/gophercloud v0.11.0
|
# github.com/gophercloud/gophercloud v0.20.0
|
||||||
## explicit
|
## explicit
|
||||||
github.com/gophercloud/gophercloud
|
github.com/gophercloud/gophercloud
|
||||||
github.com/gophercloud/gophercloud/internal
|
|
||||||
github.com/gophercloud/gophercloud/openstack
|
github.com/gophercloud/gophercloud/openstack
|
||||||
github.com/gophercloud/gophercloud/openstack/compute/v2/servers
|
github.com/gophercloud/gophercloud/openstack/compute/v2/servers
|
||||||
github.com/gophercloud/gophercloud/openstack/identity/v2/tenants
|
github.com/gophercloud/gophercloud/openstack/identity/v2/tenants
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue