Skip to content

Commit 7b69290

Browse files
Add override CRD fields (#82)
* add override fields to DevfileRegistry CRD Signed-off-by: Michael Valdron <mvaldron@redhat.com> * add override getters and defaults Signed-off-by: Michael Valdron <mvaldron@redhat.com> --------- Signed-off-by: Michael Valdron <mvaldron@redhat.com>
1 parent bc2d8f4 commit 7b69290

File tree

4 files changed

+151
-0
lines changed

4 files changed

+151
-0
lines changed

api/v1alpha1/devfileregistry_types.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,18 @@ type DevfileRegistrySpec struct {
7070
// +operator-sdk:csv:customresourcedefinitions:type=spec
7171
// +optional
7272
Headless *bool `json:"headless,omitempty"`
73+
// Overrides the entire hostname and domain of the devfile registry ingress
74+
// +operator-sdk:csv:customresourcedefinitions:type=spec
75+
// +optional
76+
HostnameOverride string `json:"hostnameOverride,omitempty"`
77+
// Overrides the app name of the devfile registry
78+
// +operator-sdk:csv:customresourcedefinitions:type=spec
79+
// +optional
80+
NameOverride string `json:"nameOverride,omitempty"`
81+
// Overrides the fully qualified app name of the devfile registry
82+
// +operator-sdk:csv:customresourcedefinitions:type=spec
83+
// +optional
84+
FullnameOverride string `json:"fullnameOverride,omitempty"`
7385
}
7486

7587
// DevfileRegistrySpecContainer defines the desired state of a container for the DevfileRegistry

config/crd/bases/registry.devfile.io_devfileregistries.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,18 @@ spec:
6464
description: Sets the container image containing devfile stacks to
6565
be deployed on the Devfile Registry
6666
type: string
67+
fullnameOverride:
68+
description: Overrides the fully qualified app name of the devfile
69+
registry
70+
type: string
6771
headless:
6872
description: Sets the registry server deployment to run under headless
6973
mode
7074
type: boolean
75+
hostnameOverride:
76+
description: Overrides the entire hostname and domain of the devfile
77+
registry ingress
78+
type: string
7179
k8s:
7280
description: DevfileRegistrySpecK8sOnly defines the desired state
7381
of the kubernetes-only fields of the DevfileRegistry
@@ -81,6 +89,9 @@ spec:
8189
be explicitly specified on Kubernetes. There are no defaults
8290
type: string
8391
type: object
92+
nameOverride:
93+
description: Overrides the app name of the devfile registry
94+
type: string
8495
ociRegistry:
8596
description: Sets the OCI registry container spec to be deployed on
8697
the Devfile Registry

pkg/registry/defaults.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ const (
6060

6161
// Default kubernetes-only fields
6262
DefaultK8sIngressClass = "nginx"
63+
64+
// Override defaults (should be empty)
65+
DefaultHostnameOverride = ""
66+
DefaultNameOverride = ""
67+
DefaultFullnameOverride = ""
6368
)
6469

6570
// GetRegistryViewerImage returns the container image for the registry viewer to be deployed on the Devfile Registry.
@@ -171,6 +176,36 @@ func GetK8sIngressClass(cr *registryv1alpha1.DevfileRegistry) string {
171176
return DefaultK8sIngressClass
172177
}
173178

179+
// GetHostnameOverride returns hostname override used to override the hostname and domain of a devfile registry
180+
// Default: ""
181+
func GetHostnameOverride(cr *registryv1alpha1.DevfileRegistry) string {
182+
if cr.Spec.HostnameOverride != "" {
183+
return cr.Spec.HostnameOverride
184+
}
185+
186+
return DefaultHostnameOverride
187+
}
188+
189+
// GetNameOverride returns name override used to override the app name of a devfile registry
190+
// Default: ""
191+
func GetNameOverride(cr *registryv1alpha1.DevfileRegistry) string {
192+
if cr.Spec.NameOverride != "" {
193+
return cr.Spec.NameOverride
194+
}
195+
196+
return DefaultNameOverride
197+
}
198+
199+
// GetFullnameOverride returns full name override used to override the fully qualified app name of a devfile registry
200+
// Default: ""
201+
func GetFullnameOverride(cr *registryv1alpha1.DevfileRegistry) string {
202+
if cr.Spec.FullnameOverride != "" {
203+
return cr.Spec.FullnameOverride
204+
}
205+
206+
return DefaultFullnameOverride
207+
}
208+
174209
// IsStorageEnabled returns true if storage.enabled is set in the DevfileRegistry CR
175210
// If it's not set, it returns false by default.
176211
func IsStorageEnabled(cr *registryv1alpha1.DevfileRegistry) bool {

pkg/registry/defaults_test.go

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,3 +466,96 @@ func TestGetK8sIngressClass(t *testing.T) {
466466
})
467467
}
468468
}
469+
470+
func TestGetHostnameOverride(t *testing.T) {
471+
tests := []struct {
472+
name string
473+
cr registryv1alpha1.DevfileRegistry
474+
want string
475+
}{
476+
{
477+
name: "Case 1: Hostname override is set",
478+
cr: registryv1alpha1.DevfileRegistry{
479+
Spec: registryv1alpha1.DevfileRegistrySpec{
480+
HostnameOverride: "192.168.1.123.nip.io",
481+
},
482+
},
483+
want: "192.168.1.123.nip.io",
484+
},
485+
{
486+
name: "Case 2: Hostname override is unset",
487+
cr: registryv1alpha1.DevfileRegistry{},
488+
want: DefaultHostnameOverride,
489+
},
490+
}
491+
for _, tt := range tests {
492+
t.Run(tt.name, func(t *testing.T) {
493+
result := GetHostnameOverride(&tt.cr)
494+
if result != tt.want {
495+
t.Errorf("func TestGetHostnameOverride(t *testing.T) {\n error: enablement value mismatch, expected: %v got: %v", tt.want, result)
496+
}
497+
})
498+
}
499+
}
500+
501+
func TestGetNameOverride(t *testing.T) {
502+
tests := []struct {
503+
name string
504+
cr registryv1alpha1.DevfileRegistry
505+
want string
506+
}{
507+
{
508+
name: "Case 1: App name override is set",
509+
cr: registryv1alpha1.DevfileRegistry{
510+
Spec: registryv1alpha1.DevfileRegistrySpec{
511+
NameOverride: "devfile-registry-test",
512+
},
513+
},
514+
want: "devfile-registry-test",
515+
},
516+
{
517+
name: "Case 2: App name override is unset",
518+
cr: registryv1alpha1.DevfileRegistry{},
519+
want: DefaultNameOverride,
520+
},
521+
}
522+
for _, tt := range tests {
523+
t.Run(tt.name, func(t *testing.T) {
524+
result := GetNameOverride(&tt.cr)
525+
if result != tt.want {
526+
t.Errorf("func TestGetNameOverride(t *testing.T) {\n error: enablement value mismatch, expected: %v got: %v", tt.want, result)
527+
}
528+
})
529+
}
530+
}
531+
532+
func TestGetFullnameOverride(t *testing.T) {
533+
tests := []struct {
534+
name string
535+
cr registryv1alpha1.DevfileRegistry
536+
want string
537+
}{
538+
{
539+
name: "Case 1: Full app name override is set",
540+
cr: registryv1alpha1.DevfileRegistry{
541+
Spec: registryv1alpha1.DevfileRegistrySpec{
542+
FullnameOverride: "devfile-registry-test",
543+
},
544+
},
545+
want: "devfile-registry-test",
546+
},
547+
{
548+
name: "Case 2: Full app name override is unset",
549+
cr: registryv1alpha1.DevfileRegistry{},
550+
want: DefaultFullnameOverride,
551+
},
552+
}
553+
for _, tt := range tests {
554+
t.Run(tt.name, func(t *testing.T) {
555+
result := GetFullnameOverride(&tt.cr)
556+
if result != tt.want {
557+
t.Errorf("func TestGetFullnameOverride(t *testing.T) {\n error: enablement value mismatch, expected: %v got: %v", tt.want, result)
558+
}
559+
})
560+
}
561+
}

0 commit comments

Comments
 (0)