Skip to content

Commit 41c68f9

Browse files
committed
Update Azure Go SDK
Signed-off-by: Philip Laine <[email protected]>
1 parent 812f6e4 commit 41c68f9

File tree

3 files changed

+40
-17
lines changed

3 files changed

+40
-17
lines changed

go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ replace github.com/fluxcd/source-controller/api => ./api
66

77
require (
88
cloud.google.com/go/storage v1.22.1
9-
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.22.0
10-
github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.2
11-
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0
9+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.0
10+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0
11+
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1
1212
github.com/Masterminds/semver/v3 v3.1.1
1313
// github.com/ProtonMail/go-crypto is a fork of golang.org/x/crypto
1414
// maintained by the ProtonMail team to continue to support the openpgp
@@ -69,9 +69,9 @@ require (
6969
cloud.google.com/go v0.100.2 // indirect
7070
cloud.google.com/go/compute v1.6.1 // indirect
7171
cloud.google.com/go/iam v0.3.0 // indirect
72-
github.com/Azure/azure-sdk-for-go/sdk/internal v0.9.1 // indirect
72+
github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 // indirect
7373
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
74-
github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0 // indirect
74+
github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 // indirect
7575
github.com/BurntSushi/toml v1.0.0 // indirect
7676
github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd // indirect
7777
github.com/Masterminds/goutils v1.1.1 // indirect

go.sum

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,21 @@ github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.0/go.mod h1:fBF9PQNqB8scdgpZ3
6161
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM=
6262
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.22.0 h1:zBJcBJwte0x6PcPK7XaWDMvK2o2ZM2f1sMaqNNavQ5g=
6363
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.22.0/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM=
64+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.0 h1:Ut0ZGdOwJDw0npYEg+TLlPls3Pq6JiZaP2/aGKir7Zw=
65+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
6466
github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.2 h1:mM/yraAumqMMIYev6zX0oxHqX6hreUs5wXf76W47r38=
6567
github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.13.2/go.mod h1:+nVKciyKD2J9TyVcEQ82Bo9b+3F92PiQfHrIE/zqLqM=
68+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0 h1:QkAcEIAKbNL4KoFr4SathZPhDhF4mVwpBMFlYjyAqy8=
69+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0/go.mod h1:bhXu1AjYL+wutSL/kpSq6s7733q2Rb0yuot9Zgfqa/0=
6670
github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I=
6771
github.com/Azure/azure-sdk-for-go/sdk/internal v0.9.1 h1:sLZ/Y+P/5RRtsXWylBjB5lkgixYfm0MQPiwrSX//JSo=
6872
github.com/Azure/azure-sdk-for-go/sdk/internal v0.9.1/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I=
73+
github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 h1:jp0dGvZ7ZK0mgqnTSClMxa5xuRL7NZgHameVYF6BurY=
74+
github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w=
6975
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0 h1:Px2UA+2RvSSvv+RvJNuUB6n7rs5Wsel4dXLe90Um2n4=
7076
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo=
77+
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1 h1:QSdcrd/UFJv6Bp/CfoVf2SrENpFn9P6Yh8yb+xNhYMM=
78+
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1/go.mod h1:eZ4g6GUvXiGulfIbbhh1Xr4XwUYaYaWMqzGD/284wCA=
7179
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
7280
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
7381
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
@@ -79,6 +87,8 @@ github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZ
7987
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
8088
github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0 h1:WVsrXCnHlDDX8ls+tootqRE87/hL9S/g4ewig9RsD/c=
8189
github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4=
90+
github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 h1:BWe8a+f/t+7KY7zH2mqygeUD0t8hNFXe08p1Pb3/jKE=
91+
github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4=
8292
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
8393
github.com/BurntSushi/toml v1.0.0 h1:dtDWrepsVPfW9H/4y7dDgFc2MBUSeJhlaDtK13CxFlU=
8494
github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=

pkg/azure/blob.go

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"strings"
2929

3030
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
31+
"github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud"
3132
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
3233
_ "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
3334
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
@@ -56,7 +57,7 @@ const (
5657

5758
// BlobClient is a minimal Azure Blob client for fetching objects.
5859
type BlobClient struct {
59-
azblob.ServiceClient
60+
*azblob.ServiceClient
6061
}
6162

6263
// NewClient creates a new Azure Blob storage client.
@@ -162,9 +163,13 @@ func ValidateSecret(secret *corev1.Secret) error {
162163
// BucketExists returns if an object storage bucket with the provided name
163164
// exists, or returns a (client) error.
164165
func (c *BlobClient) BucketExists(ctx context.Context, bucketName string) (bool, error) {
165-
container := c.ServiceClient.NewContainerClient(bucketName)
166-
_, err := container.GetProperties(ctx, nil)
166+
container, err := c.ServiceClient.NewContainerClient(bucketName)
167167
if err != nil {
168+
return false, err
169+
}
170+
_, err = container.GetProperties(ctx, nil)
171+
if err != nil {
172+
// TODO: Think this is now wrapped in an InternalError
168173
var stgErr *azblob.StorageError
169174
if errors.As(err, &stgErr) {
170175
if stgErr.ErrorCode == azblob.StorageErrorCodeContainerNotFound {
@@ -181,8 +186,14 @@ func (c *BlobClient) BucketExists(ctx context.Context, bucketName string) (bool,
181186
// writes it to targetPath.
182187
// It returns the etag of the successfully fetched file, or any error.
183188
func (c *BlobClient) FGetObject(ctx context.Context, bucketName, objectName, localPath string) (string, error) {
184-
container := c.ServiceClient.NewContainerClient(bucketName)
185-
blob := container.NewBlobClient(objectName)
189+
container, err := c.ServiceClient.NewContainerClient(bucketName)
190+
if err != nil {
191+
return "", err
192+
}
193+
blob, err := container.NewBlobClient(objectName)
194+
if err != nil {
195+
return "", err
196+
}
186197

187198
// Verify if destination already exists.
188199
dirStatus, err := os.Stat(localPath)
@@ -245,13 +256,15 @@ func (c *BlobClient) FGetObject(ctx context.Context, bucketName, objectName, loc
245256
// If the underlying client or the visit callback returns an error,
246257
// it returns early.
247258
func (c *BlobClient) VisitObjects(ctx context.Context, bucketName string, visit func(path, etag string) error) error {
248-
container := c.ServiceClient.NewContainerClient(bucketName)
259+
container, err := c.ServiceClient.NewContainerClient(bucketName)
260+
if err != nil {
261+
return err
262+
}
249263

250-
items := container.ListBlobsFlat(&azblob.ContainerListBlobFlatSegmentOptions{})
264+
items := container.ListBlobsFlat(&azblob.ContainerListBlobsFlatOptions{})
251265
for items.NextPage(ctx) {
252266
resp := items.PageResponse()
253-
254-
for _, blob := range resp.ContainerListBlobFlatSegmentResult.Segment.BlobItems {
267+
for _, blob := range resp.Segment.BlobItems {
255268
if err := visit(*blob.Name, fmt.Sprintf("%x", *blob.Properties.Etag)); err != nil {
256269
err = fmt.Errorf("listing objects from bucket '%s' failed: %w", bucketName, err)
257270
return err
@@ -302,7 +315,7 @@ func tokenCredentialFromSecret(secret *corev1.Secret) (azcore.TokenCredential, e
302315
if clientSecret, hasClientSecret := secret.Data[clientSecretField]; hasClientSecret && len(clientSecret) > 0 {
303316
opts := &azidentity.ClientSecretCredentialOptions{}
304317
if authorityHost, hasAuthorityHost := secret.Data[authorityHostField]; hasAuthorityHost {
305-
opts.AuthorityHost = azidentity.AuthorityHost(authorityHost)
318+
opts.Cloud = cloud.Configuration{ActiveDirectoryAuthorityHost: string(authorityHost)}
306319
}
307320
return azidentity.NewClientSecretCredential(string(tenantID), string(clientID), string(clientSecret), opts)
308321
}
@@ -313,7 +326,7 @@ func tokenCredentialFromSecret(secret *corev1.Secret) (azcore.TokenCredential, e
313326
}
314327
opts := &azidentity.ClientCertificateCredentialOptions{}
315328
if authorityHost, hasAuthorityHost := secret.Data[authorityHostField]; hasAuthorityHost {
316-
opts.AuthorityHost = azidentity.AuthorityHost(authorityHost)
329+
opts.Cloud = cloud.Configuration{ActiveDirectoryAuthorityHost: string(authorityHost)}
317330
}
318331
if v, sendChain := secret.Data[clientCertificateSendChainField]; sendChain {
319332
opts.SendCertificateChain = string(v) == "1" || strings.ToLower(string(v)) == "true"
@@ -360,7 +373,7 @@ func chainCredentialWithSecret(secret *corev1.Secret) (azcore.TokenCredential, e
360373
credOpts := &azidentity.EnvironmentCredentialOptions{}
361374
if secret != nil {
362375
if authorityHost, hasAuthorityHost := secret.Data[authorityHostField]; hasAuthorityHost {
363-
credOpts.AuthorityHost = azidentity.AuthorityHost(authorityHost)
376+
credOpts.Cloud = cloud.Configuration{ActiveDirectoryAuthorityHost: string(authorityHost)}
364377
}
365378
}
366379

0 commit comments

Comments
 (0)