Skip to content

Commit

Permalink
Add override CRD fields (#82)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
michael-valdron committed Mar 18, 2024
1 parent bc2d8f4 commit 7b69290
Show file tree
Hide file tree
Showing 4 changed files with 151 additions and 0 deletions.
12 changes: 12 additions & 0 deletions api/v1alpha1/devfileregistry_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,18 @@ type DevfileRegistrySpec struct {
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
Headless *bool `json:"headless,omitempty"`
// Overrides the entire hostname and domain of the devfile registry ingress
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
HostnameOverride string `json:"hostnameOverride,omitempty"`
// Overrides the app name of the devfile registry
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
NameOverride string `json:"nameOverride,omitempty"`
// Overrides the fully qualified app name of the devfile registry
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
FullnameOverride string `json:"fullnameOverride,omitempty"`
}

// DevfileRegistrySpecContainer defines the desired state of a container for the DevfileRegistry
Expand Down
11 changes: 11 additions & 0 deletions config/crd/bases/registry.devfile.io_devfileregistries.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,18 @@ spec:
description: Sets the container image containing devfile stacks to
be deployed on the Devfile Registry
type: string
fullnameOverride:
description: Overrides the fully qualified app name of the devfile
registry
type: string
headless:
description: Sets the registry server deployment to run under headless
mode
type: boolean
hostnameOverride:
description: Overrides the entire hostname and domain of the devfile
registry ingress
type: string
k8s:
description: DevfileRegistrySpecK8sOnly defines the desired state
of the kubernetes-only fields of the DevfileRegistry
Expand All @@ -81,6 +89,9 @@ spec:
be explicitly specified on Kubernetes. There are no defaults
type: string
type: object
nameOverride:
description: Overrides the app name of the devfile registry
type: string
ociRegistry:
description: Sets the OCI registry container spec to be deployed on
the Devfile Registry
Expand Down
35 changes: 35 additions & 0 deletions pkg/registry/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ const (

// Default kubernetes-only fields
DefaultK8sIngressClass = "nginx"

// Override defaults (should be empty)
DefaultHostnameOverride = ""
DefaultNameOverride = ""
DefaultFullnameOverride = ""
)

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

// GetHostnameOverride returns hostname override used to override the hostname and domain of a devfile registry
// Default: ""
func GetHostnameOverride(cr *registryv1alpha1.DevfileRegistry) string {
if cr.Spec.HostnameOverride != "" {
return cr.Spec.HostnameOverride
}

return DefaultHostnameOverride
}

// GetNameOverride returns name override used to override the app name of a devfile registry
// Default: ""
func GetNameOverride(cr *registryv1alpha1.DevfileRegistry) string {
if cr.Spec.NameOverride != "" {
return cr.Spec.NameOverride
}

return DefaultNameOverride
}

// GetFullnameOverride returns full name override used to override the fully qualified app name of a devfile registry
// Default: ""
func GetFullnameOverride(cr *registryv1alpha1.DevfileRegistry) string {
if cr.Spec.FullnameOverride != "" {
return cr.Spec.FullnameOverride
}

return DefaultFullnameOverride
}

// IsStorageEnabled returns true if storage.enabled is set in the DevfileRegistry CR
// If it's not set, it returns false by default.
func IsStorageEnabled(cr *registryv1alpha1.DevfileRegistry) bool {
Expand Down
93 changes: 93 additions & 0 deletions pkg/registry/defaults_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -466,3 +466,96 @@ func TestGetK8sIngressClass(t *testing.T) {
})
}
}

func TestGetHostnameOverride(t *testing.T) {
tests := []struct {
name string
cr registryv1alpha1.DevfileRegistry
want string
}{
{
name: "Case 1: Hostname override is set",
cr: registryv1alpha1.DevfileRegistry{
Spec: registryv1alpha1.DevfileRegistrySpec{
HostnameOverride: "192.168.1.123.nip.io",
},
},
want: "192.168.1.123.nip.io",
},
{
name: "Case 2: Hostname override is unset",
cr: registryv1alpha1.DevfileRegistry{},
want: DefaultHostnameOverride,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := GetHostnameOverride(&tt.cr)
if result != tt.want {
t.Errorf("func TestGetHostnameOverride(t *testing.T) {\n error: enablement value mismatch, expected: %v got: %v", tt.want, result)
}
})
}
}

func TestGetNameOverride(t *testing.T) {
tests := []struct {
name string
cr registryv1alpha1.DevfileRegistry
want string
}{
{
name: "Case 1: App name override is set",
cr: registryv1alpha1.DevfileRegistry{
Spec: registryv1alpha1.DevfileRegistrySpec{
NameOverride: "devfile-registry-test",
},
},
want: "devfile-registry-test",
},
{
name: "Case 2: App name override is unset",
cr: registryv1alpha1.DevfileRegistry{},
want: DefaultNameOverride,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := GetNameOverride(&tt.cr)
if result != tt.want {
t.Errorf("func TestGetNameOverride(t *testing.T) {\n error: enablement value mismatch, expected: %v got: %v", tt.want, result)
}
})
}
}

func TestGetFullnameOverride(t *testing.T) {
tests := []struct {
name string
cr registryv1alpha1.DevfileRegistry
want string
}{
{
name: "Case 1: Full app name override is set",
cr: registryv1alpha1.DevfileRegistry{
Spec: registryv1alpha1.DevfileRegistrySpec{
FullnameOverride: "devfile-registry-test",
},
},
want: "devfile-registry-test",
},
{
name: "Case 2: Full app name override is unset",
cr: registryv1alpha1.DevfileRegistry{},
want: DefaultFullnameOverride,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := GetFullnameOverride(&tt.cr)
if result != tt.want {
t.Errorf("func TestGetFullnameOverride(t *testing.T) {\n error: enablement value mismatch, expected: %v got: %v", tt.want, result)
}
})
}
}

0 comments on commit 7b69290

Please sign in to comment.