Skip to content

Commit df1ec13

Browse files
authored
Merge branch 'main' into single-own-namespace
2 parents 594c0e4 + ee8d821 commit df1ec13

37 files changed

+1763
-2123
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ vendor/
2828

2929
# editor and IDE paraphernalia
3030
.idea/
31+
.run/
3132
*.swp
3233
*.swo
3334
*~

Makefile

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,18 @@ tidy: #HELP Update dependencies.
115115
# Force tidy to use the version already in go.mod
116116
$(Q)go mod tidy -go=$(GOLANG_VERSION)
117117

118-
119118
.PHONY: manifests
120119
KUSTOMIZE_CRDS_DIR := config/base/crd/bases
121120
KUSTOMIZE_RBAC_DIR := config/base/rbac
121+
KUSTOMIZE_WEBHOOKS_DIR := config/base/manager/webhook
122122
manifests: $(CONTROLLER_GEN) #EXHELP Generate WebhookConfiguration, ClusterRole, and CustomResourceDefinition objects.
123-
# To generate the manifests used and do not use catalogd directory
123+
# Generate the operator-controller manifests
124124
rm -rf $(KUSTOMIZE_CRDS_DIR) && $(CONTROLLER_GEN) crd paths=./api/... output:crd:artifacts:config=$(KUSTOMIZE_CRDS_DIR)
125125
rm -f $(KUSTOMIZE_RBAC_DIR)/role.yaml && $(CONTROLLER_GEN) rbac:roleName=manager-role paths=./internal/operator-controller/... output:rbac:artifacts:config=$(KUSTOMIZE_RBAC_DIR)
126-
# To generate the manifests for catalogd
127-
$(MAKE) -C catalogd generate
126+
# Generate the catalogd manifests
127+
rm -rf catalogd/$(KUSTOMIZE_CRDS_DIR) && $(CONTROLLER_GEN) crd paths="./catalogd/api/..." output:crd:artifacts:config=catalogd/$(KUSTOMIZE_CRDS_DIR)
128+
rm -f catalogd/$(KUSTOMIZE_RBAC_DIR)/role.yaml && $(CONTROLLER_GEN) rbac:roleName=manager-role paths="./internal/catalogd/..." output:rbac:artifacts:config=catalogd/$(KUSTOMIZE_RBAC_DIR)
129+
rm -f catalogd/$(KUSTOMIZE_WEBHOOKS_DIR)/manifests.yaml && $(CONTROLLER_GEN) webhook paths="./internal/catalogd/..." output:webhook:artifacts:config=catalogd/$(KUSTOMIZE_WEBHOOKS_DIR)
128130

129131
.PHONY: generate
130132
generate: $(CONTROLLER_GEN) #EXHELP Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.

catalogd/Makefile

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,6 @@ help: ## Display this help.
5858
clean: ## Remove binaries and test artifacts
5959
rm -rf bin
6060

61-
.PHONY: generate
62-
KUSTOMIZE_CRDS_DIR := config/base/crd/bases
63-
KUSTOMIZE_RBAC_DIR := config/base/rbac
64-
KUSTOMIZE_WEBHOOKS_DIR := config/base/manager/webhook
65-
generate: $(CONTROLLER_GEN) ## Generate code and manifests.
66-
$(CONTROLLER_GEN) object:headerFile="../hack/boilerplate.go.txt" paths="./..."
67-
rm -rf $(KUSTOMIZE_CRDS_DIR) && $(CONTROLLER_GEN) crd paths="./api/..." output:crd:artifacts:config=$(KUSTOMIZE_CRDS_DIR)
68-
rm -f $(KUSTOMIZE_RBAC_DIR)/role.yaml && $(CONTROLLER_GEN) rbac:roleName=manager-role paths="./internal/..." output:rbac:artifacts:config=$(KUSTOMIZE_RBAC_DIR)
69-
rm -f $(KUSTOMIZE_WEBHOOKS_DIR)/manifests.yaml && $(CONTROLLER_GEN) webhook paths="./internal/..." output:webhook:artifacts:config=$(KUSTOMIZE_WEBHOOKS_DIR)
70-
7161
##@ Build
7262

7363
BINARIES=catalogd
@@ -98,18 +88,15 @@ export GO_BUILD_TAGS := containers_image_openpgp
9888

9989
BUILDCMD = go build -tags '$(GO_BUILD_TAGS)' -ldflags '$(GO_BUILD_LDFLAGS)' -gcflags '$(GO_BUILD_GCFLAGS)' -asmflags '$(GO_BUILD_ASMFLAGS)' -o $(BUILDBIN)/$(notdir $@) ./cmd/$(notdir $@)
10090

101-
.PHONY: build-deps
102-
build-deps: generate
103-
10491
.PHONY: build go-build-local $(BINARIES)
105-
build: build-deps go-build-local ## Build binaries for current GOOS and GOARCH.
92+
build: go-build-local ## Build binaries for current GOOS and GOARCH.
10693
go-build-local: $(BINARIES)
10794
$(BINARIES): BUILDBIN = bin
10895
$(BINARIES):
10996
$(BUILDCMD)
11097

