Skip to content

Commit 5ade72e

Browse files
author
Moritz Clasmeier
committed
Propagate container socket o that assureImageExistsLocally also uses the same local container registry
1 parent cf5b5b8 commit 5ade72e

2 files changed

Lines changed: 16 additions & 5 deletions

File tree

internal/deployer/operator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func (d *Deployer) downloadAndExtractOperatorBundle(ctx context.Context, bundleI
7979
d.logger.Info("Pulling and extracting operator bundle image...")
8080

8181
// The bundle images only contain platform-agnostic YAML files.
82-
if err := ocihelper.ExtractManifestsFromImage(ctx, d.logger, bundleImage, bundleDir); err != nil {
82+
if err := ocihelper.ExtractManifestsFromImage(ctx, d.logger, bundleImage, bundleDir, d.containerRuntimeSocket); err != nil {
8383
os.RemoveAll(bundleDir)
8484
return "", fmt.Errorf("failed to copy bundle contents: %w", err)
8585
}

internal/ocihelper/ocihelper.go

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
v1 "github.com/google/go-containerregistry/pkg/v1"
1414
"github.com/google/go-containerregistry/pkg/v1/daemon"
1515
"github.com/google/go-containerregistry/pkg/v1/remote"
16+
dockerclient "github.com/moby/moby/client"
1617

1718
"github.com/stackrox/roxie/internal/logger"
1819
)
@@ -41,7 +42,7 @@ func VerifyImageExistence(ctx context.Context, log *logger.Logger, imageRef stri
4142

4243
// ExtractManifestsFromImage extracts the /manifests/ directory from an operator bundle image.
4344
// Authentication is handled automatically from ~/.docker/config.json or $REGISTRY_AUTH_FILE.
44-
func ExtractManifestsFromImage(ctx context.Context, log *logger.Logger, imageRef, destDir string) error {
45+
func ExtractManifestsFromImage(ctx context.Context, log *logger.Logger, imageRef, destDir, containerRuntimeSocket string) error {
4546
tempDir, err := os.MkdirTemp("", "oci-image-")
4647
if err != nil {
4748
return fmt.Errorf("failed to create temp dir: %w", err)
@@ -50,7 +51,7 @@ func ExtractManifestsFromImage(ctx context.Context, log *logger.Logger, imageRef
5051

5152
log.Dimf("Using temporary directory: %s", tempDir)
5253

53-
img, err := assureImageExistsLocally(ctx, log, imageRef)
54+
img, err := assureImageExistsLocally(ctx, log, imageRef, containerRuntimeSocket)
5455
if err != nil {
5556
return err
5657
}
@@ -64,15 +65,25 @@ func ExtractManifestsFromImage(ctx context.Context, log *logger.Logger, imageRef
6465
return nil
6566
}
6667

67-
func assureImageExistsLocally(ctx context.Context, log *logger.Logger, imageRef string) (v1.Image, error) {
68+
func assureImageExistsLocally(ctx context.Context, log *logger.Logger, imageRef, containerRuntimeSocket string) (v1.Image, error) {
6869
log.Dimf("Fetching image %s", imageRef)
6970

7071
ref, err := name.ParseReference(imageRef)
7172
if err != nil {
7273
return nil, fmt.Errorf("invalid image reference: %w", err)
7374
}
7475

75-
img, err := daemon.Image(ref, daemon.WithContext(ctx))
76+
daemonOpts := []daemon.Option{daemon.WithContext(ctx)}
77+
if containerRuntimeSocket != "" {
78+
client, err := dockerclient.New(dockerclient.WithHost(containerRuntimeSocket))
79+
if err == nil {
80+
daemonOpts = append(daemonOpts, daemon.WithClient(client))
81+
} else {
82+
log.Dimf("Failed to create moby client for %s: %v", containerRuntimeSocket, err)
83+
}
84+
}
85+
86+
img, err := daemon.Image(ref, daemonOpts...)
7687
if err == nil {
7788
log.Dimf("✓ Image %s found in local daemon", imageRef)
7889
return img, nil

0 commit comments

Comments
 (0)