build(deps): bump the go-deps group across 1 directory with 10 updates

Bumps the go-deps group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [cloud.google.com/go/compute](https://github.com/googleapis/google-cloud-go) | `1.27.1` | `1.27.3` |
| [cloud.google.com/go/storage](https://github.com/googleapis/google-cloud-go) | `1.42.0` | `1.43.0` |
| [github.com/Azure/azure-sdk-for-go/sdk/azidentity](https://github.com/Azure/azure-sdk-for-go) | `1.6.0` | `1.7.0` |
| [github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage](https://github.com/Azure/azure-sdk-for-go) | `1.5.0` | `1.6.0` |
| [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) | `1.54.10` | `1.54.18` |
| [github.com/gophercloud/gophercloud](https://github.com/gophercloud/gophercloud) | `1.12.0` | `1.13.0` |
| [github.com/openshift-online/ocm-sdk-go](https://github.com/openshift-online/ocm-sdk-go) | `0.1.425` | `0.1.429` |
| [github.com/osbuild/images](https://github.com/osbuild/images) | `0.69.0` | `0.70.0` |



Updates `cloud.google.com/go/compute` from 1.27.1 to 1.27.3
- [Release notes](https://github.com/googleapis/google-cloud-go/releases)
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-cloud-go/compare/pubsub/v1.27.1...compute/v1.27.3)

Updates `cloud.google.com/go/storage` from 1.42.0 to 1.43.0
- [Release notes](https://github.com/googleapis/google-cloud-go/releases)
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-cloud-go/compare/spanner/v1.42.0...spanner/v1.43.0)

Updates `github.com/Azure/azure-sdk-for-go/sdk/azidentity` from 1.6.0 to 1.7.0
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v1.6.0...sdk/azcore/v1.7.0)

Updates `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage` from 1.5.0 to 1.6.0
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v1.5.0...sdk/azcore/v1.6.0)

Updates `github.com/aws/aws-sdk-go` from 1.54.10 to 1.54.18
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.54.10...v1.54.18)

Updates `github.com/gophercloud/gophercloud` from 1.12.0 to 1.13.0
- [Release notes](https://github.com/gophercloud/gophercloud/releases)
- [Changelog](https://github.com/gophercloud/gophercloud/blob/v1.13.0/CHANGELOG.md)
- [Commits](https://github.com/gophercloud/gophercloud/compare/v1.12.0...v1.13.0)

Updates `github.com/openshift-online/ocm-sdk-go` from 0.1.425 to 0.1.429
- [Release notes](https://github.com/openshift-online/ocm-sdk-go/releases)
- [Changelog](https://github.com/openshift-online/ocm-sdk-go/blob/main/CHANGES.md)
- [Commits](https://github.com/openshift-online/ocm-sdk-go/compare/v0.1.425...v0.1.429)

Updates `github.com/osbuild/images` from 0.69.0 to 0.70.0
- [Release notes](https://github.com/osbuild/images/releases)
- [Commits](https://github.com/osbuild/images/compare/v0.69.0...v0.70.0)

Updates `golang.org/x/sys` from 0.21.0 to 0.22.0
- [Commits](https://github.com/golang/sys/compare/v0.21.0...v0.22.0)

Updates `google.golang.org/api` from 0.186.0 to 0.188.0
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.186.0...v0.188.0)

---
updated-dependencies:
- dependency-name: cloud.google.com/go/compute
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-deps
- dependency-name: cloud.google.com/go/storage
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/azidentity
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
- dependency-name: github.com/aws/aws-sdk-go
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-deps
- dependency-name: github.com/gophercloud/gophercloud
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
- dependency-name: github.com/openshift-online/ocm-sdk-go
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-deps
- dependency-name: github.com/osbuild/images
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
- dependency-name: google.golang.org/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
dependabot[bot] 2024-07-11 04:55:34 +00:00 committed by Tomáš Hozza
parent c6d669f2cc
commit 4ba7085068
153 changed files with 6445 additions and 1316 deletions

48
go.mod
View file

@ -5,18 +5,18 @@ go 1.21
exclude github.com/mattn/go-sqlite3 v2.0.3+incompatible
require (
cloud.google.com/go/compute v1.27.1
cloud.google.com/go/storage v1.42.0
cloud.google.com/go/compute v1.27.3
cloud.google.com/go/storage v1.43.0
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.5.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.2
github.com/Azure/go-autorest/autorest v0.11.29
github.com/Azure/go-autorest/autorest/azure/auth v0.5.13
github.com/BurntSushi/toml v1.4.0
github.com/aws/aws-sdk-go v1.54.10
github.com/aws/aws-sdk-go v1.54.18
github.com/coreos/go-semver v0.3.1
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf
github.com/deepmap/oapi-codegen v1.8.2
@ -26,7 +26,7 @@ require (
github.com/golang-jwt/jwt/v4 v4.5.0
github.com/google/go-cmp v0.6.0
github.com/google/uuid v1.6.0
github.com/gophercloud/gophercloud v1.12.0
github.com/gophercloud/gophercloud v1.13.0
github.com/hashicorp/go-retryablehttp v0.7.7
github.com/jackc/pgtype v1.14.3
github.com/jackc/pgx/v4 v4.18.3
@ -34,9 +34,9 @@ require (
github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b
github.com/labstack/echo/v4 v4.12.0
github.com/labstack/gommon v0.4.2
github.com/openshift-online/ocm-sdk-go v0.1.425
github.com/openshift-online/ocm-sdk-go v0.1.429
github.com/oracle/oci-go-sdk/v54 v54.0.0
github.com/osbuild/images v0.69.0
github.com/osbuild/images v0.70.0
github.com/osbuild/osbuild-composer/pkg/splunk_logger v0.0.0-20231117174845-e969a9dc3cd1
github.com/osbuild/pulp-client v0.1.0
github.com/prometheus/client_golang v1.19.1
@ -49,19 +49,19 @@ require (
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
golang.org/x/oauth2 v0.21.0
golang.org/x/sync v0.7.0
golang.org/x/sys v0.21.0
google.golang.org/api v0.186.0
golang.org/x/sys v0.22.0
google.golang.org/api v0.188.0
)
require (
cloud.google.com/go v0.115.0 // indirect
cloud.google.com/go/auth v0.6.0 // indirect
cloud.google.com/go/auth v0.7.0 // indirect
cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect
cloud.google.com/go/compute/metadata v0.3.0 // indirect
cloud.google.com/go/iam v1.1.8 // indirect
cloud.google.com/go/compute/metadata v0.4.0 // indirect
cloud.google.com/go/iam v1.1.10 // indirect
dario.cat/mergo v1.0.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.0 // indirect
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
github.com/Azure/go-autorest/autorest/adal v0.9.22 // indirect
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 // indirect
@ -201,17 +201,17 @@ require (
go.opentelemetry.io/otel v1.24.0 // indirect
go.opentelemetry.io/otel/metric v1.24.0 // indirect
go.opentelemetry.io/otel/trace v1.24.0 // indirect
golang.org/x/crypto v0.24.0 // indirect
golang.org/x/mod v0.17.0 // indirect
golang.org/x/net v0.26.0 // indirect
golang.org/x/term v0.21.0 // indirect
golang.org/x/crypto v0.25.0 // indirect
golang.org/x/mod v0.18.0 // indirect
golang.org/x/net v0.27.0 // indirect
golang.org/x/term v0.22.0 // indirect
golang.org/x/text v0.16.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 // indirect
google.golang.org/grpc v1.64.0 // indirect
golang.org/x/tools v0.22.0 // indirect
google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b // indirect
google.golang.org/grpc v1.64.1 // indirect
google.golang.org/protobuf v1.34.2 // indirect
gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect

104
go.sum
View file

@ -1,42 +1,44 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14=
cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU=
cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g=
cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g=
cloud.google.com/go/auth v0.7.0 h1:kf/x9B3WTbBUHkC+1VS8wwwli9TzhSt0vSTVBmMR8Ts=
cloud.google.com/go/auth v0.7.0/go.mod h1:D+WqdrpcjmiCgWrXmLLxOVq1GACoE36chW6KXoEvuIw=
cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=
cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
cloud.google.com/go/compute v1.27.1 h1:0WbBLIPNANheCRZ4h8QhgzjN53KMutbiVBOLtPiVzBU=
cloud.google.com/go/compute v1.27.1/go.mod h1:UVWm+bWKEKoM+PW2sZycP1Jgk3NhKwR2Iy2Cnp/G40I=
cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc=
cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
cloud.google.com/go/iam v1.1.8 h1:r7umDwhj+BQyz0ScZMp4QrGXjSTI3ZINnpgU2nlB/K0=
cloud.google.com/go/iam v1.1.8/go.mod h1:GvE6lyMmfxXauzNq8NbgJbeVQNspG+tcdL/W8QO1+zE=
cloud.google.com/go/longrunning v0.5.7 h1:WLbHekDbjK1fVFD3ibpFFVoyizlLRl73I7YKuAKilhU=
cloud.google.com/go/longrunning v0.5.7/go.mod h1:8GClkudohy1Fxm3owmBGid8W0pSgodEMwEAztp38Xng=
cloud.google.com/go/storage v1.42.0 h1:4QtGpplCVt1wz6g5o1ifXd656P5z+yNgzdw1tVfp0cU=
cloud.google.com/go/storage v1.42.0/go.mod h1:HjMXRFq65pGKFn6hxj6x3HCyR41uSB72Z0SO/Vn6JFQ=
cloud.google.com/go/compute v1.27.3 h1:GFfoejA5qGeFYpKAfgoVzvgJ3D8upFKI/UR7MdiPdS0=
cloud.google.com/go/compute v1.27.3/go.mod h1:5GuDo3l1k9CFhfIHK1sXqlqOW/iWX4/eBlO5FtxDhvQ=
cloud.google.com/go/compute/metadata v0.4.0 h1:vHzJCWaM4g8XIcm8kopr3XmDA4Gy/lblD3EhhSux05c=
cloud.google.com/go/compute/metadata v0.4.0/go.mod h1:SIQh1Kkb4ZJ8zJ874fqVkslA29PRXuleyj6vOzlbK7M=
cloud.google.com/go/iam v1.1.10 h1:ZSAr64oEhQSClwBL670MsJAW5/RLiC6kfw3Bqmd5ZDI=
cloud.google.com/go/iam v1.1.10/go.mod h1:iEgMq62sg8zx446GCaijmA2Miwg5o3UbO+nI47WHJps=
cloud.google.com/go/longrunning v0.5.9 h1:haH9pAuXdPAMqHvzX0zlWQigXT7B0+CL4/2nXXdBo5k=
cloud.google.com/go/longrunning v0.5.9/go.mod h1:HD+0l9/OOW0za6UWdKJtXoFAX/BGg/3Wj8p10NeWF7c=
cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs=
cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0=
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
github.com/14rcole/gopopulate v0.0.0-20180821133914-b175b219e774 h1:SCbEWT58NSt7d2mcFdvxC9uyrdcTfvBbPLThhkDmXzg=
github.com/14rcole/gopopulate v0.0.0-20180821133914-b175b219e774/go.mod h1:6/0dYRLLXyJjbkIPeeGyoJ/eKOSI0eU6eTlCBYibgd0=
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 h1:U2rTu3Ef+7w9FHKIAXM6ZyqF3UOWJZ12zIm8zECAFfg=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 h1:1nGuui+4POelzDwI7RG56yfQJHCnKvwfMoU7VsEp+Zg=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0/go.mod h1:99EvauvlcJ1U06amZiksfYz/3aFGyIhWGHVyiZXtBAI=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.0 h1:H+U3Gk9zY56G3u872L82bk4thcsy2Gghb9ExT4Zvm1o=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.0/go.mod h1:mgrmMSgaLp9hmax62XQTd0N4aAqSE5E0DulSpVYK7vc=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 h1:LkHbJbgF3YyvC53aqYGR+wWQDn2Rdp9AQdGndf9QvY4=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0/go.mod h1:QyiQdW4f4/BIfB8ZutZ2s+28RAgfa/pT+zS++ZHyM1I=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0/go.mod h1:LRr2FzBTQlONPPa5HREE5+RjSCTXl7BwOvYOaWTqCaI=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v3 v3.0.0 h1:Kb8eVvjdP6kZqYnER5w/PiGCFp91yVgaxve3d7kCEpY=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v3 v3.0.0/go.mod h1:lYq15QkJyEsNegz5EhI/0SXQ6spvGfgwBH/Qyzkoc/s=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups v1.0.0 h1:pPvTJ1dY0sA35JOeFq6TsY2xj6Z85Yo23Pj4wCCvu4o=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups v1.0.0/go.mod h1:mLfWfj8v3jfWKsL9G4eoBoXVcsqcIUTapmdKy7uGOp0=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0 h1:Dd+RhdJn0OTtVGaeDLZpcumkIVCtA/3/Fo42+eoYvVM=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0/go.mod h1:5kakwfW5CjC9KK+Q4wjXAg+ShuIm2mBMua0ZFj2C8PE=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.5.0 h1:AifHbc4mg0x9zW52WOpKbsHaDKuRhlI7TVl47thgQ70=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.5.0/go.mod h1:T5RfihdXtBDxt1Ch2wobif3TvzTdumDy29kahv6AV9A=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0 h1:PiSrjRPpkQNjrM8H0WwKMnZUdu1RGMtd/LdGKUrOo+c=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0/go.mod h1:oDrbWx4ewMylP7xHivfgixbfGBT6APAwsSoHRKotnIc=
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.2 h1:YUUxeiOWgdAQE3pXt2H7QXzZs0q8UBjgRbl56qo8GYM=
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.2/go.mod h1:dmXQgZuiSubAecswZE+Sm8jkvEa7kQgTPVRvwL/nd0E=
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
@ -82,8 +84,8 @@ github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpH
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
github.com/aws/aws-sdk-go v1.54.10 h1:dvkMlAttUsyacKj2L4poIQBLzOSWL2JG2ty+yWrqets=
github.com/aws/aws-sdk-go v1.54.10/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/aws/aws-sdk-go v1.54.18 h1:t8DGtN8A2wEiazoJxeDbfPsbxCKtjoRLuO7jBSgJzo4=
github.com/aws/aws-sdk-go v1.54.18/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
@ -275,8 +277,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA=
github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E=
github.com/gophercloud/gophercloud v1.12.0 h1:Jrz16vPAL93l80q16fp8NplrTCp93y7rZh2P3Q4Yq7g=
github.com/gophercloud/gophercloud v1.12.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM=
github.com/gophercloud/gophercloud v1.13.0 h1:8iY9d1DAbzMW6Vok1AxbbK5ZaUjzMp0tdyt4fX9IeJ0=
github.com/gophercloud/gophercloud v1.13.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM=
github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=
github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
@ -463,12 +465,12 @@ github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE
github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU=
github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
github.com/openshift-online/ocm-sdk-go v0.1.425 h1:QmT9XnbZc1/SKp4QkHe2dnsln87wyYxt/aOjYE0G+jE=
github.com/openshift-online/ocm-sdk-go v0.1.425/go.mod h1:CiAu2jwl3ITKOxkeV0Qnhzv4gs35AmpIzVABQLtcI2Y=
github.com/openshift-online/ocm-sdk-go v0.1.429 h1:yIaHWfRV0Xaboe1clf41Z3Q3pLxjDNK3p81nvtUeJdE=
github.com/openshift-online/ocm-sdk-go v0.1.429/go.mod h1:CiAu2jwl3ITKOxkeV0Qnhzv4gs35AmpIzVABQLtcI2Y=
github.com/oracle/oci-go-sdk/v54 v54.0.0 h1:CDLjeSejv2aDpElAJrhKpi6zvT/zhZCZuXchUUZ+LS4=
github.com/oracle/oci-go-sdk/v54 v54.0.0/go.mod h1:+t+yvcFGVp+3ZnztnyxqXfQDsMlq8U25faBLa+mqCMc=
github.com/osbuild/images v0.69.0 h1:kSndbM+WBS9ycNvUY3ejwyKsPtCTRpndvqpzM0/Cgnk=
github.com/osbuild/images v0.69.0/go.mod h1:39yKeYqV0v9OMkmlHN42+4UHx/iKhbeu6zFcjvZlyno=
github.com/osbuild/images v0.70.0 h1:MXMSNJouJ0EPrtW8fLqOVX5a5QgwrlZPvYrcXzIO5BY=
github.com/osbuild/images v0.70.0/go.mod h1:M96vOpVBEzzpaZFw+DkCoj2x5nsuaNDMRqRgicZ8zpI=
github.com/osbuild/osbuild-composer/pkg/splunk_logger v0.0.0-20231117174845-e969a9dc3cd1 h1:UFEJIcPa46W8gtWgOYzriRKYyy1t6SWL0BI7fPTuVvc=
github.com/osbuild/osbuild-composer/pkg/splunk_logger v0.0.0-20231117174845-e969a9dc3cd1/go.mod h1:z+WA+dX6qMwc7fqY5jCzESDIlg4WR2sBQezxsoXv9Ik=
github.com/osbuild/pulp-client v0.1.0 h1:L0C4ezBJGTamN3BKdv+rKLuq/WxXJbsFwz/Hj7aEmJ8=
@ -643,8 +645,8 @@ golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ=
golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM=
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc=
@ -658,8 +660,8 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0=
golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@ -678,8 +680,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
@ -720,8 +722,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@ -729,8 +731,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA=
golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk=
golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@ -764,36 +766,34 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA=
golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
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=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug=
google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc=
google.golang.org/api v0.188.0 h1:51y8fJ/b1AaaBRJr4yWm96fPcuxSo0JcegXE3DaHQHw=
google.golang.org/api v0.188.0/go.mod h1:VR0d+2SIiWOYG3r/jdm7adPW9hI2aRv9ETOSCQ9Beag=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4 h1:CUiCqkPw1nNrNQzCCG4WA65m0nAmQiwXHpub3dNyruU=
google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4/go.mod h1:EvuUDCulqGgV80RvP1BHuom+smhX4qtlhnNatHuroGQ=
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 h1:MuYw1wJzT+ZkybKfaOXKp5hJiZDn2iHaXRw0mRYdHSc=
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 h1:Di6ANFilr+S60a4S61ZM00vLdw0IrQOSMS2/6mrnOU0=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b h1:dSTjko30weBaMj3eERKc0ZVXW4GudCswM3m+P++ukU0=
google.golang.org/genproto v0.0.0-20240708141625-4ad9e859172b/go.mod h1:FfBgJBJg9GcpPvKIuHSZ/aE1g2ecGL74upMzGZjiGEY=
google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0=
google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b h1:04+jVzTs2XBnOZcPsLnmrTGqltqJbZQ1Ey26hjYdQQ0=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240708141625-4ad9e859172b/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY=
google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg=
google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA=
google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=

View file

@ -1,5 +1,27 @@
# Changelog
## [0.7.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.6.1...auth/v0.7.0) (2024-07-09)
### Features
* **auth:** Add workload X509 cert provider as a default cert provider ([#10479](https://github.com/googleapis/google-cloud-go/issues/10479)) ([c51ee6c](https://github.com/googleapis/google-cloud-go/commit/c51ee6cf65ce05b4d501083e49d468c75ac1ea63))
### Bug Fixes
* **auth/oauth2adapt:** Bump google.golang.org/api@v0.187.0 ([8fa9e39](https://github.com/googleapis/google-cloud-go/commit/8fa9e398e512fd8533fd49060371e61b5725a85b))
* **auth:** Bump google.golang.org/api@v0.187.0 ([8fa9e39](https://github.com/googleapis/google-cloud-go/commit/8fa9e398e512fd8533fd49060371e61b5725a85b))
* **auth:** Check len of slices, not non-nil ([#10483](https://github.com/googleapis/google-cloud-go/issues/10483)) ([0a966a1](https://github.com/googleapis/google-cloud-go/commit/0a966a183e5f0e811977216d736d875b7233e942))
## [0.6.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.6.0...auth/v0.6.1) (2024-07-01)
### Bug Fixes
* **auth:** Support gRPC API keys ([#10460](https://github.com/googleapis/google-cloud-go/issues/10460)) ([daa6646](https://github.com/googleapis/google-cloud-go/commit/daa6646d2af5d7fb5b30489f4934c7db89868c7c))
* **auth:** Update http and grpc transports to support token exchange over mTLS ([#10397](https://github.com/googleapis/google-cloud-go/issues/10397)) ([c6dfdcf](https://github.com/googleapis/google-cloud-go/commit/c6dfdcf893c3f971eba15026c12db0a960ae81f2))
## [0.6.0](https://github.com/googleapis/google-cloud-go/compare/auth/v0.5.2...auth/v0.6.0) (2024-06-25)

View file

@ -538,12 +538,12 @@ func (tp tokenProvider2LO) Token(ctx context.Context) (*Token, error) {
v := url.Values{}
v.Set("grant_type", defaultGrantType)
v.Set("assertion", payload)
resp, err := tp.Client.PostForm(tp.opts.TokenURL, v)
req, err := http.NewRequestWithContext(ctx, "POST", tp.opts.TokenURL, strings.NewReader(v.Encode()))
if err != nil {
return nil, fmt.Errorf("auth: cannot fetch token: %w", err)
return nil, err
}
defer resp.Body.Close()
body, err := internal.ReadAll(resp.Body)
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, body, err := internal.DoRequest(tp.Client, req)
if err != nil {
return nil, fmt.Errorf("auth: cannot fetch token: %w", err)
}

View file

@ -37,6 +37,9 @@ const (
googleAuthURL = "https://accounts.google.com/o/oauth2/auth"
googleTokenURL = "https://oauth2.googleapis.com/token"
// GoogleMTLSTokenURL is Google's default OAuth2.0 mTLS endpoint.
GoogleMTLSTokenURL = "https://oauth2.mtls.googleapis.com/token"
// Help on default credentials
adcSetupURL = "https://cloud.google.com/docs/authentication/external/set-up-adc"
)
@ -73,7 +76,7 @@ func DetectDefault(opts *DetectOptions) (*auth.Credentials, error) {
if err := opts.validate(); err != nil {
return nil, err
}
if opts.CredentialsJSON != nil {
if len(opts.CredentialsJSON) > 0 {
return readCredentialsFileJSON(opts.CredentialsJSON, opts)
}
if opts.CredentialsFile != "" {

View file

@ -122,7 +122,7 @@ func (sp *awsSubjectProvider) subjectToken(ctx context.Context) (string, error)
// Generate the signed request to AWS STS GetCallerIdentity API.
// Use the required regional endpoint. Otherwise, the request will fail.
req, err := http.NewRequest("POST", strings.Replace(sp.RegionalCredVerificationURL, "{region}", sp.region, 1), nil)
req, err := http.NewRequestWithContext(ctx, "POST", strings.Replace(sp.RegionalCredVerificationURL, "{region}", sp.region, 1), nil)
if err != nil {
return "", err
}
@ -194,20 +194,14 @@ func (sp *awsSubjectProvider) getAWSSessionToken(ctx context.Context) (string, e
}
req.Header.Set(awsIMDSv2SessionTTLHeader, awsIMDSv2SessionTTL)
resp, err := sp.Client.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
respBody, err := internal.ReadAll(resp.Body)
resp, body, err := internal.DoRequest(sp.Client, req)
if err != nil {
return "", err
}
if resp.StatusCode != http.StatusOK {
return "", fmt.Errorf("credentials: unable to retrieve AWS session token: %s", respBody)
return "", fmt.Errorf("credentials: unable to retrieve AWS session token: %s", body)
}
return string(respBody), nil
return string(body), nil
}
func (sp *awsSubjectProvider) getRegion(ctx context.Context, headers map[string]string) (string, error) {
@ -233,29 +227,21 @@ func (sp *awsSubjectProvider) getRegion(ctx context.Context, headers map[string]
for name, value := range headers {
req.Header.Add(name, value)
}
resp, err := sp.Client.Do(req)
resp, body, err := internal.DoRequest(sp.Client, req)
if err != nil {
return "", err
}
defer resp.Body.Close()
respBody, err := internal.ReadAll(resp.Body)
if err != nil {
return "", err
}
if resp.StatusCode != http.StatusOK {
return "", fmt.Errorf("credentials: unable to retrieve AWS region - %s", respBody)
return "", fmt.Errorf("credentials: unable to retrieve AWS region - %s", body)
}
// This endpoint will return the region in format: us-east-2b.
// Only the us-east-2 part should be used.
bodyLen := len(respBody)
bodyLen := len(body)
if bodyLen == 0 {
return "", nil
}
return string(respBody[:bodyLen-1]), nil
return string(body[:bodyLen-1]), nil
}
func (sp *awsSubjectProvider) getSecurityCredentials(ctx context.Context, headers map[string]string) (result *AwsSecurityCredentials, err error) {
@ -299,22 +285,17 @@ func (sp *awsSubjectProvider) getMetadataSecurityCredentials(ctx context.Context
for name, value := range headers {
req.Header.Add(name, value)
}
resp, err := sp.Client.Do(req)
if err != nil {
return result, err
}
defer resp.Body.Close()
respBody, err := internal.ReadAll(resp.Body)
resp, body, err := internal.DoRequest(sp.Client, req)
if err != nil {
return result, err
}
if resp.StatusCode != http.StatusOK {
return result, fmt.Errorf("credentials: unable to retrieve AWS security credentials - %s", respBody)
return result, fmt.Errorf("credentials: unable to retrieve AWS security credentials - %s", body)
}
err = json.Unmarshal(respBody, &result)
return result, err
if err := json.Unmarshal(body, &result); err != nil {
return nil, err
}
return result, nil
}
func (sp *awsSubjectProvider) getMetadataRoleName(ctx context.Context, headers map[string]string) (string, error) {
@ -329,20 +310,14 @@ func (sp *awsSubjectProvider) getMetadataRoleName(ctx context.Context, headers m
req.Header.Add(name, value)
}
resp, err := sp.Client.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
respBody, err := internal.ReadAll(resp.Body)
resp, body, err := internal.DoRequest(sp.Client, req)
if err != nil {
return "", err
}
if resp.StatusCode != http.StatusOK {
return "", fmt.Errorf("credentials: unable to retrieve AWS role name - %s", respBody)
return "", fmt.Errorf("credentials: unable to retrieve AWS role name - %s", body)
}
return string(respBody), nil
return string(body), nil
}
// awsRequestSigner is a utility class to sign http requests using a AWS V4 signature.

View file

@ -48,27 +48,21 @@ func (sp *urlSubjectProvider) subjectToken(ctx context.Context) (string, error)
for key, val := range sp.Headers {
req.Header.Add(key, val)
}
resp, err := sp.Client.Do(req)
resp, body, err := internal.DoRequest(sp.Client, req)
if err != nil {
return "", fmt.Errorf("credentials: invalid response when retrieving subject token: %w", err)
}
defer resp.Body.Close()
respBody, err := internal.ReadAll(resp.Body)
if err != nil {
return "", fmt.Errorf("credentials: invalid body in subject token URL query: %w", err)
}
if c := resp.StatusCode; c < http.StatusOK || c >= http.StatusMultipleChoices {
return "", fmt.Errorf("credentials: status code %d: %s", c, respBody)
return "", fmt.Errorf("credentials: status code %d: %s", c, body)
}
if sp.Format == nil {
return string(respBody), nil
return string(body), nil
}
switch sp.Format.Type {
case "json":
jsonData := make(map[string]interface{})
err = json.Unmarshal(respBody, &jsonData)
err = json.Unmarshal(body, &jsonData)
if err != nil {
return "", fmt.Errorf("credentials: failed to unmarshal subject token file: %w", err)
}
@ -82,7 +76,7 @@ func (sp *urlSubjectProvider) subjectToken(ctx context.Context) (string, error)
}
return token, nil
case fileTypeText:
return string(respBody), nil
return string(body), nil
default:
return "", errors.New("credentials: invalid credential_source file format type: " + sp.Format.Type)
}

View file

@ -25,6 +25,7 @@ import (
"net/http"
"net/url"
"os"
"strings"
"time"
"cloud.google.com/go/auth"
@ -129,12 +130,13 @@ func (g gdchProvider) Token(ctx context.Context) (*auth.Token, error) {
v.Set("requested_token_type", requestTokenType)
v.Set("subject_token", payload)
v.Set("subject_token_type", subjectTokenType)
resp, err := g.client.PostForm(g.tokenURL, v)
req, err := http.NewRequestWithContext(ctx, "POST", g.tokenURL, strings.NewReader(v.Encode()))
if err != nil {
return nil, fmt.Errorf("credentials: cannot fetch token: %w", err)
return nil, err
}
defer resp.Body.Close()
body, err := internal.ReadAll(resp.Body)
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, body, err := internal.DoRequest(g.client, req)
if err != nil {
return nil, fmt.Errorf("credentials: cannot fetch token: %w", err)
}

View file

@ -109,15 +109,10 @@ func (o *Options) Token(ctx context.Context) (*auth.Token, error) {
if err := setAuthHeader(ctx, o.Tp, req); err != nil {
return nil, err
}
resp, err := o.Client.Do(req)
resp, body, err := internal.DoRequest(o.Client, req)
if err != nil {
return nil, fmt.Errorf("credentials: unable to generate access token: %w", err)
}
defer resp.Body.Close()
body, err := internal.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("credentials: unable to read body: %w", err)
}
if c := resp.StatusCode; c < http.StatusOK || c >= http.StatusMultipleChoices {
return nil, fmt.Errorf("credentials: status code %d: %s", c, body)
}

View file

@ -93,16 +93,10 @@ func doRequest(ctx context.Context, opts *Options, data url.Values) (*TokenRespo
}
req.Header.Set("Content-Length", strconv.Itoa(len(encodedData)))
resp, err := opts.Client.Do(req)
resp, body, err := internal.DoRequest(opts.Client, req)
if err != nil {
return nil, fmt.Errorf("credentials: invalid response from Secure Token Server: %w", err)
}
defer resp.Body.Close()
body, err := internal.ReadAll(resp.Body)
if err != nil {
return nil, err
}
if c := resp.StatusCode; c < http.StatusOK || c > http.StatusMultipleChoices {
return nil, fmt.Errorf("credentials: status code %d: %s", c, body)
}

View file

@ -16,6 +16,7 @@ package grpctransport
import (
"context"
"crypto/tls"
"errors"
"fmt"
"net/http"
@ -45,6 +46,11 @@ var (
timeoutDialerOption grpc.DialOption
)
// ClientCertProvider is a function that returns a TLS client certificate to be
// used when opening TLS connections. It follows the same semantics as
// [crypto/tls.Config.GetClientCertificate].
type ClientCertProvider = func(*tls.CertificateRequestInfo) (*tls.Certificate, error)
// Options used to configure a [GRPCClientConnPool] from [Dial].
type Options struct {
// DisableTelemetry disables default telemetry (OpenTelemetry). An example
@ -69,6 +75,10 @@ type Options struct {
// Credentials used to add Authorization metadata to all requests. If set
// DetectOpts are ignored.
Credentials *auth.Credentials
// ClientCertProvider is a function that returns a TLS client certificate to
// be used when opening TLS connections. It follows the same semantics as
// crypto/tls.Config.GetClientCertificate.
ClientCertProvider ClientCertProvider
// DetectOpts configures settings for detect Application Default
// Credentials.
DetectOpts *credentials.DetectOptions
@ -77,6 +87,9 @@ type Options struct {
// configured for the client, which will be compared to the universe domain
// that is separately configured for the credentials.
UniverseDomain string
// APIKey specifies an API key to be used as the basis for authentication.
// If set DetectOpts are ignored.
APIKey string
// InternalOptions are NOT meant to be set directly by consumers of this
// package, they should only be set by generated client code.
@ -99,7 +112,8 @@ func (o *Options) validate() error {
if o.InternalOptions != nil && o.InternalOptions.SkipValidation {
return nil
}
hasCreds := o.Credentials != nil ||
hasCreds := o.APIKey != "" ||
o.Credentials != nil ||
(o.DetectOpts != nil && len(o.DetectOpts.CredentialsJSON) > 0) ||
(o.DetectOpts != nil && o.DetectOpts.CredentialsFile != "")
if o.DisableAuthentication && hasCreds {
@ -125,6 +139,13 @@ func (o *Options) resolveDetectOptions() *credentials.DetectOptions {
if len(do.Scopes) == 0 && do.Audience == "" && io != nil {
do.Audience = o.InternalOptions.DefaultAudience
}
if o.ClientCertProvider != nil {
tlsConfig := &tls.Config{
GetClientCertificate: o.ClientCertProvider,
}
do.Client = transport.DefaultHTTPClientWithTLS(tlsConfig)
do.TokenURL = credentials.GoogleMTLSTokenURL
}
return do
}
@ -189,9 +210,10 @@ func Dial(ctx context.Context, secure bool, opts *Options) (GRPCClientConnPool,
// return a GRPCClientConnPool if pool == 1 or else a pool of of them if >1
func dial(ctx context.Context, secure bool, opts *Options) (*grpc.ClientConn, error) {
tOpts := &transport.Options{
Endpoint: opts.Endpoint,
Client: opts.client(),
UniverseDomain: opts.UniverseDomain,
Endpoint: opts.Endpoint,
ClientCertProvider: opts.ClientCertProvider,
Client: opts.client(),
UniverseDomain: opts.UniverseDomain,
}
if io := opts.InternalOptions; io != nil {
tOpts.DefaultEndpointTemplate = io.DefaultEndpointTemplate
@ -213,8 +235,21 @@ func dial(ctx context.Context, secure bool, opts *Options) (*grpc.ClientConn, er
grpc.WithTransportCredentials(transportCreds),
}
// Authentication can only be sent when communicating over a secure connection.
if !opts.DisableAuthentication {
// Ensure the token exchange HTTP transport uses the same ClientCertProvider as the GRPC API transport.
opts.ClientCertProvider, err = transport.GetClientCertificateProvider(tOpts)
if err != nil {
return nil, err
}
if opts.APIKey != "" {
grpcOpts = append(grpcOpts,
grpc.WithPerRPCCredentials(&grpcKeyProvider{
apiKey: opts.APIKey,
metadata: opts.Metadata,
secure: secure,
}),
)
} else if !opts.DisableAuthentication {
metadata := opts.Metadata
var creds *auth.Credentials
@ -259,6 +294,26 @@ func dial(ctx context.Context, secure bool, opts *Options) (*grpc.ClientConn, er
return grpc.DialContext(ctx, endpoint, grpcOpts...)
}
// grpcKeyProvider satisfies https://pkg.go.dev/google.golang.org/grpc/credentials#PerRPCCredentials.
type grpcKeyProvider struct {
apiKey string
metadata map[string]string
secure bool
}
func (g *grpcKeyProvider) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {
metadata := make(map[string]string, len(g.metadata)+1)
metadata["X-goog-api-key"] = g.apiKey
for k, v := range g.metadata {
metadata[k] = v
}
return metadata, nil
}
func (g *grpcKeyProvider) RequireTransportSecurity() bool {
return g.secure
}
// grpcCredentialsProvider satisfies https://pkg.go.dev/google.golang.org/grpc/credentials#PerRPCCredentials.
type grpcCredentialsProvider struct {
creds *auth.Credentials

View file

@ -116,6 +116,13 @@ func (o *Options) resolveDetectOptions() *detect.DetectOptions {
if len(do.Scopes) == 0 && do.Audience == "" && io != nil {
do.Audience = o.InternalOptions.DefaultAudience
}
if o.ClientCertProvider != nil {
tlsConfig := &tls.Config{
GetClientCertificate: o.ClientCertProvider,
}
do.Client = transport.DefaultHTTPClientWithTLS(tlsConfig)
do.TokenURL = detect.GoogleMTLSTokenURL
}
return do
}
@ -195,6 +202,8 @@ func NewClient(opts *Options) (*http.Client, error) {
if baseRoundTripper == nil {
baseRoundTripper = defaultBaseTransport(clientCertProvider, dialTLSContext)
}
// Ensure the token exchange transport uses the same ClientCertProvider as the API transport.
opts.ClientCertProvider = clientCertProvider
trans, err := newTransport(baseRoundTripper, opts)
if err != nil {
return nil, err

View file

@ -124,6 +124,21 @@ func GetProjectID(b []byte, override string) string {
return v.Project
}
// DoRequest executes the provided req with the client. It reads the response
// body, closes it, and returns it.
func DoRequest(client *http.Client, req *http.Request) (*http.Response, []byte, error) {
resp, err := client.Do(req)
if err != nil {
return nil, nil, err
}
defer resp.Body.Close()
body, err := ReadAll(io.LimitReader(resp.Body, maxBodySize))
if err != nil {
return nil, nil, err
}
return resp, body, nil
}
// ReadAll consumes the whole reader and safely reads the content of its body
// with some overflow protection.
func ReadAll(r io.Reader) ([]byte, error) {
@ -167,8 +182,7 @@ func (c *ComputeUniverseDomainProvider) GetProperty(ctx context.Context) (string
// httpGetMetadataUniverseDomain is a package var for unit test substitution.
var httpGetMetadataUniverseDomain = func(ctx context.Context) (string, error) {
client := metadata.NewClient(&http.Client{Timeout: time.Second})
// TODO(quartzmo): set ctx on request
return client.Get("universe/universe_domain")
return client.GetWithContext(ctx, "universe/universe_domain")
}
func getMetadataUniverseDomain(ctx context.Context) (string, error) {

View file

@ -176,7 +176,7 @@ func GetHTTPTransportConfig(opts *Options) (cert.Provider, func(context.Context,
}
func getTransportConfig(opts *Options) (*transportConfig, error) {
clientCertSource, err := getClientCertificateSource(opts)
clientCertSource, err := GetClientCertificateProvider(opts)
if err != nil {
return nil, err
}
@ -210,13 +210,13 @@ func getTransportConfig(opts *Options) (*transportConfig, error) {
}, nil
}
// getClientCertificateSource returns a default client certificate source, if
// GetClientCertificateProvider returns a default client certificate source, if
// not provided by the user.
//
// A nil default source can be returned if the source does not exist. Any exceptions
// encountered while initializing the default source will be reported as client
// error (ex. corrupt metadata file).
func getClientCertificateSource(opts *Options) (cert.Provider, error) {
func GetClientCertificateProvider(opts *Options) (cert.Provider, error) {
if !isClientCertificateEnabled(opts) {
return nil, nil
} else if opts.ClientCertProvider != nil {

View file

@ -50,11 +50,14 @@ var errSourceUnavailable = errors.New("certificate source is unavailable")
// returned to indicate that a default certificate source is unavailable.
func DefaultProvider() (Provider, error) {
defaultCert.once.Do(func() {
defaultCert.provider, defaultCert.err = NewEnterpriseCertificateProxyProvider("")
defaultCert.provider, defaultCert.err = NewWorkloadX509CertProvider("")
if errors.Is(defaultCert.err, errSourceUnavailable) {
defaultCert.provider, defaultCert.err = NewSecureConnectProvider("")
defaultCert.provider, defaultCert.err = NewEnterpriseCertificateProxyProvider("")
if errors.Is(defaultCert.err, errSourceUnavailable) {
defaultCert.provider, defaultCert.err = nil, nil
defaultCert.provider, defaultCert.err = NewSecureConnectProvider("")
if errors.Is(defaultCert.err, errSourceUnavailable) {
defaultCert.provider, defaultCert.err = nil, nil
}
}
}
})

View file

@ -99,7 +99,7 @@ func getCertAndKeyFiles(configFilePath string) (string, string, error) {
}
if config.CertConfigs.Workload == nil {
return "", "", errors.New("no Workload Identity Federation certificate information found in the certificate configuration file")
return "", "", errSourceUnavailable
}
certFile := config.CertConfigs.Workload.CertPath

View file

@ -17,7 +17,11 @@
package transport
import (
"crypto/tls"
"fmt"
"net"
"net/http"
"time"
"cloud.google.com/go/auth/credentials"
)
@ -49,11 +53,11 @@ func CloneDetectOptions(oldDo *credentials.DetectOptions) *credentials.DetectOpt
}
// Smartly size this memory and copy below.
if oldDo.CredentialsJSON != nil {
if len(oldDo.CredentialsJSON) > 0 {
newDo.CredentialsJSON = make([]byte, len(oldDo.CredentialsJSON))
copy(newDo.CredentialsJSON, oldDo.CredentialsJSON)
}
if oldDo.Scopes != nil {
if len(oldDo.Scopes) > 0 {
newDo.Scopes = make([]string, len(oldDo.Scopes))
copy(newDo.Scopes, oldDo.Scopes)
}
@ -74,3 +78,26 @@ func ValidateUniverseDomain(clientUniverseDomain, credentialsUniverseDomain stri
}
return nil
}
// DefaultHTTPClientWithTLS constructs an HTTPClient using the provided tlsConfig, to support mTLS.
func DefaultHTTPClientWithTLS(tlsConfig *tls.Config) *http.Client {
trans := baseTransport()
trans.TLSClientConfig = tlsConfig
return &http.Client{Transport: trans}
}
func baseTransport() *http.Transport {
return &http.Transport{
Proxy: http.ProxyFromEnvironment,
DialContext: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
DualStack: true,
}).DialContext,
MaxIdleConns: 100,
MaxIdleConnsPerHost: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
}
}

View file

@ -285,7 +285,7 @@ func fetchToken(ctx context.Context, o *Options3LO, v url.Values) (*Token, strin
v.Set("client_secret", o.ClientSecret)
}
}
req, err := http.NewRequest("POST", o.TokenURL, strings.NewReader(v.Encode()))
req, err := http.NewRequestWithContext(ctx, "POST", o.TokenURL, strings.NewReader(v.Encode()))
if err != nil {
return nil, refreshToken, err
}
@ -295,25 +295,19 @@ func fetchToken(ctx context.Context, o *Options3LO, v url.Values) (*Token, strin
}
// Make request
r, err := o.client().Do(req.WithContext(ctx))
resp, body, err := internal.DoRequest(o.client(), req)
if err != nil {
return nil, refreshToken, err
}
body, err := internal.ReadAll(r.Body)
r.Body.Close()
if err != nil {
return nil, refreshToken, fmt.Errorf("auth: cannot fetch token: %w", err)
}
failureStatus := r.StatusCode < 200 || r.StatusCode > 299
failureStatus := resp.StatusCode < 200 || resp.StatusCode > 299
tokError := &Error{
Response: r,
Response: resp,
Body: body,
}
var token *Token
// errors ignored because of default switch on content
content, _, _ := mime.ParseMediaType(r.Header.Get("Content-Type"))
content, _, _ := mime.ParseMediaType(resp.Header.Get("Content-Type"))
switch content {
case "application/x-www-form-urlencoded", "text/plain":
// some endpoints return a query string

View file

@ -15,4 +15,4 @@
package internal
// Version is the current tagged release of the library.
const Version = "1.27.1"
const Version = "1.27.3"

View file

@ -1,5 +1,17 @@
# Changes
## [0.4.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.3.0...compute/metadata/v0.4.0) (2024-07-01)
### Features
* **compute/metadata:** Add context for all functions/methods ([#10370](https://github.com/googleapis/google-cloud-go/issues/10370)) ([66b8efe](https://github.com/googleapis/google-cloud-go/commit/66b8efe7ad877e052b2987bb4475477e38c67bb3))
### Documentation
* **compute/metadata:** Update OnGCE description ([#10408](https://github.com/googleapis/google-cloud-go/issues/10408)) ([6a46dca](https://github.com/googleapis/google-cloud-go/commit/6a46dca4eae4f88ec6f88822e01e5bf8aeca787f))
## [0.3.0](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.2.3...compute/metadata/v0.3.0) (2024-04-15)

View file

@ -88,16 +88,16 @@ func (suffix NotDefinedError) Error() string {
return fmt.Sprintf("metadata: GCE metadata %q not defined", string(suffix))
}
func (c *cachedValue) get(cl *Client) (v string, err error) {
func (c *cachedValue) get(ctx context.Context, cl *Client) (v string, err error) {
defer c.mu.Unlock()
c.mu.Lock()
if c.v != "" {
return c.v, nil
}
if c.trim {
v, err = cl.getTrimmed(context.Background(), c.k)
v, err = cl.getTrimmed(ctx, c.k)
} else {
v, err = cl.GetWithContext(context.Background(), c.k)
v, err = cl.GetWithContext(ctx, c.k)
}
if err == nil {
c.v = v
@ -110,7 +110,9 @@ var (
onGCE bool
)
// OnGCE reports whether this process is running on Google Compute Engine.
// OnGCE reports whether this process is running on Google Compute Platforms.
// NOTE: True returned from `OnGCE` does not guarantee that the metadata server
// is accessible from this process and have all the metadata defined.
func OnGCE() bool {
onGCEOnce.Do(initOnGCE)
return onGCE
@ -203,6 +205,8 @@ func systemInfoSuggestsGCE() bool {
}
// Subscribe calls Client.SubscribeWithContext on the default client.
//
// Deprecated: Please use the context aware variant [SubscribeWithContext].
func Subscribe(suffix string, fn func(v string, ok bool) error) error {
return defaultClient.SubscribeWithContext(context.Background(), suffix, func(ctx context.Context, v string, ok bool) error { return fn(v, ok) })
}
@ -225,55 +229,188 @@ func GetWithContext(ctx context.Context, suffix string) (string, error) {
}
// ProjectID returns the current instance's project ID string.
func ProjectID() (string, error) { return defaultClient.ProjectID() }
//
// Deprecated: Please use the context aware variant [ProjectIDWithContext].
func ProjectID() (string, error) {
return defaultClient.ProjectIDWithContext(context.Background())
}
// ProjectIDWithContext returns the current instance's project ID string.
func ProjectIDWithContext(ctx context.Context) (string, error) {
return defaultClient.ProjectIDWithContext(ctx)
}
// NumericProjectID returns the current instance's numeric project ID.
func NumericProjectID() (string, error) { return defaultClient.NumericProjectID() }
//
// Deprecated: Please use the context aware variant [NumericProjectIDWithContext].
func NumericProjectID() (string, error) {
return defaultClient.NumericProjectIDWithContext(context.Background())
}
// NumericProjectIDWithContext returns the current instance's numeric project ID.
func NumericProjectIDWithContext(ctx context.Context) (string, error) {
return defaultClient.NumericProjectIDWithContext(ctx)
}
// InternalIP returns the instance's primary internal IP address.
func InternalIP() (string, error) { return defaultClient.InternalIP() }
//
// Deprecated: Please use the context aware variant [InternalIPWithContext].
func InternalIP() (string, error) {
return defaultClient.InternalIPWithContext(context.Background())
}
// InternalIPWithContext returns the instance's primary internal IP address.
func InternalIPWithContext(ctx context.Context) (string, error) {
return defaultClient.InternalIPWithContext(ctx)
}
// ExternalIP returns the instance's primary external (public) IP address.
func ExternalIP() (string, error) { return defaultClient.ExternalIP() }
//
// Deprecated: Please use the context aware variant [ExternalIPWithContext].
func ExternalIP() (string, error) {
return defaultClient.ExternalIPWithContext(context.Background())
}
// Email calls Client.Email on the default client.
func Email(serviceAccount string) (string, error) { return defaultClient.Email(serviceAccount) }
// ExternalIPWithContext returns the instance's primary external (public) IP address.
func ExternalIPWithContext(ctx context.Context) (string, error) {
return defaultClient.ExternalIPWithContext(ctx)
}
// Email calls Client.EmailWithContext on the default client.
//
// Deprecated: Please use the context aware variant [EmailWithContext].
func Email(serviceAccount string) (string, error) {
return defaultClient.EmailWithContext(context.Background(), serviceAccount)
}
// EmailWithContext calls Client.EmailWithContext on the default client.
func EmailWithContext(ctx context.Context, serviceAccount string) (string, error) {
return defaultClient.EmailWithContext(ctx, serviceAccount)
}
// Hostname returns the instance's hostname. This will be of the form
// "<instanceID>.c.<projID>.internal".
func Hostname() (string, error) { return defaultClient.Hostname() }
//
// Deprecated: Please use the context aware variant [HostnameWithContext].
func Hostname() (string, error) {
return defaultClient.HostnameWithContext(context.Background())
}
// HostnameWithContext returns the instance's hostname. This will be of the form
// "<instanceID>.c.<projID>.internal".
func HostnameWithContext(ctx context.Context) (string, error) {
return defaultClient.HostnameWithContext(ctx)
}
// InstanceTags returns the list of user-defined instance tags,
// assigned when initially creating a GCE instance.
func InstanceTags() ([]string, error) { return defaultClient.InstanceTags() }
//
// Deprecated: Please use the context aware variant [InstanceTagsWithContext].
func InstanceTags() ([]string, error) {
return defaultClient.InstanceTagsWithContext(context.Background())
}
// InstanceTagsWithContext returns the list of user-defined instance tags,
// assigned when initially creating a GCE instance.
func InstanceTagsWithContext(ctx context.Context) ([]string, error) {
return defaultClient.InstanceTagsWithContext(ctx)
}
// InstanceID returns the current VM's numeric instance ID.
func InstanceID() (string, error) { return defaultClient.InstanceID() }
//
// Deprecated: Please use the context aware variant [InstanceIDWithContext].
func InstanceID() (string, error) {
return defaultClient.InstanceIDWithContext(context.Background())
}
// InstanceIDWithContext returns the current VM's numeric instance ID.
func InstanceIDWithContext(ctx context.Context) (string, error) {
return defaultClient.InstanceIDWithContext(ctx)
}
// InstanceName returns the current VM's instance ID string.
func InstanceName() (string, error) { return defaultClient.InstanceName() }
//
// Deprecated: Please use the context aware variant [InstanceNameWithContext].
func InstanceName() (string, error) {
return defaultClient.InstanceNameWithContext(context.Background())
}
// InstanceNameWithContext returns the current VM's instance ID string.
func InstanceNameWithContext(ctx context.Context) (string, error) {
return defaultClient.InstanceNameWithContext(ctx)
}
// Zone returns the current VM's zone, such as "us-central1-b".
func Zone() (string, error) { return defaultClient.Zone() }
//
// Deprecated: Please use the context aware variant [ZoneWithContext].
func Zone() (string, error) {
return defaultClient.ZoneWithContext(context.Background())
}
// InstanceAttributes calls Client.InstanceAttributes on the default client.
func InstanceAttributes() ([]string, error) { return defaultClient.InstanceAttributes() }
// ZoneWithContext returns the current VM's zone, such as "us-central1-b".
func ZoneWithContext(ctx context.Context) (string, error) {
return defaultClient.ZoneWithContext(ctx)
}
// ProjectAttributes calls Client.ProjectAttributes on the default client.
func ProjectAttributes() ([]string, error) { return defaultClient.ProjectAttributes() }
// InstanceAttributes calls Client.InstanceAttributesWithContext on the default client.
//
// Deprecated: Please use the context aware variant [InstanceAttributesWithContext.
func InstanceAttributes() ([]string, error) {
return defaultClient.InstanceAttributesWithContext(context.Background())
}
// InstanceAttributeValue calls Client.InstanceAttributeValue on the default client.
// InstanceAttributesWithContext calls Client.ProjectAttributesWithContext on the default client.
func InstanceAttributesWithContext(ctx context.Context) ([]string, error) {
return defaultClient.InstanceAttributesWithContext(ctx)
}
// ProjectAttributes calls Client.ProjectAttributesWithContext on the default client.
//
// Deprecated: Please use the context aware variant [ProjectAttributesWithContext].
func ProjectAttributes() ([]string, error) {
return defaultClient.ProjectAttributesWithContext(context.Background())
}
// ProjectAttributesWithContext calls Client.ProjectAttributesWithContext on the default client.
func ProjectAttributesWithContext(ctx context.Context) ([]string, error) {
return defaultClient.ProjectAttributesWithContext(ctx)
}
// InstanceAttributeValue calls Client.InstanceAttributeValueWithContext on the default client.
//
// Deprecated: Please use the context aware variant [InstanceAttributeValueWithContext].
func InstanceAttributeValue(attr string) (string, error) {
return defaultClient.InstanceAttributeValue(attr)
return defaultClient.InstanceAttributeValueWithContext(context.Background(), attr)
}
// ProjectAttributeValue calls Client.ProjectAttributeValue on the default client.
// InstanceAttributeValueWithContext calls Client.InstanceAttributeValueWithContext on the default client.
func InstanceAttributeValueWithContext(ctx context.Context, attr string) (string, error) {
return defaultClient.InstanceAttributeValueWithContext(ctx, attr)
}
// ProjectAttributeValue calls Client.ProjectAttributeValueWithContext on the default client.
//
// Deprecated: Please use the context aware variant [ProjectAttributeValueWithContext].
func ProjectAttributeValue(attr string) (string, error) {
return defaultClient.ProjectAttributeValue(attr)
return defaultClient.ProjectAttributeValueWithContext(context.Background(), attr)
}
// Scopes calls Client.Scopes on the default client.
func Scopes(serviceAccount string) ([]string, error) { return defaultClient.Scopes(serviceAccount) }
// ProjectAttributeValueWithContext calls Client.ProjectAttributeValueWithContext on the default client.
func ProjectAttributeValueWithContext(ctx context.Context, attr string) (string, error) {
return defaultClient.ProjectAttributeValueWithContext(ctx, attr)
}
// Scopes calls Client.ScopesWithContext on the default client.
//
// Deprecated: Please use the context aware variant [ScopesWithContext].
func Scopes(serviceAccount string) ([]string, error) {
return defaultClient.ScopesWithContext(context.Background(), serviceAccount)
}
// ScopesWithContext calls Client.ScopesWithContext on the default client.
func ScopesWithContext(ctx context.Context, serviceAccount string) ([]string, error) {
return defaultClient.ScopesWithContext(ctx, serviceAccount)
}
func strsContains(ss []string, s string) bool {
for _, v := range ss {
@ -296,7 +433,6 @@ func NewClient(c *http.Client) *Client {
if c == nil {
return defaultClient
}
return &Client{hc: c}
}
@ -381,6 +517,10 @@ func (c *Client) Get(suffix string) (string, error) {
//
// If the requested metadata is not defined, the returned error will
// be of type NotDefinedError.
//
// NOTE: Without an extra deadline in the context this call can take in the
// worst case, with internal backoff retries, up to 15 seconds (e.g. when server
// is responding slowly). Pass context with additional timeouts when needed.
func (c *Client) GetWithContext(ctx context.Context, suffix string) (string, error) {
val, _, err := c.getETag(ctx, suffix)
return val, err
@ -392,8 +532,8 @@ func (c *Client) getTrimmed(ctx context.Context, suffix string) (s string, err e
return
}
func (c *Client) lines(suffix string) ([]string, error) {
j, err := c.GetWithContext(context.Background(), suffix)
func (c *Client) lines(ctx context.Context, suffix string) ([]string, error) {
j, err := c.GetWithContext(ctx, suffix)
if err != nil {
return nil, err
}
@ -405,45 +545,104 @@ func (c *Client) lines(suffix string) ([]string, error) {
}
// ProjectID returns the current instance's project ID string.
func (c *Client) ProjectID() (string, error) { return projID.get(c) }
//
// Deprecated: Please use the context aware variant [Client.ProjectIDWithContext].
func (c *Client) ProjectID() (string, error) { return c.ProjectIDWithContext(context.Background()) }
// ProjectIDWithContext returns the current instance's project ID string.
func (c *Client) ProjectIDWithContext(ctx context.Context) (string, error) { return projID.get(ctx, c) }
// NumericProjectID returns the current instance's numeric project ID.
func (c *Client) NumericProjectID() (string, error) { return projNum.get(c) }
//
// Deprecated: Please use the context aware variant [Client.NumericProjectIDWithContext].
func (c *Client) NumericProjectID() (string, error) {
return c.NumericProjectIDWithContext(context.Background())
}
// NumericProjectIDWithContext returns the current instance's numeric project ID.
func (c *Client) NumericProjectIDWithContext(ctx context.Context) (string, error) {
return projNum.get(ctx, c)
}
// InstanceID returns the current VM's numeric instance ID.
func (c *Client) InstanceID() (string, error) { return instID.get(c) }
//
// Deprecated: Please use the context aware variant [Client.InstanceIDWithContext].
func (c *Client) InstanceID() (string, error) {
return c.InstanceIDWithContext(context.Background())
}
// InstanceIDWithContext returns the current VM's numeric instance ID.
func (c *Client) InstanceIDWithContext(ctx context.Context) (string, error) {
return instID.get(ctx, c)
}
// InternalIP returns the instance's primary internal IP address.
//
// Deprecated: Please use the context aware variant [Client.InternalIPWithContext].
func (c *Client) InternalIP() (string, error) {
return c.getTrimmed(context.Background(), "instance/network-interfaces/0/ip")
return c.InternalIPWithContext(context.Background())
}
// InternalIPWithContext returns the instance's primary internal IP address.
func (c *Client) InternalIPWithContext(ctx context.Context) (string, error) {
return c.getTrimmed(ctx, "instance/network-interfaces/0/ip")
}
// Email returns the email address associated with the service account.
// The account may be empty or the string "default" to use the instance's
// main account.
//
// Deprecated: Please use the context aware variant [Client.EmailWithContext].
func (c *Client) Email(serviceAccount string) (string, error) {
return c.EmailWithContext(context.Background(), serviceAccount)
}
// EmailWithContext returns the email address associated with the service account.
// The serviceAccount parameter default value (empty string or "default" value)
// will use the instance's main account.
func (c *Client) EmailWithContext(ctx context.Context, serviceAccount string) (string, error) {
if serviceAccount == "" {
serviceAccount = "default"
}
return c.getTrimmed(context.Background(), "instance/service-accounts/"+serviceAccount+"/email")
return c.getTrimmed(ctx, "instance/service-accounts/"+serviceAccount+"/email")
}
// ExternalIP returns the instance's primary external (public) IP address.
//
// Deprecated: Please use the context aware variant [Client.ExternalIPWithContext].
func (c *Client) ExternalIP() (string, error) {
return c.getTrimmed(context.Background(), "instance/network-interfaces/0/access-configs/0/external-ip")
return c.ExternalIPWithContext(context.Background())
}
// ExternalIPWithContext returns the instance's primary external (public) IP address.
func (c *Client) ExternalIPWithContext(ctx context.Context) (string, error) {
return c.getTrimmed(ctx, "instance/network-interfaces/0/access-configs/0/external-ip")
}
// Hostname returns the instance's hostname. This will be of the form
// "<instanceID>.c.<projID>.internal".
//
// Deprecated: Please use the context aware variant [Client.HostnameWithContext].
func (c *Client) Hostname() (string, error) {
return c.getTrimmed(context.Background(), "instance/hostname")
return c.HostnameWithContext(context.Background())
}
// InstanceTags returns the list of user-defined instance tags,
// assigned when initially creating a GCE instance.
// HostnameWithContext returns the instance's hostname. This will be of the form
// "<instanceID>.c.<projID>.internal".
func (c *Client) HostnameWithContext(ctx context.Context) (string, error) {
return c.getTrimmed(ctx, "instance/hostname")
}
// InstanceTags returns the list of user-defined instance tags.
//
// Deprecated: Please use the context aware variant [Client.InstanceTagsWithContext].
func (c *Client) InstanceTags() ([]string, error) {
return c.InstanceTagsWithContext(context.Background())
}
// InstanceTagsWithContext returns the list of user-defined instance tags,
// assigned when initially creating a GCE instance.
func (c *Client) InstanceTagsWithContext(ctx context.Context) ([]string, error) {
var s []string
j, err := c.GetWithContext(context.Background(), "instance/tags")
j, err := c.GetWithContext(ctx, "instance/tags")
if err != nil {
return nil, err
}
@ -454,13 +653,27 @@ func (c *Client) InstanceTags() ([]string, error) {
}
// InstanceName returns the current VM's instance ID string.
//
// Deprecated: Please use the context aware variant [Client.InstanceNameWithContext].
func (c *Client) InstanceName() (string, error) {
return c.getTrimmed(context.Background(), "instance/name")
return c.InstanceNameWithContext(context.Background())
}
// InstanceNameWithContext returns the current VM's instance ID string.
func (c *Client) InstanceNameWithContext(ctx context.Context) (string, error) {
return c.getTrimmed(ctx, "instance/name")
}
// Zone returns the current VM's zone, such as "us-central1-b".
//
// Deprecated: Please use the context aware variant [Client.ZoneWithContext].
func (c *Client) Zone() (string, error) {
zone, err := c.getTrimmed(context.Background(), "instance/zone")
return c.ZoneWithContext(context.Background())
}
// ZoneWithContext returns the current VM's zone, such as "us-central1-b".
func (c *Client) ZoneWithContext(ctx context.Context) (string, error) {
zone, err := c.getTrimmed(ctx, "instance/zone")
// zone is of the form "projects/<projNum>/zones/<zoneName>".
if err != nil {
return "", err
@ -471,12 +684,34 @@ func (c *Client) Zone() (string, error) {
// InstanceAttributes returns the list of user-defined attributes,
// assigned when initially creating a GCE VM instance. The value of an
// attribute can be obtained with InstanceAttributeValue.
func (c *Client) InstanceAttributes() ([]string, error) { return c.lines("instance/attributes/") }
//
// Deprecated: Please use the context aware variant [Client.InstanceAttributesWithContext].
func (c *Client) InstanceAttributes() ([]string, error) {
return c.InstanceAttributesWithContext(context.Background())
}
// InstanceAttributesWithContext returns the list of user-defined attributes,
// assigned when initially creating a GCE VM instance. The value of an
// attribute can be obtained with InstanceAttributeValue.
func (c *Client) InstanceAttributesWithContext(ctx context.Context) ([]string, error) {
return c.lines(ctx, "instance/attributes/")
}
// ProjectAttributes returns the list of user-defined attributes
// applying to the project as a whole, not just this VM. The value of
// an attribute can be obtained with ProjectAttributeValue.
func (c *Client) ProjectAttributes() ([]string, error) { return c.lines("project/attributes/") }
//
// Deprecated: Please use the context aware variant [Client.ProjectAttributesWithContext].
func (c *Client) ProjectAttributes() ([]string, error) {
return c.ProjectAttributesWithContext(context.Background())
}
// ProjectAttributesWithContext returns the list of user-defined attributes
// applying to the project as a whole, not just this VM. The value of
// an attribute can be obtained with ProjectAttributeValue.
func (c *Client) ProjectAttributesWithContext(ctx context.Context) ([]string, error) {
return c.lines(ctx, "project/attributes/")
}
// InstanceAttributeValue returns the value of the provided VM
// instance attribute.
@ -486,8 +721,22 @@ func (c *Client) ProjectAttributes() ([]string, error) { return c.lines("project
//
// InstanceAttributeValue may return ("", nil) if the attribute was
// defined to be the empty string.
//
// Deprecated: Please use the context aware variant [Client.InstanceAttributeValueWithContext].
func (c *Client) InstanceAttributeValue(attr string) (string, error) {
return c.GetWithContext(context.Background(), "instance/attributes/"+attr)
return c.InstanceAttributeValueWithContext(context.Background(), attr)
}
// InstanceAttributeValueWithContext returns the value of the provided VM
// instance attribute.
//
// If the requested attribute is not defined, the returned error will
// be of type NotDefinedError.
//
// InstanceAttributeValue may return ("", nil) if the attribute was
// defined to be the empty string.
func (c *Client) InstanceAttributeValueWithContext(ctx context.Context, attr string) (string, error) {
return c.GetWithContext(ctx, "instance/attributes/"+attr)
}
// ProjectAttributeValue returns the value of the provided
@ -498,18 +747,41 @@ func (c *Client) InstanceAttributeValue(attr string) (string, error) {
//
// ProjectAttributeValue may return ("", nil) if the attribute was
// defined to be the empty string.
//
// Deprecated: Please use the context aware variant [Client.ProjectAttributeValueWithContext].
func (c *Client) ProjectAttributeValue(attr string) (string, error) {
return c.GetWithContext(context.Background(), "project/attributes/"+attr)
return c.ProjectAttributeValueWithContext(context.Background(), attr)
}
// ProjectAttributeValueWithContext returns the value of the provided
// project attribute.
//
// If the requested attribute is not defined, the returned error will
// be of type NotDefinedError.
//
// ProjectAttributeValue may return ("", nil) if the attribute was
// defined to be the empty string.
func (c *Client) ProjectAttributeValueWithContext(ctx context.Context, attr string) (string, error) {
return c.GetWithContext(ctx, "project/attributes/"+attr)
}
// Scopes returns the service account scopes for the given account.
// The account may be empty or the string "default" to use the instance's
// main account.
//
// Deprecated: Please use the context aware variant [Client.ScopesWithContext].
func (c *Client) Scopes(serviceAccount string) ([]string, error) {
return c.ScopesWithContext(context.Background(), serviceAccount)
}
// ScopesWithContext returns the service account scopes for the given account.
// The account may be empty or the string "default" to use the instance's
// main account.
func (c *Client) ScopesWithContext(ctx context.Context, serviceAccount string) ([]string, error) {
if serviceAccount == "" {
serviceAccount = "default"
}
return c.lines("instance/service-accounts/" + serviceAccount + "/scopes")
return c.lines(ctx, "instance/service-accounts/"+serviceAccount+"/scopes")
}
// Subscribe subscribes to a value from the metadata service.

View file

@ -1,6 +1,20 @@
# Changes
## [1.1.10](https://github.com/googleapis/google-cloud-go/compare/iam/v1.1.9...iam/v1.1.10) (2024-07-01)
### Bug Fixes
* **iam:** Bump google.golang.org/api@v0.187.0 ([8fa9e39](https://github.com/googleapis/google-cloud-go/commit/8fa9e398e512fd8533fd49060371e61b5725a85b))
## [1.1.9](https://github.com/googleapis/google-cloud-go/compare/iam/v1.1.8...iam/v1.1.9) (2024-06-26)
### Bug Fixes
* **iam:** Enable new auth lib ([b95805f](https://github.com/googleapis/google-cloud-go/commit/b95805f4c87d3e8d10ea23bd7a2d68d7a4157568))
## [1.1.8](https://github.com/googleapis/google-cloud-go/compare/iam/v1.1.7...iam/v1.1.8) (2024-05-01)

View file

@ -1,4 +1,4 @@
// Copyright 2022 Google LLC
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -14,7 +14,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
// protoc-gen-go v1.34.2
// protoc v4.25.3
// source: google/iam/v1/iam_policy.proto
@ -388,7 +388,7 @@ func file_google_iam_v1_iam_policy_proto_rawDescGZIP() []byte {
}
var file_google_iam_v1_iam_policy_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_google_iam_v1_iam_policy_proto_goTypes = []interface{}{
var file_google_iam_v1_iam_policy_proto_goTypes = []any{
(*SetIamPolicyRequest)(nil), // 0: google.iam.v1.SetIamPolicyRequest
(*GetIamPolicyRequest)(nil), // 1: google.iam.v1.GetIamPolicyRequest
(*TestIamPermissionsRequest)(nil), // 2: google.iam.v1.TestIamPermissionsRequest
@ -422,7 +422,7 @@ func file_google_iam_v1_iam_policy_proto_init() {
file_google_iam_v1_options_proto_init()
file_google_iam_v1_policy_proto_init()
if !protoimpl.UnsafeEnabled {
file_google_iam_v1_iam_policy_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
file_google_iam_v1_iam_policy_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*SetIamPolicyRequest); i {
case 0:
return &v.state
@ -434,7 +434,7 @@ func file_google_iam_v1_iam_policy_proto_init() {
return nil
}
}
file_google_iam_v1_iam_policy_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
file_google_iam_v1_iam_policy_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*GetIamPolicyRequest); i {
case 0:
return &v.state
@ -446,7 +446,7 @@ func file_google_iam_v1_iam_policy_proto_init() {
return nil
}
}
file_google_iam_v1_iam_policy_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
file_google_iam_v1_iam_policy_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*TestIamPermissionsRequest); i {
case 0:
return &v.state
@ -458,7 +458,7 @@ func file_google_iam_v1_iam_policy_proto_init() {
return nil
}
}
file_google_iam_v1_iam_policy_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
file_google_iam_v1_iam_policy_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*TestIamPermissionsResponse); i {
case 0:
return &v.state

View file

@ -1,4 +1,4 @@
// Copyright 2022 Google LLC
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -14,7 +14,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
// protoc-gen-go v1.34.2
// protoc v4.25.3
// source: google/iam/v1/options.proto
@ -136,7 +136,7 @@ func file_google_iam_v1_options_proto_rawDescGZIP() []byte {
}
var file_google_iam_v1_options_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_google_iam_v1_options_proto_goTypes = []interface{}{
var file_google_iam_v1_options_proto_goTypes = []any{
(*GetPolicyOptions)(nil), // 0: google.iam.v1.GetPolicyOptions
}
var file_google_iam_v1_options_proto_depIdxs = []int32{
@ -153,7 +153,7 @@ func file_google_iam_v1_options_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
file_google_iam_v1_options_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
file_google_iam_v1_options_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*GetPolicyOptions); i {
case 0:
return &v.state

View file

@ -1,4 +1,4 @@
// Copyright 2023 Google LLC
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -14,7 +14,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
// protoc-gen-go v1.34.2
// protoc v4.25.3
// source: google/iam/v1/policy.proto
@ -1036,7 +1036,7 @@ func file_google_iam_v1_policy_proto_rawDescGZIP() []byte {
var file_google_iam_v1_policy_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_google_iam_v1_policy_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_google_iam_v1_policy_proto_goTypes = []interface{}{
var file_google_iam_v1_policy_proto_goTypes = []any{
(AuditLogConfig_LogType)(0), // 0: google.iam.v1.AuditLogConfig.LogType
(BindingDelta_Action)(0), // 1: google.iam.v1.BindingDelta.Action
(AuditConfigDelta_Action)(0), // 2: google.iam.v1.AuditConfigDelta.Action
@ -1073,7 +1073,7 @@ func file_google_iam_v1_policy_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
file_google_iam_v1_policy_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
file_google_iam_v1_policy_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*Policy); i {
case 0:
return &v.state
@ -1085,7 +1085,7 @@ func file_google_iam_v1_policy_proto_init() {
return nil
}
}
file_google_iam_v1_policy_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
file_google_iam_v1_policy_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*Binding); i {
case 0:
return &v.state
@ -1097,7 +1097,7 @@ func file_google_iam_v1_policy_proto_init() {
return nil
}
}
file_google_iam_v1_policy_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
file_google_iam_v1_policy_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*AuditConfig); i {
case 0:
return &v.state
@ -1109,7 +1109,7 @@ func file_google_iam_v1_policy_proto_init() {
return nil
}
}
file_google_iam_v1_policy_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
file_google_iam_v1_policy_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*AuditLogConfig); i {
case 0:
return &v.state
@ -1121,7 +1121,7 @@ func file_google_iam_v1_policy_proto_init() {
return nil
}
}
file_google_iam_v1_policy_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
file_google_iam_v1_policy_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*PolicyDelta); i {
case 0:
return &v.state
@ -1133,7 +1133,7 @@ func file_google_iam_v1_policy_proto_init() {
return nil
}
}
file_google_iam_v1_policy_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
file_google_iam_v1_policy_proto_msgTypes[5].Exporter = func(v any, i int) any {
switch v := v.(*BindingDelta); i {
case 0:
return &v.state
@ -1145,7 +1145,7 @@ func file_google_iam_v1_policy_proto_init() {
return nil
}
}
file_google_iam_v1_policy_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
file_google_iam_v1_policy_proto_msgTypes[6].Exporter = func(v any, i int) any {
switch v := v.(*AuditConfigDelta); i {
case 0:
return &v.state

View file

@ -1,6 +1,27 @@
# Changes
## [1.43.0](https://github.com/googleapis/google-cloud-go/compare/storage/v1.42.0...storage/v1.43.0) (2024-07-03)
### Features
* **storage/transfermanager:** Add DownloadDirectory ([#10430](https://github.com/googleapis/google-cloud-go/issues/10430)) ([0d0e5dd](https://github.com/googleapis/google-cloud-go/commit/0d0e5dd5214769cc2c197991c2ece1303bd600de))
* **storage/transfermanager:** Automatically shard downloads ([#10379](https://github.com/googleapis/google-cloud-go/issues/10379)) ([05816f9](https://github.com/googleapis/google-cloud-go/commit/05816f9fafd3132c371da37f3a879bb9e8e7e604))
### Bug Fixes
* **storage/transfermanager:** WaitAndClose waits for Callbacks to finish ([#10504](https://github.com/googleapis/google-cloud-go/issues/10504)) ([0e81002](https://github.com/googleapis/google-cloud-go/commit/0e81002b3a5e560c874d814d28a35a102311d9ef)), refs [#10502](https://github.com/googleapis/google-cloud-go/issues/10502)
* **storage:** Allow empty soft delete on Create ([#10394](https://github.com/googleapis/google-cloud-go/issues/10394)) ([d8bd2c1](https://github.com/googleapis/google-cloud-go/commit/d8bd2c1ffc4f27503a74ded438d8bfbdd7707c63)), refs [#10380](https://github.com/googleapis/google-cloud-go/issues/10380)
* **storage:** Bump google.golang.org/api@v0.187.0 ([8fa9e39](https://github.com/googleapis/google-cloud-go/commit/8fa9e398e512fd8533fd49060371e61b5725a85b))
* **storage:** Retry broken pipe error ([#10374](https://github.com/googleapis/google-cloud-go/issues/10374)) ([2f4daa1](https://github.com/googleapis/google-cloud-go/commit/2f4daa11acf9d3f260fa888333090359c4d9198e)), refs [#9178](https://github.com/googleapis/google-cloud-go/issues/9178)
### Documentation
* **storage/control:** Remove allowlist note from Folders RPCs ([d6c543c](https://github.com/googleapis/google-cloud-go/commit/d6c543c3969016c63e158a862fc173dff60fb8d9))
## [1.42.0](https://github.com/googleapis/google-cloud-go/compare/storage/v1.41.0...storage/v1.42.0) (2024-06-10)

View file

@ -2123,8 +2123,11 @@ func (p *SoftDeletePolicy) toRawSoftDeletePolicy() *raw.BucketSoftDeletePolicy {
return nil
}
// Excluding read only field EffectiveTime.
// ForceSendFields must be set to send a zero value for RetentionDuration and disable
// soft delete.
return &raw.BucketSoftDeletePolicy{
RetentionDurationSeconds: int64(p.RetentionDuration.Seconds()),
ForceSendFields: []string{"RetentionDurationSeconds"},
}
}

View file

@ -14,7 +14,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.34.1
// protoc-gen-go v1.34.2
// protoc v4.25.3
// source: google/storage/v2/storage.proto
@ -8968,7 +8968,7 @@ func file_google_storage_v2_storage_proto_rawDescGZIP() []byte {
var file_google_storage_v2_storage_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_google_storage_v2_storage_proto_msgTypes = make([]protoimpl.MessageInfo, 79)
var file_google_storage_v2_storage_proto_goTypes = []interface{}{
var file_google_storage_v2_storage_proto_goTypes = []any{
(ServiceConstants_Values)(0), // 0: google.storage.v2.ServiceConstants.Values
(*DeleteBucketRequest)(nil), // 1: google.storage.v2.DeleteBucketRequest
(*GetBucketRequest)(nil), // 2: google.storage.v2.GetBucketRequest
@ -9241,7 +9241,7 @@ func file_google_storage_v2_storage_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
file_google_storage_v2_storage_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*DeleteBucketRequest); i {
case 0:
return &v.state
@ -9253,7 +9253,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*GetBucketRequest); i {
case 0:
return &v.state
@ -9265,7 +9265,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*CreateBucketRequest); i {
case 0:
return &v.state
@ -9277,7 +9277,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*ListBucketsRequest); i {
case 0:
return &v.state
@ -9289,7 +9289,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*ListBucketsResponse); i {
case 0:
return &v.state
@ -9301,7 +9301,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[5].Exporter = func(v any, i int) any {
switch v := v.(*LockBucketRetentionPolicyRequest); i {
case 0:
return &v.state
@ -9313,7 +9313,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[6].Exporter = func(v any, i int) any {
switch v := v.(*UpdateBucketRequest); i {
case 0:
return &v.state
@ -9325,7 +9325,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[7].Exporter = func(v any, i int) any {
switch v := v.(*DeleteNotificationConfigRequest); i {
case 0:
return &v.state
@ -9337,7 +9337,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[8].Exporter = func(v any, i int) any {
switch v := v.(*GetNotificationConfigRequest); i {
case 0:
return &v.state
@ -9349,7 +9349,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[9].Exporter = func(v any, i int) any {
switch v := v.(*CreateNotificationConfigRequest); i {
case 0:
return &v.state
@ -9361,7 +9361,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[10].Exporter = func(v any, i int) any {
switch v := v.(*ListNotificationConfigsRequest); i {
case 0:
return &v.state
@ -9373,7 +9373,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[11].Exporter = func(v any, i int) any {
switch v := v.(*ListNotificationConfigsResponse); i {
case 0:
return &v.state
@ -9385,7 +9385,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[12].Exporter = func(v any, i int) any {
switch v := v.(*ComposeObjectRequest); i {
case 0:
return &v.state
@ -9397,7 +9397,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[13].Exporter = func(v any, i int) any {
switch v := v.(*DeleteObjectRequest); i {
case 0:
return &v.state
@ -9409,7 +9409,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[14].Exporter = func(v any, i int) any {
switch v := v.(*RestoreObjectRequest); i {
case 0:
return &v.state
@ -9421,7 +9421,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[15].Exporter = func(v any, i int) any {
switch v := v.(*CancelResumableWriteRequest); i {
case 0:
return &v.state
@ -9433,7 +9433,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[16].Exporter = func(v any, i int) any {
switch v := v.(*CancelResumableWriteResponse); i {
case 0:
return &v.state
@ -9445,7 +9445,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[17].Exporter = func(v any, i int) any {
switch v := v.(*ReadObjectRequest); i {
case 0:
return &v.state
@ -9457,7 +9457,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[18].Exporter = func(v any, i int) any {
switch v := v.(*GetObjectRequest); i {
case 0:
return &v.state
@ -9469,7 +9469,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[19].Exporter = func(v any, i int) any {
switch v := v.(*ReadObjectResponse); i {
case 0:
return &v.state
@ -9481,7 +9481,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[20].Exporter = func(v any, i int) any {
switch v := v.(*WriteObjectSpec); i {
case 0:
return &v.state
@ -9493,7 +9493,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[21].Exporter = func(v any, i int) any {
switch v := v.(*WriteObjectRequest); i {
case 0:
return &v.state
@ -9505,7 +9505,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[22].Exporter = func(v any, i int) any {
switch v := v.(*WriteObjectResponse); i {
case 0:
return &v.state
@ -9517,7 +9517,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[23].Exporter = func(v any, i int) any {
switch v := v.(*BidiWriteObjectRequest); i {
case 0:
return &v.state
@ -9529,7 +9529,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[24].Exporter = func(v any, i int) any {
switch v := v.(*BidiWriteObjectResponse); i {
case 0:
return &v.state
@ -9541,7 +9541,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[25].Exporter = func(v any, i int) any {
switch v := v.(*ListObjectsRequest); i {
case 0:
return &v.state
@ -9553,7 +9553,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[26].Exporter = func(v any, i int) any {
switch v := v.(*QueryWriteStatusRequest); i {
case 0:
return &v.state
@ -9565,7 +9565,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[27].Exporter = func(v any, i int) any {
switch v := v.(*QueryWriteStatusResponse); i {
case 0:
return &v.state
@ -9577,7 +9577,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[28].Exporter = func(v any, i int) any {
switch v := v.(*RewriteObjectRequest); i {
case 0:
return &v.state
@ -9589,7 +9589,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[29].Exporter = func(v any, i int) any {
switch v := v.(*RewriteResponse); i {
case 0:
return &v.state
@ -9601,7 +9601,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[30].Exporter = func(v any, i int) any {
switch v := v.(*StartResumableWriteRequest); i {
case 0:
return &v.state
@ -9613,7 +9613,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[31].Exporter = func(v any, i int) any {
switch v := v.(*StartResumableWriteResponse); i {
case 0:
return &v.state
@ -9625,7 +9625,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[32].Exporter = func(v any, i int) any {
switch v := v.(*UpdateObjectRequest); i {
case 0:
return &v.state
@ -9637,7 +9637,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[33].Exporter = func(v any, i int) any {
switch v := v.(*GetServiceAccountRequest); i {
case 0:
return &v.state
@ -9649,7 +9649,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[34].Exporter = func(v any, i int) any {
switch v := v.(*CreateHmacKeyRequest); i {
case 0:
return &v.state
@ -9661,7 +9661,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[35].Exporter = func(v any, i int) any {
switch v := v.(*CreateHmacKeyResponse); i {
case 0:
return &v.state
@ -9673,7 +9673,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[36].Exporter = func(v any, i int) any {
switch v := v.(*DeleteHmacKeyRequest); i {
case 0:
return &v.state
@ -9685,7 +9685,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[37].Exporter = func(v any, i int) any {
switch v := v.(*GetHmacKeyRequest); i {
case 0:
return &v.state
@ -9697,7 +9697,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[38].Exporter = func(v any, i int) any {
switch v := v.(*ListHmacKeysRequest); i {
case 0:
return &v.state
@ -9709,7 +9709,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[39].Exporter = func(v any, i int) any {
switch v := v.(*ListHmacKeysResponse); i {
case 0:
return &v.state
@ -9721,7 +9721,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[40].Exporter = func(v any, i int) any {
switch v := v.(*UpdateHmacKeyRequest); i {
case 0:
return &v.state
@ -9733,7 +9733,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[41].Exporter = func(v any, i int) any {
switch v := v.(*CommonObjectRequestParams); i {
case 0:
return &v.state
@ -9745,7 +9745,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[42].Exporter = func(v any, i int) any {
switch v := v.(*ServiceConstants); i {
case 0:
return &v.state
@ -9757,7 +9757,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[43].Exporter = func(v any, i int) any {
switch v := v.(*Bucket); i {
case 0:
return &v.state
@ -9769,7 +9769,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[44].Exporter = func(v any, i int) any {
switch v := v.(*BucketAccessControl); i {
case 0:
return &v.state
@ -9781,7 +9781,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[45].Exporter = func(v any, i int) any {
switch v := v.(*ChecksummedData); i {
case 0:
return &v.state
@ -9793,7 +9793,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[46].Exporter = func(v any, i int) any {
switch v := v.(*ObjectChecksums); i {
case 0:
return &v.state
@ -9805,7 +9805,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[47].Exporter = func(v any, i int) any {
switch v := v.(*HmacKeyMetadata); i {
case 0:
return &v.state
@ -9817,7 +9817,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[48].Exporter = func(v any, i int) any {
switch v := v.(*NotificationConfig); i {
case 0:
return &v.state
@ -9829,7 +9829,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[49].Exporter = func(v any, i int) any {
switch v := v.(*CustomerEncryption); i {
case 0:
return &v.state
@ -9841,7 +9841,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[50].Exporter = func(v any, i int) any {
switch v := v.(*Object); i {
case 0:
return &v.state
@ -9853,7 +9853,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[51].Exporter = func(v any, i int) any {
switch v := v.(*ObjectAccessControl); i {
case 0:
return &v.state
@ -9865,7 +9865,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[52].Exporter = func(v any, i int) any {
switch v := v.(*ListObjectsResponse); i {
case 0:
return &v.state
@ -9877,7 +9877,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[53].Exporter = func(v any, i int) any {
switch v := v.(*ProjectTeam); i {
case 0:
return &v.state
@ -9889,7 +9889,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[54].Exporter = func(v any, i int) any {
switch v := v.(*ServiceAccount); i {
case 0:
return &v.state
@ -9901,7 +9901,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[55].Exporter = func(v any, i int) any {
switch v := v.(*Owner); i {
case 0:
return &v.state
@ -9913,7 +9913,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[56].Exporter = func(v any, i int) any {
switch v := v.(*ContentRange); i {
case 0:
return &v.state
@ -9925,7 +9925,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[57].Exporter = func(v any, i int) any {
switch v := v.(*ComposeObjectRequest_SourceObject); i {
case 0:
return &v.state
@ -9937,7 +9937,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[58].Exporter = func(v any, i int) any {
switch v := v.(*ComposeObjectRequest_SourceObject_ObjectPreconditions); i {
case 0:
return &v.state
@ -9949,7 +9949,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[59].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_Billing); i {
case 0:
return &v.state
@ -9961,7 +9961,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[60].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_Cors); i {
case 0:
return &v.state
@ -9973,7 +9973,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[61].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_Encryption); i {
case 0:
return &v.state
@ -9985,7 +9985,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[62].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_IamConfig); i {
case 0:
return &v.state
@ -9997,7 +9997,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[63].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_Lifecycle); i {
case 0:
return &v.state
@ -10009,7 +10009,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[64].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_Logging); i {
case 0:
return &v.state
@ -10021,7 +10021,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[65].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_RetentionPolicy); i {
case 0:
return &v.state
@ -10033,7 +10033,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[66].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_SoftDeletePolicy); i {
case 0:
return &v.state
@ -10045,7 +10045,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[67].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_Versioning); i {
case 0:
return &v.state
@ -10057,7 +10057,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[68].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_Website); i {
case 0:
return &v.state
@ -10069,7 +10069,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[69].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_CustomPlacementConfig); i {
case 0:
return &v.state
@ -10081,7 +10081,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[70].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_Autoclass); i {
case 0:
return &v.state
@ -10093,7 +10093,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[71].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_HierarchicalNamespace); i {
case 0:
return &v.state
@ -10105,7 +10105,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[73].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_IamConfig_UniformBucketLevelAccess); i {
case 0:
return &v.state
@ -10117,7 +10117,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[74].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_Lifecycle_Rule); i {
case 0:
return &v.state
@ -10129,7 +10129,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[75].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_Lifecycle_Rule_Action); i {
case 0:
return &v.state
@ -10141,7 +10141,7 @@ func file_google_storage_v2_storage_proto_init() {
return nil
}
}
file_google_storage_v2_storage_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
file_google_storage_v2_storage_proto_msgTypes[76].Exporter = func(v any, i int) any {
switch v := v.(*Bucket_Lifecycle_Rule_Condition); i {
case 0:
return &v.state
@ -10154,48 +10154,48 @@ func file_google_storage_v2_storage_proto_init() {
}
}
}
file_google_storage_v2_storage_proto_msgTypes[0].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[1].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[3].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[6].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[12].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[13].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[14].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[17].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[18].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[20].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[21].OneofWrappers = []interface{}{
file_google_storage_v2_storage_proto_msgTypes[0].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[1].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[3].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[6].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[12].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[13].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[14].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[17].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[18].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[20].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[21].OneofWrappers = []any{
(*WriteObjectRequest_UploadId)(nil),
(*WriteObjectRequest_WriteObjectSpec)(nil),
(*WriteObjectRequest_ChecksummedData)(nil),
}
file_google_storage_v2_storage_proto_msgTypes[22].OneofWrappers = []interface{}{
file_google_storage_v2_storage_proto_msgTypes[22].OneofWrappers = []any{
(*WriteObjectResponse_PersistedSize)(nil),
(*WriteObjectResponse_Resource)(nil),
}
file_google_storage_v2_storage_proto_msgTypes[23].OneofWrappers = []interface{}{
file_google_storage_v2_storage_proto_msgTypes[23].OneofWrappers = []any{
(*BidiWriteObjectRequest_UploadId)(nil),
(*BidiWriteObjectRequest_WriteObjectSpec)(nil),
(*BidiWriteObjectRequest_ChecksummedData)(nil),
}
file_google_storage_v2_storage_proto_msgTypes[24].OneofWrappers = []interface{}{
file_google_storage_v2_storage_proto_msgTypes[24].OneofWrappers = []any{
(*BidiWriteObjectResponse_PersistedSize)(nil),
(*BidiWriteObjectResponse_Resource)(nil),
}
file_google_storage_v2_storage_proto_msgTypes[25].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[27].OneofWrappers = []interface{}{
file_google_storage_v2_storage_proto_msgTypes[25].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[27].OneofWrappers = []any{
(*QueryWriteStatusResponse_PersistedSize)(nil),
(*QueryWriteStatusResponse_Resource)(nil),
}
file_google_storage_v2_storage_proto_msgTypes[28].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[32].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[45].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[46].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[50].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[58].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[66].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[70].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[76].OneofWrappers = []interface{}{}
file_google_storage_v2_storage_proto_msgTypes[28].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[32].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[45].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[46].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[50].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[58].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[66].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[70].OneofWrappers = []any{}
file_google_storage_v2_storage_proto_msgTypes[76].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{

View file

@ -15,4 +15,4 @@
package internal
// Version is the current tagged release of the library.
const Version = "1.42.0"
const Version = "1.43.0"

View file

@ -132,7 +132,7 @@ func ShouldRetry(err error) bool {
// Retry socket-level errors ECONNREFUSED and ECONNRESET (from syscall).
// Unfortunately the error type is unexported, so we resort to string
// matching.
retriable := []string{"connection refused", "connection reset"}
retriable := []string{"connection refused", "connection reset", "broken pipe"}
for _, s := range retriable {
if strings.Contains(e.Error(), s) {
return true

View file

@ -1,5 +1,20 @@
# Release History
## 1.12.0 (2024-06-06)
### Features Added
* Added field `StatusCodes` to `runtime.FetcherForNextLinkOptions` allowing for additional HTTP status codes indicating success.
* Added func `NewUUID` to the `runtime` package for generating UUIDs.
### Bugs Fixed
* Fixed an issue that prevented pollers using the `Operation-Location` strategy from unmarshaling the final result in some cases.
### Other Changes
* Updated dependencies.
## 1.11.1 (2024-04-02)
### Bugs Fixed

View file

@ -155,5 +155,5 @@ func (p *Poller[T]) Result(ctx context.Context, out *T) error {
p.resp = resp
}
return pollers.ResultHelper(p.resp, poller.Failed(p.CurState), out)
return pollers.ResultHelper(p.resp, poller.Failed(p.CurState), "", out)
}

View file

@ -131,5 +131,5 @@ func (p *Poller[T]) Poll(ctx context.Context) (*http.Response, error) {
}
func (p *Poller[T]) Result(ctx context.Context, out *T) error {
return pollers.ResultHelper(p.resp, poller.Failed(p.CurState), out)
return pollers.ResultHelper(p.resp, poller.Failed(p.CurState), "", out)
}

View file

@ -124,7 +124,7 @@ func (p *Poller[T]) Result(ctx context.Context, out *T) error {
return exported.NewResponseError(p.resp)
}
return pollers.ResultHelper(p.resp, poller.Failed(p.FakeStatus), out)
return pollers.ResultHelper(p.resp, poller.Failed(p.FakeStatus), "", out)
}
// SanitizePollerPath removes any fake-appended suffix from a URL's path.

View file

@ -119,5 +119,5 @@ func (p *Poller[T]) Poll(ctx context.Context) (*http.Response, error) {
}
func (p *Poller[T]) Result(ctx context.Context, out *T) error {
return pollers.ResultHelper(p.resp, poller.Failed(p.CurState), out)
return pollers.ResultHelper(p.resp, poller.Failed(p.CurState), "", out)
}

View file

@ -115,10 +115,13 @@ func (p *Poller[T]) Poll(ctx context.Context) (*http.Response, error) {
func (p *Poller[T]) Result(ctx context.Context, out *T) error {
var req *exported.Request
var err error
// when the payload is included with the status monitor on
// terminal success it's in the "result" JSON property
payloadPath := "result"
if p.FinalState == pollers.FinalStateViaLocation && p.LocURL != "" {
req, err = exported.NewRequest(ctx, http.MethodGet, p.LocURL)
} else if p.FinalState == pollers.FinalStateViaOpLocation && p.Method == http.MethodPost {
// no final GET required, terminal response should have it
} else if rl, rlErr := poller.GetResourceLocation(p.resp); rlErr != nil && !errors.Is(rlErr, poller.ErrNoBody) {
return rlErr
} else if rl != "" {
@ -134,6 +137,8 @@ func (p *Poller[T]) Result(ctx context.Context, out *T) error {
// if a final GET request has been created, execute it
if req != nil {
// no JSON path when making a final GET request
payloadPath = ""
resp, err := p.pl.Do(req)
if err != nil {
return err
@ -141,5 +146,5 @@ func (p *Poller[T]) Result(ctx context.Context, out *T) error {
p.resp = resp
}
return pollers.ResultHelper(p.resp, poller.Failed(p.CurState), out)
return pollers.ResultHelper(p.resp, poller.Failed(p.CurState), payloadPath, out)
}

View file

@ -159,7 +159,7 @@ func PollHelper(ctx context.Context, endpoint string, pl azexported.Pipeline, up
// ResultHelper processes the response as success or failure.
// In the success case, it unmarshals the payload into either a new instance of T or out.
// In the failure case, it creates an *azcore.Response error from the response.
func ResultHelper[T any](resp *http.Response, failed bool, out *T) error {
func ResultHelper[T any](resp *http.Response, failed bool, jsonPath string, out *T) error {
// short-circuit the simple success case with no response body to unmarshal
if resp.StatusCode == http.StatusNoContent {
return nil
@ -176,6 +176,18 @@ func ResultHelper[T any](resp *http.Response, failed bool, out *T) error {
if err != nil {
return err
}
if jsonPath != "" && len(payload) > 0 {
// extract the payload from the specified JSON path.
// do this before the zero-length check in case there
// is no payload.
jsonBody := map[string]json.RawMessage{}
if err = json.Unmarshal(payload, &jsonBody); err != nil {
return err
}
payload = jsonBody[jsonPath]
}
if len(payload) == 0 {
return nil
}

View file

@ -40,5 +40,5 @@ const (
Module = "azcore"
// Version is the semantic version (see http://semver.org) of this module.
Version = "v1.11.1"
Version = "v1.12.0"
)

View file

@ -94,6 +94,10 @@ type FetcherForNextLinkOptions struct {
// NextReq is the func to be called when requesting subsequent pages.
// Used for paged operations that have a custom next link operation.
NextReq func(context.Context, string) (*policy.Request, error)
// StatusCodes contains additional HTTP status codes indicating success.
// The default value is http.StatusOK.
StatusCodes []int
}
// FetcherForNextLink is a helper containing boilerplate code to simplify creating a PagingHandler[T].Fetcher from a next link URL.
@ -105,10 +109,13 @@ type FetcherForNextLinkOptions struct {
func FetcherForNextLink(ctx context.Context, pl Pipeline, nextLink string, firstReq func(context.Context) (*policy.Request, error), options *FetcherForNextLinkOptions) (*http.Response, error) {
var req *policy.Request
var err error
if options == nil {
options = &FetcherForNextLinkOptions{}
}
if nextLink == "" {
req, err = firstReq(ctx)
} else if nextLink, err = EncodeQueryParams(nextLink); err == nil {
if options != nil && options.NextReq != nil {
if options.NextReq != nil {
req, err = options.NextReq(ctx, nextLink)
} else {
req, err = NewRequest(ctx, http.MethodGet, nextLink)
@ -121,7 +128,9 @@ func FetcherForNextLink(ctx context.Context, pl Pipeline, nextLink string, first
if err != nil {
return nil, err
}
if !HasStatusCode(resp, http.StatusOK) {
successCodes := []int{http.StatusOK}
successCodes = append(successCodes, options.StatusCodes...)
if !HasStatusCode(resp, successCodes...) {
return nil, NewResponseError(resp)
}
return resp, nil

View file

@ -24,6 +24,7 @@ import (
"github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming"
"github.com/Azure/azure-sdk-for-go/sdk/internal/uuid"
)
// Base64Encoding is usesd to specify which base-64 encoder/decoder to use when
@ -263,3 +264,12 @@ func SkipBodyDownload(req *policy.Request) {
// CtxAPINameKey is used as a context key for adding/retrieving the API name.
type CtxAPINameKey = shared.CtxAPINameKey
// NewUUID returns a new UUID using the RFC4122 algorithm.
func NewUUID() (string, error) {
u, err := uuid.New()
if err != nil {
return "", err
}
return u.String(), nil
}

View file

@ -1,5 +1,29 @@
# Release History
## 1.7.0 (2024-06-20)
### Features Added
* `AzurePipelinesCredential` authenticates an Azure Pipelines service connection with
workload identity federation
### Breaking Changes
> These changes affect only code written against a beta version such as v1.7.0-beta.1
* Removed the persistent token caching API. It will return in v1.8.0-beta.1
## 1.7.0-beta.1 (2024-06-10)
### Features Added
* Restored `AzurePipelinesCredential` and persistent token caching API
## Breaking Changes
> These changes affect only code written against a beta version such as v1.6.0-beta.4
* Values which `NewAzurePipelinesCredential` read from environment variables in
prior versions are now parameters
* Renamed `AzurePipelinesServiceConnectionCredentialOptions` to `AzurePipelinesCredentialOptions`
### Bugs Fixed
* Managed identity bug fixes
## 1.6.0 (2024-06-10)
### Features Added

View file

@ -140,6 +140,7 @@ client := armresources.NewResourceGroupsClient("subscription ID", chain, nil)
|Credential|Usage
|-|-
|[AzurePipelinesCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#AzurePipelinesCredential)|Authenticate an Azure Pipelines [service connection](https://learn.microsoft.com/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml)
|[ClientAssertionCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#ClientAssertionCredential)|Authenticate a service principal with a signed client assertion
|[ClientCertificateCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#ClientCertificateCredential)|Authenticate a service principal with a certificate
|[ClientSecretCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#ClientSecretCredential)|Authenticate a service principal with a secret

View file

@ -57,6 +57,7 @@ The following table indicates the state of in-memory and persistent caching in e
|--------------------------------|---------------------------------------------------------------------|--------------------------|
| `AzureCLICredential` | Not Supported | Not Supported |
| `AzureDeveloperCLICredential` | Not Supported | Not Supported |
| `AzurePipelinesCredential` | Supported | Supported |
| `ClientAssertionCredential` | Supported | Supported |
| `ClientCertificateCredential` | Supported | Supported |
| `ClientSecretCredential` | Supported | Supported |

View file

@ -10,6 +10,7 @@ This troubleshooting guide covers failure investigation techniques, common error
- [Enable and configure logging](#enable-and-configure-logging)
- [Troubleshoot AzureCLICredential authentication issues](#troubleshoot-azureclicredential-authentication-issues)
- [Troubleshoot AzureDeveloperCLICredential authentication issues](#troubleshoot-azuredeveloperclicredential-authentication-issues)
- [Troubleshoot AzurePipelinesCredential authentication issues](#troubleshoot-azurepipelinescredential-authentication-issues)
- [Troubleshoot ClientCertificateCredential authentication issues](#troubleshoot-clientcertificatecredential-authentication-issues)
- [Troubleshoot ClientSecretCredential authentication issues](#troubleshoot-clientsecretcredential-authentication-issues)
- [Troubleshoot DefaultAzureCredential authentication issues](#troubleshoot-defaultazurecredential-authentication-issues)
@ -226,6 +227,15 @@ azd auth token --output json --scope https://management.core.windows.net/.defaul
|---|---|---|
|no client ID/tenant ID/token file specified|Incomplete configuration|In most cases these values are provided via environment variables set by Azure Workload Identity.<ul><li>If your application runs on Azure Kubernetes Servide (AKS) or a cluster that has deployed the Azure Workload Identity admission webhook, check pod labels and service account configuration. See the [AKS documentation](https://learn.microsoft.com/azure/aks/workload-identity-deploy-cluster#disable-workload-identity) and [Azure Workload Identity troubleshooting guide](https://azure.github.io/azure-workload-identity/docs/troubleshooting.html) for more details.<li>If your application isn't running on AKS or your cluster hasn't deployed the Workload Identity admission webhook, set these values in `WorkloadIdentityCredentialOptions`
<a id="apc"></a>
## Troubleshoot AzurePipelinesCredential authentication issues
| Error Message |Description| Mitigation |
|---|---|---|
| AADSTS900023: Specified tenant identifier 'some tenant ID' is neither a valid DNS name, nor a valid external domain.|The `tenantID` argument to `NewAzurePipelinesCredential` is incorrect| Verify the tenant ID. It must identify the tenant of the user-assigned managed identity or service principal configured for the service connection.|
| No service connection found with identifier |The `serviceConnectionID` argument to `NewAzurePipelinesCredential` is incorrect| Verify the service connection ID. This parameter refers to the `resourceId` of the Azure Service Connection. It can also be found in the query string of the service connection's configuration in Azure DevOps. [Azure Pipelines documentation](https://learn.microsoft.com/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml) has more information about service connections.|
|302 (Found) response from OIDC endpoint|The `systemAccessToken` argument to `NewAzurePipelinesCredential` is incorrect|Check pipeline configuration. This value comes from the predefined variable `System.AccessToken` [as described in Azure Pipelines documentation](https://learn.microsoft.com/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#systemaccesstoken).|
## Get additional help
Additional information on ways to reach out for support can be found in [SUPPORT.md](https://github.com/Azure/azure-sdk-for-go/blob/main/SUPPORT.md).

View file

@ -19,21 +19,20 @@ import (
const (
credNameAzurePipelines = "AzurePipelinesCredential"
oidcAPIVersion = "7.1"
systemAccessToken = "SYSTEM_ACCESSTOKEN"
systemOIDCRequestURI = "SYSTEM_OIDCREQUESTURI"
)
// azurePipelinesCredential authenticates with workload identity federation in an Azure Pipeline. See
// AzurePipelinesCredential authenticates with workload identity federation in an Azure Pipeline. See
// [Azure Pipelines documentation] for more information.
//
// [Azure Pipelines documentation]: https://learn.microsoft.com/azure/devops/pipelines/library/connect-to-azure?view=azure-devops#create-an-azure-resource-manager-service-connection-that-uses-workload-identity-federation
type azurePipelinesCredential struct {
type AzurePipelinesCredential struct {
connectionID, oidcURI, systemAccessToken string
cred *ClientAssertionCredential
}
// azurePipelinesCredentialOptions contains optional parameters for AzurePipelinesCredential.
type azurePipelinesCredentialOptions struct {
// AzurePipelinesCredentialOptions contains optional parameters for AzurePipelinesCredential.
type AzurePipelinesCredentialOptions struct {
azcore.ClientOptions
// AdditionallyAllowedTenants specifies additional tenants for which the credential may acquire tokens.
@ -48,28 +47,39 @@ type azurePipelinesCredentialOptions struct {
DisableInstanceDiscovery bool
}
// newAzurePipelinesCredential is the constructor for AzurePipelinesCredential. In addition to its required arguments,
// it reads a security token for the running build, which is required to authenticate the service connection, from the
// environment variable SYSTEM_ACCESSTOKEN. See the [Azure Pipelines documentation] for an example showing how to set
// this variable in build job YAML.
// NewAzurePipelinesCredential is the constructor for AzurePipelinesCredential.
//
// - tenantID: tenant ID of the service principal federated with the service connection
// - clientID: client ID of that service principal
// - serviceConnectionID: ID of the service connection to authenticate
// - systemAccessToken: security token for the running build. See [Azure Pipelines documentation] for
// an example showing how to get this value.
//
// [Azure Pipelines documentation]: https://learn.microsoft.com/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#systemaccesstoken
func newAzurePipelinesCredential(tenantID, clientID, serviceConnectionID string, options *azurePipelinesCredentialOptions) (*azurePipelinesCredential, error) {
if options == nil {
options = &azurePipelinesCredentialOptions{}
func NewAzurePipelinesCredential(tenantID, clientID, serviceConnectionID, systemAccessToken string, options *AzurePipelinesCredentialOptions) (*AzurePipelinesCredential, error) {
if !validTenantID(tenantID) {
return nil, errInvalidTenantID
}
if clientID == "" {
return nil, errors.New("no client ID specified")
}
if serviceConnectionID == "" {
return nil, errors.New("no service connection ID specified")
}
if systemAccessToken == "" {
return nil, errors.New("no system access token specified")
}
u := os.Getenv(systemOIDCRequestURI)
if u == "" {
return nil, fmt.Errorf("no value for environment variable %s. This should be set by Azure Pipelines", systemOIDCRequestURI)
}
sat := os.Getenv(systemAccessToken)
if sat == "" {
return nil, errors.New("no value for environment variable " + systemAccessToken)
}
a := azurePipelinesCredential{
a := AzurePipelinesCredential{
connectionID: serviceConnectionID,
oidcURI: u,
systemAccessToken: sat,
systemAccessToken: systemAccessToken,
}
if options == nil {
options = &AzurePipelinesCredentialOptions{}
}
caco := ClientAssertionCredentialOptions{
AdditionallyAllowedTenants: options.AdditionallyAllowedTenants,
@ -86,7 +96,7 @@ func newAzurePipelinesCredential(tenantID, clientID, serviceConnectionID string,
}
// GetToken requests an access token from Microsoft Entra ID. Azure SDK clients call this method automatically.
func (a *azurePipelinesCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
func (a *AzurePipelinesCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {
var err error
ctx, endSpan := runtime.StartSpan(ctx, credNameAzurePipelines+"."+traceOpGetToken, a.cred.client.azClient.Tracer(), nil)
defer func() { endSpan(err) }()
@ -94,7 +104,7 @@ func (a *azurePipelinesCredential) GetToken(ctx context.Context, opts policy.Tok
return tk, err
}
func (a *azurePipelinesCredential) getAssertion(ctx context.Context) (string, error) {
func (a *AzurePipelinesCredential) getAssertion(ctx context.Context) (string, error) {
url := a.oidcURI + "?api-version=" + oidcAPIVersion + "&serviceConnectionId=" + a.connectionID
url, err := runtime.EncodeQueryParams(url)
if err != nil {

View file

@ -83,6 +83,8 @@ func (e *AuthenticationFailedError) Error() string {
anchor = "azure-cli"
case credNameAzureDeveloperCLI:
anchor = "azd"
case credNameAzurePipelines:
anchor = "apc"
case credNameCert:
anchor = "client-cert"
case credNameSecret:

View file

@ -14,5 +14,5 @@ const (
module = "github.com/Azure/azure-sdk-for-go/sdk/" + component
// Version is the semantic version (see http://semver.org) of this module.
version = "v1.6.0"
version = "v1.7.0"
)

View file

@ -1,5 +1,78 @@
# Release History
## 1.6.0 (2024-06-28)
### Features Added
- New value `AccessTierCold` added to enum type `AccessTier`
- New value `ExpirationActionBlock` added to enum type `ExpirationAction`
- New value `MinimumTLSVersionTLS13` added to enum type `MinimumTLSVersion`
- New value `ProvisioningStateCanceled`, `ProvisioningStateDeleting`, `ProvisioningStateFailed`, `ProvisioningStateValidateSubscriptionQuotaBegin`, `ProvisioningStateValidateSubscriptionQuotaEnd` added to enum type `ProvisioningState`
- New value `PublicNetworkAccessSecuredByPerimeter` added to enum type `PublicNetworkAccess`
- New enum type `IssueType` with values `IssueTypeConfigurationPropagationFailure`, `IssueTypeUnknown`
- New enum type `ListLocalUserIncludeParam` with values `ListLocalUserIncludeParamNfsv3`
- New enum type `NetworkSecurityPerimeterConfigurationProvisioningState` with values `NetworkSecurityPerimeterConfigurationProvisioningStateAccepted`, `NetworkSecurityPerimeterConfigurationProvisioningStateCanceled`, `NetworkSecurityPerimeterConfigurationProvisioningStateDeleting`, `NetworkSecurityPerimeterConfigurationProvisioningStateFailed`, `NetworkSecurityPerimeterConfigurationProvisioningStateSucceeded`
- New enum type `NspAccessRuleDirection` with values `NspAccessRuleDirectionInbound`, `NspAccessRuleDirectionOutbound`
- New enum type `ResourceAssociationAccessMode` with values `ResourceAssociationAccessModeAudit`, `ResourceAssociationAccessModeEnforced`, `ResourceAssociationAccessModeLearning`
- New enum type `RunResult` with values `RunResultFailed`, `RunResultSucceeded`
- New enum type `RunStatusEnum` with values `RunStatusEnumFinished`, `RunStatusEnumInProgress`
- New enum type `Severity` with values `SeverityError`, `SeverityWarning`
- New enum type `TriggerType` with values `TriggerTypeOnSchedule`, `TriggerTypeRunOnce`
- New function `*ClientFactory.NewNetworkSecurityPerimeterConfigurationsClient() *NetworkSecurityPerimeterConfigurationsClient`
- New function `*ClientFactory.NewTaskAssignmentInstancesReportClient() *TaskAssignmentInstancesReportClient`
- New function `*ClientFactory.NewTaskAssignmentsClient() *TaskAssignmentsClient`
- New function `*ClientFactory.NewTaskAssignmentsInstancesReportClient() *TaskAssignmentsInstancesReportClient`
- New function `NewTaskAssignmentInstancesReportClient(string, azcore.TokenCredential, *arm.ClientOptions) (*TaskAssignmentInstancesReportClient, error)`
- New function `*TaskAssignmentInstancesReportClient.NewListPager(string, string, string, *TaskAssignmentInstancesReportClientListOptions) *runtime.Pager[TaskAssignmentInstancesReportClientListResponse]`
- New function `NewTaskAssignmentsClient(string, azcore.TokenCredential, *arm.ClientOptions) (*TaskAssignmentsClient, error)`
- New function `*TaskAssignmentsClient.BeginCreate(context.Context, string, string, string, TaskAssignment, *TaskAssignmentsClientBeginCreateOptions) (*runtime.Poller[TaskAssignmentsClientCreateResponse], error)`
- New function `*TaskAssignmentsClient.BeginDelete(context.Context, string, string, string, *TaskAssignmentsClientBeginDeleteOptions) (*runtime.Poller[TaskAssignmentsClientDeleteResponse], error)`
- New function `*TaskAssignmentsClient.Get(context.Context, string, string, string, *TaskAssignmentsClientGetOptions) (TaskAssignmentsClientGetResponse, error)`
- New function `*TaskAssignmentsClient.NewListPager(string, string, *TaskAssignmentsClientListOptions) *runtime.Pager[TaskAssignmentsClientListResponse]`
- New function `*TaskAssignmentsClient.BeginUpdate(context.Context, string, string, string, TaskAssignmentUpdateParameters, *TaskAssignmentsClientBeginUpdateOptions) (*runtime.Poller[TaskAssignmentsClientUpdateResponse], error)`
- New function `NewTaskAssignmentsInstancesReportClient(string, azcore.TokenCredential, *arm.ClientOptions) (*TaskAssignmentsInstancesReportClient, error)`
- New function `*TaskAssignmentsInstancesReportClient.NewListPager(string, string, *TaskAssignmentsInstancesReportClientListOptions) *runtime.Pager[TaskAssignmentsInstancesReportClientListResponse]`
- New function `NewNetworkSecurityPerimeterConfigurationsClient(string, azcore.TokenCredential, *arm.ClientOptions) (*NetworkSecurityPerimeterConfigurationsClient, error)`
- New function `*NetworkSecurityPerimeterConfigurationsClient.Get(context.Context, string, string, string, *NetworkSecurityPerimeterConfigurationsClientGetOptions) (NetworkSecurityPerimeterConfigurationsClientGetResponse, error)`
- New function `*NetworkSecurityPerimeterConfigurationsClient.NewListPager(string, string, *NetworkSecurityPerimeterConfigurationsClientListOptions) *runtime.Pager[NetworkSecurityPerimeterConfigurationsClientListResponse]`
- New function `*NetworkSecurityPerimeterConfigurationsClient.BeginReconcile(context.Context, string, string, string, *NetworkSecurityPerimeterConfigurationsClientBeginReconcileOptions) (*runtime.Poller[NetworkSecurityPerimeterConfigurationsClientReconcileResponse], error)`
- New struct `ExecutionTarget`
- New struct `ExecutionTrigger`
- New struct `ExecutionTriggerUpdate`
- New struct `NetworkSecurityPerimeter`
- New struct `NetworkSecurityPerimeterConfiguration`
- New struct `NetworkSecurityPerimeterConfigurationList`
- New struct `NetworkSecurityPerimeterConfigurationProperties`
- New struct `NetworkSecurityPerimeterConfigurationPropertiesProfile`
- New struct `NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation`
- New struct `NspAccessRule`
- New struct `NspAccessRuleProperties`
- New struct `NspAccessRulePropertiesSubscriptionsItem`
- New struct `ProvisioningIssue`
- New struct `ProvisioningIssueProperties`
- New struct `ProxyResourceAutoGenerated`
- New struct `ResourceAutoGenerated`
- New struct `TaskAssignment`
- New struct `TaskAssignmentExecutionContext`
- New struct `TaskAssignmentProperties`
- New struct `TaskAssignmentReport`
- New struct `TaskAssignmentUpdateExecutionContext`
- New struct `TaskAssignmentUpdateParameters`
- New struct `TaskAssignmentUpdateProperties`
- New struct `TaskAssignmentUpdateReport`
- New struct `TaskAssignmentsList`
- New struct `TaskReportInstance`
- New struct `TaskReportProperties`
- New struct `TaskReportSummary`
- New struct `TriggerParameters`
- New struct `TriggerParametersUpdate`
- New field `EnableExtendedGroups` in struct `AccountProperties`
- New field `EnableExtendedGroups` in struct `AccountPropertiesCreateParameters`
- New field `EnableExtendedGroups` in struct `AccountPropertiesUpdateParameters`
- New field `AllowACLAuthorization`, `ExtendedGroups`, `GroupID`, `IsNFSv3Enabled`, `UserID` in struct `LocalUserProperties`
- New field `NextLink` in struct `LocalUsers`
- New field `Filter`, `Include`, `Maxpagesize` in struct `LocalUsersClientListOptions`
## 1.5.0 (2023-11-24)
### Features Added

View file

@ -46,7 +46,7 @@ func NewAccountsClient(subscriptionID string, credential azcore.TokenCredential,
// BeginAbortHierarchicalNamespaceMigration - Abort live Migration of storage account to enable Hns
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -73,7 +73,7 @@ func (client *AccountsClient) BeginAbortHierarchicalNamespaceMigration(ctx conte
// AbortHierarchicalNamespaceMigration - Abort live Migration of storage account to enable Hns
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
func (client *AccountsClient) abortHierarchicalNamespaceMigration(ctx context.Context, resourceGroupName string, accountName string, options *AccountsClientBeginAbortHierarchicalNamespaceMigrationOptions) (*http.Response, error) {
var err error
const operationName = "AccountsClient.BeginAbortHierarchicalNamespaceMigration"
@ -115,7 +115,7 @@ func (client *AccountsClient) abortHierarchicalNamespaceMigrationCreateRequest(c
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -124,7 +124,7 @@ func (client *AccountsClient) abortHierarchicalNamespaceMigrationCreateRequest(c
// CheckNameAvailability - Checks that the storage account name is valid and is not already in use.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
// - options - AccountsClientCheckNameAvailabilityOptions contains the optional parameters for the AccountsClient.CheckNameAvailability
@ -163,7 +163,7 @@ func (client *AccountsClient) checkNameAvailabilityCreateRequest(ctx context.Con
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, accountName); err != nil {
@ -187,7 +187,7 @@ func (client *AccountsClient) checkNameAvailabilityHandleResponse(resp *http.Res
// set of properties, the request will succeed.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -216,7 +216,7 @@ func (client *AccountsClient) BeginCreate(ctx context.Context, resourceGroupName
// set of properties, the request will succeed.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
func (client *AccountsClient) create(ctx context.Context, resourceGroupName string, accountName string, parameters AccountCreateParameters, options *AccountsClientBeginCreateOptions) (*http.Response, error) {
var err error
const operationName = "AccountsClient.BeginCreate"
@ -258,7 +258,7 @@ func (client *AccountsClient) createCreateRequest(ctx context.Context, resourceG
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, parameters); err != nil {
@ -273,7 +273,7 @@ func (client *AccountsClient) createCreateRequest(ctx context.Context, resourceG
// synchronously across three Azure availability zones in the primary region.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -304,7 +304,7 @@ func (client *AccountsClient) BeginCustomerInitiatedMigration(ctx context.Contex
// synchronously across three Azure availability zones in the primary region.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
func (client *AccountsClient) customerInitiatedMigration(ctx context.Context, resourceGroupName string, accountName string, parameters AccountMigration, options *AccountsClientBeginCustomerInitiatedMigrationOptions) (*http.Response, error) {
var err error
const operationName = "AccountsClient.BeginCustomerInitiatedMigration"
@ -346,7 +346,7 @@ func (client *AccountsClient) customerInitiatedMigrationCreateRequest(ctx contex
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, parameters); err != nil {
@ -358,7 +358,7 @@ func (client *AccountsClient) customerInitiatedMigrationCreateRequest(ctx contex
// Delete - Deletes a storage account in Microsoft Azure.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -404,7 +404,7 @@ func (client *AccountsClient) deleteCreateRequest(ctx context.Context, resourceG
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
return req, nil
}
@ -420,7 +420,7 @@ func (client *AccountsClient) deleteCreateRequest(ctx context.Context, resourceG
// 'Planned'. Learn more about the failover options here- https://learn.microsoft.com/en-us/azure/storage/common/storage-disaster-recovery-guidance
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -454,7 +454,7 @@ func (client *AccountsClient) BeginFailover(ctx context.Context, resourceGroupNa
// 'Planned'. Learn more about the failover options here- https://learn.microsoft.com/en-us/azure/storage/common/storage-disaster-recovery-guidance
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
func (client *AccountsClient) failover(ctx context.Context, resourceGroupName string, accountName string, options *AccountsClientBeginFailoverOptions) (*http.Response, error) {
var err error
const operationName = "AccountsClient.BeginFailover"
@ -496,7 +496,7 @@ func (client *AccountsClient) failoverCreateRequest(ctx context.Context, resourc
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
if options != nil && options.FailoverType != nil {
reqQP.Set("failoverType", "Planned")
}
@ -507,7 +507,7 @@ func (client *AccountsClient) failoverCreateRequest(ctx context.Context, resourc
// GetCustomerInitiatedMigration - Gets the status of the ongoing migration for the specified storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -560,7 +560,7 @@ func (client *AccountsClient) getCustomerInitiatedMigrationCreateRequest(ctx con
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -579,7 +579,7 @@ func (client *AccountsClient) getCustomerInitiatedMigrationHandleResponse(resp *
// and account status. The ListKeys operation should be used to retrieve storage keys.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -626,10 +626,10 @@ func (client *AccountsClient) getPropertiesCreateRequest(ctx context.Context, re
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
if options != nil && options.Expand != nil {
reqQP.Set("$expand", string(*options.Expand))
}
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -647,7 +647,7 @@ func (client *AccountsClient) getPropertiesHandleResponse(resp *http.Response) (
// BeginHierarchicalNamespaceMigration - Live Migration of storage account to enable Hns
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -677,7 +677,7 @@ func (client *AccountsClient) BeginHierarchicalNamespaceMigration(ctx context.Co
// HierarchicalNamespaceMigration - Live Migration of storage account to enable Hns
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
func (client *AccountsClient) hierarchicalNamespaceMigration(ctx context.Context, resourceGroupName string, accountName string, requestType string, options *AccountsClientBeginHierarchicalNamespaceMigrationOptions) (*http.Response, error) {
var err error
const operationName = "AccountsClient.BeginHierarchicalNamespaceMigration"
@ -719,7 +719,7 @@ func (client *AccountsClient) hierarchicalNamespaceMigrationCreateRequest(ctx co
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
reqQP.Set("requestType", requestType)
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
@ -729,7 +729,7 @@ func (client *AccountsClient) hierarchicalNamespaceMigrationCreateRequest(ctx co
// NewListPager - Lists all the storage accounts available under the subscription. Note that storage keys are not returned;
// use the ListKeys operation for this.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - options - AccountsClientListOptions contains the optional parameters for the AccountsClient.NewListPager method.
func (client *AccountsClient) NewListPager(options *AccountsClientListOptions) *runtime.Pager[AccountsClientListResponse] {
return runtime.NewPager(runtime.PagingHandler[AccountsClientListResponse]{
@ -766,7 +766,7 @@ func (client *AccountsClient) listCreateRequest(ctx context.Context, options *Ac
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -784,7 +784,7 @@ func (client *AccountsClient) listHandleResponse(resp *http.Response) (AccountsC
// ListAccountSAS - List SAS credentials of a storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -832,7 +832,7 @@ func (client *AccountsClient) listAccountSASCreateRequest(ctx context.Context, r
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, parameters); err != nil {
@ -853,7 +853,7 @@ func (client *AccountsClient) listAccountSASHandleResponse(resp *http.Response)
// NewListByResourceGroupPager - Lists all the storage accounts available under the given resource group. Note that storage
// keys are not returned; use the ListKeys operation for this.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - options - AccountsClientListByResourceGroupOptions contains the optional parameters for the AccountsClient.NewListByResourceGroupPager
// method.
@ -896,7 +896,7 @@ func (client *AccountsClient) listByResourceGroupCreateRequest(ctx context.Conte
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -914,7 +914,7 @@ func (client *AccountsClient) listByResourceGroupHandleResponse(resp *http.Respo
// ListKeys - Lists the access keys or Kerberos keys (if active directory enabled) for the specified storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -961,10 +961,10 @@ func (client *AccountsClient) listKeysCreateRequest(ctx context.Context, resourc
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
if options != nil && options.Expand != nil {
reqQP.Set("$expand", "kerb")
}
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -982,7 +982,7 @@ func (client *AccountsClient) listKeysHandleResponse(resp *http.Response) (Accou
// ListServiceSAS - List service SAS credentials of a specific resource.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -1030,7 +1030,7 @@ func (client *AccountsClient) listServiceSASCreateRequest(ctx context.Context, r
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, parameters); err != nil {
@ -1051,7 +1051,7 @@ func (client *AccountsClient) listServiceSASHandleResponse(resp *http.Response)
// RegenerateKey - Regenerates one of the access keys or Kerberos keys for the specified storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -1099,7 +1099,7 @@ func (client *AccountsClient) regenerateKeyCreateRequest(ctx context.Context, re
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, regenerateKey); err != nil {
@ -1120,7 +1120,7 @@ func (client *AccountsClient) regenerateKeyHandleResponse(resp *http.Response) (
// BeginRestoreBlobRanges - Restore blobs in the specified blob ranges
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -1148,7 +1148,7 @@ func (client *AccountsClient) BeginRestoreBlobRanges(ctx context.Context, resour
// RestoreBlobRanges - Restore blobs in the specified blob ranges
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
func (client *AccountsClient) restoreBlobRanges(ctx context.Context, resourceGroupName string, accountName string, parameters BlobRestoreParameters, options *AccountsClientBeginRestoreBlobRangesOptions) (*http.Response, error) {
var err error
const operationName = "AccountsClient.BeginRestoreBlobRanges"
@ -1190,7 +1190,7 @@ func (client *AccountsClient) restoreBlobRangesCreateRequest(ctx context.Context
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, parameters); err != nil {
@ -1202,7 +1202,7 @@ func (client *AccountsClient) restoreBlobRangesCreateRequest(ctx context.Context
// RevokeUserDelegationKeys - Revoke user delegation keys.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -1249,7 +1249,7 @@ func (client *AccountsClient) revokeUserDelegationKeysCreateRequest(ctx context.
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
return req, nil
}
@ -1263,7 +1263,7 @@ func (client *AccountsClient) revokeUserDelegationKeysCreateRequest(ctx context.
// location and name of the storage account cannot be changed after creation.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -1311,7 +1311,7 @@ func (client *AccountsClient) updateCreateRequest(ctx context.Context, resourceG
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, parameters); err != nil {

View file

@ -2,5 +2,5 @@
"AssetsRepo": "Azure/azure-sdk-assets",
"AssetsRepoPrefixPath": "go",
"TagPrefix": "go/resourcemanager/storage/armstorage",
"Tag": "go/resourcemanager/storage/armstorage_c9d59e874d"
"Tag": "go/resourcemanager/storage/armstorage_a26d68f572"
}

View file

@ -5,11 +5,11 @@
``` yaml
azure-arm: true
require:
- https://github.com/Azure/azure-rest-api-specs/blob/0baf811c3c76c87b3c127d098519bd97141222dd/specification/storage/resource-manager/readme.md
- https://github.com/Azure/azure-rest-api-specs/blob/0baf811c3c76c87b3c127d098519bd97141222dd/specification/storage/resource-manager/readme.go.md
- https://github.com/Azure/azure-rest-api-specs/blob/220ad9c6554fc7d6d10a89bdb441c1e3b36e3285/specification/storage/resource-manager/readme.md
- https://github.com/Azure/azure-rest-api-specs/blob/220ad9c6554fc7d6d10a89bdb441c1e3b36e3285/specification/storage/resource-manager/readme.go.md
license-header: MICROSOFT_MIT_NO_VERSION
module-version: 1.5.0
module-version: 1.6.0
modelerfour:
seal-single-value-enum-by-default: true
tag: package-2023-01
tag: package-2023-05
```

View file

@ -47,7 +47,7 @@ func NewBlobContainersClient(subscriptionID string, credential azcore.TokenCrede
// clears out only the specified tags in the request.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -103,7 +103,7 @@ func (client *BlobContainersClient) clearLegalHoldCreateRequest(ctx context.Cont
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, legalHold); err != nil {
@ -126,7 +126,7 @@ func (client *BlobContainersClient) clearLegalHoldHandleResponse(resp *http.Resp
// contained by the container.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -181,7 +181,7 @@ func (client *BlobContainersClient) createCreateRequest(ctx context.Context, res
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, blobContainer); err != nil {
@ -203,7 +203,7 @@ func (client *BlobContainersClient) createHandleResponse(resp *http.Response) (B
// but not required for this operation.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -259,12 +259,12 @@ func (client *BlobContainersClient) createOrUpdateImmutabilityPolicyCreateReques
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if options != nil && options.IfMatch != nil {
req.Raw().Header["If-Match"] = []string{*options.IfMatch}
}
req.Raw().Header["Accept"] = []string{"application/json"}
if options != nil && options.Parameters != nil {
if err := runtime.MarshalAsJSON(req, *options.Parameters); err != nil {
return nil, err
@ -289,7 +289,7 @@ func (client *BlobContainersClient) createOrUpdateImmutabilityPolicyHandleRespon
// Delete - Deletes specified container under its account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -342,7 +342,7 @@ func (client *BlobContainersClient) deleteCreateRequest(ctx context.Context, res
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
return req, nil
}
@ -353,7 +353,7 @@ func (client *BlobContainersClient) deleteCreateRequest(ctx context.Context, res
// container.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -412,10 +412,10 @@ func (client *BlobContainersClient) deleteImmutabilityPolicyCreateRequest(ctx co
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["If-Match"] = []string{ifMatch}
req.Raw().Header["Accept"] = []string{"application/json"}
req.Raw().Header["If-Match"] = []string{ifMatch}
return req, nil
}
@ -435,7 +435,7 @@ func (client *BlobContainersClient) deleteImmutabilityPolicyHandleResponse(resp
// allowed on a Locked policy will be this action. ETag in If-Match is required for this operation.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -493,10 +493,10 @@ func (client *BlobContainersClient) extendImmutabilityPolicyCreateRequest(ctx co
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["If-Match"] = []string{ifMatch}
req.Raw().Header["Accept"] = []string{"application/json"}
req.Raw().Header["If-Match"] = []string{ifMatch}
if options != nil && options.Parameters != nil {
if err := runtime.MarshalAsJSON(req, *options.Parameters); err != nil {
return nil, err
@ -521,7 +521,7 @@ func (client *BlobContainersClient) extendImmutabilityPolicyHandleResponse(resp
// Get - Gets properties of a specified container.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -575,7 +575,7 @@ func (client *BlobContainersClient) getCreateRequest(ctx context.Context, resour
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -594,7 +594,7 @@ func (client *BlobContainersClient) getHandleResponse(resp *http.Response) (Blob
// body.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -650,12 +650,12 @@ func (client *BlobContainersClient) getImmutabilityPolicyCreateRequest(ctx conte
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if options != nil && options.IfMatch != nil {
req.Raw().Header["If-Match"] = []string{*options.IfMatch}
}
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
}
@ -675,7 +675,7 @@ func (client *BlobContainersClient) getImmutabilityPolicyHandleResponse(resp *ht
// can be 15 to 60 seconds, or can be infinite.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -729,7 +729,7 @@ func (client *BlobContainersClient) leaseCreateRequest(ctx context.Context, reso
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if options != nil && options.Parameters != nil {
@ -753,7 +753,7 @@ func (client *BlobContainersClient) leaseHandleResponse(resp *http.Response) (Bl
// NewListPager - Lists all containers and does not support a prefix like data plane. Also SRP today does not return continuation
// token.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -801,16 +801,16 @@ func (client *BlobContainersClient) listCreateRequest(ctx context.Context, resou
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
if options != nil && options.Maxpagesize != nil {
reqQP.Set("$maxpagesize", *options.Maxpagesize)
}
if options != nil && options.Filter != nil {
reqQP.Set("$filter", *options.Filter)
}
if options != nil && options.Include != nil {
reqQP.Set("$include", string(*options.Include))
}
if options != nil && options.Maxpagesize != nil {
reqQP.Set("$maxpagesize", *options.Maxpagesize)
}
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -829,7 +829,7 @@ func (client *BlobContainersClient) listHandleResponse(resp *http.Response) (Blo
// action. ETag in If-Match is required for this operation.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -887,10 +887,10 @@ func (client *BlobContainersClient) lockImmutabilityPolicyCreateRequest(ctx cont
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["If-Match"] = []string{ifMatch}
req.Raw().Header["Accept"] = []string{"application/json"}
req.Raw().Header["If-Match"] = []string{ifMatch}
return req, nil
}
@ -911,7 +911,7 @@ func (client *BlobContainersClient) lockImmutabilityPolicyHandleResponse(resp *h
// unlocked state, Account level versioning must be enabled and there should be no Legal hold on the container.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -943,7 +943,7 @@ func (client *BlobContainersClient) BeginObjectLevelWorm(ctx context.Context, re
// unlocked state, Account level versioning must be enabled and there should be no Legal hold on the container.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
func (client *BlobContainersClient) objectLevelWorm(ctx context.Context, resourceGroupName string, accountName string, containerName string, options *BlobContainersClientBeginObjectLevelWormOptions) (*http.Response, error) {
var err error
const operationName = "BlobContainersClient.BeginObjectLevelWorm"
@ -989,7 +989,7 @@ func (client *BlobContainersClient) objectLevelWormCreateRequest(ctx context.Con
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -999,7 +999,7 @@ func (client *BlobContainersClient) objectLevelWormCreateRequest(ctx context.Con
// pattern and does not clear out the existing tags that are not specified in the request.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -1055,7 +1055,7 @@ func (client *BlobContainersClient) setLegalHoldCreateRequest(ctx context.Contex
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, legalHold); err != nil {
@ -1077,7 +1077,7 @@ func (client *BlobContainersClient) setLegalHoldHandleResponse(resp *http.Respon
// Update fails if the specified container doesn't already exist.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -1132,7 +1132,7 @@ func (client *BlobContainersClient) updateCreateRequest(ctx context.Context, res
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, blobContainer); err != nil {

View file

@ -46,7 +46,7 @@ func NewBlobInventoryPoliciesClient(subscriptionID string, credential azcore.Tok
// CreateOrUpdate - Sets the blob inventory policy to the specified storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -100,7 +100,7 @@ func (client *BlobInventoryPoliciesClient) createOrUpdateCreateRequest(ctx conte
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, properties); err != nil {
@ -121,7 +121,7 @@ func (client *BlobInventoryPoliciesClient) createOrUpdateHandleResponse(resp *ht
// Delete - Deletes the blob inventory policy associated with the specified storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -173,7 +173,7 @@ func (client *BlobInventoryPoliciesClient) deleteCreateRequest(ctx context.Conte
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -182,7 +182,7 @@ func (client *BlobInventoryPoliciesClient) deleteCreateRequest(ctx context.Conte
// Get - Gets the blob inventory policy associated with the specified storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -235,7 +235,7 @@ func (client *BlobInventoryPoliciesClient) getCreateRequest(ctx context.Context,
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -252,7 +252,7 @@ func (client *BlobInventoryPoliciesClient) getHandleResponse(resp *http.Response
// NewListPager - Gets the blob inventory policy associated with the specified storage account.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -302,7 +302,7 @@ func (client *BlobInventoryPoliciesClient) listCreateRequest(ctx context.Context
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil

View file

@ -47,7 +47,7 @@ func NewBlobServicesClient(subscriptionID string, credential azcore.TokenCredent
// and CORS (Cross-Origin Resource Sharing) rules.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -96,7 +96,7 @@ func (client *BlobServicesClient) getServicePropertiesCreateRequest(ctx context.
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -113,7 +113,7 @@ func (client *BlobServicesClient) getServicePropertiesHandleResponse(resp *http.
// NewListPager - List blob services of storage account. It returns a collection of one object named default.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -162,7 +162,7 @@ func (client *BlobServicesClient) listCreateRequest(ctx context.Context, resourc
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -181,7 +181,7 @@ func (client *BlobServicesClient) listHandleResponse(resp *http.Response) (BlobS
// and CORS (Cross-Origin Resource Sharing) rules.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -232,7 +232,7 @@ func (client *BlobServicesClient) setServicePropertiesCreateRequest(ctx context.
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, parameters); err != nil {

View file

@ -21,8 +21,9 @@ pr:
include:
- sdk/resourcemanager/storage/armstorage/
stages:
- template: /eng/pipelines/templates/jobs/archetype-sdk-client.yml
extends:
template: /eng/pipelines/templates/jobs/archetype-sdk-client.yml
parameters:
IncludeRelease: true
ServiceDirectory: 'resourcemanager/storage/armstorage'
UsePipelineProxy: false

View file

@ -17,8 +17,7 @@ import (
// Don't use this type directly, use NewClientFactory instead.
type ClientFactory struct {
subscriptionID string
credential azcore.TokenCredential
options *arm.ClientOptions
internal *arm.Client
}
// NewClientFactory creates a new instance of ClientFactory with the specified values.
@ -27,132 +26,203 @@ type ClientFactory struct {
// - credential - used to authorize requests. Usually a credential from azidentity.
// - options - pass nil to accept the default values.
func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ClientFactory, error) {
_, err := arm.NewClient(moduleName, moduleVersion, credential, options)
internal, err := arm.NewClient(moduleName, moduleVersion, credential, options)
if err != nil {
return nil, err
}
return &ClientFactory{
subscriptionID: subscriptionID, credential: credential,
options: options.Clone(),
subscriptionID: subscriptionID,
internal: internal,
}, nil
}
// NewAccountsClient creates a new instance of AccountsClient.
func (c *ClientFactory) NewAccountsClient() *AccountsClient {
subClient, _ := NewAccountsClient(c.subscriptionID, c.credential, c.options)
return subClient
return &AccountsClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewBlobContainersClient creates a new instance of BlobContainersClient.
func (c *ClientFactory) NewBlobContainersClient() *BlobContainersClient {
subClient, _ := NewBlobContainersClient(c.subscriptionID, c.credential, c.options)
return subClient
return &BlobContainersClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewBlobInventoryPoliciesClient creates a new instance of BlobInventoryPoliciesClient.
func (c *ClientFactory) NewBlobInventoryPoliciesClient() *BlobInventoryPoliciesClient {
subClient, _ := NewBlobInventoryPoliciesClient(c.subscriptionID, c.credential, c.options)
return subClient
return &BlobInventoryPoliciesClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewBlobServicesClient creates a new instance of BlobServicesClient.
func (c *ClientFactory) NewBlobServicesClient() *BlobServicesClient {
subClient, _ := NewBlobServicesClient(c.subscriptionID, c.credential, c.options)
return subClient
return &BlobServicesClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewDeletedAccountsClient creates a new instance of DeletedAccountsClient.
func (c *ClientFactory) NewDeletedAccountsClient() *DeletedAccountsClient {
subClient, _ := NewDeletedAccountsClient(c.subscriptionID, c.credential, c.options)
return subClient
return &DeletedAccountsClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewEncryptionScopesClient creates a new instance of EncryptionScopesClient.
func (c *ClientFactory) NewEncryptionScopesClient() *EncryptionScopesClient {
subClient, _ := NewEncryptionScopesClient(c.subscriptionID, c.credential, c.options)
return subClient
return &EncryptionScopesClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewFileServicesClient creates a new instance of FileServicesClient.
func (c *ClientFactory) NewFileServicesClient() *FileServicesClient {
subClient, _ := NewFileServicesClient(c.subscriptionID, c.credential, c.options)
return subClient
return &FileServicesClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewFileSharesClient creates a new instance of FileSharesClient.
func (c *ClientFactory) NewFileSharesClient() *FileSharesClient {
subClient, _ := NewFileSharesClient(c.subscriptionID, c.credential, c.options)
return subClient
return &FileSharesClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewLocalUsersClient creates a new instance of LocalUsersClient.
func (c *ClientFactory) NewLocalUsersClient() *LocalUsersClient {
subClient, _ := NewLocalUsersClient(c.subscriptionID, c.credential, c.options)
return subClient
return &LocalUsersClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewManagementPoliciesClient creates a new instance of ManagementPoliciesClient.
func (c *ClientFactory) NewManagementPoliciesClient() *ManagementPoliciesClient {
subClient, _ := NewManagementPoliciesClient(c.subscriptionID, c.credential, c.options)
return subClient
return &ManagementPoliciesClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewNetworkSecurityPerimeterConfigurationsClient creates a new instance of NetworkSecurityPerimeterConfigurationsClient.
func (c *ClientFactory) NewNetworkSecurityPerimeterConfigurationsClient() *NetworkSecurityPerimeterConfigurationsClient {
return &NetworkSecurityPerimeterConfigurationsClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewObjectReplicationPoliciesClient creates a new instance of ObjectReplicationPoliciesClient.
func (c *ClientFactory) NewObjectReplicationPoliciesClient() *ObjectReplicationPoliciesClient {
subClient, _ := NewObjectReplicationPoliciesClient(c.subscriptionID, c.credential, c.options)
return subClient
return &ObjectReplicationPoliciesClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewOperationsClient creates a new instance of OperationsClient.
func (c *ClientFactory) NewOperationsClient() *OperationsClient {
subClient, _ := NewOperationsClient(c.credential, c.options)
return subClient
return &OperationsClient{
internal: c.internal,
}
}
// NewPrivateEndpointConnectionsClient creates a new instance of PrivateEndpointConnectionsClient.
func (c *ClientFactory) NewPrivateEndpointConnectionsClient() *PrivateEndpointConnectionsClient {
subClient, _ := NewPrivateEndpointConnectionsClient(c.subscriptionID, c.credential, c.options)
return subClient
return &PrivateEndpointConnectionsClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewPrivateLinkResourcesClient creates a new instance of PrivateLinkResourcesClient.
func (c *ClientFactory) NewPrivateLinkResourcesClient() *PrivateLinkResourcesClient {
subClient, _ := NewPrivateLinkResourcesClient(c.subscriptionID, c.credential, c.options)
return subClient
return &PrivateLinkResourcesClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewQueueClient creates a new instance of QueueClient.
func (c *ClientFactory) NewQueueClient() *QueueClient {
subClient, _ := NewQueueClient(c.subscriptionID, c.credential, c.options)
return subClient
return &QueueClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewQueueServicesClient creates a new instance of QueueServicesClient.
func (c *ClientFactory) NewQueueServicesClient() *QueueServicesClient {
subClient, _ := NewQueueServicesClient(c.subscriptionID, c.credential, c.options)
return subClient
return &QueueServicesClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewSKUsClient creates a new instance of SKUsClient.
func (c *ClientFactory) NewSKUsClient() *SKUsClient {
subClient, _ := NewSKUsClient(c.subscriptionID, c.credential, c.options)
return subClient
return &SKUsClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewTableClient creates a new instance of TableClient.
func (c *ClientFactory) NewTableClient() *TableClient {
subClient, _ := NewTableClient(c.subscriptionID, c.credential, c.options)
return subClient
return &TableClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewTableServicesClient creates a new instance of TableServicesClient.
func (c *ClientFactory) NewTableServicesClient() *TableServicesClient {
subClient, _ := NewTableServicesClient(c.subscriptionID, c.credential, c.options)
return subClient
return &TableServicesClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewTaskAssignmentInstancesReportClient creates a new instance of TaskAssignmentInstancesReportClient.
func (c *ClientFactory) NewTaskAssignmentInstancesReportClient() *TaskAssignmentInstancesReportClient {
return &TaskAssignmentInstancesReportClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewTaskAssignmentsClient creates a new instance of TaskAssignmentsClient.
func (c *ClientFactory) NewTaskAssignmentsClient() *TaskAssignmentsClient {
return &TaskAssignmentsClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewTaskAssignmentsInstancesReportClient creates a new instance of TaskAssignmentsInstancesReportClient.
func (c *ClientFactory) NewTaskAssignmentsInstancesReportClient() *TaskAssignmentsInstancesReportClient {
return &TaskAssignmentsInstancesReportClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}
// NewUsagesClient creates a new instance of UsagesClient.
func (c *ClientFactory) NewUsagesClient() *UsagesClient {
subClient, _ := NewUsagesClient(c.subscriptionID, c.credential, c.options)
return subClient
return &UsagesClient{
subscriptionID: c.subscriptionID,
internal: c.internal,
}
}

View file

@ -10,7 +10,7 @@ package armstorage
const (
moduleName = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage"
moduleVersion = "v1.5.0"
moduleVersion = "v1.6.0"
)
// AccessTier - Required for storage accounts where kind = BlobStorage. The access tier is used for billing. The 'Premium'
@ -19,6 +19,7 @@ const (
type AccessTier string
const (
AccessTierCold AccessTier = "Cold"
AccessTierCool AccessTier = "Cool"
AccessTierHot AccessTier = "Hot"
AccessTierPremium AccessTier = "Premium"
@ -27,6 +28,7 @@ const (
// PossibleAccessTierValues returns the possible values for the AccessTier const type.
func PossibleAccessTierValues() []AccessTier {
return []AccessTier{
AccessTierCold,
AccessTierCool,
AccessTierHot,
AccessTierPremium,
@ -331,16 +333,20 @@ func PossibleEncryptionScopeStateValues() []EncryptionScopeState {
}
}
// ExpirationAction - The SAS expiration action. Can only be Log.
// ExpirationAction - The SAS Expiration Action defines the action to be performed when sasPolicy.sasExpirationPeriod is violated.
// The 'Log' action can be used for audit purposes and the 'Block' action can be used to block
// and deny the usage of SAS tokens that do not adhere to the sas policy expiration period.
type ExpirationAction string
const (
ExpirationActionLog ExpirationAction = "Log"
ExpirationActionBlock ExpirationAction = "Block"
ExpirationActionLog ExpirationAction = "Log"
)
// PossibleExpirationActionValues returns the possible values for the ExpirationAction const type.
func PossibleExpirationActionValues() []ExpirationAction {
return []ExpirationAction{
ExpirationActionBlock,
ExpirationActionLog,
}
}
@ -481,6 +487,22 @@ func PossibleInventoryRuleTypeValues() []InventoryRuleType {
}
}
// IssueType - Type of issue
type IssueType string
const (
IssueTypeConfigurationPropagationFailure IssueType = "ConfigurationPropagationFailure"
IssueTypeUnknown IssueType = "Unknown"
)
// PossibleIssueTypeValues returns the possible values for the IssueType const type.
func PossibleIssueTypeValues() []IssueType {
return []IssueType{
IssueTypeConfigurationPropagationFailure,
IssueTypeUnknown,
}
}
// KeyPermission - Permissions for the key -- read-only or full permissions.
type KeyPermission string
@ -697,6 +719,19 @@ func PossibleListEncryptionScopesIncludeValues() []ListEncryptionScopesInclude {
}
}
type ListLocalUserIncludeParam string
const (
ListLocalUserIncludeParamNfsv3 ListLocalUserIncludeParam = "nfsv3"
)
// PossibleListLocalUserIncludeParamValues returns the possible values for the ListLocalUserIncludeParam const type.
func PossibleListLocalUserIncludeParamValues() []ListLocalUserIncludeParam {
return []ListLocalUserIncludeParam{
ListLocalUserIncludeParamNfsv3,
}
}
type ManagementPolicyName string
const (
@ -769,6 +804,7 @@ const (
MinimumTLSVersionTLS10 MinimumTLSVersion = "TLS1_0"
MinimumTLSVersionTLS11 MinimumTLSVersion = "TLS1_1"
MinimumTLSVersionTLS12 MinimumTLSVersion = "TLS1_2"
MinimumTLSVersionTLS13 MinimumTLSVersion = "TLS1_3"
)
// PossibleMinimumTLSVersionValues returns the possible values for the MinimumTLSVersion const type.
@ -777,6 +813,7 @@ func PossibleMinimumTLSVersionValues() []MinimumTLSVersion {
MinimumTLSVersionTLS10,
MinimumTLSVersionTLS11,
MinimumTLSVersionTLS12,
MinimumTLSVersionTLS13,
}
}
@ -794,6 +831,45 @@ func PossibleNameValues() []Name {
}
}
// NetworkSecurityPerimeterConfigurationProvisioningState - Provisioning state of Network Security Perimeter configuration
// propagation
type NetworkSecurityPerimeterConfigurationProvisioningState string
const (
NetworkSecurityPerimeterConfigurationProvisioningStateAccepted NetworkSecurityPerimeterConfigurationProvisioningState = "Accepted"
NetworkSecurityPerimeterConfigurationProvisioningStateCanceled NetworkSecurityPerimeterConfigurationProvisioningState = "Canceled"
NetworkSecurityPerimeterConfigurationProvisioningStateDeleting NetworkSecurityPerimeterConfigurationProvisioningState = "Deleting"
NetworkSecurityPerimeterConfigurationProvisioningStateFailed NetworkSecurityPerimeterConfigurationProvisioningState = "Failed"
NetworkSecurityPerimeterConfigurationProvisioningStateSucceeded NetworkSecurityPerimeterConfigurationProvisioningState = "Succeeded"
)
// PossibleNetworkSecurityPerimeterConfigurationProvisioningStateValues returns the possible values for the NetworkSecurityPerimeterConfigurationProvisioningState const type.
func PossibleNetworkSecurityPerimeterConfigurationProvisioningStateValues() []NetworkSecurityPerimeterConfigurationProvisioningState {
return []NetworkSecurityPerimeterConfigurationProvisioningState{
NetworkSecurityPerimeterConfigurationProvisioningStateAccepted,
NetworkSecurityPerimeterConfigurationProvisioningStateCanceled,
NetworkSecurityPerimeterConfigurationProvisioningStateDeleting,
NetworkSecurityPerimeterConfigurationProvisioningStateFailed,
NetworkSecurityPerimeterConfigurationProvisioningStateSucceeded,
}
}
// NspAccessRuleDirection - Direction of Access Rule
type NspAccessRuleDirection string
const (
NspAccessRuleDirectionInbound NspAccessRuleDirection = "Inbound"
NspAccessRuleDirectionOutbound NspAccessRuleDirection = "Outbound"
)
// PossibleNspAccessRuleDirectionValues returns the possible values for the NspAccessRuleDirection const type.
func PossibleNspAccessRuleDirectionValues() []NspAccessRuleDirection {
return []NspAccessRuleDirection{
NspAccessRuleDirectionInbound,
NspAccessRuleDirectionOutbound,
}
}
// ObjectType - This is a required field. This field specifies the scope of the inventory created either at the blob or container
// level.
type ObjectType string
@ -918,17 +994,27 @@ func PossiblePrivateEndpointServiceConnectionStatusValues() []PrivateEndpointSer
type ProvisioningState string
const (
ProvisioningStateCreating ProvisioningState = "Creating"
ProvisioningStateResolvingDNS ProvisioningState = "ResolvingDNS"
ProvisioningStateSucceeded ProvisioningState = "Succeeded"
ProvisioningStateCanceled ProvisioningState = "Canceled"
ProvisioningStateCreating ProvisioningState = "Creating"
ProvisioningStateDeleting ProvisioningState = "Deleting"
ProvisioningStateFailed ProvisioningState = "Failed"
ProvisioningStateResolvingDNS ProvisioningState = "ResolvingDNS"
ProvisioningStateSucceeded ProvisioningState = "Succeeded"
ProvisioningStateValidateSubscriptionQuotaBegin ProvisioningState = "ValidateSubscriptionQuotaBegin"
ProvisioningStateValidateSubscriptionQuotaEnd ProvisioningState = "ValidateSubscriptionQuotaEnd"
)
// PossibleProvisioningStateValues returns the possible values for the ProvisioningState const type.
func PossibleProvisioningStateValues() []ProvisioningState {
return []ProvisioningState{
ProvisioningStateCanceled,
ProvisioningStateCreating,
ProvisioningStateDeleting,
ProvisioningStateFailed,
ProvisioningStateResolvingDNS,
ProvisioningStateSucceeded,
ProvisioningStateValidateSubscriptionQuotaBegin,
ProvisioningStateValidateSubscriptionQuotaEnd,
}
}
@ -950,13 +1036,15 @@ func PossiblePublicAccessValues() []PublicAccess {
}
}
// PublicNetworkAccess - Allow or disallow public network access to Storage Account. Value is optional but if passed in, must
// be 'Enabled' or 'Disabled'.
// PublicNetworkAccess - Allow, disallow, or let Network Security Perimeter configuration to evaluate public network access
// to Storage Account. Value is optional but if passed in, must be 'Enabled', 'Disabled' or
// 'SecuredByPerimeter'.
type PublicNetworkAccess string
const (
PublicNetworkAccessDisabled PublicNetworkAccess = "Disabled"
PublicNetworkAccessEnabled PublicNetworkAccess = "Enabled"
PublicNetworkAccessDisabled PublicNetworkAccess = "Disabled"
PublicNetworkAccessEnabled PublicNetworkAccess = "Enabled"
PublicNetworkAccessSecuredByPerimeter PublicNetworkAccess = "SecuredByPerimeter"
)
// PossiblePublicNetworkAccessValues returns the possible values for the PublicNetworkAccess const type.
@ -964,6 +1052,7 @@ func PossiblePublicNetworkAccessValues() []PublicNetworkAccess {
return []PublicNetworkAccess{
PublicNetworkAccessDisabled,
PublicNetworkAccessEnabled,
PublicNetworkAccessSecuredByPerimeter,
}
}
@ -1002,6 +1091,24 @@ func PossibleReasonCodeValues() []ReasonCode {
}
}
// ResourceAssociationAccessMode - Access Mode of the resource association
type ResourceAssociationAccessMode string
const (
ResourceAssociationAccessModeAudit ResourceAssociationAccessMode = "Audit"
ResourceAssociationAccessModeEnforced ResourceAssociationAccessMode = "Enforced"
ResourceAssociationAccessModeLearning ResourceAssociationAccessMode = "Learning"
)
// PossibleResourceAssociationAccessModeValues returns the possible values for the ResourceAssociationAccessMode const type.
func PossibleResourceAssociationAccessModeValues() []ResourceAssociationAccessMode {
return []ResourceAssociationAccessMode{
ResourceAssociationAccessModeAudit,
ResourceAssociationAccessModeEnforced,
ResourceAssociationAccessModeLearning,
}
}
// RootSquashType - The property is for NFS share only. The default is NoRootSquash.
type RootSquashType string
@ -1050,6 +1157,38 @@ func PossibleRuleTypeValues() []RuleType {
}
}
// RunResult - Represents the overall result of the execution for the run instance
type RunResult string
const (
RunResultFailed RunResult = "Failed"
RunResultSucceeded RunResult = "Succeeded"
)
// PossibleRunResultValues returns the possible values for the RunResult const type.
func PossibleRunResultValues() []RunResult {
return []RunResult{
RunResultFailed,
RunResultSucceeded,
}
}
// RunStatusEnum - Represents the status of the execution.
type RunStatusEnum string
const (
RunStatusEnumFinished RunStatusEnum = "Finished"
RunStatusEnumInProgress RunStatusEnum = "InProgress"
)
// PossibleRunStatusEnumValues returns the possible values for the RunStatusEnum const type.
func PossibleRunStatusEnumValues() []RunStatusEnum {
return []RunStatusEnum{
RunStatusEnumFinished,
RunStatusEnumInProgress,
}
}
// SKUConversionStatus - This property indicates the current sku conversion status.
type SKUConversionStatus string
@ -1150,6 +1289,22 @@ func PossibleServicesValues() []Services {
}
}
// Severity - Severity of the issue.
type Severity string
const (
SeverityError Severity = "Error"
SeverityWarning Severity = "Warning"
)
// PossibleSeverityValues returns the possible values for the Severity const type.
func PossibleSeverityValues() []Severity {
return []Severity{
SeverityError,
SeverityWarning,
}
}
// ShareAccessTier - Access tier for specific share. GpV2 account can choose between TransactionOptimized (default), Hot,
// and Cool. FileStorage account can choose Premium.
type ShareAccessTier string
@ -1249,6 +1404,22 @@ func PossibleStorageAccountExpandValues() []StorageAccountExpand {
}
}
// TriggerType - The trigger type of the storage task assignment execution
type TriggerType string
const (
TriggerTypeOnSchedule TriggerType = "OnSchedule"
TriggerTypeRunOnce TriggerType = "RunOnce"
)
// PossibleTriggerTypeValues returns the possible values for the TriggerType const type.
func PossibleTriggerTypeValues() []TriggerType {
return []TriggerType{
TriggerTypeOnSchedule,
TriggerTypeRunOnce,
}
}
// UsageUnit - Gets the unit of measurement.
type UsageUnit string

View file

@ -46,7 +46,7 @@ func NewDeletedAccountsClient(subscriptionID string, credential azcore.TokenCred
// Get - Get properties of specified deleted account resource.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - deletedAccountName - Name of the deleted storage account.
// - location - The location of the deleted storage account.
// - options - DeletedAccountsClientGetOptions contains the optional parameters for the DeletedAccountsClient.Get method.
@ -92,7 +92,7 @@ func (client *DeletedAccountsClient) getCreateRequest(ctx context.Context, delet
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -109,7 +109,7 @@ func (client *DeletedAccountsClient) getHandleResponse(resp *http.Response) (Del
// NewListPager - Lists deleted accounts under the subscription.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - options - DeletedAccountsClientListOptions contains the optional parameters for the DeletedAccountsClient.NewListPager
// method.
func (client *DeletedAccountsClient) NewListPager(options *DeletedAccountsClientListOptions) *runtime.Pager[DeletedAccountsClientListResponse] {
@ -147,7 +147,7 @@ func (client *DeletedAccountsClient) listCreateRequest(ctx context.Context, opti
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil

View file

@ -47,7 +47,7 @@ func NewEncryptionScopesClient(subscriptionID string, credential azcore.TokenCre
// Get - Returns the properties for the specified encryption scope.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -101,7 +101,7 @@ func (client *EncryptionScopesClient) getCreateRequest(ctx context.Context, reso
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -118,7 +118,7 @@ func (client *EncryptionScopesClient) getHandleResponse(resp *http.Response) (En
// NewListPager - Lists all the encryption scopes available under the specified storage account.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -167,16 +167,16 @@ func (client *EncryptionScopesClient) listCreateRequest(ctx context.Context, res
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
if options != nil && options.Maxpagesize != nil {
reqQP.Set("$maxpagesize", strconv.FormatInt(int64(*options.Maxpagesize), 10))
}
if options != nil && options.Filter != nil {
reqQP.Set("$filter", *options.Filter)
}
if options != nil && options.Include != nil {
reqQP.Set("$include", string(*options.Include))
}
if options != nil && options.Maxpagesize != nil {
reqQP.Set("$maxpagesize", strconv.FormatInt(int64(*options.Maxpagesize), 10))
}
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -195,7 +195,7 @@ func (client *EncryptionScopesClient) listHandleResponse(resp *http.Response) (E
// does not already exist.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -250,7 +250,7 @@ func (client *EncryptionScopesClient) patchCreateRequest(ctx context.Context, re
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, encryptionScope); err != nil {
@ -273,7 +273,7 @@ func (client *EncryptionScopesClient) patchHandleResponse(resp *http.Response) (
// encryption scope properties will be updated per the specified request.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -328,7 +328,7 @@ func (client *EncryptionScopesClient) putCreateRequest(ctx context.Context, reso
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, encryptionScope); err != nil {

View file

@ -47,7 +47,7 @@ func NewFileServicesClient(subscriptionID string, credential azcore.TokenCredent
// Sharing) rules.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -96,7 +96,7 @@ func (client *FileServicesClient) getServicePropertiesCreateRequest(ctx context.
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -114,7 +114,7 @@ func (client *FileServicesClient) getServicePropertiesHandleResponse(resp *http.
// List - List all file services in storage accounts
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -161,7 +161,7 @@ func (client *FileServicesClient) listCreateRequest(ctx context.Context, resourc
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -180,7 +180,7 @@ func (client *FileServicesClient) listHandleResponse(resp *http.Response) (FileS
// Sharing) rules.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -230,7 +230,7 @@ func (client *FileServicesClient) setServicePropertiesCreateRequest(ctx context.
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, parameters); err != nil {

View file

@ -48,7 +48,7 @@ func NewFileSharesClient(subscriptionID string, credential azcore.TokenCredentia
// the share.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -106,7 +106,7 @@ func (client *FileSharesClient) createCreateRequest(ctx context.Context, resourc
if options != nil && options.Expand != nil {
reqQP.Set("$expand", *options.Expand)
}
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, fileShare); err != nil {
@ -127,7 +127,7 @@ func (client *FileSharesClient) createHandleResponse(resp *http.Response) (FileS
// Delete - Deletes specified share under its account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -180,22 +180,22 @@ func (client *FileSharesClient) deleteCreateRequest(ctx context.Context, resourc
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
if options != nil && options.Include != nil {
reqQP.Set("$include", *options.Include)
}
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if options != nil && options.XMSSnapshot != nil {
req.Raw().Header["x-ms-snapshot"] = []string{*options.XMSSnapshot}
}
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
}
// Get - Gets properties of a specified share.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -249,15 +249,15 @@ func (client *FileSharesClient) getCreateRequest(ctx context.Context, resourceGr
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
if options != nil && options.Expand != nil {
reqQP.Set("$expand", *options.Expand)
}
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if options != nil && options.XMSSnapshot != nil {
req.Raw().Header["x-ms-snapshot"] = []string{*options.XMSSnapshot}
}
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
}
@ -274,7 +274,7 @@ func (client *FileSharesClient) getHandleResponse(resp *http.Response) (FileShar
// be 15 to 60 seconds, or can be infinite.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -328,12 +328,12 @@ func (client *FileSharesClient) leaseCreateRequest(ctx context.Context, resource
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if options != nil && options.XMSSnapshot != nil {
req.Raw().Header["x-ms-snapshot"] = []string{*options.XMSSnapshot}
}
req.Raw().Header["Accept"] = []string{"application/json"}
if options != nil && options.Parameters != nil {
if err := runtime.MarshalAsJSON(req, *options.Parameters); err != nil {
return nil, err
@ -357,7 +357,7 @@ func (client *FileSharesClient) leaseHandleResponse(resp *http.Response) (FileSh
// NewListPager - Lists all shares.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -405,16 +405,16 @@ func (client *FileSharesClient) listCreateRequest(ctx context.Context, resourceG
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
if options != nil && options.Maxpagesize != nil {
reqQP.Set("$maxpagesize", *options.Maxpagesize)
if options != nil && options.Expand != nil {
reqQP.Set("$expand", *options.Expand)
}
if options != nil && options.Filter != nil {
reqQP.Set("$filter", *options.Filter)
}
if options != nil && options.Expand != nil {
reqQP.Set("$expand", *options.Expand)
if options != nil && options.Maxpagesize != nil {
reqQP.Set("$maxpagesize", *options.Maxpagesize)
}
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -432,7 +432,7 @@ func (client *FileSharesClient) listHandleResponse(resp *http.Response) (FileSha
// Restore - Restore a file share within a valid retention days if share soft delete is enabled
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -485,7 +485,7 @@ func (client *FileSharesClient) restoreCreateRequest(ctx context.Context, resour
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, deletedShare); err != nil {
@ -498,7 +498,7 @@ func (client *FileSharesClient) restoreCreateRequest(ctx context.Context, resour
// Update fails if the specified share does not already exist.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -553,7 +553,7 @@ func (client *FileSharesClient) updateCreateRequest(ctx context.Context, resourc
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, fileShare); err != nil {

View file

@ -17,6 +17,7 @@ import (
"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
"net/http"
"net/url"
"strconv"
"strings"
)
@ -43,10 +44,11 @@ func NewLocalUsersClient(subscriptionID string, credential azcore.TokenCredentia
return client, nil
}
// CreateOrUpdate - Create or update the properties of a local user associated with the storage account
// CreateOrUpdate - Create or update the properties of a local user associated with the storage account. Properties for NFSv3
// enablement and extended groups cannot be set with other properties.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -101,7 +103,7 @@ func (client *LocalUsersClient) createOrUpdateCreateRequest(ctx context.Context,
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, properties); err != nil {
@ -122,7 +124,7 @@ func (client *LocalUsersClient) createOrUpdateHandleResponse(resp *http.Response
// Delete - Deletes the local user associated with the specified storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -174,7 +176,7 @@ func (client *LocalUsersClient) deleteCreateRequest(ctx context.Context, resourc
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -183,7 +185,7 @@ func (client *LocalUsersClient) deleteCreateRequest(ctx context.Context, resourc
// Get - Get the local user of the storage account by username.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -236,7 +238,7 @@ func (client *LocalUsersClient) getCreateRequest(ctx context.Context, resourceGr
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -253,7 +255,7 @@ func (client *LocalUsersClient) getHandleResponse(resp *http.Response) (LocalUse
// NewListPager - List the local users associated with the storage account.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -302,7 +304,16 @@ func (client *LocalUsersClient) listCreateRequest(ctx context.Context, resourceG
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
if options != nil && options.Filter != nil {
reqQP.Set("$filter", *options.Filter)
}
if options != nil && options.Include != nil {
reqQP.Set("$include", string(*options.Include))
}
if options != nil && options.Maxpagesize != nil {
reqQP.Set("$maxpagesize", strconv.FormatInt(int64(*options.Maxpagesize), 10))
}
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -320,7 +331,7 @@ func (client *LocalUsersClient) listHandleResponse(resp *http.Response) (LocalUs
// ListKeys - List SSH authorized keys and shared key of the local user.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -373,7 +384,7 @@ func (client *LocalUsersClient) listKeysCreateRequest(ctx context.Context, resou
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -391,7 +402,7 @@ func (client *LocalUsersClient) listKeysHandleResponse(resp *http.Response) (Loc
// RegeneratePassword - Regenerate the local user SSH password.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -445,7 +456,7 @@ func (client *LocalUsersClient) regeneratePasswordCreateRequest(ctx context.Cont
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil

View file

@ -46,7 +46,7 @@ func NewManagementPoliciesClient(subscriptionID string, credential azcore.TokenC
// CreateOrUpdate - Sets the managementpolicy to the specified storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -100,7 +100,7 @@ func (client *ManagementPoliciesClient) createOrUpdateCreateRequest(ctx context.
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, properties); err != nil {
@ -121,7 +121,7 @@ func (client *ManagementPoliciesClient) createOrUpdateHandleResponse(resp *http.
// Delete - Deletes the managementpolicy associated with the specified storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -173,7 +173,7 @@ func (client *ManagementPoliciesClient) deleteCreateRequest(ctx context.Context,
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
return req, nil
}
@ -181,7 +181,7 @@ func (client *ManagementPoliciesClient) deleteCreateRequest(ctx context.Context,
// Get - Gets the managementpolicy associated with the specified storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -233,7 +233,7 @@ func (client *ManagementPoliciesClient) getCreateRequest(ctx context.Context, re
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil

View file

@ -243,6 +243,9 @@ type AccountProperties struct {
// for this property.
DefaultToOAuthAuthentication *bool
// Enables extended group support with local users feature, if set to true
EnableExtendedGroups *bool
// Allows https traffic only to storage service if sets to true.
EnableHTTPSTrafficOnly *bool
@ -268,7 +271,7 @@ type AccountProperties struct {
// Set the minimum TLS version to be permitted on requests to storage. The default interpretation is TLS 1.0 for this property.
MinimumTLSVersion *MinimumTLSVersion
// Allow or disallow public network access to Storage Account. Value is optional but if passed in, must be 'Enabled' or 'Disabled'.
// Allow, disallow, or let Network Security Perimeter configuration to evaluate public network access to Storage Account.
PublicNetworkAccess *PublicNetworkAccess
// Maintains information about the network routing choice opted by the user for data transfer
@ -393,6 +396,9 @@ type AccountPropertiesCreateParameters struct {
// for this property.
DefaultToOAuthAuthentication *bool
// Enables extended group support with local users feature, if set to true
EnableExtendedGroups *bool
// Allows https traffic only to storage service if sets to true. The default value is true since API version 2019-04-01.
EnableHTTPSTrafficOnly *bool
@ -427,7 +433,9 @@ type AccountPropertiesCreateParameters struct {
// Network rule set
NetworkRuleSet *NetworkRuleSet
// Allow or disallow public network access to Storage Account. Value is optional but if passed in, must be 'Enabled' or 'Disabled'.
// Allow, disallow, or let Network Security Perimeter configuration to evaluate public network access to Storage Account.
// Value is optional but if passed in, must be 'Enabled', 'Disabled' or
// 'SecuredByPerimeter'.
PublicNetworkAccess *PublicNetworkAccess
// Maintains information about the network routing choice opted by the user for data transfer
@ -478,6 +486,9 @@ type AccountPropertiesUpdateParameters struct {
// for this property.
DefaultToOAuthAuthentication *bool
// Enables extended group support with local users feature, if set to true
EnableExtendedGroups *bool
// Allows https traffic only to storage service if sets to true.
EnableHTTPSTrafficOnly *bool
@ -506,7 +517,9 @@ type AccountPropertiesUpdateParameters struct {
// Network rule set
NetworkRuleSet *NetworkRuleSet
// Allow or disallow public network access to Storage Account. Value is optional but if passed in, must be 'Enabled' or 'Disabled'.
// Allow, disallow, or let Network Security Perimeter configuration to evaluate public network access to Storage Account.
// Value is optional but if passed in, must be 'Enabled', 'Disabled' or
// 'SecuredByPerimeter'.
PublicNetworkAccess *PublicNetworkAccess
// Maintains information about the network routing choice opted by the user for data transfer
@ -1320,6 +1333,35 @@ type ErrorResponseBody struct {
Message *string
}
// ExecutionTarget - Target helps provide filter parameters for the objects in the storage account and forms the execution
// context for the storage task
type ExecutionTarget struct {
// List of object prefixes to be excluded from task execution. If there is a conflict between include and exclude prefixes,
// the exclude prefix will be the determining factor
ExcludePrefix []*string
// Required list of object prefixes to be included for task execution
Prefix []*string
}
// ExecutionTrigger - Execution trigger for storage task assignment
type ExecutionTrigger struct {
// REQUIRED; The trigger parameters of the storage task assignment execution
Parameters *TriggerParameters
// REQUIRED; The trigger type of the storage task assignment execution
Type *TriggerType
}
// ExecutionTriggerUpdate - Execution trigger update for storage task assignment
type ExecutionTriggerUpdate struct {
// The trigger parameters of the storage task assignment execution
Parameters *TriggerParametersUpdate
// The trigger type of the storage task assignment execution
Type *TriggerType
}
// ExtendedLocation - The complex type of the extended location.
type ExtendedLocation struct {
// The name of the extended location.
@ -1865,6 +1907,15 @@ type LocalUserKeys struct {
// LocalUserProperties - The Storage Account Local User properties.
type LocalUserProperties struct {
// Indicates whether ACL authorization is allowed for this user. Set it to false to disallow using ACL authorization.
AllowACLAuthorization *bool
// Supplementary group membership. Only applicable for local users enabled for NFSv3 access.
ExtendedGroups []*int32
// An identifier for associating a group of users.
GroupID *int32
// Indicates whether ssh key exists. Set it to false to remove existing SSH key.
HasSSHKey *bool
@ -1877,6 +1928,9 @@ type LocalUserProperties struct {
// Optional, local user home directory.
HomeDirectory *string
// Indicates if the local user is enabled for access with NFSv3 protocol.
IsNFSv3Enabled *bool
// The permission scopes of the local user.
PermissionScopes []*PermissionScope
@ -1885,6 +1939,9 @@ type LocalUserProperties struct {
// READ-ONLY; A unique Security Identifier that is generated by the server.
Sid *string
// READ-ONLY; A unique Identifier that is generated by the server.
UserID *int32
}
// LocalUserRegeneratePasswordResult - The secrets of Storage Account Local User.
@ -1894,10 +1951,14 @@ type LocalUserRegeneratePasswordResult struct {
SSHPassword *string
}
// LocalUsers - List storage account local users.
// LocalUsers - List of local users requested, and if paging is required, a URL to the next page of local users.
type LocalUsers struct {
// The local users associated with the storage account.
// The list of local users associated with the storage account.
Value []*LocalUser
// READ-ONLY; Request URL that can be used to query next page of local users. Returned when total number of requested local
// users exceeds the maximum page size.
NextLink *string
}
// ManagementPolicy - The Get Storage Account ManagementPolicies operation response.
@ -2095,6 +2156,123 @@ type NetworkRuleSet struct {
VirtualNetworkRules []*VirtualNetworkRule
}
// NetworkSecurityPerimeter related information
type NetworkSecurityPerimeter struct {
// The ARM identifier of the resource
ID *string
// Location of the resource
Location *string
// Guid of the resource
PerimeterGUID *string
}
// NetworkSecurityPerimeterConfiguration - The Network Security Perimeter configuration resource.
type NetworkSecurityPerimeterConfiguration struct {
// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
ID *string
// READ-ONLY; The name of the resource
Name *string
// READ-ONLY; Properties of the Network Security Perimeter Configuration
Properties *NetworkSecurityPerimeterConfigurationProperties
// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
SystemData *SystemData
// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
Type *string
}
// NetworkSecurityPerimeterConfigurationList - Result of the List Network Security Perimeter configuration operation.
type NetworkSecurityPerimeterConfigurationList struct {
// The URI that can be used to request the next set of paged results.
NextLink *string
// READ-ONLY; A collection of Network Security Perimeter configurations
Value []*NetworkSecurityPerimeterConfiguration
}
// NetworkSecurityPerimeterConfigurationProperties - Properties of the Network Security Perimeter Configuration
type NetworkSecurityPerimeterConfigurationProperties struct {
// READ-ONLY; NetworkSecurityPerimeter related information
NetworkSecurityPerimeter *NetworkSecurityPerimeter
// READ-ONLY; Network Security Perimeter profile
Profile *NetworkSecurityPerimeterConfigurationPropertiesProfile
// READ-ONLY; List of Provisioning Issues if any
ProvisioningIssues []*ProvisioningIssue
// READ-ONLY; Provisioning state of Network Security Perimeter configuration propagation
ProvisioningState *NetworkSecurityPerimeterConfigurationProvisioningState
// READ-ONLY; Information about resource association
ResourceAssociation *NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation
}
// NetworkSecurityPerimeterConfigurationPropertiesProfile - Network Security Perimeter profile
type NetworkSecurityPerimeterConfigurationPropertiesProfile struct {
// List of Access Rules
AccessRules []*NspAccessRule
// Current access rules version
AccessRulesVersion *float32
// Diagnostic settings version
DiagnosticSettingsVersion *float32
// Enabled logging categories
EnabledLogCategories []*string
// Name of the resource
Name *string
}
// NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation - Information about resource association
type NetworkSecurityPerimeterConfigurationPropertiesResourceAssociation struct {
// Access Mode of the resource association
AccessMode *ResourceAssociationAccessMode
// Name of the resource association
Name *string
}
// NspAccessRule - Information of Access Rule in Network Security Perimeter profile
type NspAccessRule struct {
// Name of the resource
Name *string
// READ-ONLY; Properties of Access Rule
Properties *NspAccessRuleProperties
}
// NspAccessRuleProperties - Properties of Access Rule
type NspAccessRuleProperties struct {
// Address prefixes in the CIDR format for inbound rules
AddressPrefixes []*string
// Direction of Access Rule
Direction *NspAccessRuleDirection
// Subscriptions for inbound rules
Subscriptions []*NspAccessRulePropertiesSubscriptionsItem
// READ-ONLY; FQDN for outbound rules
FullyQualifiedDomainNames []*string
// READ-ONLY; NetworkSecurityPerimeters for inbound rules
NetworkSecurityPerimeters []*NetworkSecurityPerimeter
}
// NspAccessRulePropertiesSubscriptionsItem - Subscription for inbound rule
type NspAccessRulePropertiesSubscriptionsItem struct {
// The ARM identifier of subscription
ID *string
}
// ObjectReplicationPolicies - List storage account object replication policies.
type ObjectReplicationPolicies struct {
// The replication policy between two storage accounts.
@ -2205,8 +2383,8 @@ type OperationProperties struct {
}
type PermissionScope struct {
// REQUIRED; The permissions for the local user. Possible values include: Read (r), Write (w), Delete (d), List (l), and Create
// (c).
// REQUIRED; The permissions for the local user. Possible values include: Read (r), Write (w), Delete (d), List (l), Create
// (c), Modify Ownership (o), and Modify Permissions (p).
Permissions *string
// REQUIRED; The name of resource, normally the container name or the file share name, used by the local user.
@ -2318,6 +2496,27 @@ type ProtocolSettings struct {
Smb *SmbSetting
}
// ProvisioningIssue - Describes provisioning issue for given NetworkSecurityPerimeterConfiguration
type ProvisioningIssue struct {
// Name of the issue
Name *string
// READ-ONLY; Properties of provisioning issue
Properties *ProvisioningIssueProperties
}
// ProvisioningIssueProperties - Properties of provisioning issue
type ProvisioningIssueProperties struct {
// Description of the issue
Description *string
// Type of issue
IssueType *IssueType
// Severity of the issue.
Severity *Severity
}
// ProxyResource - The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a
// location
type ProxyResource struct {
@ -2331,6 +2530,22 @@ type ProxyResource struct {
Type *string
}
// ProxyResourceAutoGenerated - The resource model definition for a Azure Resource Manager proxy resource. It will not have
// tags and a location
type ProxyResourceAutoGenerated struct {
// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
ID *string
// READ-ONLY; The name of the resource
Name *string
// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
SystemData *SystemData
// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
Type *string
}
type Queue struct {
// Queue resource properties.
QueueProperties *QueueProperties
@ -2398,6 +2613,21 @@ type ResourceAccessRule struct {
TenantID *string
}
// ResourceAutoGenerated - Common fields that are returned in the response for all Azure Resource Manager resources
type ResourceAutoGenerated struct {
// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
ID *string
// READ-ONLY; The name of the resource
Name *string
// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
SystemData *SystemData
// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
Type *string
}
// RestorePolicyProperties - The blob service properties for blob restore policy
type RestorePolicyProperties struct {
// REQUIRED; Blob restore is enabled if set to true.
@ -2505,7 +2735,9 @@ type SSHPublicKey struct {
// SasPolicy assigned to the storage account.
type SasPolicy struct {
// REQUIRED; The SAS expiration action. Can only be Log.
// REQUIRED; The SAS Expiration Action defines the action to be performed when sasPolicy.sasExpirationPeriod is violated.
// The 'Log' action can be used for audit purposes and the 'Block' action can be used to block
// and deny the usage of SAS tokens that do not adhere to the sas policy expiration period.
ExpirationAction *ExpirationAction
// REQUIRED; The SAS expiration period, DD.HH:MM:SS.
@ -2727,6 +2959,198 @@ type TagProperty struct {
Upn *string
}
// TaskAssignment - The storage task assignment.
type TaskAssignment struct {
// REQUIRED; Properties of the storage task assignment.
Properties *TaskAssignmentProperties
// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
ID *string
// READ-ONLY; The name of the resource
Name *string
// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
Type *string
}
// TaskAssignmentExecutionContext - Execution context of the storage task assignment.
type TaskAssignmentExecutionContext struct {
// REQUIRED; Execution trigger of the storage task assignment
Trigger *ExecutionTrigger
// Execution target of the storage task assignment
Target *ExecutionTarget
}
// TaskAssignmentProperties - Properties of the storage task assignment.
type TaskAssignmentProperties struct {
// REQUIRED; Text that describes the purpose of the storage task assignment
Description *string
// REQUIRED; Whether the storage task assignment is enabled or not
Enabled *bool
// REQUIRED; The storage task assignment execution context
ExecutionContext *TaskAssignmentExecutionContext
// REQUIRED; The storage task assignment report
Report *TaskAssignmentReport
// REQUIRED; Id of the corresponding storage task
TaskID *string
// Run status of storage task assignment
RunStatus *TaskReportProperties
// READ-ONLY; Represents the provisioning state of the storage task assignment.
ProvisioningState *ProvisioningState
}
// TaskAssignmentReport - The storage task assignment report
type TaskAssignmentReport struct {
// REQUIRED; The container prefix for the location of storage task assignment report
Prefix *string
}
// TaskAssignmentUpdateExecutionContext - Execution context of the storage task assignment update.
type TaskAssignmentUpdateExecutionContext struct {
// Execution target of the storage task assignment
Target *ExecutionTarget
// Execution trigger of the storage task assignment
Trigger *ExecutionTriggerUpdate
}
// TaskAssignmentUpdateParameters - Parameters of the storage task assignment update request
type TaskAssignmentUpdateParameters struct {
// Properties of the storage task assignment.
Properties *TaskAssignmentUpdateProperties
}
// TaskAssignmentUpdateProperties - Properties of the storage task update assignment.
type TaskAssignmentUpdateProperties struct {
// Text that describes the purpose of the storage task assignment
Description *string
// Whether the storage task assignment is enabled or not
Enabled *bool
// The storage task assignment execution context
ExecutionContext *TaskAssignmentUpdateExecutionContext
// The storage task assignment report
Report *TaskAssignmentUpdateReport
// Run status of storage task assignment
RunStatus *TaskReportProperties
// READ-ONLY; Represents the provisioning state of the storage task assignment.
ProvisioningState *ProvisioningState
// READ-ONLY; Id of the corresponding storage task
TaskID *string
}
// TaskAssignmentUpdateReport - The storage task assignment report
type TaskAssignmentUpdateReport struct {
// The prefix of the storage task assignment report
Prefix *string
}
// TaskAssignmentsList - List of storage task assignments for the storage account
type TaskAssignmentsList struct {
// READ-ONLY; Request URL that can be used to query next page of storage task assignments. Returned when total number of requested
// storage task assignments exceed maximum page size.
NextLink *string
// READ-ONLY; Gets the list of storage task assignments and their properties.
Value []*TaskAssignment
}
// TaskReportInstance - Storage Tasks run report instance
type TaskReportInstance struct {
// Storage task execution report for a run instance.
Properties *TaskReportProperties
// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
ID *string
// READ-ONLY; The name of the resource
Name *string
// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
Type *string
}
// TaskReportProperties - Storage task execution report for a run instance.
type TaskReportProperties struct {
// READ-ONLY; End time of the run instance. Filter options such as startTime gt '2023-06-26T20:51:24.4494016Z' and other comparison
// operators can be used as described for DateTime properties in
// https://learn.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities#supported-comparison-operators
FinishTime *string
// READ-ONLY; Total number of objects where task operation failed when was attempted. Filter options such as objectFailedCount
// eq 0 and other comparison operators can be used as described for Numerical properties
// in https://learn.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities#supported-comparison-operators
ObjectFailedCount *string
// READ-ONLY; Total number of objects that meet the storage tasks condition and were operated upon. Filter options such as
// objectsOperatedOnCount ge 100 and other comparison operators can be used as described for
// Numerical properties in https://learn.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities#supported-comparison-operators
ObjectsOperatedOnCount *string
// READ-ONLY; Total number of objects where task operation succeeded when was attempted.Filter options such as objectsSucceededCount
// gt 150 and other comparison operators can be used as described for Numerical
// properties in https://learn.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities#supported-comparison-operators
ObjectsSucceededCount *string
// READ-ONLY; Total number of objects that meet the condition as defined in the storage task assignment execution context.
// Filter options such as objectsTargetedCount gt 50 and other comparison operators can be
// used as described for Numerical properties in https://learn.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities#supported-comparison-operators
ObjectsTargetedCount *string
// READ-ONLY; Represents the overall result of the execution for the run instance
RunResult *RunResult
// READ-ONLY; Represents the status of the execution.
RunStatusEnum *RunStatusEnum
// READ-ONLY; Well known Azure Storage error code that represents the error encountered during execution of the run instance.
RunStatusError *string
// READ-ONLY; Start time of the run instance. Filter options such as startTime gt '2023-06-26T20:51:24.4494016Z' and other
// comparison operators can be used as described for DateTime properties in
// https://learn.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities#supported-comparison-operators
StartTime *string
// READ-ONLY; Represents the Storage Account Id where the storage task definition was applied and executed.
StorageAccountID *string
// READ-ONLY; Full path to the verbose report stored in the reporting container as specified in the assignment execution context
// for the storage account.
SummaryReportPath *string
// READ-ONLY; Represents the Storage Task Assignment Id associated with the storage task that provided an execution context.
TaskAssignmentID *string
// READ-ONLY; Storage Task Arm Id.
TaskID *string
// READ-ONLY; Storage Task Version
TaskVersion *string
}
// TaskReportSummary - Fetch Storage Tasks Run Summary.
type TaskReportSummary struct {
// READ-ONLY; Request URL that can be used to query next page of storage task run results summary. Returned when the number
// of run instances and summary reports exceed maximum page size.
NextLink *string
// READ-ONLY; Gets storage tasks run result summary.
Value []*TaskReportInstance
}
// TrackedResource - The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags'
// and a 'location'
type TrackedResource struct {
@ -2746,6 +3170,54 @@ type TrackedResource struct {
Type *string
}
// TriggerParameters - The trigger parameters update for the storage task assignment execution
type TriggerParameters struct {
// When to end task execution. This is a required field when ExecutionTrigger.properties.type is 'OnSchedule'; this property
// should not be present when ExecutionTrigger.properties.type is 'RunOnce'
EndBy *time.Time
// Run interval of task execution. This is a required field when ExecutionTrigger.properties.type is 'OnSchedule'; this property
// should not be present when ExecutionTrigger.properties.type is 'RunOnce'
Interval *int32
// Run interval unit of task execution. This is a required field when ExecutionTrigger.properties.type is 'OnSchedule'; this
// property should not be present when ExecutionTrigger.properties.type is
// 'RunOnce'
IntervalUnit *string
// When to start task execution. This is a required field when ExecutionTrigger.properties.type is 'OnSchedule'; this property
// should not be present when ExecutionTrigger.properties.type is 'RunOnce'
StartFrom *time.Time
// When to start task execution. This is an optional field when ExecutionTrigger.properties.type is 'RunOnce'; this property
// should not be present when ExecutionTrigger.properties.type is 'OnSchedule'
StartOn *time.Time
}
// TriggerParametersUpdate - The trigger parameters update for the storage task assignment execution
type TriggerParametersUpdate struct {
// When to end task execution. This is a mutable field when ExecutionTrigger.properties.type is 'OnSchedule'; this property
// should not be present when ExecutionTrigger.properties.type is 'RunOnce'
EndBy *time.Time
// Run interval of task execution. This is a mutable field when ExecutionTrigger.properties.type is 'OnSchedule'; this property
// should not be present when ExecutionTrigger.properties.type is 'RunOnce'
Interval *int32
// Run interval unit of task execution. This is a mutable field when ExecutionTrigger.properties.type is 'OnSchedule'; this
// property should not be present when ExecutionTrigger.properties.type is
// 'RunOnce'
IntervalUnit *string
// When to start task execution. This is a mutable field when ExecutionTrigger.properties.type is 'OnSchedule'; this property
// should not be present when ExecutionTrigger.properties.type is 'RunOnce'
StartFrom *time.Time
// When to start task execution. This is a mutable field when ExecutionTrigger.properties.type is 'RunOnce'; this property
// should not be present when ExecutionTrigger.properties.type is 'OnSchedule'
StartOn *time.Time
}
// UpdateHistoryProperty - An update history of the ImmutabilityPolicy of a blob container.
type UpdateHistoryProperty struct {
// This property can only be changed for unlocked time-based retention policies. When enabled, new blocks can be written to

View file

@ -0,0 +1,265 @@
//go:build go1.18
// +build go1.18
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
package armstorage
import (
"context"
"errors"
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
"net/http"
"net/url"
"strings"
)
// NetworkSecurityPerimeterConfigurationsClient contains the methods for the NetworkSecurityPerimeterConfigurations group.
// Don't use this type directly, use NewNetworkSecurityPerimeterConfigurationsClient() instead.
type NetworkSecurityPerimeterConfigurationsClient struct {
internal *arm.Client
subscriptionID string
}
// NewNetworkSecurityPerimeterConfigurationsClient creates a new instance of NetworkSecurityPerimeterConfigurationsClient with the specified values.
// - subscriptionID - The ID of the target subscription.
// - credential - used to authorize requests. Usually a credential from azidentity.
// - options - pass nil to accept the default values.
func NewNetworkSecurityPerimeterConfigurationsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*NetworkSecurityPerimeterConfigurationsClient, error) {
cl, err := arm.NewClient(moduleName, moduleVersion, credential, options)
if err != nil {
return nil, err
}
client := &NetworkSecurityPerimeterConfigurationsClient{
subscriptionID: subscriptionID,
internal: cl,
}
return client, nil
}
// Get - Gets effective NetworkSecurityPerimeterConfiguration for association
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
// - networkSecurityPerimeterConfigurationName - The name for Network Security Perimeter configuration
// - options - NetworkSecurityPerimeterConfigurationsClientGetOptions contains the optional parameters for the NetworkSecurityPerimeterConfigurationsClient.Get
// method.
func (client *NetworkSecurityPerimeterConfigurationsClient) Get(ctx context.Context, resourceGroupName string, accountName string, networkSecurityPerimeterConfigurationName string, options *NetworkSecurityPerimeterConfigurationsClientGetOptions) (NetworkSecurityPerimeterConfigurationsClientGetResponse, error) {
var err error
const operationName = "NetworkSecurityPerimeterConfigurationsClient.Get"
ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
defer func() { endSpan(err) }()
req, err := client.getCreateRequest(ctx, resourceGroupName, accountName, networkSecurityPerimeterConfigurationName, options)
if err != nil {
return NetworkSecurityPerimeterConfigurationsClientGetResponse{}, err
}
httpResp, err := client.internal.Pipeline().Do(req)
if err != nil {
return NetworkSecurityPerimeterConfigurationsClientGetResponse{}, err
}
if !runtime.HasStatusCode(httpResp, http.StatusOK) {
err = runtime.NewResponseError(httpResp)
return NetworkSecurityPerimeterConfigurationsClientGetResponse{}, err
}
resp, err := client.getHandleResponse(httpResp)
return resp, err
}
// getCreateRequest creates the Get request.
func (client *NetworkSecurityPerimeterConfigurationsClient) getCreateRequest(ctx context.Context, resourceGroupName string, accountName string, networkSecurityPerimeterConfigurationName string, options *NetworkSecurityPerimeterConfigurationsClientGetOptions) (*policy.Request, error) {
urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/networkSecurityPerimeterConfigurations/{networkSecurityPerimeterConfigurationName}"
if client.subscriptionID == "" {
return nil, errors.New("parameter client.subscriptionID cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
if resourceGroupName == "" {
return nil, errors.New("parameter resourceGroupName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
if accountName == "" {
return nil, errors.New("parameter accountName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{accountName}", url.PathEscape(accountName))
if networkSecurityPerimeterConfigurationName == "" {
return nil, errors.New("parameter networkSecurityPerimeterConfigurationName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{networkSecurityPerimeterConfigurationName}", url.PathEscape(networkSecurityPerimeterConfigurationName))
req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
if err != nil {
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
}
// getHandleResponse handles the Get response.
func (client *NetworkSecurityPerimeterConfigurationsClient) getHandleResponse(resp *http.Response) (NetworkSecurityPerimeterConfigurationsClientGetResponse, error) {
result := NetworkSecurityPerimeterConfigurationsClientGetResponse{}
if err := runtime.UnmarshalAsJSON(resp, &result.NetworkSecurityPerimeterConfiguration); err != nil {
return NetworkSecurityPerimeterConfigurationsClientGetResponse{}, err
}
return result, nil
}
// NewListPager - Gets list of effective NetworkSecurityPerimeterConfiguration for storage account
//
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
// - options - NetworkSecurityPerimeterConfigurationsClientListOptions contains the optional parameters for the NetworkSecurityPerimeterConfigurationsClient.NewListPager
// method.
func (client *NetworkSecurityPerimeterConfigurationsClient) NewListPager(resourceGroupName string, accountName string, options *NetworkSecurityPerimeterConfigurationsClientListOptions) *runtime.Pager[NetworkSecurityPerimeterConfigurationsClientListResponse] {
return runtime.NewPager(runtime.PagingHandler[NetworkSecurityPerimeterConfigurationsClientListResponse]{
More: func(page NetworkSecurityPerimeterConfigurationsClientListResponse) bool {
return false
},
Fetcher: func(ctx context.Context, page *NetworkSecurityPerimeterConfigurationsClientListResponse) (NetworkSecurityPerimeterConfigurationsClientListResponse, error) {
ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "NetworkSecurityPerimeterConfigurationsClient.NewListPager")
req, err := client.listCreateRequest(ctx, resourceGroupName, accountName, options)
if err != nil {
return NetworkSecurityPerimeterConfigurationsClientListResponse{}, err
}
resp, err := client.internal.Pipeline().Do(req)
if err != nil {
return NetworkSecurityPerimeterConfigurationsClientListResponse{}, err
}
if !runtime.HasStatusCode(resp, http.StatusOK) {
return NetworkSecurityPerimeterConfigurationsClientListResponse{}, runtime.NewResponseError(resp)
}
return client.listHandleResponse(resp)
},
Tracer: client.internal.Tracer(),
})
}
// listCreateRequest creates the List request.
func (client *NetworkSecurityPerimeterConfigurationsClient) listCreateRequest(ctx context.Context, resourceGroupName string, accountName string, options *NetworkSecurityPerimeterConfigurationsClientListOptions) (*policy.Request, error) {
urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/networkSecurityPerimeterConfigurations"
if client.subscriptionID == "" {
return nil, errors.New("parameter client.subscriptionID cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
if resourceGroupName == "" {
return nil, errors.New("parameter resourceGroupName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
if accountName == "" {
return nil, errors.New("parameter accountName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{accountName}", url.PathEscape(accountName))
req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
if err != nil {
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
}
// listHandleResponse handles the List response.
func (client *NetworkSecurityPerimeterConfigurationsClient) listHandleResponse(resp *http.Response) (NetworkSecurityPerimeterConfigurationsClientListResponse, error) {
result := NetworkSecurityPerimeterConfigurationsClientListResponse{}
if err := runtime.UnmarshalAsJSON(resp, &result.NetworkSecurityPerimeterConfigurationList); err != nil {
return NetworkSecurityPerimeterConfigurationsClientListResponse{}, err
}
return result, nil
}
// BeginReconcile - Refreshes any information about the association.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
// - networkSecurityPerimeterConfigurationName - The name for Network Security Perimeter configuration
// - options - NetworkSecurityPerimeterConfigurationsClientBeginReconcileOptions contains the optional parameters for the NetworkSecurityPerimeterConfigurationsClient.BeginReconcile
// method.
func (client *NetworkSecurityPerimeterConfigurationsClient) BeginReconcile(ctx context.Context, resourceGroupName string, accountName string, networkSecurityPerimeterConfigurationName string, options *NetworkSecurityPerimeterConfigurationsClientBeginReconcileOptions) (*runtime.Poller[NetworkSecurityPerimeterConfigurationsClientReconcileResponse], error) {
if options == nil || options.ResumeToken == "" {
resp, err := client.reconcile(ctx, resourceGroupName, accountName, networkSecurityPerimeterConfigurationName, options)
if err != nil {
return nil, err
}
poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[NetworkSecurityPerimeterConfigurationsClientReconcileResponse]{
FinalStateVia: runtime.FinalStateViaLocation,
Tracer: client.internal.Tracer(),
})
return poller, err
} else {
return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[NetworkSecurityPerimeterConfigurationsClientReconcileResponse]{
Tracer: client.internal.Tracer(),
})
}
}
// Reconcile - Refreshes any information about the association.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-05-01
func (client *NetworkSecurityPerimeterConfigurationsClient) reconcile(ctx context.Context, resourceGroupName string, accountName string, networkSecurityPerimeterConfigurationName string, options *NetworkSecurityPerimeterConfigurationsClientBeginReconcileOptions) (*http.Response, error) {
var err error
const operationName = "NetworkSecurityPerimeterConfigurationsClient.BeginReconcile"
ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
defer func() { endSpan(err) }()
req, err := client.reconcileCreateRequest(ctx, resourceGroupName, accountName, networkSecurityPerimeterConfigurationName, options)
if err != nil {
return nil, err
}
httpResp, err := client.internal.Pipeline().Do(req)
if err != nil {
return nil, err
}
if !runtime.HasStatusCode(httpResp, http.StatusAccepted) {
err = runtime.NewResponseError(httpResp)
return nil, err
}
return httpResp, nil
}
// reconcileCreateRequest creates the Reconcile request.
func (client *NetworkSecurityPerimeterConfigurationsClient) reconcileCreateRequest(ctx context.Context, resourceGroupName string, accountName string, networkSecurityPerimeterConfigurationName string, options *NetworkSecurityPerimeterConfigurationsClientBeginReconcileOptions) (*policy.Request, error) {
urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/networkSecurityPerimeterConfigurations/{networkSecurityPerimeterConfigurationName}/reconcile"
if client.subscriptionID == "" {
return nil, errors.New("parameter client.subscriptionID cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
if resourceGroupName == "" {
return nil, errors.New("parameter resourceGroupName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
if accountName == "" {
return nil, errors.New("parameter accountName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{accountName}", url.PathEscape(accountName))
if networkSecurityPerimeterConfigurationName == "" {
return nil, errors.New("parameter networkSecurityPerimeterConfigurationName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{networkSecurityPerimeterConfigurationName}", url.PathEscape(networkSecurityPerimeterConfigurationName))
req, err := runtime.NewRequest(ctx, http.MethodPost, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
if err != nil {
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
}

View file

@ -46,7 +46,7 @@ func NewObjectReplicationPoliciesClient(subscriptionID string, credential azcore
// CreateOrUpdate - Create or update the object replication policy of the storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -102,7 +102,7 @@ func (client *ObjectReplicationPoliciesClient) createOrUpdateCreateRequest(ctx c
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, properties); err != nil {
@ -123,7 +123,7 @@ func (client *ObjectReplicationPoliciesClient) createOrUpdateHandleResponse(resp
// Delete - Deletes the object replication policy associated with the specified storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -177,7 +177,7 @@ func (client *ObjectReplicationPoliciesClient) deleteCreateRequest(ctx context.C
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -186,7 +186,7 @@ func (client *ObjectReplicationPoliciesClient) deleteCreateRequest(ctx context.C
// Get - Get the object replication policy of the storage account by policy ID.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -241,7 +241,7 @@ func (client *ObjectReplicationPoliciesClient) getCreateRequest(ctx context.Cont
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -258,7 +258,7 @@ func (client *ObjectReplicationPoliciesClient) getHandleResponse(resp *http.Resp
// NewListPager - List the object replication policies associated with the storage account.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -308,7 +308,7 @@ func (client *ObjectReplicationPoliciesClient) listCreateRequest(ctx context.Con
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil

View file

@ -39,7 +39,7 @@ func NewOperationsClient(credential azcore.TokenCredential, options *arm.ClientO
// NewListPager - Lists all of the available Storage Rest API operations.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - options - OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method.
func (client *OperationsClient) NewListPager(options *OperationsClientListOptions) *runtime.Pager[OperationsClientListResponse] {
return runtime.NewPager(runtime.PagingHandler[OperationsClientListResponse]{
@ -73,7 +73,7 @@ func (client *OperationsClient) listCreateRequest(ctx context.Context, options *
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil

View file

@ -392,7 +392,14 @@ type LocalUsersClientListKeysOptions struct {
// LocalUsersClientListOptions contains the optional parameters for the LocalUsersClient.NewListPager method.
type LocalUsersClientListOptions struct {
// placeholder for future optional parameters
// Optional. When specified, only local user names starting with the filter will be listed.
Filter *string
// Optional, when specified, will list local users enabled for the specific protocol. Lists all users by default.
Include *ListLocalUserIncludeParam
// Optional, specifies the maximum number of local users that will be included in the list response.
Maxpagesize *int32
}
// LocalUsersClientRegeneratePasswordOptions contains the optional parameters for the LocalUsersClient.RegeneratePassword
@ -417,6 +424,25 @@ type ManagementPoliciesClientGetOptions struct {
// placeholder for future optional parameters
}
// NetworkSecurityPerimeterConfigurationsClientBeginReconcileOptions contains the optional parameters for the NetworkSecurityPerimeterConfigurationsClient.BeginReconcile
// method.
type NetworkSecurityPerimeterConfigurationsClientBeginReconcileOptions struct {
// Resumes the LRO from the provided token.
ResumeToken string
}
// NetworkSecurityPerimeterConfigurationsClientGetOptions contains the optional parameters for the NetworkSecurityPerimeterConfigurationsClient.Get
// method.
type NetworkSecurityPerimeterConfigurationsClientGetOptions struct {
// placeholder for future optional parameters
}
// NetworkSecurityPerimeterConfigurationsClientListOptions contains the optional parameters for the NetworkSecurityPerimeterConfigurationsClient.NewListPager
// method.
type NetworkSecurityPerimeterConfigurationsClientListOptions struct {
// placeholder for future optional parameters
}
// ObjectReplicationPoliciesClientCreateOrUpdateOptions contains the optional parameters for the ObjectReplicationPoliciesClient.CreateOrUpdate
// method.
type ObjectReplicationPoliciesClientCreateOrUpdateOptions struct {
@ -571,6 +597,59 @@ type TableServicesClientSetServicePropertiesOptions struct {
// placeholder for future optional parameters
}
// TaskAssignmentInstancesReportClientListOptions contains the optional parameters for the TaskAssignmentInstancesReportClient.NewListPager
// method.
type TaskAssignmentInstancesReportClientListOptions struct {
// Optional. When specified, it can be used to query using reporting properties. See Constructing Filter Strings
// [https://learn.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities#constructing-filter-strings] for
// details.
Filter *string
// Optional, specifies the maximum number of storage task assignment instances to be included in the list response.
Maxpagesize *int32
}
// TaskAssignmentsClientBeginCreateOptions contains the optional parameters for the TaskAssignmentsClient.BeginCreate method.
type TaskAssignmentsClientBeginCreateOptions struct {
// Resumes the LRO from the provided token.
ResumeToken string
}
// TaskAssignmentsClientBeginDeleteOptions contains the optional parameters for the TaskAssignmentsClient.BeginDelete method.
type TaskAssignmentsClientBeginDeleteOptions struct {
// Resumes the LRO from the provided token.
ResumeToken string
}
// TaskAssignmentsClientBeginUpdateOptions contains the optional parameters for the TaskAssignmentsClient.BeginUpdate method.
type TaskAssignmentsClientBeginUpdateOptions struct {
// Resumes the LRO from the provided token.
ResumeToken string
}
// TaskAssignmentsClientGetOptions contains the optional parameters for the TaskAssignmentsClient.Get method.
type TaskAssignmentsClientGetOptions struct {
// placeholder for future optional parameters
}
// TaskAssignmentsClientListOptions contains the optional parameters for the TaskAssignmentsClient.NewListPager method.
type TaskAssignmentsClientListOptions struct {
// Optional, specifies the maximum number of storage task assignment Ids to be included in the list response.
Maxpagesize *int32
}
// TaskAssignmentsInstancesReportClientListOptions contains the optional parameters for the TaskAssignmentsInstancesReportClient.NewListPager
// method.
type TaskAssignmentsInstancesReportClientListOptions struct {
// Optional. When specified, it can be used to query using reporting properties. See Constructing Filter Strings
// [https://learn.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities#constructing-filter-strings] for
// details.
Filter *string
// Optional, specifies the maximum number of storage task assignment instances to be included in the list response.
Maxpagesize *int32
}
// UsagesClientListByLocationOptions contains the optional parameters for the UsagesClient.NewListByLocationPager method.
type UsagesClientListByLocationOptions struct {
// placeholder for future optional parameters

View file

@ -46,7 +46,7 @@ func NewPrivateEndpointConnectionsClient(subscriptionID string, credential azcor
// Delete - Deletes the specified private endpoint connection associated with the storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -98,7 +98,7 @@ func (client *PrivateEndpointConnectionsClient) deleteCreateRequest(ctx context.
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -107,7 +107,7 @@ func (client *PrivateEndpointConnectionsClient) deleteCreateRequest(ctx context.
// Get - Gets the specified private endpoint connection associated with the storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -160,7 +160,7 @@ func (client *PrivateEndpointConnectionsClient) getCreateRequest(ctx context.Con
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -177,7 +177,7 @@ func (client *PrivateEndpointConnectionsClient) getHandleResponse(resp *http.Res
// NewListPager - List all the private endpoint connections associated with the storage account.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -227,7 +227,7 @@ func (client *PrivateEndpointConnectionsClient) listCreateRequest(ctx context.Co
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -245,7 +245,7 @@ func (client *PrivateEndpointConnectionsClient) listHandleResponse(resp *http.Re
// Put - Update the state of specified private endpoint connection associated with the storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -299,7 +299,7 @@ func (client *PrivateEndpointConnectionsClient) putCreateRequest(ctx context.Con
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, properties); err != nil {

View file

@ -46,7 +46,7 @@ func NewPrivateLinkResourcesClient(subscriptionID string, credential azcore.Toke
// ListByStorageAccount - Gets the private link resources that need to be created for a storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -94,7 +94,7 @@ func (client *PrivateLinkResourcesClient) listByStorageAccountCreateRequest(ctx
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil

View file

@ -46,7 +46,7 @@ func NewQueueClient(subscriptionID string, credential azcore.TokenCredential, op
// Create - Creates a new queue with the specified queue name, under the specified account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -101,7 +101,7 @@ func (client *QueueClient) createCreateRequest(ctx context.Context, resourceGrou
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, queue); err != nil {
@ -122,7 +122,7 @@ func (client *QueueClient) createHandleResponse(resp *http.Response) (QueueClien
// Delete - Deletes the queue with the specified queue name, under the specified account if it exists.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -175,7 +175,7 @@ func (client *QueueClient) deleteCreateRequest(ctx context.Context, resourceGrou
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -184,7 +184,7 @@ func (client *QueueClient) deleteCreateRequest(ctx context.Context, resourceGrou
// Get - Gets the queue with the specified queue name, under the specified account if it exists.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -238,7 +238,7 @@ func (client *QueueClient) getCreateRequest(ctx context.Context, resourceGroupNa
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -255,7 +255,7 @@ func (client *QueueClient) getHandleResponse(resp *http.Response) (QueueClientGe
// NewListPager - Gets a list of all the queues under the specified storage account
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -303,13 +303,13 @@ func (client *QueueClient) listCreateRequest(ctx context.Context, resourceGroupN
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
if options != nil && options.Maxpagesize != nil {
reqQP.Set("$maxpagesize", *options.Maxpagesize)
}
if options != nil && options.Filter != nil {
reqQP.Set("$filter", *options.Filter)
}
if options != nil && options.Maxpagesize != nil {
reqQP.Set("$maxpagesize", *options.Maxpagesize)
}
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -327,7 +327,7 @@ func (client *QueueClient) listHandleResponse(resp *http.Response) (QueueClientL
// Update - Creates a new queue with the specified queue name, under the specified account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -382,7 +382,7 @@ func (client *QueueClient) updateCreateRequest(ctx context.Context, resourceGrou
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, queue); err != nil {

View file

@ -47,7 +47,7 @@ func NewQueueServicesClient(subscriptionID string, credential azcore.TokenCreden
// and CORS (Cross-Origin Resource Sharing) rules.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -96,7 +96,7 @@ func (client *QueueServicesClient) getServicePropertiesCreateRequest(ctx context
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -114,7 +114,7 @@ func (client *QueueServicesClient) getServicePropertiesHandleResponse(resp *http
// List - List all queue services for the storage account
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -161,7 +161,7 @@ func (client *QueueServicesClient) listCreateRequest(ctx context.Context, resour
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -180,7 +180,7 @@ func (client *QueueServicesClient) listHandleResponse(resp *http.Response) (Queu
// and CORS (Cross-Origin Resource Sharing) rules.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -231,7 +231,7 @@ func (client *QueueServicesClient) setServicePropertiesCreateRequest(ctx context
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, parameters); err != nil {

View file

@ -369,7 +369,7 @@ type LocalUsersClientListKeysResponse struct {
// LocalUsersClientListResponse contains the response from method LocalUsersClient.NewListPager.
type LocalUsersClientListResponse struct {
// List storage account local users.
// List of local users requested, and if paging is required, a URL to the next page of local users.
LocalUsers
}
@ -396,6 +396,23 @@ type ManagementPoliciesClientGetResponse struct {
ManagementPolicy
}
// NetworkSecurityPerimeterConfigurationsClientGetResponse contains the response from method NetworkSecurityPerimeterConfigurationsClient.Get.
type NetworkSecurityPerimeterConfigurationsClientGetResponse struct {
// The Network Security Perimeter configuration resource.
NetworkSecurityPerimeterConfiguration
}
// NetworkSecurityPerimeterConfigurationsClientListResponse contains the response from method NetworkSecurityPerimeterConfigurationsClient.NewListPager.
type NetworkSecurityPerimeterConfigurationsClientListResponse struct {
// Result of the List Network Security Perimeter configuration operation.
NetworkSecurityPerimeterConfigurationList
}
// NetworkSecurityPerimeterConfigurationsClientReconcileResponse contains the response from method NetworkSecurityPerimeterConfigurationsClient.BeginReconcile.
type NetworkSecurityPerimeterConfigurationsClientReconcileResponse struct {
// placeholder for future response values
}
// ObjectReplicationPoliciesClientCreateOrUpdateResponse contains the response from method ObjectReplicationPoliciesClient.CreateOrUpdate.
type ObjectReplicationPoliciesClientCreateOrUpdateResponse struct {
// The replication policy between two storage accounts. Multiple rules can be defined in one policy.
@ -550,6 +567,47 @@ type TableServicesClientSetServicePropertiesResponse struct {
TableServiceProperties
}
// TaskAssignmentInstancesReportClientListResponse contains the response from method TaskAssignmentInstancesReportClient.NewListPager.
type TaskAssignmentInstancesReportClientListResponse struct {
// Fetch Storage Tasks Run Summary.
TaskReportSummary
}
// TaskAssignmentsClientCreateResponse contains the response from method TaskAssignmentsClient.BeginCreate.
type TaskAssignmentsClientCreateResponse struct {
// The storage task assignment.
TaskAssignment
}
// TaskAssignmentsClientDeleteResponse contains the response from method TaskAssignmentsClient.BeginDelete.
type TaskAssignmentsClientDeleteResponse struct {
// placeholder for future response values
}
// TaskAssignmentsClientGetResponse contains the response from method TaskAssignmentsClient.Get.
type TaskAssignmentsClientGetResponse struct {
// The storage task assignment.
TaskAssignment
}
// TaskAssignmentsClientListResponse contains the response from method TaskAssignmentsClient.NewListPager.
type TaskAssignmentsClientListResponse struct {
// List of storage task assignments for the storage account
TaskAssignmentsList
}
// TaskAssignmentsClientUpdateResponse contains the response from method TaskAssignmentsClient.BeginUpdate.
type TaskAssignmentsClientUpdateResponse struct {
// The storage task assignment.
TaskAssignment
}
// TaskAssignmentsInstancesReportClientListResponse contains the response from method TaskAssignmentsInstancesReportClient.NewListPager.
type TaskAssignmentsInstancesReportClientListResponse struct {
// Fetch Storage Tasks Run Summary.
TaskReportSummary
}
// UsagesClientListByLocationResponse contains the response from method UsagesClient.NewListByLocationPager.
type UsagesClientListByLocationResponse struct {
// The response from the List Usages operation.

View file

@ -45,7 +45,7 @@ func NewSKUsClient(subscriptionID string, credential azcore.TokenCredential, opt
// NewListPager - Lists the available SKUs supported by Microsoft.Storage for given subscription.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - options - SKUsClientListOptions contains the optional parameters for the SKUsClient.NewListPager method.
func (client *SKUsClient) NewListPager(options *SKUsClientListOptions) *runtime.Pager[SKUsClientListResponse] {
return runtime.NewPager(runtime.PagingHandler[SKUsClientListResponse]{
@ -83,7 +83,7 @@ func (client *SKUsClient) listCreateRequest(ctx context.Context, options *SKUsCl
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil

View file

@ -46,7 +46,7 @@ func NewTableClient(subscriptionID string, credential azcore.TokenCredential, op
// Create - Creates a new table with the specified table name, under the specified account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -99,7 +99,7 @@ func (client *TableClient) createCreateRequest(ctx context.Context, resourceGrou
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if options != nil && options.Parameters != nil {
@ -123,7 +123,7 @@ func (client *TableClient) createHandleResponse(resp *http.Response) (TableClien
// Delete - Deletes the table with the specified table name, under the specified account if it exists.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -175,7 +175,7 @@ func (client *TableClient) deleteCreateRequest(ctx context.Context, resourceGrou
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -184,7 +184,7 @@ func (client *TableClient) deleteCreateRequest(ctx context.Context, resourceGrou
// Get - Gets the table with the specified table name, under the specified account if it exists.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -237,7 +237,7 @@ func (client *TableClient) getCreateRequest(ctx context.Context, resourceGroupNa
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -254,7 +254,7 @@ func (client *TableClient) getHandleResponse(resp *http.Response) (TableClientGe
// NewListPager - Gets a list of all the tables under the specified storage account
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -302,7 +302,7 @@ func (client *TableClient) listCreateRequest(ctx context.Context, resourceGroupN
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -320,7 +320,7 @@ func (client *TableClient) listHandleResponse(resp *http.Response) (TableClientL
// Update - Creates a new table with the specified table name, under the specified account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -373,7 +373,7 @@ func (client *TableClient) updateCreateRequest(ctx context.Context, resourceGrou
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if options != nil && options.Parameters != nil {

View file

@ -47,7 +47,7 @@ func NewTableServicesClient(subscriptionID string, credential azcore.TokenCreden
// and CORS (Cross-Origin Resource Sharing) rules.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -96,7 +96,7 @@ func (client *TableServicesClient) getServicePropertiesCreateRequest(ctx context
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -114,7 +114,7 @@ func (client *TableServicesClient) getServicePropertiesHandleResponse(resp *http
// List - List all table services for the storage account.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -161,7 +161,7 @@ func (client *TableServicesClient) listCreateRequest(ctx context.Context, resour
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
@ -180,7 +180,7 @@ func (client *TableServicesClient) listHandleResponse(resp *http.Response) (Tabl
// and CORS (Cross-Origin Resource Sharing) rules.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group within the user's subscription. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
@ -231,7 +231,7 @@ func (client *TableServicesClient) setServicePropertiesCreateRequest(ctx context
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, parameters); err != nil {

View file

@ -0,0 +1,123 @@
//go:build go1.18
// +build go1.18
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
package armstorage
import (
"context"
"errors"
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
"net/http"
"net/url"
"strconv"
"strings"
)
// TaskAssignmentInstancesReportClient contains the methods for the StorageTaskAssignmentInstancesReport group.
// Don't use this type directly, use NewTaskAssignmentInstancesReportClient() instead.
type TaskAssignmentInstancesReportClient struct {
internal *arm.Client
subscriptionID string
}
// NewTaskAssignmentInstancesReportClient creates a new instance of TaskAssignmentInstancesReportClient with the specified values.
// - subscriptionID - The ID of the target subscription.
// - credential - used to authorize requests. Usually a credential from azidentity.
// - options - pass nil to accept the default values.
func NewTaskAssignmentInstancesReportClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*TaskAssignmentInstancesReportClient, error) {
cl, err := arm.NewClient(moduleName, moduleVersion, credential, options)
if err != nil {
return nil, err
}
client := &TaskAssignmentInstancesReportClient{
subscriptionID: subscriptionID,
internal: cl,
}
return client, nil
}
// NewListPager - Fetch the report summary of a single storage task assignment's instances
//
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
// - storageTaskAssignmentName - The name of the storage task assignment within the specified resource group. Storage task assignment
// names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
// - options - TaskAssignmentInstancesReportClientListOptions contains the optional parameters for the TaskAssignmentInstancesReportClient.NewListPager
// method.
func (client *TaskAssignmentInstancesReportClient) NewListPager(resourceGroupName string, accountName string, storageTaskAssignmentName string, options *TaskAssignmentInstancesReportClientListOptions) *runtime.Pager[TaskAssignmentInstancesReportClientListResponse] {
return runtime.NewPager(runtime.PagingHandler[TaskAssignmentInstancesReportClientListResponse]{
More: func(page TaskAssignmentInstancesReportClientListResponse) bool {
return page.NextLink != nil && len(*page.NextLink) > 0
},
Fetcher: func(ctx context.Context, page *TaskAssignmentInstancesReportClientListResponse) (TaskAssignmentInstancesReportClientListResponse, error) {
ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "TaskAssignmentInstancesReportClient.NewListPager")
nextLink := ""
if page != nil {
nextLink = *page.NextLink
}
resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) {
return client.listCreateRequest(ctx, resourceGroupName, accountName, storageTaskAssignmentName, options)
}, nil)
if err != nil {
return TaskAssignmentInstancesReportClientListResponse{}, err
}
return client.listHandleResponse(resp)
},
Tracer: client.internal.Tracer(),
})
}
// listCreateRequest creates the List request.
func (client *TaskAssignmentInstancesReportClient) listCreateRequest(ctx context.Context, resourceGroupName string, accountName string, storageTaskAssignmentName string, options *TaskAssignmentInstancesReportClientListOptions) (*policy.Request, error) {
urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/storageTaskAssignments/{storageTaskAssignmentName}/reports"
if client.subscriptionID == "" {
return nil, errors.New("parameter client.subscriptionID cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
if resourceGroupName == "" {
return nil, errors.New("parameter resourceGroupName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
if accountName == "" {
return nil, errors.New("parameter accountName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{accountName}", url.PathEscape(accountName))
if storageTaskAssignmentName == "" {
return nil, errors.New("parameter storageTaskAssignmentName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{storageTaskAssignmentName}", url.PathEscape(storageTaskAssignmentName))
req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
if err != nil {
return nil, err
}
reqQP := req.Raw().URL.Query()
if options != nil && options.Filter != nil {
reqQP.Set("$filter", *options.Filter)
}
if options != nil && options.Maxpagesize != nil {
reqQP.Set("$maxpagesize", strconv.FormatInt(int64(*options.Maxpagesize), 10))
}
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
}
// listHandleResponse handles the List response.
func (client *TaskAssignmentInstancesReportClient) listHandleResponse(resp *http.Response) (TaskAssignmentInstancesReportClientListResponse, error) {
result := TaskAssignmentInstancesReportClientListResponse{}
if err := runtime.UnmarshalAsJSON(resp, &result.TaskReportSummary); err != nil {
return TaskAssignmentInstancesReportClientListResponse{}, err
}
return result, nil
}

View file

@ -0,0 +1,453 @@
//go:build go1.18
// +build go1.18
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
package armstorage
import (
"context"
"errors"
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
"net/http"
"net/url"
"strconv"
"strings"
)
// TaskAssignmentsClient contains the methods for the StorageTaskAssignments group.
// Don't use this type directly, use NewTaskAssignmentsClient() instead.
type TaskAssignmentsClient struct {
internal *arm.Client
subscriptionID string
}
// NewTaskAssignmentsClient creates a new instance of TaskAssignmentsClient with the specified values.
// - subscriptionID - The ID of the target subscription.
// - credential - used to authorize requests. Usually a credential from azidentity.
// - options - pass nil to accept the default values.
func NewTaskAssignmentsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*TaskAssignmentsClient, error) {
cl, err := arm.NewClient(moduleName, moduleVersion, credential, options)
if err != nil {
return nil, err
}
client := &TaskAssignmentsClient{
subscriptionID: subscriptionID,
internal: cl,
}
return client, nil
}
// BeginCreate - Asynchronously creates a new storage task assignment sub-resource with the specified parameters. If a storage
// task assignment is already created and a subsequent create request is issued with
// different properties, the storage task assignment properties will be updated. If a storage task assignment is already created
// and a subsequent create or update request is issued with the exact same
// set of properties, the request will succeed.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
// - storageTaskAssignmentName - The name of the storage task assignment within the specified resource group. Storage task assignment
// names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
// - parameters - The parameters to create a Storage Task Assignment.
// - options - TaskAssignmentsClientBeginCreateOptions contains the optional parameters for the TaskAssignmentsClient.BeginCreate
// method.
func (client *TaskAssignmentsClient) BeginCreate(ctx context.Context, resourceGroupName string, accountName string, storageTaskAssignmentName string, parameters TaskAssignment, options *TaskAssignmentsClientBeginCreateOptions) (*runtime.Poller[TaskAssignmentsClientCreateResponse], error) {
if options == nil || options.ResumeToken == "" {
resp, err := client.create(ctx, resourceGroupName, accountName, storageTaskAssignmentName, parameters, options)
if err != nil {
return nil, err
}
poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[TaskAssignmentsClientCreateResponse]{
FinalStateVia: runtime.FinalStateViaLocation,
Tracer: client.internal.Tracer(),
})
return poller, err
} else {
return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[TaskAssignmentsClientCreateResponse]{
Tracer: client.internal.Tracer(),
})
}
}
// Create - Asynchronously creates a new storage task assignment sub-resource with the specified parameters. If a storage
// task assignment is already created and a subsequent create request is issued with
// different properties, the storage task assignment properties will be updated. If a storage task assignment is already created
// and a subsequent create or update request is issued with the exact same
// set of properties, the request will succeed.
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-05-01
func (client *TaskAssignmentsClient) create(ctx context.Context, resourceGroupName string, accountName string, storageTaskAssignmentName string, parameters TaskAssignment, options *TaskAssignmentsClientBeginCreateOptions) (*http.Response, error) {
var err error
const operationName = "TaskAssignmentsClient.BeginCreate"
ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
defer func() { endSpan(err) }()
req, err := client.createCreateRequest(ctx, resourceGroupName, accountName, storageTaskAssignmentName, parameters, options)
if err != nil {
return nil, err
}
httpResp, err := client.internal.Pipeline().Do(req)
if err != nil {
return nil, err
}
if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated, http.StatusAccepted) {
err = runtime.NewResponseError(httpResp)
return nil, err
}
return httpResp, nil
}
// createCreateRequest creates the Create request.
func (client *TaskAssignmentsClient) createCreateRequest(ctx context.Context, resourceGroupName string, accountName string, storageTaskAssignmentName string, parameters TaskAssignment, options *TaskAssignmentsClientBeginCreateOptions) (*policy.Request, error) {
urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/storageTaskAssignments/{storageTaskAssignmentName}"
if client.subscriptionID == "" {
return nil, errors.New("parameter client.subscriptionID cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
if resourceGroupName == "" {
return nil, errors.New("parameter resourceGroupName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
if accountName == "" {
return nil, errors.New("parameter accountName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{accountName}", url.PathEscape(accountName))
if storageTaskAssignmentName == "" {
return nil, errors.New("parameter storageTaskAssignmentName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{storageTaskAssignmentName}", url.PathEscape(storageTaskAssignmentName))
req, err := runtime.NewRequest(ctx, http.MethodPut, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
if err != nil {
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, parameters); err != nil {
return nil, err
}
return req, nil
}
// BeginDelete - Delete the storage task assignment sub-resource
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
// - storageTaskAssignmentName - The name of the storage task assignment within the specified resource group. Storage task assignment
// names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
// - options - TaskAssignmentsClientBeginDeleteOptions contains the optional parameters for the TaskAssignmentsClient.BeginDelete
// method.
func (client *TaskAssignmentsClient) BeginDelete(ctx context.Context, resourceGroupName string, accountName string, storageTaskAssignmentName string, options *TaskAssignmentsClientBeginDeleteOptions) (*runtime.Poller[TaskAssignmentsClientDeleteResponse], error) {
if options == nil || options.ResumeToken == "" {
resp, err := client.deleteOperation(ctx, resourceGroupName, accountName, storageTaskAssignmentName, options)
if err != nil {
return nil, err
}
poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[TaskAssignmentsClientDeleteResponse]{
FinalStateVia: runtime.FinalStateViaLocation,
Tracer: client.internal.Tracer(),
})
return poller, err
} else {
return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[TaskAssignmentsClientDeleteResponse]{
Tracer: client.internal.Tracer(),
})
}
}
// Delete - Delete the storage task assignment sub-resource
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-05-01
func (client *TaskAssignmentsClient) deleteOperation(ctx context.Context, resourceGroupName string, accountName string, storageTaskAssignmentName string, options *TaskAssignmentsClientBeginDeleteOptions) (*http.Response, error) {
var err error
const operationName = "TaskAssignmentsClient.BeginDelete"
ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
defer func() { endSpan(err) }()
req, err := client.deleteCreateRequest(ctx, resourceGroupName, accountName, storageTaskAssignmentName, options)
if err != nil {
return nil, err
}
httpResp, err := client.internal.Pipeline().Do(req)
if err != nil {
return nil, err
}
if !runtime.HasStatusCode(httpResp, http.StatusAccepted, http.StatusNoContent) {
err = runtime.NewResponseError(httpResp)
return nil, err
}
return httpResp, nil
}
// deleteCreateRequest creates the Delete request.
func (client *TaskAssignmentsClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, accountName string, storageTaskAssignmentName string, options *TaskAssignmentsClientBeginDeleteOptions) (*policy.Request, error) {
urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/storageTaskAssignments/{storageTaskAssignmentName}"
if client.subscriptionID == "" {
return nil, errors.New("parameter client.subscriptionID cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
if resourceGroupName == "" {
return nil, errors.New("parameter resourceGroupName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
if accountName == "" {
return nil, errors.New("parameter accountName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{accountName}", url.PathEscape(accountName))
if storageTaskAssignmentName == "" {
return nil, errors.New("parameter storageTaskAssignmentName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{storageTaskAssignmentName}", url.PathEscape(storageTaskAssignmentName))
req, err := runtime.NewRequest(ctx, http.MethodDelete, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
if err != nil {
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
}
// Get - Get the storage task assignment properties
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
// - storageTaskAssignmentName - The name of the storage task assignment within the specified resource group. Storage task assignment
// names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
// - options - TaskAssignmentsClientGetOptions contains the optional parameters for the TaskAssignmentsClient.Get method.
func (client *TaskAssignmentsClient) Get(ctx context.Context, resourceGroupName string, accountName string, storageTaskAssignmentName string, options *TaskAssignmentsClientGetOptions) (TaskAssignmentsClientGetResponse, error) {
var err error
const operationName = "TaskAssignmentsClient.Get"
ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
defer func() { endSpan(err) }()
req, err := client.getCreateRequest(ctx, resourceGroupName, accountName, storageTaskAssignmentName, options)
if err != nil {
return TaskAssignmentsClientGetResponse{}, err
}
httpResp, err := client.internal.Pipeline().Do(req)
if err != nil {
return TaskAssignmentsClientGetResponse{}, err
}
if !runtime.HasStatusCode(httpResp, http.StatusOK) {
err = runtime.NewResponseError(httpResp)
return TaskAssignmentsClientGetResponse{}, err
}
resp, err := client.getHandleResponse(httpResp)
return resp, err
}
// getCreateRequest creates the Get request.
func (client *TaskAssignmentsClient) getCreateRequest(ctx context.Context, resourceGroupName string, accountName string, storageTaskAssignmentName string, options *TaskAssignmentsClientGetOptions) (*policy.Request, error) {
urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/storageTaskAssignments/{storageTaskAssignmentName}"
if client.subscriptionID == "" {
return nil, errors.New("parameter client.subscriptionID cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
if resourceGroupName == "" {
return nil, errors.New("parameter resourceGroupName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
if accountName == "" {
return nil, errors.New("parameter accountName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{accountName}", url.PathEscape(accountName))
if storageTaskAssignmentName == "" {
return nil, errors.New("parameter storageTaskAssignmentName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{storageTaskAssignmentName}", url.PathEscape(storageTaskAssignmentName))
req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
if err != nil {
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
}
// getHandleResponse handles the Get response.
func (client *TaskAssignmentsClient) getHandleResponse(resp *http.Response) (TaskAssignmentsClientGetResponse, error) {
result := TaskAssignmentsClientGetResponse{}
if err := runtime.UnmarshalAsJSON(resp, &result.TaskAssignment); err != nil {
return TaskAssignmentsClientGetResponse{}, err
}
return result, nil
}
// NewListPager - List all the storage task assignments in an account
//
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
// - options - TaskAssignmentsClientListOptions contains the optional parameters for the TaskAssignmentsClient.NewListPager
// method.
func (client *TaskAssignmentsClient) NewListPager(resourceGroupName string, accountName string, options *TaskAssignmentsClientListOptions) *runtime.Pager[TaskAssignmentsClientListResponse] {
return runtime.NewPager(runtime.PagingHandler[TaskAssignmentsClientListResponse]{
More: func(page TaskAssignmentsClientListResponse) bool {
return page.NextLink != nil && len(*page.NextLink) > 0
},
Fetcher: func(ctx context.Context, page *TaskAssignmentsClientListResponse) (TaskAssignmentsClientListResponse, error) {
ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "TaskAssignmentsClient.NewListPager")
nextLink := ""
if page != nil {
nextLink = *page.NextLink
}
resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) {
return client.listCreateRequest(ctx, resourceGroupName, accountName, options)
}, nil)
if err != nil {
return TaskAssignmentsClientListResponse{}, err
}
return client.listHandleResponse(resp)
},
Tracer: client.internal.Tracer(),
})
}
// listCreateRequest creates the List request.
func (client *TaskAssignmentsClient) listCreateRequest(ctx context.Context, resourceGroupName string, accountName string, options *TaskAssignmentsClientListOptions) (*policy.Request, error) {
urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/storageTaskAssignments"
if client.subscriptionID == "" {
return nil, errors.New("parameter client.subscriptionID cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
if resourceGroupName == "" {
return nil, errors.New("parameter resourceGroupName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
if accountName == "" {
return nil, errors.New("parameter accountName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{accountName}", url.PathEscape(accountName))
req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
if err != nil {
return nil, err
}
reqQP := req.Raw().URL.Query()
if options != nil && options.Maxpagesize != nil {
reqQP.Set("$maxpagesize", strconv.FormatInt(int64(*options.Maxpagesize), 10))
}
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
}
// listHandleResponse handles the List response.
func (client *TaskAssignmentsClient) listHandleResponse(resp *http.Response) (TaskAssignmentsClientListResponse, error) {
result := TaskAssignmentsClientListResponse{}
if err := runtime.UnmarshalAsJSON(resp, &result.TaskAssignmentsList); err != nil {
return TaskAssignmentsClientListResponse{}, err
}
return result, nil
}
// BeginUpdate - Update storage task assignment properties
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
// - storageTaskAssignmentName - The name of the storage task assignment within the specified resource group. Storage task assignment
// names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
// - parameters - The parameters to update a Storage Task Assignment.
// - options - TaskAssignmentsClientBeginUpdateOptions contains the optional parameters for the TaskAssignmentsClient.BeginUpdate
// method.
func (client *TaskAssignmentsClient) BeginUpdate(ctx context.Context, resourceGroupName string, accountName string, storageTaskAssignmentName string, parameters TaskAssignmentUpdateParameters, options *TaskAssignmentsClientBeginUpdateOptions) (*runtime.Poller[TaskAssignmentsClientUpdateResponse], error) {
if options == nil || options.ResumeToken == "" {
resp, err := client.update(ctx, resourceGroupName, accountName, storageTaskAssignmentName, parameters, options)
if err != nil {
return nil, err
}
poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[TaskAssignmentsClientUpdateResponse]{
FinalStateVia: runtime.FinalStateViaLocation,
Tracer: client.internal.Tracer(),
})
return poller, err
} else {
return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[TaskAssignmentsClientUpdateResponse]{
Tracer: client.internal.Tracer(),
})
}
}
// Update - Update storage task assignment properties
// If the operation fails it returns an *azcore.ResponseError type.
//
// Generated from API version 2023-05-01
func (client *TaskAssignmentsClient) update(ctx context.Context, resourceGroupName string, accountName string, storageTaskAssignmentName string, parameters TaskAssignmentUpdateParameters, options *TaskAssignmentsClientBeginUpdateOptions) (*http.Response, error) {
var err error
const operationName = "TaskAssignmentsClient.BeginUpdate"
ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName)
ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil)
defer func() { endSpan(err) }()
req, err := client.updateCreateRequest(ctx, resourceGroupName, accountName, storageTaskAssignmentName, parameters, options)
if err != nil {
return nil, err
}
httpResp, err := client.internal.Pipeline().Do(req)
if err != nil {
return nil, err
}
if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) {
err = runtime.NewResponseError(httpResp)
return nil, err
}
return httpResp, nil
}
// updateCreateRequest creates the Update request.
func (client *TaskAssignmentsClient) updateCreateRequest(ctx context.Context, resourceGroupName string, accountName string, storageTaskAssignmentName string, parameters TaskAssignmentUpdateParameters, options *TaskAssignmentsClientBeginUpdateOptions) (*policy.Request, error) {
urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/storageTaskAssignments/{storageTaskAssignmentName}"
if client.subscriptionID == "" {
return nil, errors.New("parameter client.subscriptionID cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
if resourceGroupName == "" {
return nil, errors.New("parameter resourceGroupName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
if accountName == "" {
return nil, errors.New("parameter accountName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{accountName}", url.PathEscape(accountName))
if storageTaskAssignmentName == "" {
return nil, errors.New("parameter storageTaskAssignmentName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{storageTaskAssignmentName}", url.PathEscape(storageTaskAssignmentName))
req, err := runtime.NewRequest(ctx, http.MethodPatch, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
if err != nil {
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
if err := runtime.MarshalAsJSON(req, parameters); err != nil {
return nil, err
}
return req, nil
}

View file

@ -0,0 +1,117 @@
//go:build go1.18
// +build go1.18
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
package armstorage
import (
"context"
"errors"
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
"net/http"
"net/url"
"strconv"
"strings"
)
// TaskAssignmentsInstancesReportClient contains the methods for the StorageTaskAssignmentsInstancesReport group.
// Don't use this type directly, use NewTaskAssignmentsInstancesReportClient() instead.
type TaskAssignmentsInstancesReportClient struct {
internal *arm.Client
subscriptionID string
}
// NewTaskAssignmentsInstancesReportClient creates a new instance of TaskAssignmentsInstancesReportClient with the specified values.
// - subscriptionID - The ID of the target subscription.
// - credential - used to authorize requests. Usually a credential from azidentity.
// - options - pass nil to accept the default values.
func NewTaskAssignmentsInstancesReportClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*TaskAssignmentsInstancesReportClient, error) {
cl, err := arm.NewClient(moduleName, moduleVersion, credential, options)
if err != nil {
return nil, err
}
client := &TaskAssignmentsInstancesReportClient{
subscriptionID: subscriptionID,
internal: cl,
}
return client, nil
}
// NewListPager - Fetch the report summary of all the storage task assignments and instances in an account
//
// Generated from API version 2023-05-01
// - resourceGroupName - The name of the resource group. The name is case insensitive.
// - accountName - The name of the storage account within the specified resource group. Storage account names must be between
// 3 and 24 characters in length and use numbers and lower-case letters only.
// - options - TaskAssignmentsInstancesReportClientListOptions contains the optional parameters for the TaskAssignmentsInstancesReportClient.NewListPager
// method.
func (client *TaskAssignmentsInstancesReportClient) NewListPager(resourceGroupName string, accountName string, options *TaskAssignmentsInstancesReportClientListOptions) *runtime.Pager[TaskAssignmentsInstancesReportClientListResponse] {
return runtime.NewPager(runtime.PagingHandler[TaskAssignmentsInstancesReportClientListResponse]{
More: func(page TaskAssignmentsInstancesReportClientListResponse) bool {
return page.NextLink != nil && len(*page.NextLink) > 0
},
Fetcher: func(ctx context.Context, page *TaskAssignmentsInstancesReportClientListResponse) (TaskAssignmentsInstancesReportClientListResponse, error) {
ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "TaskAssignmentsInstancesReportClient.NewListPager")
nextLink := ""
if page != nil {
nextLink = *page.NextLink
}
resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) {
return client.listCreateRequest(ctx, resourceGroupName, accountName, options)
}, nil)
if err != nil {
return TaskAssignmentsInstancesReportClientListResponse{}, err
}
return client.listHandleResponse(resp)
},
Tracer: client.internal.Tracer(),
})
}
// listCreateRequest creates the List request.
func (client *TaskAssignmentsInstancesReportClient) listCreateRequest(ctx context.Context, resourceGroupName string, accountName string, options *TaskAssignmentsInstancesReportClientListOptions) (*policy.Request, error) {
urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/reports"
if client.subscriptionID == "" {
return nil, errors.New("parameter client.subscriptionID cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
if resourceGroupName == "" {
return nil, errors.New("parameter resourceGroupName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
if accountName == "" {
return nil, errors.New("parameter accountName cannot be empty")
}
urlPath = strings.ReplaceAll(urlPath, "{accountName}", url.PathEscape(accountName))
req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.internal.Endpoint(), urlPath))
if err != nil {
return nil, err
}
reqQP := req.Raw().URL.Query()
if options != nil && options.Filter != nil {
reqQP.Set("$filter", *options.Filter)
}
if options != nil && options.Maxpagesize != nil {
reqQP.Set("$maxpagesize", strconv.FormatInt(int64(*options.Maxpagesize), 10))
}
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil
}
// listHandleResponse handles the List response.
func (client *TaskAssignmentsInstancesReportClient) listHandleResponse(resp *http.Response) (TaskAssignmentsInstancesReportClientListResponse, error) {
result := TaskAssignmentsInstancesReportClientListResponse{}
if err := runtime.UnmarshalAsJSON(resp, &result.TaskReportSummary); err != nil {
return TaskAssignmentsInstancesReportClientListResponse{}, err
}
return result, nil
}

View file

@ -19,12 +19,16 @@ import (
)
// Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases.
var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`)
var tzOffsetRegex = regexp.MustCompile(`(?:Z|z|\+|-)(?:\d+:\d+)*"*$`)
const (
utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"`
utcDateTime = "2006-01-02T15:04:05.999999999"
dateTimeJSON = `"` + time.RFC3339Nano + `"`
utcDateTime = "2006-01-02T15:04:05.999999999"
utcDateTimeJSON = `"` + utcDateTime + `"`
utcDateTimeNoT = "2006-01-02 15:04:05.999999999"
utcDateTimeJSONNoT = `"` + utcDateTimeNoT + `"`
dateTimeNoT = `2006-01-02 15:04:05.999999999Z07:00`
dateTimeJSON = `"` + time.RFC3339Nano + `"`
dateTimeJSONNoT = `"` + dateTimeNoT + `"`
)
type dateTimeRFC3339 time.Time
@ -40,17 +44,33 @@ func (t dateTimeRFC3339) MarshalText() ([]byte, error) {
}
func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error {
layout := utcDateTimeJSON
if tzOffsetRegex.Match(data) {
tzOffset := tzOffsetRegex.Match(data)
hasT := strings.Contains(string(data), "T") || strings.Contains(string(data), "t")
var layout string
if tzOffset && hasT {
layout = dateTimeJSON
} else if tzOffset {
layout = dateTimeJSONNoT
} else if hasT {
layout = utcDateTimeJSON
} else {
layout = utcDateTimeJSONNoT
}
return t.Parse(layout, string(data))
}
func (t *dateTimeRFC3339) UnmarshalText(data []byte) error {
layout := utcDateTime
if tzOffsetRegex.Match(data) {
tzOffset := tzOffsetRegex.Match(data)
hasT := strings.Contains(string(data), "T") || strings.Contains(string(data), "t")
var layout string
if tzOffset && hasT {
layout = time.RFC3339Nano
} else if tzOffset {
layout = dateTimeNoT
} else if hasT {
layout = utcDateTime
} else {
layout = utcDateTimeNoT
}
return t.Parse(layout, string(data))
}
@ -61,6 +81,10 @@ func (t *dateTimeRFC3339) Parse(layout, value string) error {
return err
}
func (t dateTimeRFC3339) String() string {
return time.Time(t).Format(time.RFC3339Nano)
}
func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) {
if t == nil {
return
@ -74,7 +98,7 @@ func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) {
}
func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error {
if data == nil || strings.EqualFold(string(data), "null") {
if data == nil || string(data) == "null" {
return nil
}
var aux dateTimeRFC3339

View file

@ -45,7 +45,7 @@ func NewUsagesClient(subscriptionID string, credential azcore.TokenCredential, o
// NewListByLocationPager - Gets the current usage count and the limit for the resources of the location under the subscription.
//
// Generated from API version 2023-01-01
// Generated from API version 2023-05-01
// - location - The location of the Azure Storage resource.
// - options - UsagesClientListByLocationOptions contains the optional parameters for the UsagesClient.NewListByLocationPager
// method.
@ -89,7 +89,7 @@ func (client *UsagesClient) listByLocationCreateRequest(ctx context.Context, loc
return nil, err
}
reqQP := req.Raw().URL.Query()
reqQP.Set("api-version", "2023-01-01")
reqQP.Set("api-version", "2023-05-01")
req.Raw().URL.RawQuery = reqQP.Encode()
req.Raw().Header["Accept"] = []string{"application/json"}
return req, nil

File diff suppressed because it is too large Load diff

View file

@ -5,4 +5,4 @@ package aws
const SDKName = "aws-sdk-go"
// SDKVersion is the version of this SDK
const SDKVersion = "1.54.10"
const SDKVersion = "1.54.18"

View file

@ -65051,7 +65051,30 @@ type ByoipCidr struct {
// this time.
NetworkBorderGroup *string `locationName:"networkBorderGroup" type:"string"`
// The state of the address pool.
// The state of the address range.
//
// * advertised: The address range is being advertised to the internet by
// Amazon Web Services.
//
// * deprovisioned: The address range is deprovisioned.
//
// * failed-deprovision: The request to deprovision the address range was
// unsuccessful. Ensure that all EIPs from the range have been deallocated
// and try again.
//
// * failed-provision: The request to provision the address range was unsuccessful.
//
// * pending-deprovision: Youve submitted a request to deprovision an
// address range and it's pending.
//
// * pending-provision: Youve submitted a request to provision an address
// range and it's pending.
//
// * provisioned: The address range is provisioned and can be advertised.
// The range is not currently advertised.
//
// * provisioned-not-publicly-advertisable: The address range is provisioned
// and cannot be advertised.
State *string `locationName:"state" type:"string" enum:"ByoipCidrState"`
// Upon success, contains the ID of the address pool. Otherwise, contains an
@ -73326,15 +73349,14 @@ type CreateInstanceConnectEndpointInput struct {
// it is UnauthorizedOperation.
DryRun *bool `type:"boolean"`
// Indicates whether your client's IP address is preserved as the source. The
// value is true or false.
// Indicates whether the client IP address is preserved as the source. The following
// are the possible values.
//
// * If true, your client's IP address is used when you connect to a resource.
// * true - Use the client IP address as the source.
//
// * If false, the elastic network interface IP address is used when you
// connect to a resource.
// * false - Use the network interface IP address as the source.
//
// Default: true
// Default: false
PreserveClientIp *bool `type:"boolean"`
// One or more security groups to associate with the endpoint. If you don't
@ -73971,13 +73993,12 @@ type CreateIpamPoolInput struct {
// IpamScopeId is a required field
IpamScopeId *string `type:"string" required:"true"`
// In IPAM, the locale is the Amazon Web Services Region where you want to make
// an IPAM pool available for allocations. Only resources in the same Region
// as the locale of the pool can get IP address allocations from the pool. You
// can only allocate a CIDR for a VPC, for example, from an IPAM pool that shares
// a locale with the VPCs Region. Note that once you choose a Locale for
// a pool, you cannot modify it. If you do not choose a locale, resources in
// Regions others than the IPAM's home region cannot use CIDRs from this pool.
// In IPAM, the locale is the Amazon Web Services Region or, for IPAM IPv4 pools
// in the public scope, the network border group for an Amazon Web Services
// Local Zone where you want to make an IPAM pool available for allocations
// (supported Local Zones (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-zone-avail)).
// If you do not choose a locale, resources in Regions others than the IPAM's
// home region cannot use CIDRs from this pool.
//
// Possible values: Any Amazon Web Services Region, such as us-east-1.
Locale *string `type:"string"`
@ -76872,6 +76893,13 @@ type CreatePublicIpv4PoolInput struct {
// is UnauthorizedOperation.
DryRun *bool `type:"boolean"`
// The Availability Zone (AZ) or Local Zone (LZ) network border group that the
// resource that the IP address is assigned to is in. Defaults to an AZ network
// border group. For more information on available Local Zones, see Local Zone
// availability (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-zone-avail)
// in the Amazon EC2 User Guide.
NetworkBorderGroup *string `type:"string"`
// The key/value combination of a tag assigned to the resource. Use the tag
// key in the filter name and the tag value as the filter value. For example,
// to find all resources that have a tag with the key Owner and the value TeamA,
@ -76903,6 +76931,12 @@ func (s *CreatePublicIpv4PoolInput) SetDryRun(v bool) *CreatePublicIpv4PoolInput
return s
}
// SetNetworkBorderGroup sets the NetworkBorderGroup field's value.
func (s *CreatePublicIpv4PoolInput) SetNetworkBorderGroup(v string) *CreatePublicIpv4PoolInput {
s.NetworkBorderGroup = &v
return s
}
// SetTagSpecifications sets the TagSpecifications field's value.
func (s *CreatePublicIpv4PoolInput) SetTagSpecifications(v []*TagSpecification) *CreatePublicIpv4PoolInput {
s.TagSpecifications = v
@ -81941,7 +81975,12 @@ type CreateVolumeInput struct {
// in the Amazon EBS User Guide.
MultiAttachEnabled *bool `type:"boolean"`
// The Amazon Resource Name (ARN) of the Outpost.
// The Amazon Resource Name (ARN) of the Outpost on which to create the volume.
//
// If you intend to use a volume with an instance running on an outpost, then
// you must create the volume on the same outpost as the instance. You can't
// use a volume created in an Amazon Web Services Region with an instance on
// an Amazon Web Services outpost, or the other way around.
OutpostArn *string `type:"string"`
// The size of the volume, in GiBs. You must specify either a snapshot ID or
@ -87380,6 +87419,13 @@ type DeletePublicIpv4PoolInput struct {
// is UnauthorizedOperation.
DryRun *bool `type:"boolean"`
// The Availability Zone (AZ) or Local Zone (LZ) network border group that the
// resource that the IP address is assigned to is in. Defaults to an AZ network
// border group. For more information on available Local Zones, see Local Zone
// availability (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-zone-avail)
// in the Amazon EC2 User Guide.
NetworkBorderGroup *string `type:"string"`
// The ID of the public IPv4 pool you want to delete.
//
// PoolId is a required field
@ -87423,6 +87469,12 @@ func (s *DeletePublicIpv4PoolInput) SetDryRun(v bool) *DeletePublicIpv4PoolInput
return s
}
// SetNetworkBorderGroup sets the NetworkBorderGroup field's value.
func (s *DeletePublicIpv4PoolInput) SetNetworkBorderGroup(v string) *DeletePublicIpv4PoolInput {
s.NetworkBorderGroup = &v
return s
}
// SetPoolId sets the PoolId field's value.
func (s *DeletePublicIpv4PoolInput) SetPoolId(v string) *DeletePublicIpv4PoolInput {
s.PoolId = &v
@ -111423,7 +111475,7 @@ type DescribeVolumesInput struct {
// from the end of the items returned by the previous request.
NextToken *string `locationName:"nextToken" type:"string"`
// The volume IDs.
// The volume IDs. If not specified, then all volumes are included in the response.
VolumeIds []*string `locationName:"VolumeId" locationNameList:"VolumeId" type:"list"`
}
@ -138008,7 +138060,7 @@ type InstanceRequirements struct {
//
// The parameter accepts an integer, which Amazon EC2 interprets as a percentage.
//
// If you set DesiredCapacityType to vcpu or memory-mib, the price protection
// If you set TargetCapacityUnitType to vcpu or memory-mib, the price protection
// threshold is based on the per vCPU or per memory price instead of the per
// instance price.
//
@ -138500,7 +138552,7 @@ type InstanceRequirementsRequest struct {
//
// The parameter accepts an integer, which Amazon EC2 interprets as a percentage.
//
// If you set DesiredCapacityType to vcpu or memory-mib, the price protection
// If you set TargetCapacityUnitType to vcpu or memory-mib, the price protection
// threshold is based on the per vCPU or per memory price instead of the per
// instance price.
//
@ -140679,8 +140731,11 @@ type IpamDiscoveredPublicAddress struct {
// The resource discovery ID.
IpamResourceDiscoveryId *string `locationName:"ipamResourceDiscoveryId" type:"string"`
// The network border group that the resource that the IP address is assigned
// to is in.
// The Availability Zone (AZ) or Local Zone (LZ) network border group that the
// resource that the IP address is assigned to is in. Defaults to an AZ network
// border group. For more information on available Local Zones, see Local Zone
// availability (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-zone-avail)
// in the Amazon EC2 User Guide.
NetworkBorderGroup *string `locationName:"networkBorderGroup" type:"string"`
// The description of the network interface that IP address is assigned to.
@ -140856,6 +140911,9 @@ func (s *IpamDiscoveredPublicAddress) SetVpcId(v string) *IpamDiscoveredPublicAd
type IpamDiscoveredResourceCidr struct {
_ struct{} `type:"structure"`
// The Availability Zone ID.
AvailabilityZoneId *string `locationName:"availabilityZoneId" type:"string"`
// The percentage of IP address space in use. To convert the decimal to a percentage,
// multiply the decimal by 100. Note the following:
//
@ -140876,6 +140934,9 @@ type IpamDiscoveredResourceCidr struct {
// The resource discovery ID.
IpamResourceDiscoveryId *string `locationName:"ipamResourceDiscoveryId" type:"string"`
// For elastic IP addresses, this is the status of an attached network interface.
NetworkInterfaceAttachmentStatus *string `locationName:"networkInterfaceAttachmentStatus" type:"string" enum:"IpamNetworkInterfaceAttachmentStatus"`
// The resource CIDR.
ResourceCidr *string `locationName:"resourceCidr" type:"string"`
@ -140919,6 +140980,12 @@ func (s IpamDiscoveredResourceCidr) GoString() string {
return s.String()
}
// SetAvailabilityZoneId sets the AvailabilityZoneId field's value.
func (s *IpamDiscoveredResourceCidr) SetAvailabilityZoneId(v string) *IpamDiscoveredResourceCidr {
s.AvailabilityZoneId = &v
return s
}
// SetIpUsage sets the IpUsage field's value.
func (s *IpamDiscoveredResourceCidr) SetIpUsage(v float64) *IpamDiscoveredResourceCidr {
s.IpUsage = &v
@ -140931,6 +140998,12 @@ func (s *IpamDiscoveredResourceCidr) SetIpamResourceDiscoveryId(v string) *IpamD
return s
}
// SetNetworkInterfaceAttachmentStatus sets the NetworkInterfaceAttachmentStatus field's value.
func (s *IpamDiscoveredResourceCidr) SetNetworkInterfaceAttachmentStatus(v string) *IpamDiscoveredResourceCidr {
s.NetworkInterfaceAttachmentStatus = &v
return s
}
// SetResourceCidr sets the ResourceCidr field's value.
func (s *IpamDiscoveredResourceCidr) SetResourceCidr(v string) *IpamDiscoveredResourceCidr {
s.ResourceCidr = &v
@ -141151,13 +141224,11 @@ type IpamPool struct {
IpamScopeType *string `locationName:"ipamScopeType" type:"string" enum:"IpamScopeType"`
// The locale of the IPAM pool. In IPAM, the locale is the Amazon Web Services
// Region where you want to make an IPAM pool available for allocations. Only
// resources in the same Region as the locale of the pool can get IP address
// allocations from the pool. You can only allocate a CIDR for a VPC, for example,
// from an IPAM pool that shares a locale with the VPCs Region. Note that
// once you choose a Locale for a pool, you cannot modify it. If you choose
// an Amazon Web Services Region for locale that has not been configured as
// an operating Region for the IPAM, you'll get an error.
// Region or, for IPAM IPv4 pools in the public scope, the network border group
// for an Amazon Web Services Local Zone where you want to make an IPAM pool
// available for allocations (supported Local Zones (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-zone-avail)).
// If you choose an Amazon Web Services Region for locale that has not been
// configured as an operating Region for the IPAM, you'll get an error.
Locale *string `locationName:"locale" type:"string"`
// The Amazon Web Services account ID of the owner of the IPAM pool.
@ -141804,6 +141875,9 @@ func (s *IpamPublicAddressTags) SetEipTags(v []*IpamPublicAddressTag) *IpamPubli
type IpamResourceCidr struct {
_ struct{} `type:"structure"`
// The Availability Zone ID.
AvailabilityZoneId *string `locationName:"availabilityZoneId" type:"string"`
// The compliance status of the IPAM resource. For more information on compliance
// statuses, see Monitor CIDR usage by resource (https://docs.aws.amazon.com/vpc/latest/ipam/monitor-cidr-compliance-ipam.html)
// in the Amazon VPC IPAM User Guide.
@ -141889,6 +141963,12 @@ func (s IpamResourceCidr) GoString() string {
return s.String()
}
// SetAvailabilityZoneId sets the AvailabilityZoneId field's value.
func (s *IpamResourceCidr) SetAvailabilityZoneId(v string) *IpamResourceCidr {
s.AvailabilityZoneId = &v
return s
}
// SetComplianceStatus sets the ComplianceStatus field's value.
func (s *IpamResourceCidr) SetComplianceStatus(v string) *IpamResourceCidr {
s.ComplianceStatus = &v
@ -150273,10 +150353,10 @@ type ModifyInstanceAttributeInput struct {
// a PV instance can make it unreachable.
SriovNetSupport *AttributeValue `locationName:"sriovNetSupport" type:"structure"`
// Changes the instance's user data to the specified value. If you are using
// an Amazon Web Services SDK or command line tool, base64-encoding is performed
// for you, and you can load the text from a file. Otherwise, you must provide
// base64-encoded text.
// Changes the instance's user data to the specified value. User data must be
// base64-encoded. Depending on the tool or SDK that you're using, the base64-encoding
// might be performed for you. For more information, see Work with instance
// user data (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-add-user-data.html).
UserData *BlobAttributeValue `locationName:"userData" type:"structure"`
// A new value for the attribute. Use only with the kernel, ramdisk, userData,
@ -163906,6 +163986,13 @@ type ProvisionPublicIpv4PoolCidrInput struct {
// NetmaskLength is a required field
NetmaskLength *int64 `type:"integer" required:"true"`
// The Availability Zone (AZ) or Local Zone (LZ) network border group that the
// resource that the IP address is assigned to is in. Defaults to an AZ network
// border group. For more information on available Local Zones, see Local Zone
// availability (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-zone-avail)
// in the Amazon EC2 User Guide.
NetworkBorderGroup *string `type:"string"`
// The ID of the public IPv4 pool you would like to use for this CIDR.
//
// PoolId is a required field
@ -163967,6 +164054,12 @@ func (s *ProvisionPublicIpv4PoolCidrInput) SetNetmaskLength(v int64) *ProvisionP
return s
}
// SetNetworkBorderGroup sets the NetworkBorderGroup field's value.
func (s *ProvisionPublicIpv4PoolCidrInput) SetNetworkBorderGroup(v string) *ProvisionPublicIpv4PoolCidrInput {
s.NetworkBorderGroup = &v
return s
}
// SetPoolId sets the PoolId field's value.
func (s *ProvisionPublicIpv4PoolCidrInput) SetPoolId(v string) *ProvisionPublicIpv4PoolCidrInput {
s.PoolId = &v
@ -173075,11 +173168,10 @@ type RunInstancesInput struct {
// To tag a resource after it has been created, see CreateTags (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html).
TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"`
// The user data script to make available to the instance. For more information,
// see Run commands on your Amazon EC2 instance at launch (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)
// in the Amazon EC2 User Guide. If you are using a command line tool, base64-encoding
// is performed for you, and you can load the text from a file. Otherwise, you
// must provide base64-encoded text. User data is limited to 16 KB.
// The user data to make available to the instance. User data must be base64-encoded.
// Depending on the tool or SDK that you're using, the base64-encoding might
// be performed for you. For more information, see Work with instance user data
// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-add-user-data.html).
//
// UserData is a sensitive parameter and its value will be
// replaced with "sensitive" in string returned by RunInstancesInput's
@ -193898,6 +193990,9 @@ func HostRecovery_Values() []string {
}
const (
// HostTenancyDefault is a HostTenancy enum value
HostTenancyDefault = "default"
// HostTenancyDedicated is a HostTenancy enum value
HostTenancyDedicated = "dedicated"
@ -193908,6 +194003,7 @@ const (
// HostTenancy_Values returns all elements of the HostTenancy enum
func HostTenancy_Values() []string {
return []string{
HostTenancyDefault,
HostTenancyDedicated,
HostTenancyHost,
}
@ -197965,6 +198061,22 @@ func IpamManagementState_Values() []string {
}
}
const (
// IpamNetworkInterfaceAttachmentStatusAvailable is a IpamNetworkInterfaceAttachmentStatus enum value
IpamNetworkInterfaceAttachmentStatusAvailable = "available"
// IpamNetworkInterfaceAttachmentStatusInUse is a IpamNetworkInterfaceAttachmentStatus enum value
IpamNetworkInterfaceAttachmentStatusInUse = "in-use"
)
// IpamNetworkInterfaceAttachmentStatus_Values returns all elements of the IpamNetworkInterfaceAttachmentStatus enum
func IpamNetworkInterfaceAttachmentStatus_Values() []string {
return []string{
IpamNetworkInterfaceAttachmentStatusAvailable,
IpamNetworkInterfaceAttachmentStatusInUse,
}
}
const (
// IpamOverlapStatusOverlapping is a IpamOverlapStatus enum value
IpamOverlapStatusOverlapping = "overlapping"

View file

@ -449,7 +449,7 @@ func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, ou
// When the request is an HTTP 1.1 request, the response is chunk encoded. When
// the request is not an HTTP 1.1 request, the response would not contain the
// Content-Length. You always need to read the entire response body to check
// if the copy succeeds. to keep the connection alive while we copy the data.
// if the copy succeeds.
//
// - If the copy is successful, you receive a response with information about
// the copied object.
@ -2679,7 +2679,7 @@ func (c *S3) DeleteObjectsRequest(input *DeleteObjectsInput) (req *request.Reque
// in your policies when your DeleteObjects request includes specific headers.
// s3:DeleteObject - To delete an object from a bucket, you must always specify
// the s3:DeleteObject permission. s3:DeleteObjectVersion - To delete a specific
// version of an object from a versiong-enabled bucket, you must specify
// version of an object from a versioning-enabled bucket, you must specify
// the s3:DeleteObjectVersion permission.
//
// - Directory bucket permissions - To grant access to this API operation
@ -12001,15 +12001,15 @@ func (c *S3) UploadPartCopyRequest(input *UploadPartCopyInput) (req *request.Req
// source object that is being copied. If the destination bucket is a general
// purpose bucket, you must have the s3:PutObject permission to write the
// object copy to the destination bucket. For information about permissions
// required to use the multipart upload API, see Multipart Upload and Permissions
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html)
// required to use the multipart upload API, see Multipart upload API and
// permissions (https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions)
// in the Amazon S3 User Guide.
//
// - Directory bucket permissions - You must have permissions in a bucket
// policy or an IAM identity-based policy based on the source and destination
// bucket types in an UploadPartCopy operation. If the source object that
// you want to copy is in a directory bucket, you must have the s3express:CreateSession
// permission in the Action element of a policy to read the object . By default,
// permission in the Action element of a policy to read the object. By default,
// the session is in the ReadWrite mode. If you want to restrict the access,
// you can explicitly set the s3express:SessionMode condition key to ReadOnly
// on the copy source bucket. If the copy destination is a directory bucket,
@ -16940,7 +16940,7 @@ func (s CreateSessionInput) updateArnableField(v string) (interface{}, error) {
type CreateSessionOutput struct {
_ struct{} `type:"structure"`
// The established temporary security credentials for the created session..
// The established temporary security credentials for the created session.
//
// Credentials is a required field
Credentials *SessionCredentials `locationName:"Credentials" type:"structure" required:"true"`
@ -26467,6 +26467,24 @@ type HeadObjectInput struct {
// This functionality is not supported for directory buckets.
RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
// Sets the Cache-Control header of the response.
ResponseCacheControl *string `location:"querystring" locationName:"response-cache-control" type:"string"`
// Sets the Content-Disposition header of the response.
ResponseContentDisposition *string `location:"querystring" locationName:"response-content-disposition" type:"string"`
// Sets the Content-Encoding header of the response.
ResponseContentEncoding *string `location:"querystring" locationName:"response-content-encoding" type:"string"`
// Sets the Content-Language header of the response.
ResponseContentLanguage *string `location:"querystring" locationName:"response-content-language" type:"string"`
// Sets the Content-Type header of the response.
ResponseContentType *string `location:"querystring" locationName:"response-content-type" type:"string"`
// Sets the Expires header of the response.
ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp" timestampFormat:"rfc822"`
// Specifies the algorithm to use when encrypting the object (for example, AES256).
//
// This functionality is not supported for directory buckets.
@ -26612,6 +26630,42 @@ func (s *HeadObjectInput) SetRequestPayer(v string) *HeadObjectInput {
return s
}
// SetResponseCacheControl sets the ResponseCacheControl field's value.
func (s *HeadObjectInput) SetResponseCacheControl(v string) *HeadObjectInput {
s.ResponseCacheControl = &v
return s
}
// SetResponseContentDisposition sets the ResponseContentDisposition field's value.
func (s *HeadObjectInput) SetResponseContentDisposition(v string) *HeadObjectInput {
s.ResponseContentDisposition = &v
return s
}
// SetResponseContentEncoding sets the ResponseContentEncoding field's value.
func (s *HeadObjectInput) SetResponseContentEncoding(v string) *HeadObjectInput {
s.ResponseContentEncoding = &v
return s
}
// SetResponseContentLanguage sets the ResponseContentLanguage field's value.
func (s *HeadObjectInput) SetResponseContentLanguage(v string) *HeadObjectInput {
s.ResponseContentLanguage = &v
return s
}
// SetResponseContentType sets the ResponseContentType field's value.
func (s *HeadObjectInput) SetResponseContentType(v string) *HeadObjectInput {
s.ResponseContentType = &v
return s
}
// SetResponseExpires sets the ResponseExpires field's value.
func (s *HeadObjectInput) SetResponseExpires(v time.Time) *HeadObjectInput {
s.ResponseExpires = &v
return s
}
// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
func (s *HeadObjectInput) SetSSECustomerAlgorithm(v string) *HeadObjectInput {
s.SSECustomerAlgorithm = &v
@ -27155,9 +27209,9 @@ type IndexDocument struct {
_ struct{} `type:"structure"`
// A suffix that is appended to a request that is for a directory on the website
// endpoint (for example,if the suffix is index.html and you make a request
// to samplebucket/images/ the data that is returned will be for the object
// with the key name images/index.html) The suffix must not be empty and must
// endpoint. (For example, if the suffix is index.html and you make a request
// to samplebucket/images/, the data that is returned will be for the object
// with the key name images/index.html.) The suffix must not be empty and must
// not include a slash character.
//
// Replacement must be made for object keys containing special characters (such
@ -32179,9 +32233,9 @@ func (s *MultipartUpload) SetUploadId(v string) *MultipartUpload {
type NoncurrentVersionExpiration struct {
_ struct{} `type:"structure"`
// Specifies how many newer noncurrent versions must exist before Amazon S3
// can perform the associated action on a given version. If there are this many
// more recent noncurrent versions, Amazon S3 will take the associated action.
// Specifies how many noncurrent versions Amazon S3 will retain. You can specify
// up to 100 noncurrent versions to retain. Amazon S3 will permanently delete
// any additional noncurrent versions beyond the specified number to retain.
// For more information about noncurrent versions, see Lifecycle configuration
// elements (https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html)
// in the Amazon S3 User Guide.
@ -32235,11 +32289,11 @@ func (s *NoncurrentVersionExpiration) SetNoncurrentDays(v int64) *NoncurrentVers
type NoncurrentVersionTransition struct {
_ struct{} `type:"structure"`
// Specifies how many newer noncurrent versions must exist before Amazon S3
// can perform the associated action on a given version. If there are this many
// more recent noncurrent versions, Amazon S3 will take the associated action.
// For more information about noncurrent versions, see Lifecycle configuration
// elements (https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html)
// Specifies how many noncurrent versions Amazon S3 will retain in the same
// storage class before transitioning objects. You can specify up to 100 noncurrent
// versions to retain. Amazon S3 will transition any additional noncurrent versions
// beyond the specified number to retain. For more information about noncurrent
// versions, see Lifecycle configuration elements (https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html)
// in the Amazon S3 User Guide.
NewerNoncurrentVersions *int64 `type:"integer"`

View file

@ -1,3 +1,9 @@
## v1.13.0 (2024-07-08)
* [GH-3044](https://github.com/gophercloud/gophercloud/pull/3044) [v1] Add ci jobs for openstack caracal
* [GH-3073](https://github.com/gophercloud/gophercloud/pull/3073) [v1] Adding missing QoS field for router
* [GH-3080](https://github.com/gophercloud/gophercloud/pull/3080) [networking]: add BGP VPNs support (backport to 1.x)
## v1.12.0 (2024-05-27)
* [GH-2979](https://github.com/gophercloud/gophercloud/pull/2979) [v1] CI backports

View file

@ -14,7 +14,7 @@ import (
// DefaultUserAgent is the default User-Agent string set in the request header.
const (
DefaultUserAgent = "gophercloud/v1.12.0"
DefaultUserAgent = "gophercloud/v1.13.0"
DefaultMaxBackoffRetries = 60
)

View file

@ -1,6 +1,3 @@
//go:build !windows
// +build !windows
/*
Copyright (c) 2021 Red Hat, Inc.
@ -17,8 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
// This file contains the function that returns the trusted CA certificates for operating systems
// other than Windows, where Go knows how to load the system trusted CA store.
// This file contains the function that returns the trusted CA certificates for all operating systems
package internal

View file

@ -1,185 +0,0 @@
//go:build windows
// +build windows
/*
Copyright (c) 2021 Red Hat, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// This file contains the function that returns the trusted CA certificates for Windows. This is
// needed because currently Go doesn't know how to load the Windows trusted CA store. See the
// following issues for more information:
//
// https://github.com/golang/go/issues/16736
// https://github.com/golang/go/issues/18609
package internal
import (
"crypto/x509"
)
// loadSystemCAs loads the certificates of the CAs that we will trust. Currently this uses a fixed
// set of CA certificates, which is obviusly going to break in the future, but there is not much we
// can do (or know to do) till Go learns to read the Windows CA trust store.
func loadSystemCAs() (pool *x509.CertPool, err error) {
pool = x509.NewCertPool()
pool.AppendCertsFromPEM(ssoCA1)
pool.AppendCertsFromPEM(ssoCA2)
pool.AppendCertsFromPEM(apiCA1)
pool.AppendCertsFromPEM(apiCA2)
return
}
// The SSO certificates has been obtained with the following command:
//
// $ openssl s_client -connect sso.redhat.com:443 -showcerts
var ssoCA1 = []byte(`
-----BEGIN CERTIFICATE-----
MIIGbTCCBVWgAwIBAgIQDW8O1qMpxFU/O4crQErx7jANBgkqhkiG9w0BAQsFADB1
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMTQwMgYDVQQDEytEaWdpQ2VydCBTSEEyIEV4dGVuZGVk
IFZhbGlkYXRpb24gU2VydmVyIENBMB4XDTI0MDUwNzAwMDAwMFoXDTI1MDQyMDIz
NTk1OVowgcoxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMI
RGVsYXdhcmUxHTAbBgNVBA8MFFByaXZhdGUgT3JnYW5pemF0aW9uMRAwDgYDVQQF
EwcyOTQ1NDM2MQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmEx
EDAOBgNVBAcTB1JhbGVpZ2gxFjAUBgNVBAoTDVJlZCBIYXQsIEluYy4xFzAVBgNV
BAMTDnNzby5yZWRoYXQuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwl7+
NobUYJIGiHRZf/B6psCRdWWWJWP5M6yC/3SKnvUVKSReDeaZ7hYNPcTZASsC3dOM
N54wvIxa/xDYFUiEzKOCA2wwggNoMB8GA1UdIwQYMBaAFD3TUKXWoK3u80pgCmXT
IdT4+NYPMB0GA1UdDgQWBBQ6jEVDz+ylBZm0aTC5G5tPtp/wLzAZBgNVHREEEjAQ
gg5zc28ucmVkaGF0LmNvbTBKBgNVHSAEQzBBMAsGCWCGSAGG/WwCATAyBgVngQwB
ATApMCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwDgYD
VR0PAQH/BAQDAgOIMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjB1BgNV
HR8EbjBsMDSgMqAwhi5odHRwOi8vY3JsMy5kaWdpY2VydC5jb20vc2hhMi1ldi1z
ZXJ2ZXItZzMuY3JsMDSgMqAwhi5odHRwOi8vY3JsNC5kaWdpY2VydC5jb20vc2hh
Mi1ldi1zZXJ2ZXItZzMuY3JsMIGIBggrBgEFBQcBAQR8MHowJAYIKwYBBQUHMAGG
GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBSBggrBgEFBQcwAoZGaHR0cDovL2Nh
Y2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkV4dGVuZGVkVmFsaWRhdGlv
blNlcnZlckNBLmNydDAMBgNVHRMBAf8EAjAAMIIBfgYKKwYBBAHWeQIEAgSCAW4E
ggFqAWgAdgDPEVbu1S58r/OHW9lpLpvpGnFnSrAX7KwB0lt3zsw7CAAAAY9Sx23S
AAAEAwBHMEUCIQD3ni/fGMOjKCzCIuvyUcBJMpjM7XKfrkHR+MxvFuqXmgIgLoss
OAc1y40putPNdg82Piu8igOIq3TeeO7zTI7Wc3oAdgB9WR4S4XgqexxhZ3xe/fjQ
h1wUoE6VnrkDL9kOjC55uAAAAY9Sx22SAAAEAwBHMEUCIEjQ/8mEJiKBTbRRkjZ/
10q2dMCCInzE0J8VV7FxbOOfAiEApydkGC8PM0f6azEGtKbi7vjhbGhtIfU46iSy
qUn08pUAdgDm0jFjQHeMwRBBBtdxuc7B0kD2loSG+7qHMh39HjeOUAAAAY9Sx22p
AAAEAwBHMEUCIGKoyNjFuFU8ScXufev+vO0bcmY588FqDQQT3XH54T+0AiEA43Pg
oMLz7rpPedYihEh8GzirmFpNg9GYOPh9QqWzGP8wDQYJKoZIhvcNAQELBQADggEB
AM9QyKcfZUj4oyWb0vyFcjSs30HYzBPsCvDkFaGs3ypVWg0+CodsUzR1JmN4d3bG
UFiBc/5/68GH1bVG74aa8y6hoHXfF2SbF8SJrHX6Qm8ZkuSvkPj9AKGnw1a3dwyH
utu92dI/4J8DSrVV6Wu1Puyvx+iWUuo/XLsnvqtwOGcMT00wG6NYMd/30CE6OB7M
4ONXa/j4Lnk9aOL4zkk4OM//2bwoQP+/9T66SUF7ACFpVBOP2GEs5w7TKGT5Wi9m
Qe8lkOoe4hqpMKmdj4wlkvfI4W5mVgUrqK6NAhl2gMhcJqPk7gzcZRtAQ1jyvbTf
HN9/ze44odnpb4zW5lMbcuw=
-----END CERTIFICATE-----
`)
var ssoCA2 = []byte(`
-----BEGIN CERTIFICATE-----
MIIEtjCCA56gAwIBAgIQDHmpRLCMEZUgkmFf4msdgzANBgkqhkiG9w0BAQsFADBs
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowdTEL
MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
LmRpZ2ljZXJ0LmNvbTE0MDIGA1UEAxMrRGlnaUNlcnQgU0hBMiBFeHRlbmRlZCBW
YWxpZGF0aW9uIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBANdTpARR+JmmFkhLZyeqk0nQOe0MsLAAh/FnKIaFjI5j2ryxQDji0/XspQUY
uD0+xZkXMuwYjPrxDKZkIYXLBxA0sFKIKx9om9KxjxKws9LniB8f7zh3VFNfgHk/
LhqqqB5LKw2rt2O5Nbd9FLxZS99RStKh4gzikIKHaq7q12TWmFXo/a8aUGxUvBHy
/Urynbt/DvTVvo4WiRJV2MBxNO723C3sxIclho3YIeSwTQyJ3DkmF93215SF2AQh
cJ1vb/9cuhnhRctWVyh+HA1BV6q3uCe7seT6Ku8hI3UarS2bhjWMnHe1c63YlC3k
8wyd7sFOYn4XwHGeLN7x+RAoGTMCAwEAAaOCAUkwggFFMBIGA1UdEwEB/wQIMAYB
Af8CAQAwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
BQcDAjA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRp
Z2ljZXJ0LmNvbTBLBgNVHR8ERDBCMECgPqA8hjpodHRwOi8vY3JsNC5kaWdpY2Vy
dC5jb20vRGlnaUNlcnRIaWdoQXNzdXJhbmNlRVZSb290Q0EuY3JsMD0GA1UdIAQ2
MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5j
b20vQ1BTMB0GA1UdDgQWBBQ901Cl1qCt7vNKYApl0yHU+PjWDzAfBgNVHSMEGDAW
gBSxPsNpA/i/RwHUmCYaCALvY2QrwzANBgkqhkiG9w0BAQsFAAOCAQEAnbbQkIbh
hgLtxaDwNBx0wY12zIYKqPBKikLWP8ipTa18CK3mtlC4ohpNiAexKSHc59rGPCHg
4xFJcKx6HQGkyhE6V6t9VypAdP3THYUYUN9XR3WhfVUgLkc3UHKMf4Ib0mKPLQNa
2sPIoc4sUqIAY+tzunHISScjl2SFnjgOrWNoPLpSgVh5oywM395t6zHyuqB8bPEs
1OG9d4Q3A84ytciagRpKkk47RpqF/oOi+Z6Mo8wNXrM9zwR4jxQUezKcxwCmXMS1
oVWNWlZopCJwqjyBcdmdqEU79OX2olHdx3ti6G8MdOu42vi/hw15UJGQmxg7kVkn
8TUoE6smftX3eg==
-----END CERTIFICATE-----
`)
// The API certificates have been obtained with the following command:
//
// $ openssl s_client -connect api.openshift.com:443 -showcerts
var apiCA1 = []byte(`
-----BEGIN CERTIFICATE-----
MIIE7zCCA9egAwIBAgISAx+yWIEh5U0//4KPNfNy1o92MA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yNDA1MjIxNTM1MzlaFw0yNDA4MjAxNTM1MzhaMBwxGjAYBgNVBAMT
EWFwaS5vcGVuc2hpZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEA4sRpb1jErC7X3jEyG3oPnfWiq0us2YlgY/Xjs6t77gw7GE1dpDNGedgZQ6GG
FtunP8f20CFjHRpv8sSqC4AulDygQBIPhXOSeQ3oABVOcMm0qz3AsHUoA60jnA0N
3oQbMWdbdhTvonrx9t2XfIlE1zfai4BHdRTqJVzzZx7LSs0lxrc3/xMFz6668OsJ
saBLUe7eU4q5xhalGfRgENnkSqrlS16xGt71d/uTKL5epS2kd9v75TErkcQtcCSY
4loXhAUuxinya5Gfql86xw4yt6gPS6F0/It9SLs6u8P3uYA3DW3zV5TeAqqNDiUd
qHAjiGps21Una1L/utIk2P7bkQIDAQABo4ICEzCCAg8wDgYDVR0PAQH/BAQDAgWg
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0G
A1UdDgQWBBQ9k6sKfs7FfMkeGYjf6Eg/fe/N/DAfBgNVHSMEGDAWgBQULrMXt1hW
y65QCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6
Ly9yMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iu
b3JnLzAcBgNVHREEFTATghFhcGkub3BlbnNoaWZ0LmNvbTATBgNVHSAEDDAKMAgG
BmeBDAECATCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB2AD8XS0/XIkdYlB1lHIS+
DRLtkDd/H4Vq68G/KIXs+GRuAAABj6EoibkAAAQDAEcwRQIgaLG6upSKmj/dca1A
Qee5L3/bK/QyMfnyuhWRdcu197UCIQCNhW5cA5jhsFm6A9s6ejLnnCdLUuRHx6xT
/OoHwxa1AAB2AN/hVuuqBa+1nA+GcY2owDJOrlbZbqf1pWoB0cE7vlJcAAABj6Eo
i7QAAAQDAEcwRQIgeUduQpuLAgRKEbUM9SKsdc9OusXvVwlomDrkNtXo91wCIQDp
8kGl+ZjGygLJ2FYj1/wLzE7jsK4fAIA/1/rFC427jTANBgkqhkiG9w0BAQsFAAOC
AQEABifzI44dyzY8z9JfYrFIGuubxzHD9Op3XLVnr+WclVpBHebyD3oYjvN5ILXU
9ndOyxNs7mqvvL4cqhDhd37bUKOxHbnGUNSiS1UY0VH5kseuudfaYnzXw1JpbeIw
tevTkxkaO2KRVaGynDrhywxUabS3S+RwfNDTGf43v2Kj/cZeqXGy6z2TihzRn7U3
PrL3UdMYtZUkbNi70HFMXgemCbYE0lzU7EGxjVicxoRWuSQ/EHfVBCzAQm0Gy2Om
/AmNVPwoea6TkXuwM1GHnRlt+N3GQgNqrnC+QxIzCOb+A6IvFr8rd+zb4R1K0ngN
315oufYhHZrYyQ11NtyDz1v84Q==
-----END CERTIFICATE-----
`)
var apiCA2 = []byte(`
-----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
nLRbwHOoq7hHwg==
-----END CERTIFICATE-----
`)

View file

@ -3,11 +3,13 @@ package disk
import (
"fmt"
"math/rand"
"strings"
"reflect"
"github.com/google/uuid"
)
const DefaultBtrfsCompression = "zstd:1"
type Btrfs struct {
UUID string
Label string
@ -15,6 +17,14 @@ type Btrfs struct {
Subvolumes []BtrfsSubvolume
}
func init() {
payloadEntityMap["btrfs"] = reflect.TypeOf(Btrfs{})
}
func (b *Btrfs) EntityName() string {
return "btrfs"
}
func (b *Btrfs) IsContainer() bool {
return true
}
@ -61,6 +71,7 @@ func (b *Btrfs) CreateMountpoint(mountpoint string, size uint64) (Entity, error)
GroupID: 0,
UUID: b.UUID, // subvolumes inherit UUID of main volume
Name: name,
Compress: DefaultBtrfsCompression,
}
b.Subvolumes = append(b.Subvolumes, subvolume)
@ -75,6 +86,10 @@ func (b *Btrfs) GenUUID(rng *rand.Rand) {
if b.UUID == "" {
b.UUID = uuid.Must(newRandomUUIDFromReader(rng)).String()
}
for i := range b.Subvolumes {
b.Subvolumes[i].UUID = b.UUID
}
}
type BtrfsSubvolume struct {
@ -82,8 +97,8 @@ type BtrfsSubvolume struct {
Size uint64
Mountpoint string
GroupID uint64
MntOps string
Compress string
ReadOnly bool
// UUID of the parent volume
UUID string
@ -103,7 +118,7 @@ func (bs *BtrfsSubvolume) Clone() Entity {
Size: bs.Size,
Mountpoint: bs.Mountpoint,
GroupID: bs.GroupID,
MntOps: bs.MntOps,
Compress: bs.Compress,
UUID: bs.UUID,
}
}
@ -149,7 +164,16 @@ func (bs *BtrfsSubvolume) GetFSTabOptions() FSTabOptions {
return FSTabOptions{}
}
ops := strings.Join([]string{bs.MntOps, fmt.Sprintf("subvol=%s", bs.Name)}, ",")
if bs.Name == "" {
panic(fmt.Errorf("internal error: BtrfsSubvolume.GetFSTabOptions() for %+v called without a name", bs))
}
ops := fmt.Sprintf("subvol=%s", bs.Name)
if bs.Compress != "" {
ops += fmt.Sprintf(",compress=%s", bs.Compress)
}
if bs.ReadOnly {
ops += ",ro"
}
return FSTabOptions{
MntOps: ops,
Freq: 0,

View file

@ -20,8 +20,11 @@ import (
"encoding/hex"
"io"
"math/rand"
"reflect"
"strings"
"github.com/google/uuid"
"golang.org/x/exp/slices"
)
const (
@ -60,6 +63,15 @@ type Entity interface {
Clone() Entity
}
type PayloadEntity interface {
Entity
// EntityName is the type name of the Entity, used for marshaling
EntityName() string
}
var payloadEntityMap = map[string]reflect.Type{}
// Container is the interface for entities that can contain other entities.
// Together with the base Entity interface this allows to model a generic
// entity tree of theoretically arbitrary depth and width.
@ -143,6 +155,16 @@ type FSTabOptions struct {
PassNo uint64
}
// ReadOnly returns true is the filesystem is mounted read-only
func (o FSTabOptions) ReadOnly() bool {
opts := strings.Split(o.MntOps, ",")
// filesystem is mounted read-only if:
// - there's ro (because rw is the default)
// - AND there's no rw (because rw overrides ro)
return slices.Contains(opts, "ro") && !slices.Contains(opts, "rw")
}
// uuid generator helpers
// GeneratesnewRandomUUIDFromReader generates a new random UUID (version

View file

@ -2,6 +2,7 @@ package disk
import (
"math/rand"
"reflect"
"github.com/google/uuid"
)
@ -22,6 +23,14 @@ type Filesystem struct {
FSTabPassNo uint64
}
func init() {
payloadEntityMap["filesystem"] = reflect.TypeOf(Filesystem{})
}
func (fs *Filesystem) EntityName() string {
return "filesystem"
}
func (fs *Filesystem) IsContainer() bool {
return false
}

View file

@ -3,6 +3,7 @@ package disk
import (
"fmt"
"math/rand"
"reflect"
"github.com/google/uuid"
@ -36,6 +37,14 @@ type LUKSContainer struct {
Payload Entity
}
func init() {
payloadEntityMap["luks"] = reflect.TypeOf(LUKSContainer{})
}
func (lc *LUKSContainer) EntityName() string {
return "luks"
}
func (lc *LUKSContainer) IsContainer() bool {
return true
}

View file

@ -2,6 +2,7 @@ package disk
import (
"fmt"
"reflect"
"strings"
"github.com/osbuild/images/internal/common"
@ -18,6 +19,14 @@ type LVMVolumeGroup struct {
LogicalVolumes []LVMLogicalVolume
}
func init() {
payloadEntityMap["lvm"] = reflect.TypeOf(LVMVolumeGroup{})
}
func (vg *LVMVolumeGroup) EntityName() string {
return "lvm"
}
func (vg *LVMVolumeGroup) IsContainer() bool {
return true
}

View file

@ -1,7 +1,10 @@
package disk
import (
"bytes"
"encoding/json"
"fmt"
"reflect"
)
type Partition struct {
@ -15,7 +18,7 @@ type Partition struct {
UUID string
// If nil, the partition is raw; It doesn't contain a payload.
Payload Entity
Payload PayloadEntity
}
func (p *Partition) IsContainer() bool {
@ -36,7 +39,7 @@ func (p *Partition) Clone() Entity {
}
if p.Payload != nil {
partition.Payload = p.Payload.Clone()
partition.Payload = p.Payload.Clone().(PayloadEntity)
}
return partition
@ -85,3 +88,53 @@ func (p *Partition) IsPReP() bool {
return p.Type == "41" || p.Type == PRePartitionGUID
}
func (p *Partition) MarshalJSON() ([]byte, error) {
type partAlias Partition
entityName := "no-payload"
if p.Payload != nil {
entityName = p.Payload.EntityName()
}
partWithPayloadType := struct {
partAlias
PayloadType string
}{
partAlias(*p),
entityName,
}
return json.Marshal(partWithPayloadType)
}
func (p *Partition) UnmarshalJSON(data []byte) error {
type partAlias Partition
var partWithoutPayload struct {
partAlias
Payload json.RawMessage
PayloadType string
}
dec := json.NewDecoder(bytes.NewBuffer(data))
if err := dec.Decode(&partWithoutPayload); err != nil {
return fmt.Errorf("cannot build partition from %q: %w", data, err)
}
*p = Partition(partWithoutPayload.partAlias)
// no payload, e.g. bios partiton
if partWithoutPayload.PayloadType == "no-payload" {
return nil
}
entType := payloadEntityMap[partWithoutPayload.PayloadType]
if entType == nil {
return fmt.Errorf("cannot build partition from %q", data)
}
entValP := reflect.New(entType).Elem().Addr()
ent := entValP.Interface()
if err := json.Unmarshal(partWithoutPayload.Payload, &ent); err != nil {
return err
}
p.Payload = ent.(PayloadEntity)
return nil
}

View file

@ -36,6 +36,9 @@ const (
// RawPartitioningMode always creates a raw layout.
RawPartitioningMode PartitioningMode = "raw"
// BtrfsPartitioningMode creates a btrfs layout.
BtfrsPartitioningMode PartitioningMode = "btrfs"
// DefaultPartitioningMode is AutoLVMPartitioningMode and is the empty state
DefaultPartitioningMode PartitioningMode = ""
)
@ -43,14 +46,14 @@ const (
func NewPartitionTable(basePT *PartitionTable, mountpoints []blueprint.FilesystemCustomization, imageSize uint64, mode PartitioningMode, requiredSizes map[string]uint64, rng *rand.Rand) (*PartitionTable, error) {
newPT := basePT.Clone().(*PartitionTable)
if basePT.features().LVM && mode == RawPartitioningMode {
return nil, fmt.Errorf("raw partitioning mode set for a base partition table with LVM, this is unsupported")
if basePT.features().LVM && (mode == RawPartitioningMode || mode == BtfrsPartitioningMode) {
return nil, fmt.Errorf("%s partitioning mode set for a base partition table with LVM, this is unsupported", mode)
}
// first pass: enlarge existing mountpoints and collect new ones
newMountpoints, _ := newPT.applyCustomization(mountpoints, false)
var ensureLVM bool
var ensureLVM, ensureBtrfs bool
switch mode {
case LVMPartitioningMode:
ensureLVM = true
@ -58,6 +61,8 @@ func NewPartitionTable(basePT *PartitionTable, mountpoints []blueprint.Filesyste
ensureLVM = false
case DefaultPartitioningMode, AutoLVMPartitioningMode:
ensureLVM = len(newMountpoints) > 0
case BtfrsPartitioningMode:
ensureBtrfs = true
default:
return nil, fmt.Errorf("unsupported partitioning mode %q", mode)
}
@ -66,6 +71,11 @@ func NewPartitionTable(basePT *PartitionTable, mountpoints []blueprint.Filesyste
if err != nil {
return nil, err
}
} else if ensureBtrfs {
err := newPT.ensureBtrfs()
if err != nil {
return nil, err
}
}
// second pass: deal with new mountpoints and newly created ones, after switching to
@ -678,6 +688,67 @@ func (pt *PartitionTable) ensureLVM() error {
return nil
}
// ensureBtrfs will ensure that the root partition is on a btrfs subvolume, i.e. if
// it currently is not, it will wrap it in one
func (pt *PartitionTable) ensureBtrfs() error {
rootPath := entityPath(pt, "/")
if rootPath == nil {
return fmt.Errorf("no root mountpoint for a partition table: %#v", pt)
}
// we need a /boot partition to boot btrfs, ensure one exists
bootPath := entityPath(pt, "/boot")
if bootPath == nil {
_, err := pt.CreateMountpoint("/boot", 512*common.MiB)
if err != nil {
return fmt.Errorf("failed to create /boot partition when ensuring btrfs: %w", err)
}
rootPath = entityPath(pt, "/")
}
parent := rootPath[1] // NB: entityPath has reversed order
if _, ok := parent.(*Btrfs); ok {
return nil
} else if part, ok := parent.(*Partition); ok {
rootMountable, ok := rootPath[0].(Mountable)
if !ok {
return fmt.Errorf("root entity is not mountable: %T, this is a violation of entityPath() contract", rootPath[0])
}
btrfs := &Btrfs{
Label: "root",
Subvolumes: []BtrfsSubvolume{
{
Name: "root",
Mountpoint: "/",
Compress: DefaultBtrfsCompression,
ReadOnly: rootMountable.GetFSTabOptions().ReadOnly(),
},
},
}
// replace the top-level partition payload with a new btrfs filesystem
part.Payload = btrfs
// reset the btrfs partition size - it will be grown later
part.Size = 0
if pt.Type == "gpt" {
part.Type = FilesystemDataGUID
} else {
part.Type = "83"
}
} else {
return fmt.Errorf("unsupported parent for btrfs: %T", parent)
}
return nil
}
type partitionTableFeatures struct {
LVM bool
Btrfs bool

View file

@ -76,11 +76,6 @@ func (img *AnacondaContainerInstaller) InstantiateManifest(m *manifest.Manifest,
anacondaPipeline.ExtraPackages = img.ExtraBasePackages.Include
anacondaPipeline.ExcludePackages = img.ExtraBasePackages.Exclude
anacondaPipeline.ExtraRepos = img.ExtraBasePackages.Repositories
anacondaPipeline.InteractiveDefaultsKickstart = &kickstart.Options{
Users: img.Kickstart.Users,
Groups: img.Kickstart.Groups,
Path: osbuild.KickstartPathOSBuild,
}
anacondaPipeline.Variant = img.Variant
anacondaPipeline.Biosdevname = (img.Platform.GetArch() == arch.ARCH_X86_64)
anacondaPipeline.Checkpoint()
@ -102,11 +97,14 @@ func (img *AnacondaContainerInstaller) InstantiateManifest(m *manifest.Manifest,
bootTreePipeline.UEFIVendor = img.Platform.GetUEFIVendor()
bootTreePipeline.ISOLabel = img.ISOLabel
ksPath := osbuild.KickstartPathOSBuild
if img.Kickstart != nil && img.Kickstart.Path != "" {
ksPath = img.Kickstart.Path
if img.Kickstart == nil {
img.Kickstart = &kickstart.Options{}
}
bootTreePipeline.KernelOpts = []string{fmt.Sprintf("inst.stage2=hd:LABEL=%s", img.ISOLabel), fmt.Sprintf("inst.ks=hd:LABEL=%s:%s", img.ISOLabel, ksPath)}
if img.Kickstart.Path == "" {
img.Kickstart.Path = osbuild.KickstartPathOSBuild
}
bootTreePipeline.KernelOpts = []string{fmt.Sprintf("inst.stage2=hd:LABEL=%s", img.ISOLabel), fmt.Sprintf("inst.ks=hd:LABEL=%s:%s", img.ISOLabel, img.Kickstart.Path)}
if img.FIPS {
bootTreePipeline.KernelOpts = append(bootTreePipeline.KernelOpts, "fips=1")
}

View file

@ -96,11 +96,13 @@ func (img *AnacondaOSTreeInstaller) InstantiateManifest(m *manifest.Manifest,
bootTreePipeline.UEFIVendor = img.Platform.GetUEFIVendor()
bootTreePipeline.ISOLabel = img.ISOLabel
ksPath := osbuild.KickstartPathOSBuild
if img.Kickstart != nil && img.Kickstart.Path != "" {
ksPath = img.Kickstart.Path
if img.Kickstart == nil || img.Kickstart.OSTree == nil {
return nil, fmt.Errorf("kickstart options not set for ostree installer")
}
bootTreePipeline.KernelOpts = []string{fmt.Sprintf("inst.stage2=hd:LABEL=%s", img.ISOLabel), fmt.Sprintf("inst.ks=hd:LABEL=%s:%s", img.ISOLabel, ksPath)}
if img.Kickstart.Path == "" {
img.Kickstart.Path = osbuild.KickstartPathOSBuild
}
bootTreePipeline.KernelOpts = []string{fmt.Sprintf("inst.stage2=hd:LABEL=%s", img.ISOLabel), fmt.Sprintf("inst.ks=hd:LABEL=%s:%s", img.ISOLabel, img.Kickstart.Path)}
if img.FIPS {
bootTreePipeline.KernelOpts = append(bootTreePipeline.KernelOpts, "fips=1")
}

View file

@ -85,12 +85,24 @@ func (img *AnacondaTarInstaller) InstantiateManifest(m *manifest.Manifest,
buildPipeline := manifest.NewBuild(m, runner, repos, nil)
buildPipeline.Checkpoint()
if img.Kickstart != nil && img.Kickstart.Unattended {
if img.Kickstart == nil {
img.Kickstart = &kickstart.Options{}
}
if img.Kickstart.Unattended {
// if we're building an unattended installer, override the
// ISORootKickstart option
img.ISORootKickstart = true
}
if img.ISORootKickstart {
// kickstart file will be in the iso root and not interactive-defaults,
// so let's make sure the kickstart path option is set
if img.Kickstart.Path == "" {
img.Kickstart.Path = osbuild.KickstartPathOSBuild
}
}
anacondaPipeline := manifest.NewAnacondaInstaller(
manifest.AnacondaInstallerTypePayload,
buildPipeline,
@ -109,7 +121,6 @@ func (img *AnacondaTarInstaller) InstantiateManifest(m *manifest.Manifest,
anacondaPipeline.InteractiveDefaultsKickstart = &kickstart.Options{
Users: img.Kickstart.Users,
Groups: img.Kickstart.Groups,
Path: osbuild.KickstartPathOSBuild,
}
}
anacondaPipeline.Variant = img.Variant
@ -141,14 +152,9 @@ func (img *AnacondaTarInstaller) InstantiateManifest(m *manifest.Manifest,
bootTreePipeline.UEFIVendor = img.Platform.GetUEFIVendor()
bootTreePipeline.ISOLabel = img.ISOLabel
kspath := osbuild.KickstartPathOSBuild
kernelOpts := []string{fmt.Sprintf("inst.stage2=hd:LABEL=%s", img.ISOLabel)}
if img.ISORootKickstart {
ksPath := osbuild.KickstartPathOSBuild
if img.Kickstart != nil && img.Kickstart.Path != "" {
ksPath = img.Kickstart.Path
}
kernelOpts = append(kernelOpts, fmt.Sprintf("inst.ks=hd:LABEL=%s:%s", img.ISOLabel, ksPath))
kernelOpts = append(kernelOpts, fmt.Sprintf("inst.ks=hd:LABEL=%s:%s", img.ISOLabel, img.Kickstart.Path))
}
if img.OSCustomizations.FIPS {
kernelOpts = append(kernelOpts, "fips=1")
@ -171,7 +177,7 @@ func (img *AnacondaTarInstaller) InstantiateManifest(m *manifest.Manifest,
isoTreePipeline.Kickstart = img.Kickstart
isoTreePipeline.PayloadPath = tarPath
if img.ISORootKickstart {
isoTreePipeline.Kickstart.Path = kspath
isoTreePipeline.Kickstart.Path = img.Kickstart.Path
}
isoTreePipeline.SquashfsCompression = img.SquashfsCompression

Some files were not shown because too many files have changed in this diff Show more