Skip to content

Commit deff7e7

Browse files
committed
STONEBLD-1505 Deprecate anonymous ImageRegistry
1 parent 82fc589 commit deff7e7

File tree

8 files changed

+86
-9
lines changed

8 files changed

+86
-9
lines changed

deploy/crds/base/jvmbuildservice.io_jbsconfigs.yaml

+15
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,21 @@ spec:
103103
type: string
104104
prependTag:
105105
type: string
106+
registry:
107+
properties:
108+
host:
109+
type: string
110+
insecure:
111+
type: boolean
112+
owner:
113+
type: string
114+
port:
115+
type: string
116+
prependTag:
117+
type: string
118+
repository:
119+
type: string
120+
type: object
106121
relocationPatterns:
107122
items:
108123
properties:

java-components/resource-model/src/main/resources/crds/jvmbuildservice.io_jbsconfigs.yaml

+15
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,21 @@ spec:
103103
type: string
104104
prependTag:
105105
type: string
106+
registry:
107+
properties:
108+
host:
109+
type: string
110+
insecure:
111+
type: boolean
112+
owner:
113+
type: string
114+
port:
115+
type: string
116+
prependTag:
117+
type: string
118+
repository:
119+
type: string
120+
type: object
106121
relocationPatterns:
107122
items:
108123
properties:

