Skip to content

Commit 2644882

Browse files
author
Daniel Chen
authored
Merge pull request buildpacks-community#1637 from buildpacks-community/azure-file-keychain
Fix blob auth headers for Azure
2 parents f77895a + 9c4fba4 commit 2644882

5 files changed

Lines changed: 50 additions & 35 deletions

File tree

go.mod

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ module github.com/pivotal/kpack
33
go 1.21
44

55
require (
6-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0
7-
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0
8-
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0
6+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1
7+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1
8+
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.1
9+
github.com/Azure/azure-sdk-for-go/sdk/storage/azfile v1.2.2
910
github.com/BurntSushi/toml v1.3.2
1011
github.com/Masterminds/semver/v3 v3.2.1
1112
github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a
@@ -54,7 +55,7 @@ require (
5455
filippo.io/edwards25519 v1.0.0 // indirect
5556
github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/alibabacloudsdkgo/helper v0.2.0 // indirect
5657
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
57-
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect
58+
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect
5859
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
5960
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
6061
github.com/Azure/go-autorest/autorest v0.11.29 // indirect
@@ -66,7 +67,7 @@ require (
6667
github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
6768
github.com/Azure/go-autorest/logger v0.2.1 // indirect
6869
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
69-
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 // indirect
70+
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
7071
github.com/Microsoft/go-winio v0.6.1 // indirect
7172
github.com/OneOfOne/xxhash v1.2.8 // indirect
7273
github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c // indirect
@@ -164,7 +165,7 @@ require (
164165
github.com/gobwas/glob v0.2.3 // indirect
165166
github.com/gogo/protobuf v1.3.2 // indirect
166167
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
167-
github.com/golang-jwt/jwt/v5 v5.0.0 // indirect
168+
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
168169
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
169170
github.com/golang/protobuf v1.5.3 // indirect
170171
github.com/golang/snappy v0.0.4 // indirect
@@ -175,7 +176,7 @@ require (
175176
github.com/google/go-querystring v1.1.0 // indirect
176177
github.com/google/gofuzz v1.2.0 // indirect
177178
github.com/google/s2a-go v0.1.7 // indirect
178-
github.com/google/uuid v1.4.0 // indirect
179+
github.com/google/uuid v1.6.0 // indirect
179180
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
180181
github.com/gorilla/mux v1.8.1 // indirect
181182
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect
@@ -224,7 +225,7 @@ require (
224225
github.com/pborman/uuid v1.2.1 // indirect
225226
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
226227
github.com/pjbgf/sha1cd v0.3.0 // indirect
227-
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
228+
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
228229
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
229230
github.com/prometheus/client_golang v1.17.0 // indirect
230231
github.com/prometheus/client_model v0.5.0 // indirect

go.sum

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -67,18 +67,20 @@ github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/alibabacloudsdkgo
6767
github.com/Azure/azure-sdk-for-go v55.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
6868
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
6969
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
70-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w=
71-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q=
72-
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI=
73-
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs=
74-
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs=
75-
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI=
70+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM=
71+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo=
72+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ=
73+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo=
74+
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 h1:LqbJ/WzJUwBf8UiaSzgX7aMclParm9/5Vgp+TY51uBQ=
75+
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2/go.mod h1:yInRyqWXAuaPrgI7p70+lDDgh3mlBohis29jGMISnmc=
7676
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1 h1:MyVTgWR8qd/Jw1Le0NZebGBUCLbtak3bJ3z1OlqZBpw=
7777
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1/go.mod h1:GpPjLhVR9dnUoJMyHWSPy71xY9/lcmpzIPZXmF0FCVY=
7878
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 h1:D3occbWoio4EBLkbkevetNMAVX197GkzbUMtqjGWn80=
7979
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0/go.mod h1:bTSOgj05NGRuHHhQwAdPnYr9TOdNmKlZTgGLL6nyAdI=
80-
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0 h1:gggzg0SUMs6SQbEw+3LoSsYf9YMjkupeAnHMX8O9mmY=
81-
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0/go.mod h1:+6KLcKIVgxoBDMqMO/Nvy7bZ9a0nbU3I1DtFQK3YvB4=
80+
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.1 h1:fXPMAmuh0gDuRDey0atC8cXBuKIlqCzCkL8sm1n9Ov0=
81+
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.1/go.mod h1:SUZc9YRRHfx2+FAQKNDGrssXehqLpxmwRv2mC/5ntj4=
82+
github.com/Azure/azure-sdk-for-go/sdk/storage/azfile v1.2.2 h1:PmDhkIT8S5U4nkY/s78Xmf7CXT8qCliNEBhbrkBp3Q0=
83+
github.com/Azure/azure-sdk-for-go/sdk/storage/azfile v1.2.2/go.mod h1:Kj2pCkQ47klX1aAlDnlN/BUvwBiARqIJkc9iw1Up7q8=
8284
github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
8385
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
8486
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
@@ -113,8 +115,8 @@ github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+Z
113115
github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
114116
github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
115117
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
116-
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 h1:hVeq+yCyUi+MsoO/CU95yqCIcdzra5ovzk8Q2BBpV2M=
117-
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
118+
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
119+
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
118120
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
119121
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
120122
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
@@ -570,8 +572,8 @@ github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzw
570572
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
571573
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
572574
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
573-
github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE=
574-
github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
575+
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
576+
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
575577
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
576578
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
577579
github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo=
@@ -681,8 +683,8 @@ github.com/google/trillian v1.5.3/go.mod h1:p4tcg7eBr7aT6DxrAoILpc3uXNfcuAvZSnQK
681683
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
682684
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
683685
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
684-
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
685-
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
686+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
687+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
686688
github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
687689
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
688690
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
@@ -974,8 +976,8 @@ github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdU
974976
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
975977
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
976978
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
977-
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
978-
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
979+
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
980+
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
979981
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
980982
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
981983
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -1552,7 +1554,6 @@ golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7w
15521554
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
15531555
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
15541556
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1555-
golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
15561557
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
15571558
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
15581559
golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1564,6 +1565,7 @@ golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBc
15641565
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
15651566
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
15661567
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1568+
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
15671569
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
15681570
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
15691571
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

pkg/blob/azure_keychain.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,19 @@ package blob
33
import (
44
"context"
55
"fmt"
6+
"net/http"
67
"regexp"
78
"time"
89

910
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
1011
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
11-
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas"
12+
blobsas "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas"
13+
filesas "github.com/Azure/azure-sdk-for-go/sdk/storage/azfile/sas"
1214
)
1315

1416
var (
15-
azScope = "https://storage.azure.com/.default"
16-
azApiVersion = sas.Version
17-
azRegex = regexp.MustCompile(`.*[a-z0-9]+\.([a-z]+)\.core\.windows\.net\/.*`)
17+
azScope = "https://storage.azure.com/.default"
18+
azRegex = regexp.MustCompile(`.*[a-z0-9]+\.([a-z]+)\.core\.windows\.net\/.*`)
1819
)
1920

2021
type azKeychain struct{}
@@ -37,13 +38,18 @@ func (a azKeychain) Resolve(url string) (string, map[string]string, error) {
3738
}
3839

3940
headers := map[string]string{
40-
"x-ms-version": azApiVersion,
41-
"x-ms-date": time.Now().Format(time.RFC1123),
41+
"x-ms-date": time.Now().Format(http.TimeFormat),
4242
}
4343

44-
// https://learn.microsoft.com/en-us/rest/api/storageservices/get-file
45-
if service == "file" {
44+
switch service {
45+
case "file":
46+
headers["x-ms-version"] = filesas.Version
47+
// https://learn.microsoft.com/en-us/rest/api/storageservices/get-file
4648
headers["x-ms-file-request-intent"] = "backup"
49+
case "blob":
50+
headers["x-ms-version"] = blobsas.Version
51+
default:
52+
return "", nil, fmt.Errorf("only azure blob and filestore are supported")
4753
}
4854

4955
return "Bearer " + tk.Token, headers, nil

pkg/blob/fetch.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,13 @@ func downloadBlob(blobURL string, headers map[string]string) (*os.File, error) {
126126
defer resp.Body.Close()
127127

128128
if resp.StatusCode != http.StatusOK {
129-
return nil, fmt.Errorf("failed to get blob %s", blobURL)
129+
var body []byte
130+
body, err = io.ReadAll(resp.Body)
131+
if err != nil {
132+
return nil, fmt.Errorf("failed to get blob %s: %d %s", blobURL, resp.StatusCode, http.StatusText(resp.StatusCode))
133+
}
134+
135+
return nil, fmt.Errorf("failed to get blob %s: %d %s: %s", blobURL, resp.StatusCode, http.StatusText(resp.StatusCode), string(body))
130136
}
131137

132138
file, err := os.CreateTemp("", "")

pkg/blob/fetch_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ func testBlobFetcher(t *testing.T, when spec.G, it spec.S) {
156156
it("errors when url is inaccessible", func() {
157157
url := fmt.Sprintf("%s/%s", server.URL, "invalid.zip")
158158
err := fetcher.Fetch(dir, fmt.Sprintf("%s/%s", server.URL, "invalid.zip"), 0, metadataDir)
159-
require.EqualError(t, err, fmt.Sprintf("failed to get blob %s", url))
159+
require.EqualError(t, err, fmt.Sprintf("failed to get blob %s: 404 Not Found: 404 page not found\n", url))
160160
})
161161

162162
it("errors when the blob file type is unexpected", func() {

0 commit comments

Comments
 (0)