11198
.PHONY: build-linux go-build-linux $(LINUX_BINARIES)
112-
build-linux: build-deps go-build-linux ## Build binaries for GOOS=linux and local GOARCH.
99+
build-linux: go-build-linux ## Build binaries for GOOS=linux and local GOARCH.
113100
go-build-linux: $(LINUX_BINARIES)
114101
$(LINUX_BINARIES): BUILDBIN = bin/linux
115102
$(LINUX_BINARIES):

catalogd/cmd/catalogd/main.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,18 @@ limitations under the License.
1717
package main
1818

1919
import (
20+
"context"
2021
"crypto/tls"
2122
"errors"
2223
"flag"
2324
"fmt"
24-
"log"
2525
"net/url"
2626
"os"
2727
"path/filepath"
2828
"strings"
2929
"time"
3030

3131
"github.com/containers/image/v5/types"
32-
"github.com/go-logr/logr"
3332
"github.com/sirupsen/logrus"
3433
"github.com/spf13/pflag"
3534
corev1 "k8s.io/api/core/v1"
@@ -50,21 +49,22 @@ import (
5049
"sigs.k8s.io/controller-runtime/pkg/certwatcher"
5150
"sigs.k8s.io/controller-runtime/pkg/client"
5251
"sigs.k8s.io/controller-runtime/pkg/healthz"
52+
"sigs.k8s.io/controller-runtime/pkg/log"
5353
"sigs.k8s.io/controller-runtime/pkg/metrics"
5454
"sigs.k8s.io/controller-runtime/pkg/metrics/filters"
5555
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
5656
crwebhook "sigs.k8s.io/controller-runtime/pkg/webhook"
5757

5858
catalogdv1 "github.com/operator-framework/operator-controller/catalogd/api/v1"
59-
corecontrollers "github.com/operator-framework/operator-controller/catalogd/internal/controllers/core"
60-
"github.com/operator-framework/operator-controller/catalogd/internal/webhook"
59+
corecontrollers "github.com/operator-framework/operator-controller/internal/catalogd/controllers/core"
6160
"github.com/operator-framework/operator-controller/internal/catalogd/features"
6261
"github.com/operator-framework/operator-controller/internal/catalogd/garbagecollection"
6362
catalogdmetrics "github.com/operator-framework/operator-controller/internal/catalogd/metrics"
6463
"github.com/operator-framework/operator-controller/internal/catalogd/serverutil"
65-
"github.com/operator-framework/operator-controller/internal/catalogd/source"
6664
"github.com/operator-framework/operator-controller/internal/catalogd/storage"
65+
"github.com/operator-framework/operator-controller/internal/catalogd/webhook"
6766
fsutil "github.com/operator-framework/operator-controller/internal/shared/util/fs"
67+
imageutil "github.com/operator-framework/operator-controller/internal/shared/util/image"
6868
"github.com/operator-framework/operator-controller/internal/shared/version"
6969
)
7070

@@ -177,7 +177,8 @@ func main() {
177177

178178
cw, err := certwatcher.New(certFile, keyFile)
179179
if err != nil {
180-
log.Fatalf("Failed to initialize certificate watcher: %v", err)
180+
setupLog.Error(err, "failed to initialize certificate watcher")
181+
os.Exit(1)
181182
}
182183

183184
tlsOpts := func(config *tls.Config) {
@@ -273,14 +274,16 @@ func main() {
273274
os.Exit(1)
274275
}
275276

276-
unpackCacheBasePath := filepath.Join(cacheDir, source.UnpackCacheDir)
277+
unpackCacheBasePath := filepath.Join(cacheDir, "unpack")
277278
if err := os.MkdirAll(unpackCacheBasePath, 0770); err != nil {
278279
setupLog.Error(err, "unable to create cache directory for unpacking")
279280
os.Exit(1)
280281
}
281-
unpacker := &source.ContainersImageRegistry{
282-
BaseCachePath: unpackCacheBasePath,
283-
SourceContextFunc: func(logger logr.Logger) (*types.SystemContext, error) {
282+
283+
imageCache := imageutil.CatalogCache(unpackCacheBasePath)
284+
imagePuller := &imageutil.ContainersImagePuller{
285+
SourceCtxFunc: func(ctx context.Context) (*types.SystemContext, error) {
286+
logger := log.FromContext(ctx)
284287
srcContext := &types.SystemContext{
285288
DockerCertPath: pullCasDir,
286289
OCICertPath: pullCasDir,
@@ -334,9 +337,10 @@ func main() {
334337
}
335338

336339
if err = (&corecontrollers.ClusterCatalogReconciler{
337-
Client: mgr.GetClient(),
338-
Unpacker: unpacker,
339-
Storage: localStorage,
340+
Client: mgr.GetClient(),
341+
ImageCache: imageCache,
342+
ImagePuller: imagePuller,
343+
Storage: localStorage,
340344
}).SetupWithManager(mgr); err != nil {
341345
setupLog.Error(err, "unable to create controller", "controller", "ClusterCatalog")
342346
os.Exit(1)

cmd/operator-controller/main.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import (
2929
"time"
3030

3131
"github.com/containers/image/v5/types"
32-
"github.com/go-logr/logr"
3332
"github.com/sirupsen/logrus"
3433
"github.com/spf13/pflag"
3534
corev1 "k8s.io/api/core/v1"
@@ -49,6 +48,7 @@ import (
4948
"sigs.k8s.io/controller-runtime/pkg/client"
5049
crfinalizer "sigs.k8s.io/controller-runtime/pkg/finalizer"
5150
"sigs.k8s.io/controller-runtime/pkg/healthz"
51+
"sigs.k8s.io/controller-runtime/pkg/log"
5252
"sigs.k8s.io/controller-runtime/pkg/metrics/filters"
5353
"sigs.k8s.io/controller-runtime/pkg/metrics/server"
5454

@@ -65,13 +65,13 @@ import (
6565
"github.com/operator-framework/operator-controller/internal/operator-controller/controllers"
6666
"github.com/operator-framework/operator-controller/internal/operator-controller/features"
6767
"github.com/operator-framework/operator-controller/internal/operator-controller/finalizers"
68-
"github.com/operator-framework/operator-controller/internal/operator-controller/httputil"
6968
"github.com/operator-framework/operator-controller/internal/operator-controller/resolve"
7069
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/convert"
7170
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/preflights/crdupgradesafety"
72-
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/source"
7371
"github.com/operator-framework/operator-controller/internal/operator-controller/scheme"
7472
fsutil "github.com/operator-framework/operator-controller/internal/shared/util/fs"
73+
httputil "github.com/operator-framework/operator-controller/internal/shared/util/http"
74+
imageutil "github.com/operator-framework/operator-controller/internal/shared/util/image"
7575
"github.com/operator-framework/operator-controller/internal/shared/version"
7676
)
7777

@@ -316,13 +316,14 @@ func main() {
316316
os.Exit(1)
317317
}
318318

319-
unpacker := &source.ContainersImageRegistry{
320-
BaseCachePath: filepath.Join(cachePath, "unpack"),
321-
SourceContextFunc: func(logger logr.Logger) (*types.SystemContext, error) {
319+
imageCache := imageutil.BundleCache(filepath.Join(cachePath, "unpack"))
320+
imagePuller := &imageutil.ContainersImagePuller{
321+
SourceCtxFunc: func(ctx context.Context) (*types.SystemContext, error) {
322322
srcContext := &types.SystemContext{
323323
DockerCertPath: pullCasDir,
324324
OCICertPath: pullCasDir,
325325
}
326+
logger := log.FromContext(ctx)
326327
if _, err := os.Stat(authFilePath); err == nil && globalPullSecretKey != nil {
327328
logger.Info("using available authentication information for pulling image")
328329
srcContext.AuthFilePath = authFilePath
@@ -337,7 +338,7 @@ func main() {
337338

338339
clusterExtensionFinalizers := crfinalizer.NewFinalizers()
339340
if err := clusterExtensionFinalizers.Register(controllers.ClusterExtensionCleanupUnpackCacheFinalizer, finalizers.FinalizerFunc(func(ctx context.Context, obj client.Object) (crfinalizer.Result, error) {
340-
return crfinalizer.Result{}, unpacker.Cleanup(ctx, &source.BundleSource{Name: obj.GetName()})
341+
return crfinalizer.Result{}, imageCache.Delete(ctx, obj.GetName())
341342
})); err != nil {
342343
setupLog.Error(err, "unable to register finalizer", "finalizerKey", controllers.ClusterExtensionCleanupUnpackCacheFinalizer)
343344
os.Exit(1)
@@ -401,7 +402,8 @@ func main() {
401402
if err = (&controllers.ClusterExtensionReconciler{
402403
Client: cl,
403404
Resolver: resolver,
404-
Unpacker: unpacker,
405+
ImageCache: imageCache,
406+
ImagePuller: imagePuller,
405407
Applier: helmApplier,
406408
InstalledBundleGetter: &controllers.DefaultInstalledBundleGetter{ActionClientGetter: acg},
407409
Finalizers: clusterExtensionFinalizers,

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ require (
1818
github.com/onsi/ginkgo/v2 v2.22.2
1919
github.com/onsi/gomega v1.36.2
2020
github.com/opencontainers/go-digest v1.0.0
21+
github.com/opencontainers/image-spec v1.1.0
2122
github.com/operator-framework/api v0.29.0
2223
github.com/operator-framework/helm-operator-plugins v0.8.0
2324
github.com/operator-framework/operator-registry v1.50.0
@@ -177,7 +178,6 @@ require (
177178
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
178179
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
179180
github.com/oklog/ulid v1.3.1 // indirect
180-
github.com/opencontainers/image-spec v1.1.0 // indirect
181181
github.com/opencontainers/runtime-spec v1.2.0 // indirect
182182
github.com/openshift/crd-schema-checker v0.0.0-20240404194209-35a9033b1d11 // indirect
183183
github.com/operator-framework/operator-lib v0.17.0 // indirect

0 commit comments

Comments
 (0)