Skip to content

Commit b48444e

Browse files
committed
PR comments
1 parent 1e3a52b commit b48444e

7 files changed

Lines changed: 57 additions & 10 deletions

File tree

packages/orchestrator/cmd/build-template/main.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,17 @@ func buildTemplate(
137137
return fmt.Errorf("error getting artifacts registry provider: %w", err)
138138
}
139139

140+
dockerhubRepository, err := dockerhub.GetRemoteRepository(ctx)
141+
if err != nil {
142+
return fmt.Errorf("error getting dockerhub repository: %w", err)
143+
}
144+
defer func() {
145+
err := dockerhubRepository.Close()
146+
if err != nil {
147+
logger.Error("error closing dockerhub repository", zap.Error(err))
148+
}
149+
}()
150+
140151
blockMetrics, err := blockmetrics.NewMetrics(noop.NewMeterProvider())
141152
if err != nil {
142153
return fmt.Errorf("error creating metrics: %w", err)
@@ -161,7 +172,7 @@ func buildTemplate(
161172
persistenceTemplate,
162173
persistenceBuild,
163174
artifactRegistry,
164-
dockerhub.NewNoopRemoteRepository(),
175+
dockerhubRepository,
165176
devicePool,
166177
networkPool,
167178
sandboxProxy,

packages/orchestrator/internal/template/build/core/oci/oci_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,12 @@ func TestGetPublicImageWithGeneralAuth(t *testing.T) {
147147
testImageRef := testRepository + ":latest"
148148

149149
dockerhubRepository := dockerhub.NewNoopRemoteRepository()
150+
t.Cleanup(func() {
151+
err := dockerhubRepository.Close()
152+
if err != nil {
153+
t.Errorf("error closing dockerhub repository: %v", err)
154+
}
155+
})
150156

151157
t.Run("successful auth and pull", func(t *testing.T) {
152158
reg := registry.New()

packages/orchestrator/internal/template/server/main.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ type ServerStore struct {
4242

4343
wg *sync.WaitGroup // wait group for running builds
4444
info *service.ServiceInfo
45+
46+
_close func() error
4547
}
4648

4749
func New(
@@ -105,6 +107,13 @@ func New(
105107
buildStorage: buildPersistance,
106108
info: info,
107109
wg: &sync.WaitGroup{},
110+
_close: func() error {
111+
err := dockerhubRepository.Close()
112+
if err != nil {
113+
return fmt.Errorf("failed to close dockerhub repository: %w", err)
114+
}
115+
return nil
116+
},
108117
}
109118

110119
templatemanager.RegisterTemplateServiceServer(grpc.GRPCServer(), store)
@@ -131,6 +140,11 @@ func (s *ServerStore) Close(ctx context.Context) error {
131140
}
132141

133142
s.logger.Info("Template build queue cleaned")
143+
144+
err := s._close()
145+
if err != nil {
146+
return fmt.Errorf("failed to close services: %w", err)
147+
}
134148
return nil
135149
}
136150
}

packages/shared/pkg/dockerhub/repository.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@ const (
2222

2323
storageProviderEnv = "DOCKERHUB_REMOTE_REPOSITORY_PROVIDER"
2424
storageRemoteRepositoryURL = "DOCKERHUB_REMOTE_REPOSITORY_URL"
25+
26+
setupTimeout = 10 * time.Second
2527
)
2628

2729
type RemoteRepository interface {
2830
GetImage(ctx context.Context, tag string, platform containerregistry.Platform) (containerregistry.Image, error)
31+
Close() error
2932
}
3033

3134
func GetRemoteRepository(ctx context.Context) (RemoteRepository, error) {
@@ -36,7 +39,7 @@ func GetRemoteRepository(ctx context.Context) (RemoteRepository, error) {
3639
return NewNoopRemoteRepository(), nil
3740
}
3841

39-
setupCtx, setupCtxCancel := context.WithTimeout(ctx, 10*time.Second)
42+
setupCtx, setupCtxCancel := context.WithTimeout(ctx, setupTimeout)
4043
defer setupCtxCancel()
4144

4245
switch provider {

packages/shared/pkg/dockerhub/repository_aws.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,7 @@ func (g *AWSRemoteRepository) getAuthToken(ctx context.Context) (authn.Authentic
8787
Password: password,
8888
}, nil
8989
}
90+
91+
func (g *AWSRemoteRepository) Close() error {
92+
return nil
93+
}

packages/shared/pkg/dockerhub/repository_gcp.go

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
type GCPRemoteRepository struct {
1919
repositoryURL string
2020
registry *artifactregistry.Client
21+
authToken authn.Authenticator
2122
}
2223

2324
var gcpAuthConfig = authn.Basic{
@@ -31,7 +32,12 @@ func NewGCPRemoteRepository(ctx context.Context, repositoryURL string) (*GCPRemo
3132
return nil, fmt.Errorf("error creating artifact registry client: %w", err)
3233
}
3334

34-
return &GCPRemoteRepository{repositoryURL: repositoryURL, registry: registry}, nil
35+
authToken, err := getAuthToken(ctx)
36+
if err != nil {
37+
return nil, fmt.Errorf("error getting auth token: %w", err)
38+
}
39+
40+
return &GCPRemoteRepository{repositoryURL: repositoryURL, registry: registry, authToken: authToken}, nil
3541
}
3642

3743
func (g *GCPRemoteRepository) GetImage(ctx context.Context, tag string, platform containerregistry.Platform) (containerregistry.Image, error) {
@@ -45,20 +51,15 @@ func (g *GCPRemoteRepository) GetImage(ctx context.Context, tag string, platform
4551
return nil, fmt.Errorf("invalid image reference: %w", err)
4652
}
4753

48-
authToken, err := g.getAuthToken(ctx)
49-
if err != nil {
50-
return nil, fmt.Errorf("error getting auth token: %w", err)
51-
}
52-
53-
img, err := remote.Image(ref, remote.WithAuth(authToken), remote.WithPlatform(platform))
54+
img, err := remote.Image(ref, remote.WithAuth(g.authToken), remote.WithPlatform(platform))
5455
if err != nil {
5556
return nil, fmt.Errorf("error pulling image: %w", err)
5657
}
5758

5859
return img, nil
5960
}
6061

61-
func (g *GCPRemoteRepository) getAuthToken(_ context.Context) (authn.Authenticator, error) {
62+
func getAuthToken(_ context.Context) (authn.Authenticator, error) {
6263
authCfg := consts.DockerAuthConfig
6364
if authCfg == "" {
6465
return &gcpAuthConfig, nil
@@ -83,3 +84,7 @@ func (g *GCPRemoteRepository) getAuthToken(_ context.Context) (authn.Authenticat
8384
Password: cfg.Password,
8485
}, nil
8586
}
87+
88+
func (g *GCPRemoteRepository) Close() error {
89+
return g.registry.Close()
90+
}

packages/shared/pkg/dockerhub/repository_noop.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,7 @@ func (n *NoopRemoteRepository) GetImage(ctx context.Context, tag string, platfor
2828

2929
return img, nil
3030
}
31+
32+
func (n *NoopRemoteRepository) Close() error {
33+
return nil
34+
}

0 commit comments

Comments
 (0)