openshift-with-appstudio-test/e2e/util.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ func setupConfig(t *testing.T, namespace string, hermetic bool) *testArgs {
295295
WorkerThreads: "100",
296296
RequestCPU: "10m",
297297
},
298-
ImageRegistry: v1alpha1.ImageRegistry{
298+
Registry: v1alpha1.ImageRegistry{
299299
Host: "quay.io",
300300
Owner: owner,
301301
Repository: "test-images",
@@ -878,7 +878,7 @@ func setupMinikube(t *testing.T, namespace string) *testArgs {
878878
DisableTLS: true,
879879
Storage: "756Mi",
880880
},
881-
ImageRegistry: v1alpha1.ImageRegistry{
881+
Registry: v1alpha1.ImageRegistry{
882882
Host: devIp,
883883
Owner: owner,
884884
Repository: "test-images",

pkg/apis/jvmbuildservice/v1alpha1/jbsconfig_types.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@ type JBSConfigSpec struct {
4040
MavenBaseLocations map[string]string `json:"mavenBaseLocations,omitempty"`
4141

4242
SharedRegistries []ImageRegistry `json:"sharedRegistries,omitempty"`
43-
// TODO: STONEBLD-1505 use an explicit variable
44-
ImageRegistry `json:",inline"`
43+
Registry ImageRegistry `json:"registry,omitempty"`
44+
// Deprecated: Replaced by explicit declaration of Registry above.
45+
ImageRegistry `json:",inline,omitempty"`
4546
CacheSettings CacheSettings `json:"cacheSettings,omitempty"`
4647
BuildSettings BuildSettings `json:"buildSettings,omitempty"`
4748
RelocationPatterns []RelocationPatternElement `json:"relocationPatterns,omitempty"`
@@ -120,7 +121,7 @@ type JBSConfig struct {
120121
}
121122

122123
func (in *JBSConfig) ImageRegistry() ImageRegistry {
123-
ret := in.Spec.ImageRegistry
124+
ret := in.Spec.Registry
124125
if ret.Host == "" {
125126
ret.Host = "quay.io"
126127
}

pkg/apis/jvmbuildservice/v1alpha1/zz_generated.deepcopy.go

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/reconciler/dependencybuild/buildrecipeyaml.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -626,10 +626,10 @@ func imageRegistryCommands(imageId string, recipe *v1alpha12.BuildRecipe, db *v1
626626
if imageRegistry.Insecure {
627627
registryArgs = append(registryArgs, "--registry-insecure")
628628
}
629-
if jbsConfig.ImageRegistry().PrependTag != "" {
629+
if imageRegistry.PrependTag != "" {
630630
registryArgs = append(registryArgs, "--registry-prepend-tag="+imageRegistry.PrependTag)
631-
preBuildImageName = prependTagToImage(preBuildImageName, jbsConfig.Spec.ImageRegistry.PrependTag)
632-
hermeticPreBuildImageName = prependTagToImage(hermeticPreBuildImageName, jbsConfig.Spec.ImageRegistry.PrependTag)
631+
preBuildImageName = prependTagToImage(preBuildImageName, imageRegistry.PrependTag)
632+
hermeticPreBuildImageName = prependTagToImage(hermeticPreBuildImageName, imageRegistry.PrependTag)
633633
}
634634
deployArgs = append(deployArgs, registryArgs...)
635635
hermeticDeployArgs = append(hermeticDeployArgs, registryArgs...)

pkg/reconciler/jbsconfig/jbsconfig.go

+30
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ func (r *ReconcilerJBSConfig) Reconcile(ctx context.Context, request reconcile.R
9090
// The object is being deleted.
9191
return reconcile.Result{}, r.handlePossibleRepositoryCleanup(ctx, &jbsConfig, log)
9292
}
93+
err, done := r.handleDeprecatedRegistryDefinition(ctx, &jbsConfig)
94+
if done || err != nil {
95+
return reconcile.Result{}, err
96+
}
9397

9498
//TODO do we eventually want to allow more than one JBSConfig per namespace?
9599
if jbsConfig.Name == v1alpha1.JBSConfigName {
@@ -127,6 +131,32 @@ func (r *ReconcilerJBSConfig) Reconcile(ctx context.Context, request reconcile.R
127131
return reconcile.Result{}, nil
128132
}
129133

134+
func (r *ReconcilerJBSConfig) handleDeprecatedRegistryDefinition(ctx context.Context, config *v1alpha1.JBSConfig) (error, bool) {
135+
// If anything is set in the deprecated anonymous struct, copy it over to the new one.
136+
// Note that e.g. config.Spec.ImageRegistry.Host is equivalent to config.Spec.Host due to the anonymous definition
137+
// and is only explicit here for clarity.
138+
if config.Spec.ImageRegistry.Host != "" || config.Spec.ImageRegistry.Port != "" ||
139+
config.Spec.ImageRegistry.Owner != "" || config.Spec.ImageRegistry.Repository != "" || config.Spec.PrependTag != "" {
140+
141+
config.Spec.Registry.Host = config.Spec.ImageRegistry.Host
142+
config.Spec.Registry.Port = config.Spec.ImageRegistry.Port
143+
config.Spec.Registry.Owner = config.Spec.ImageRegistry.Owner
144+
config.Spec.Registry.Repository = config.Spec.ImageRegistry.Repository
145+
config.Spec.Registry.Insecure = config.Spec.ImageRegistry.Insecure
146+
config.Spec.Registry.PrependTag = config.Spec.ImageRegistry.PrependTag
147+
148+
// Clear the old one
149+
config.Spec.ImageRegistry.Host = ""
150+
config.Spec.ImageRegistry.Port = ""
151+
config.Spec.ImageRegistry.Owner = ""
152+
config.Spec.ImageRegistry.Repository = ""
153+
config.Spec.ImageRegistry.PrependTag = ""
154+
155+
return r.client.Update(ctx, config), true
156+
}
157+
return nil, false
158+
}
159+
130160
func (r *ReconcilerJBSConfig) handlePossibleRepositoryCleanup(ctx context.Context, jbsConfig *v1alpha1.JBSConfig, log logr.Logger) error {
131161
if controllerutil.ContainsFinalizer(jbsConfig, ImageRepositoryFinalizer) {
132162
robotAccountName := generateRobotAccountName(jbsConfig)

pkg/reconciler/jbsconfig/jbsconfig_test.go

+16-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func setupSecret() *corev1.Secret {
6060

6161
func setupJBSConfig() *v1alpha1.JBSConfig {
6262
jbsConfig := v1alpha1.JBSConfig{}
63-
jbsConfig.Spec.Owner = "tests"
63+
jbsConfig.Spec.Registry.Owner = "tests"
6464
jbsConfig.Namespace = metav1.NamespaceDefault
6565
jbsConfig.Name = v1alpha1.JBSConfigName
6666
return &jbsConfig
@@ -280,3 +280,18 @@ func TestImageRegistryArrayToString(t *testing.T) {
280280
g.Expect(ImageRegistriesToString(logr.Discard(), registries1)).To(Equal("quay.io,,nobody,foo,false,"))
281281
g.Expect(ImageRegistriesToString(logr.Discard(), registries2)).To(Equal("quay.io,,nobody,foo,false,;quay.io,784,nobody,foo,false,foo"))
282282
}
283+
284+
func TestDeprecatedRegistry(t *testing.T) {
285+
g := NewGomegaWithT(t)
286+
ctx := context.TODO()
287+
jbsConfig := setupJBSConfig()
288+
jbsConfig.Spec.Owner = "tests"
289+
jbsConfig.Spec.Registry.Owner = ""
290+
jbsConfig.Spec.EnableRebuilds = true
291+
objs := []runtimeclient.Object{jbsConfig, setupSystemConfig()}
292+
_, reconciler := setupClientAndReconciler(false, objs...)
293+
_, res := reconciler.handleDeprecatedRegistryDefinition(ctx, jbsConfig)
294+
g.Expect(res).To(Equal(true))
295+
g.Expect(jbsConfig.Spec.ImageRegistry.Owner).To(Equal(""))
296+
g.Expect(jbsConfig.Spec.Registry.Owner).To(Equal("tests"))
297+
}

0 commit comments

Comments
 (0)