Skip to content

Commit 601ed74

Browse files
rabiabays
authored andcommitted
Convert baremetalSetTemplate field to pointer
As this field is optional we should make it a pointer which ensures proper optional validation i.e struct is optional, but if it is provided, some of its internal fields can be required. Depends-On: openstack-k8s-operators/openstack-baremetal-operator#328 Signed-off-by: rabi <[email protected]>
1 parent 3ba23c4 commit 601ed74

File tree

11 files changed

+50
-33
lines changed

11 files changed

+50
-33
lines changed

apis/dataplane/v1beta1/openstackdataplanenodeset_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import (
3737
type OpenStackDataPlaneNodeSetSpec struct {
3838
// +kubebuilder:validation:Optional
3939
// BaremetalSetTemplate Template for BaremetalSet for the NodeSet
40-
BaremetalSetTemplate baremetalv1.OpenStackBaremetalSetTemplateSpec `json:"baremetalSetTemplate,omitempty"`
40+
BaremetalSetTemplate *baremetalv1.OpenStackBaremetalSetTemplateSpec `json:"baremetalSetTemplate,omitempty"`
4141

4242
// +kubebuilder:validation:Required
4343
// NodeTemplate - node attributes specific to nodes defined by this resource. These

apis/dataplane/v1beta1/openstackdataplanenodeset_webhook.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,11 @@ func (r *OpenStackDataPlaneNodeSet) Default() {
6868

6969
// Default - set defaults for this OpenStackDataPlaneNodeSet Spec
7070
func (spec *OpenStackDataPlaneNodeSetSpec) Default() {
71-
domain := spec.BaremetalSetTemplate.DomainName
71+
var domain string
72+
if spec.BaremetalSetTemplate != nil {
73+
domain = spec.BaremetalSetTemplate.DomainName
74+
}
75+
7276
for nodeName, node := range spec.Nodes {
7377
if node.HostName == "" {
7478
node.HostName = nodeName
@@ -82,7 +86,7 @@ func (spec *OpenStackDataPlaneNodeSetSpec) Default() {
8286
spec.Nodes[nodeName] = *node.DeepCopy()
8387
}
8488

85-
if !spec.PreProvisioned {
89+
if !spec.PreProvisioned && spec.BaremetalSetTemplate != nil {
8690
spec.NodeTemplate.Ansible.AnsibleUser = spec.BaremetalSetTemplate.CloudUserName
8791
if spec.BaremetalSetTemplate.DeploymentSSHSecret == "" {
8892
spec.BaremetalSetTemplate.DeploymentSSHSecret = spec.NodeTemplate.AnsibleSSHPrivateKeySecret
@@ -212,12 +216,14 @@ func (r *OpenStackDataPlaneNodeSetSpec) ValidateUpdate(oldSpec *OpenStackDataPla
212216
// to the openstack-baremetal-operator webhook to avoid duplicating logic.
213217
if !reflect.DeepEqual(r.BaremetalSetTemplate, oldSpec.BaremetalSetTemplate) {
214218
// Call openstack-baremetal-operator webhook Validate() to parse changes
215-
err := r.BaremetalSetTemplate.ValidateTemplate(
216-
len(oldSpec.Nodes), oldSpec.BaremetalSetTemplate)
217-
if err != nil {
218-
errors = append(errors, field.Forbidden(
219-
field.NewPath("spec.baremetalSetTemplate"),
220-
fmt.Sprintf("%s", err)))
219+
if r.BaremetalSetTemplate != nil && oldSpec.BaremetalSetTemplate != nil {
220+
err := r.BaremetalSetTemplate.ValidateTemplate(
221+
len(oldSpec.Nodes), *oldSpec.BaremetalSetTemplate)
222+
if err != nil {
223+
errors = append(errors, field.Forbidden(
224+
field.NewPath("spec.baremetalSetTemplate"),
225+
fmt.Sprintf("%s", err)))
226+
}
221227
}
222228
}
223229

apis/dataplane/v1beta1/zz_generated.deepcopy.go

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apis/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ require (
2323
github.com/openstack-k8s-operators/neutron-operator/api v0.6.1-0.20250926121941-bcc2acaeaa8d
2424
github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20250925091727-a6113c8dcb73
2525
github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20250922184048-a329ec619422
26-
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250925115354-56c6fb542b58
26+
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250930082931-858d374dee9b
2727
github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20250926114242-6183563dfa1c
2828
github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20250926111633-01613c48d59a
2929
github.com/openstack-k8s-operators/swift-operator/api v0.6.1-0.20250922191944-7d54e7c80282

apis/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20250925091727-a61
134134
github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20250925091727-a6113c8dcb73/go.mod h1:ev8kmHUsjB6HuYilRQpfQryRWFXRPASBCqKCa/FlTqU=
135135
github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20250922184048-a329ec619422 h1:+uBDR9sEvaF9mLFZuH7eaVoqPvuHaDN6w2QKy+Wffoc=
136136
github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20250922184048-a329ec619422/go.mod h1:/jIEvzabeyAvgiyi4AUDV/nLz/nje/pLyzrMVSYSnyM=
137-
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250925115354-56c6fb542b58 h1:0+XDTUa9d6dWGug+Xvcys8wqiQ11+BuMgP8nLOBrRdw=
138-
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250925115354-56c6fb542b58/go.mod h1:4wRS6rOgUTpx5Rf6nZ+jR5lzqqZUv3kDwecikFSZ4Rg=
137+
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250930082931-858d374dee9b h1:LGNSmkd/2BQ5RNTi/m5I/px4o6dudSfPuBpmH3Xwy98=
138+
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250930082931-858d374dee9b/go.mod h1:4wRS6rOgUTpx5Rf6nZ+jR5lzqqZUv3kDwecikFSZ4Rg=
139139
github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20250926114242-6183563dfa1c h1:q/0SonAarN0d8Osa1iO3YdZxQdJD/pMoj34FeWcOFW8=
140140
github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20250926114242-6183563dfa1c/go.mod h1:xT8Al+S2phSysByx8PLklgeLI9SVbNBoXqjL6NHEH+I=
141141
github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20250926111633-01613c48d59a h1:x3JivogJF/NaZVGulbccCYoYg9WcTrM3/D7vl9sqDvc=

config/operator/manager_operator_images.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ spec:
4242
- name: RELATED_IMAGE_OCTAVIA_OPERATOR_MANAGER_IMAGE_URL
4343
value: quay.io/openstack-k8s-operators/octavia-operator@sha256:4d08afd31dc5ded10c54a5541f514ac351e9b40a183285b3db27d0757a6354c8
4444
- name: RELATED_IMAGE_OPENSTACK_BAREMETAL_OPERATOR_MANAGER_IMAGE_URL
45-
value: quay.io/openstack-k8s-operators/openstack-baremetal-operator@sha256:e3f947e9034a951620a76eaf41ceec95eefcef0eacb251b10993d6820d5e1af6
45+
value: quay.io/openstack-k8s-operators/openstack-baremetal-operator@sha256:e7cfed051c1cf801e651fd4035070e38698039f284ac0b2a0332769fdbb4a9c8
4646
- name: RELATED_IMAGE_OVN_OPERATOR_MANAGER_IMAGE_URL
4747
value: quay.io/openstack-k8s-operators/ovn-operator@sha256:1051afc168038fb814f75e7a5f07c588b295a83ebd143dcd8b46d799e31ad302
4848
- name: RELATED_IMAGE_PLACEMENT_OPERATOR_MANAGER_IMAGE_URL

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ require (
3131
github.com/openstack-k8s-operators/neutron-operator/api v0.6.1-0.20250926121941-bcc2acaeaa8d
3232
github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20250925091727-a6113c8dcb73
3333
github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20250922184048-a329ec619422
34-
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250925115354-56c6fb542b58
34+
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250930082931-858d374dee9b
3535
github.com/openstack-k8s-operators/openstack-operator/apis v0.0.0-20240531084739-3b4c0451297c
3636
github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20250926114242-6183563dfa1c
3737
github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20250926111633-01613c48d59a

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,8 @@ github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20250925091727-a61
144144
github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20250925091727-a6113c8dcb73/go.mod h1:ev8kmHUsjB6HuYilRQpfQryRWFXRPASBCqKCa/FlTqU=
145145
github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20250922184048-a329ec619422 h1:+uBDR9sEvaF9mLFZuH7eaVoqPvuHaDN6w2QKy+Wffoc=
146146
github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20250922184048-a329ec619422/go.mod h1:/jIEvzabeyAvgiyi4AUDV/nLz/nje/pLyzrMVSYSnyM=
147-
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250925115354-56c6fb542b58 h1:0+XDTUa9d6dWGug+Xvcys8wqiQ11+BuMgP8nLOBrRdw=
148-
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250925115354-56c6fb542b58/go.mod h1:4wRS6rOgUTpx5Rf6nZ+jR5lzqqZUv3kDwecikFSZ4Rg=
147+
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250930082931-858d374dee9b h1:LGNSmkd/2BQ5RNTi/m5I/px4o6dudSfPuBpmH3Xwy98=
148+
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250930082931-858d374dee9b/go.mod h1:4wRS6rOgUTpx5Rf6nZ+jR5lzqqZUv3kDwecikFSZ4Rg=
149149
github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20250926114242-6183563dfa1c h1:q/0SonAarN0d8Osa1iO3YdZxQdJD/pMoj34FeWcOFW8=
150150
github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20250926114242-6183563dfa1c/go.mod h1:xT8Al+S2phSysByx8PLklgeLI9SVbNBoXqjL6NHEH+I=
151151
github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20250926111633-01613c48d59a h1:x3JivogJF/NaZVGulbccCYoYg9WcTrM3/D7vl9sqDvc=

hack/export_operator_related_images.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export RELATED_IMAGE_MARIADB_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-op
1414
export RELATED_IMAGE_NEUTRON_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/neutron-operator@sha256:485df5c7813cdf4cf21f48ec48c8e3e4962fee6a1ae4c64f7af127d5ab346a10
1515
export RELATED_IMAGE_NOVA_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/nova-operator@sha256:057de94f9afa340adc34f9b25f8007d9cd2ba71bc8b5d77aac522add53b7caef
1616
export RELATED_IMAGE_OCTAVIA_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/octavia-operator@sha256:4d08afd31dc5ded10c54a5541f514ac351e9b40a183285b3db27d0757a6354c8
17-
export RELATED_IMAGE_OPENSTACK_BAREMETAL_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/openstack-baremetal-operator@sha256:e3f947e9034a951620a76eaf41ceec95eefcef0eacb251b10993d6820d5e1af6
17+
export RELATED_IMAGE_OPENSTACK_BAREMETAL_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/openstack-baremetal-operator@sha256:e7cfed051c1cf801e651fd4035070e38698039f284ac0b2a0332769fdbb4a9c8
1818
export RELATED_IMAGE_OVN_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/ovn-operator@sha256:1051afc168038fb814f75e7a5f07c588b295a83ebd143dcd8b46d799e31ad302
1919
export RELATED_IMAGE_PLACEMENT_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/placement-operator@sha256:a6b3408d79df6b6d4a467e49defaa4a9d9c088c94d0605a4fee0030c9ccc84d2
2020
export RELATED_IMAGE_RABBITMQ_CLUSTER_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/rabbitmq-cluster-operator@sha256:893e66303c1b0bc1d00a299a3f0380bad55c8dc813c8a1c6a4aab379f5aa12a2

pkg/dataplane/baremetal.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,18 @@ func DeployBaremetalSet(
6161
ownerLabels := labels.GetLabels(instance, labels.GetGroupLabel(NodeSetLabel), map[string]string{})
6262
baremetalSet.Labels = utils.MergeStringMaps(baremetalSet.GetLabels(), ownerLabels)
6363
baremetalSet.Spec.BaremetalHosts = make(map[string]baremetalv1.InstanceSpec)
64-
instance.Spec.BaremetalSetTemplate.DeepCopyInto(&baremetalSet.Spec.OpenStackBaremetalSetTemplateSpec)
65-
// Set Images
66-
if containerImages.OsContainerImage != nil && instance.Spec.BaremetalSetTemplate.OSContainerImageURL == "" {
67-
baremetalSet.Spec.OSContainerImageURL = *containerImages.OsContainerImage
68-
}
69-
if containerImages.AgentImage != nil && instance.Spec.BaremetalSetTemplate.AgentImageURL == "" {
70-
baremetalSet.Spec.AgentImageURL = *containerImages.AgentImage
71-
}
72-
if containerImages.ApacheImage != nil && instance.Spec.BaremetalSetTemplate.ApacheImageURL == "" {
73-
baremetalSet.Spec.ApacheImageURL = *containerImages.ApacheImage
64+
if instance.Spec.BaremetalSetTemplate != nil {
65+
instance.Spec.BaremetalSetTemplate.DeepCopyInto(&baremetalSet.Spec.OpenStackBaremetalSetTemplateSpec)
66+
// Set Images
67+
if containerImages.OsContainerImage != nil && instance.Spec.BaremetalSetTemplate.OSContainerImageURL == "" {
68+
baremetalSet.Spec.OSContainerImageURL = *containerImages.OsContainerImage
69+
}
70+
if containerImages.AgentImage != nil && instance.Spec.BaremetalSetTemplate.AgentImageURL == "" {
71+
baremetalSet.Spec.AgentImageURL = *containerImages.AgentImage
72+
}
73+
if containerImages.ApacheImage != nil && instance.Spec.BaremetalSetTemplate.ApacheImageURL == "" {
74+
baremetalSet.Spec.ApacheImageURL = *containerImages.ApacheImage
75+
}
7476
}
7577

7678
for _, node := range instance.Spec.Nodes {

0 commit comments

Comments
 (0)