Skip to content

Commit 360d299

Browse files
authored
Revert (#761)
* Revert "Lift configfile (#757)" This reverts commit de9c0be. * Tone down error message
1 parent eb0a230 commit 360d299

File tree

5 files changed

+73
-64
lines changed

5 files changed

+73
-64
lines changed

pkg/artifacts/registry.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55
"path/filepath"
66

7-
"github.com/docker/cli/cli/config"
87
"github.com/go-logr/logr"
98

109
"github.com/aws/eks-anywhere-packages/pkg/registry"
@@ -17,7 +16,8 @@ var certFile = filepath.Join(configPath, "ca.crt")
1716
// RegistryPuller handles pulling OCI artifacts from an OCI registry
1817
// (i.e. bundles)
1918
type RegistryPuller struct {
20-
log logr.Logger
19+
storageClient registry.StorageClient
20+
log logr.Logger
2121
}
2222

2323
var _ Puller = (*RegistryPuller)(nil)
@@ -37,21 +37,22 @@ func (p *RegistryPuller) Pull(ctx context.Context, ref string) ([]byte, error) {
3737

3838
certificates, err := registry.GetCertificates(certFile)
3939
if err != nil {
40-
p.log.Error(err, "problem getting certificate file", "filename", certFile)
40+
p.log.Info("problem getting certificate file", "filename", certFile, "error", err.Error())
4141
}
4242

43-
configFile, err := config.Load("")
43+
credentialStore := registry.NewCredentialStore()
44+
credentialStore.SetDirectory(configPath)
45+
err = credentialStore.Init()
4446
if err != nil {
4547
return nil, err
4648
}
47-
store := registry.NewDockerCredentialStore(configFile)
4849

49-
sc := registry.NewStorageContext(art.Registry, store, certificates, false)
50-
client := registry.NewOCIRegistry(sc)
51-
err = client.Init()
50+
sc := registry.NewStorageContext(art.Registry, credentialStore, certificates, false)
51+
p.storageClient = registry.NewOCIRegistry(sc)
52+
err = p.storageClient.Init()
5253
if err != nil {
5354
return nil, err
5455
}
5556

56-
return registry.PullBytes(ctx, client, *art)
57+
return registry.PullBytes(ctx, p.storageClient, *art)
5758
}

pkg/registry/client_test.go

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ import (
55
"crypto/x509"
66
"testing"
77

8-
"github.com/docker/cli/cli/config"
98
"github.com/stretchr/testify/assert"
10-
"github.com/stretchr/testify/require"
119

1210
"github.com/aws/eks-anywhere-packages/pkg/registry"
1311
)
@@ -20,11 +18,13 @@ var (
2018
Digest: "sha256:6efe21500abbfbb6b3e37b80dd5dea0b11a0d1b145e84298fee5d7784a77e967",
2119
Tag: "0.2.22-eks-a-24",
2220
}
23-
certificates = &x509.CertPool{}
21+
credentialStore = registry.NewCredentialStore()
22+
certificates = &x509.CertPool{}
23+
registryContext = registry.NewStorageContext("localhost", credentialStore, certificates, false)
2424
)
2525

2626
func TestOCIRegistryClient_Init(t *testing.T) {
27-
sut := registry.NewOCIRegistry(newStorageContext(t, ""))
27+
sut := registry.NewOCIRegistry(registryContext)
2828

2929
err := sut.Init()
3030
assert.NoError(t, err)
@@ -35,7 +35,7 @@ func TestOCIRegistryClient_Init(t *testing.T) {
3535
}
3636

3737
func TestOCIRegistryClient_Destination(t *testing.T) {
38-
sut := registry.NewOCIRegistry(newStorageContext(t, ""))
38+
sut := registry.NewOCIRegistry(registryContext)
3939
destination := sut.Destination(image)
4040
assert.Equal(t, "localhost/eks-anywhere/eks-anywhere-packages@sha256:6efe21500abbfbb6b3e37b80dd5dea0b11a0d1b145e84298fee5d7784a77e967", destination)
4141
sut.SetProject("project/")
@@ -44,7 +44,7 @@ func TestOCIRegistryClient_Destination(t *testing.T) {
4444
}
4545

4646
func TestOCIRegistryClient_GetStorage(t *testing.T) {
47-
sut := registry.NewOCIRegistry(newStorageContext(t, ""))
47+
sut := registry.NewOCIRegistry(registryContext)
4848
assert.NoError(t, sut.Init())
4949
_, err := sut.GetStorage(context.Background(), image)
5050
assert.NoError(t, err)
@@ -57,10 +57,3 @@ func TestOCIRegistryClient_GetStorage(t *testing.T) {
5757
_, err = sut.GetStorage(context.Background(), bogusImage)
5858
assert.EqualError(t, err, "error creating repository !@#$: invalid reference: invalid repository")
5959
}
60-
61-
func newStorageContext(t *testing.T, dir string) registry.StorageContext {
62-
configFile, err := config.Load(dir)
63-
require.NoError(t, err)
64-
store := registry.NewDockerCredentialStore(configFile)
65-
return registry.NewStorageContext("localhost", store, certificates, false)
66-
}

pkg/registry/credentials.go

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,44 @@
11
package registry
22

33
import (
4+
"github.com/docker/cli/cli/config"
45
"github.com/docker/cli/cli/config/configfile"
56
"github.com/docker/cli/cli/config/credentials"
67
"oras.land/oras-go/v2/registry/remote/auth"
78
)
89

9-
// DockerCredentialStore for Docker registry credentials, like ~/.docker/config.json.
10-
type DockerCredentialStore struct {
10+
// CredentialStore for registry credentials such as ~/.docker/config.json.
11+
type CredentialStore struct {
12+
directory string
1113
configFile *configfile.ConfigFile
1214
}
1315

14-
// NewDockerCredentialStore creates a DockerCredentialStore.
15-
func NewDockerCredentialStore(configFile *configfile.ConfigFile) *DockerCredentialStore {
16-
if !configFile.ContainsAuth() {
17-
configFile.CredentialsStore = credentials.DetectDefaultStore(configFile.CredentialsStore)
16+
// NewCredentialStore create a credential store.
17+
func NewCredentialStore() *CredentialStore {
18+
return &CredentialStore{
19+
directory: config.Dir(),
1820
}
19-
return &DockerCredentialStore{
20-
configFile: configFile,
21+
}
22+
23+
// SetDirectory override default directory.
24+
func (cs *CredentialStore) SetDirectory(directory string) {
25+
cs.directory = directory
26+
}
27+
28+
// Init initialize a credential store.
29+
func (cs *CredentialStore) Init() (err error) {
30+
cs.configFile, err = config.Load(cs.directory)
31+
if err != nil {
32+
return err
33+
}
34+
if !cs.configFile.ContainsAuth() {
35+
cs.configFile.CredentialsStore = credentials.DetectDefaultStore(cs.configFile.CredentialsStore)
2136
}
37+
return nil
2238
}
2339

2440
// Credential get an authentication credential for a given registry.
25-
func (cs *DockerCredentialStore) Credential(registry string) (auth.Credential, error) {
41+
func (cs *CredentialStore) Credential(registry string) (auth.Credential, error) {
2642
authConf, err := cs.configFile.GetCredentialsStore(registry).Get(registry)
2743
if err != nil {
2844
return auth.EmptyCredential, err

pkg/registry/credentials_test.go

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,54 +3,53 @@ package registry_test
33
import (
44
"testing"
55

6-
"github.com/docker/cli/cli/config"
7-
"github.com/docker/cli/cli/config/configfile"
86
"github.com/stretchr/testify/assert"
9-
"github.com/stretchr/testify/require"
10-
"oras.land/oras-go/v2/registry/remote/auth"
117

128
"github.com/aws/eks-anywhere-packages/pkg/registry"
139
)
1410

15-
func TestDockerCredentialStore(t *testing.T) {
16-
configFile := newConfigFile(t, "testdata")
17-
credentialStore := registry.NewDockerCredentialStore(configFile)
11+
func TestCredentialStore_Init(t *testing.T) {
12+
credentialStore := registry.NewCredentialStore()
13+
credentialStore.SetDirectory("testdata")
14+
15+
err := credentialStore.Init()
16+
assert.NoError(t, err)
1817

1918
result, err := credentialStore.Credential("localhost")
20-
require.NoError(t, err)
21-
assertAuthEqual(t, auth.Credential{Username: "user", Password: "pass"}, result)
19+
assert.NoError(t, err)
20+
assert.Equal(t, "user", result.Username)
21+
assert.Equal(t, "pass", result.Password)
22+
assert.Equal(t, "", result.AccessToken)
23+
assert.Equal(t, "", result.RefreshToken)
2224

2325
result, err = credentialStore.Credential("harbor.eksa.demo:30003")
24-
require.NoError(t, err)
25-
assertAuthEqual(t, auth.Credential{Username: "captain", Password: "haddock"}, result)
26+
assert.NoError(t, err)
27+
assert.Equal(t, "captain", result.Username)
28+
assert.Equal(t, "haddock", result.Password)
29+
assert.Equal(t, "", result.AccessToken)
30+
assert.Equal(t, "", result.RefreshToken)
2631

2732
result, err = credentialStore.Credential("bogus")
28-
require.NoError(t, err)
29-
assertAuthEqual(t, auth.EmptyCredential, result)
33+
assert.NoError(t, err)
34+
assert.Equal(t, "", result.Username)
35+
assert.Equal(t, "", result.Password)
36+
assert.Equal(t, "", result.AccessToken)
37+
assert.Equal(t, "", result.RefreshToken)
3038

3139
result, err = credentialStore.Credential("5551212.dkr.ecr.us-west-2.amazonaws.com")
3240
// This is a generic error, so using errors.Is won't work, and this is as
3341
// much of the string as we can reliably match against in a cross-platform
3442
// fashion. Until they change it, then everything will break.
35-
require.ErrorContains(t, err, "error getting credentials - err")
36-
assertAuthEqual(t, auth.EmptyCredential, result)
43+
assert.ErrorContains(t, err, "error getting credentials - err")
44+
assert.Equal(t, "", result.Username)
45+
assert.Equal(t, "", result.Password)
46+
assert.Equal(t, "", result.AccessToken)
47+
assert.Equal(t, "", result.RefreshToken)
3748
}
3849

3950
func TestCredentialStore_InitEmpty(t *testing.T) {
40-
registry.NewDockerCredentialStore(newConfigFile(t, "testdata/empty"))
41-
}
42-
43-
func newConfigFile(t *testing.T, dir string) *configfile.ConfigFile {
44-
t.Helper()
45-
configFile, err := config.Load(dir)
46-
require.NoError(t, err)
47-
return configFile
48-
}
49-
50-
func assertAuthEqual(t *testing.T, expected, got auth.Credential) {
51-
t.Helper()
52-
assert.Equal(t, expected.Username, got.Username)
53-
assert.Equal(t, expected.Password, got.Password)
54-
assert.Equal(t, expected.AccessToken, got.AccessToken)
55-
assert.Equal(t, expected.RefreshToken, got.RefreshToken)
51+
credentialStore := registry.NewCredentialStore()
52+
credentialStore.SetDirectory("testdata/empty")
53+
err := credentialStore.Init()
54+
assert.NoError(t, err)
5655
}

pkg/registry/storage.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ import (
1212
type StorageContext struct {
1313
host string
1414
project string
15-
credentialStore *DockerCredentialStore
15+
credentialStore *CredentialStore
1616
certificates *x509.CertPool
1717
insecure bool
1818
}
1919

2020
// NewStorageContext create registry context.
21-
func NewStorageContext(host string, credentialStore *DockerCredentialStore, certificates *x509.CertPool, insecure bool) StorageContext {
21+
func NewStorageContext(host string, credentialStore *CredentialStore, certificates *x509.CertPool, insecure bool) StorageContext {
2222
return StorageContext{
2323
host: host,
2424
credentialStore: credentialStore,

0 commit comments

Comments
 (0)