Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apis/dataplane/v1beta1/openstackdataplanenodeset_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import (
type OpenStackDataPlaneNodeSetSpec struct {
// +kubebuilder:validation:Optional
// BaremetalSetTemplate Template for BaremetalSet for the NodeSet
BaremetalSetTemplate baremetalv1.OpenStackBaremetalSetTemplateSpec `json:"baremetalSetTemplate,omitempty"`
BaremetalSetTemplate *baremetalv1.OpenStackBaremetalSetTemplateSpec `json:"baremetalSetTemplate,omitempty"`

// +kubebuilder:validation:Required
// NodeTemplate - node attributes specific to nodes defined by this resource. These
Expand Down
22 changes: 14 additions & 8 deletions apis/dataplane/v1beta1/openstackdataplanenodeset_webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,11 @@ func (r *OpenStackDataPlaneNodeSet) Default() {

// Default - set defaults for this OpenStackDataPlaneNodeSet Spec
func (spec *OpenStackDataPlaneNodeSetSpec) Default() {
domain := spec.BaremetalSetTemplate.DomainName
var domain string
if spec.BaremetalSetTemplate != nil {
domain = spec.BaremetalSetTemplate.DomainName
}

for nodeName, node := range spec.Nodes {
if node.HostName == "" {
node.HostName = nodeName
Expand All @@ -82,7 +86,7 @@ func (spec *OpenStackDataPlaneNodeSetSpec) Default() {
spec.Nodes[nodeName] = *node.DeepCopy()
}

if !spec.PreProvisioned {
if !spec.PreProvisioned && spec.BaremetalSetTemplate != nil {
spec.NodeTemplate.Ansible.AnsibleUser = spec.BaremetalSetTemplate.CloudUserName
if spec.BaremetalSetTemplate.DeploymentSSHSecret == "" {
spec.BaremetalSetTemplate.DeploymentSSHSecret = spec.NodeTemplate.AnsibleSSHPrivateKeySecret
Expand Down Expand Up @@ -212,12 +216,14 @@ func (r *OpenStackDataPlaneNodeSetSpec) ValidateUpdate(oldSpec *OpenStackDataPla
// to the openstack-baremetal-operator webhook to avoid duplicating logic.
if !reflect.DeepEqual(r.BaremetalSetTemplate, oldSpec.BaremetalSetTemplate) {
// Call openstack-baremetal-operator webhook Validate() to parse changes
err := r.BaremetalSetTemplate.ValidateTemplate(
len(oldSpec.Nodes), oldSpec.BaremetalSetTemplate)
if err != nil {
errors = append(errors, field.Forbidden(
field.NewPath("spec.baremetalSetTemplate"),
fmt.Sprintf("%s", err)))
if r.BaremetalSetTemplate != nil && oldSpec.BaremetalSetTemplate != nil {
err := r.BaremetalSetTemplate.ValidateTemplate(
len(oldSpec.Nodes), *oldSpec.BaremetalSetTemplate)
if err != nil {
errors = append(errors, field.Forbidden(
field.NewPath("spec.baremetalSetTemplate"),
fmt.Sprintf("%s", err)))
}
}
}

Expand Down
7 changes: 6 additions & 1 deletion apis/dataplane/v1beta1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion apis/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ require (
github.com/openstack-k8s-operators/neutron-operator/api v0.6.1-0.20250926121941-bcc2acaeaa8d
github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20250925091727-a6113c8dcb73
github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20250922184048-a329ec619422
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250925115354-56c6fb542b58
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250930082931-858d374dee9b
github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20250926114242-6183563dfa1c
github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20250926111633-01613c48d59a
github.com/openstack-k8s-operators/swift-operator/api v0.6.1-0.20250922191944-7d54e7c80282
Expand Down
4 changes: 2 additions & 2 deletions apis/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,8 @@ github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20250925091727-a61
github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20250925091727-a6113c8dcb73/go.mod h1:ev8kmHUsjB6HuYilRQpfQryRWFXRPASBCqKCa/FlTqU=
github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20250922184048-a329ec619422 h1:+uBDR9sEvaF9mLFZuH7eaVoqPvuHaDN6w2QKy+Wffoc=
github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20250922184048-a329ec619422/go.mod h1:/jIEvzabeyAvgiyi4AUDV/nLz/nje/pLyzrMVSYSnyM=
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250925115354-56c6fb542b58 h1:0+XDTUa9d6dWGug+Xvcys8wqiQ11+BuMgP8nLOBrRdw=
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250925115354-56c6fb542b58/go.mod h1:4wRS6rOgUTpx5Rf6nZ+jR5lzqqZUv3kDwecikFSZ4Rg=
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250930082931-858d374dee9b h1:LGNSmkd/2BQ5RNTi/m5I/px4o6dudSfPuBpmH3Xwy98=
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250930082931-858d374dee9b/go.mod h1:4wRS6rOgUTpx5Rf6nZ+jR5lzqqZUv3kDwecikFSZ4Rg=
github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20250926114242-6183563dfa1c h1:q/0SonAarN0d8Osa1iO3YdZxQdJD/pMoj34FeWcOFW8=
github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20250926114242-6183563dfa1c/go.mod h1:xT8Al+S2phSysByx8PLklgeLI9SVbNBoXqjL6NHEH+I=
github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20250926111633-01613c48d59a h1:x3JivogJF/NaZVGulbccCYoYg9WcTrM3/D7vl9sqDvc=
Expand Down
2 changes: 1 addition & 1 deletion config/operator/manager_operator_images.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ spec:
- name: RELATED_IMAGE_OCTAVIA_OPERATOR_MANAGER_IMAGE_URL
value: quay.io/openstack-k8s-operators/octavia-operator@sha256:4d08afd31dc5ded10c54a5541f514ac351e9b40a183285b3db27d0757a6354c8
- name: RELATED_IMAGE_OPENSTACK_BAREMETAL_OPERATOR_MANAGER_IMAGE_URL
value: quay.io/openstack-k8s-operators/openstack-baremetal-operator@sha256:e3f947e9034a951620a76eaf41ceec95eefcef0eacb251b10993d6820d5e1af6
value: quay.io/openstack-k8s-operators/openstack-baremetal-operator@sha256:e7cfed051c1cf801e651fd4035070e38698039f284ac0b2a0332769fdbb4a9c8
- name: RELATED_IMAGE_OVN_OPERATOR_MANAGER_IMAGE_URL
value: quay.io/openstack-k8s-operators/ovn-operator@sha256:1051afc168038fb814f75e7a5f07c588b295a83ebd143dcd8b46d799e31ad302
- name: RELATED_IMAGE_PLACEMENT_OPERATOR_MANAGER_IMAGE_URL
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ require (
github.com/openstack-k8s-operators/neutron-operator/api v0.6.1-0.20250926121941-bcc2acaeaa8d
github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20250925091727-a6113c8dcb73
github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20250922184048-a329ec619422
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250925115354-56c6fb542b58
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250930082931-858d374dee9b
github.com/openstack-k8s-operators/openstack-operator/apis v0.0.0-20240531084739-3b4c0451297c
github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20250926114242-6183563dfa1c
github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20250926111633-01613c48d59a
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,8 @@ github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20250925091727-a61
github.com/openstack-k8s-operators/nova-operator/api v0.6.1-0.20250925091727-a6113c8dcb73/go.mod h1:ev8kmHUsjB6HuYilRQpfQryRWFXRPASBCqKCa/FlTqU=
github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20250922184048-a329ec619422 h1:+uBDR9sEvaF9mLFZuH7eaVoqPvuHaDN6w2QKy+Wffoc=
github.com/openstack-k8s-operators/octavia-operator/api v0.6.1-0.20250922184048-a329ec619422/go.mod h1:/jIEvzabeyAvgiyi4AUDV/nLz/nje/pLyzrMVSYSnyM=
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250925115354-56c6fb542b58 h1:0+XDTUa9d6dWGug+Xvcys8wqiQ11+BuMgP8nLOBrRdw=
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250925115354-56c6fb542b58/go.mod h1:4wRS6rOgUTpx5Rf6nZ+jR5lzqqZUv3kDwecikFSZ4Rg=
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250930082931-858d374dee9b h1:LGNSmkd/2BQ5RNTi/m5I/px4o6dudSfPuBpmH3Xwy98=
github.com/openstack-k8s-operators/openstack-baremetal-operator/api v0.6.1-0.20250930082931-858d374dee9b/go.mod h1:4wRS6rOgUTpx5Rf6nZ+jR5lzqqZUv3kDwecikFSZ4Rg=
github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20250926114242-6183563dfa1c h1:q/0SonAarN0d8Osa1iO3YdZxQdJD/pMoj34FeWcOFW8=
github.com/openstack-k8s-operators/ovn-operator/api v0.6.1-0.20250926114242-6183563dfa1c/go.mod h1:xT8Al+S2phSysByx8PLklgeLI9SVbNBoXqjL6NHEH+I=
github.com/openstack-k8s-operators/placement-operator/api v0.6.1-0.20250926111633-01613c48d59a h1:x3JivogJF/NaZVGulbccCYoYg9WcTrM3/D7vl9sqDvc=
Expand Down
2 changes: 1 addition & 1 deletion hack/export_operator_related_images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export RELATED_IMAGE_MARIADB_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-op
export RELATED_IMAGE_NEUTRON_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/neutron-operator@sha256:485df5c7813cdf4cf21f48ec48c8e3e4962fee6a1ae4c64f7af127d5ab346a10
export RELATED_IMAGE_NOVA_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/nova-operator@sha256:057de94f9afa340adc34f9b25f8007d9cd2ba71bc8b5d77aac522add53b7caef
export RELATED_IMAGE_OCTAVIA_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/octavia-operator@sha256:4d08afd31dc5ded10c54a5541f514ac351e9b40a183285b3db27d0757a6354c8
export RELATED_IMAGE_OPENSTACK_BAREMETAL_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/openstack-baremetal-operator@sha256:e3f947e9034a951620a76eaf41ceec95eefcef0eacb251b10993d6820d5e1af6
export RELATED_IMAGE_OPENSTACK_BAREMETAL_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/openstack-baremetal-operator@sha256:e7cfed051c1cf801e651fd4035070e38698039f284ac0b2a0332769fdbb4a9c8
export RELATED_IMAGE_OVN_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/ovn-operator@sha256:1051afc168038fb814f75e7a5f07c588b295a83ebd143dcd8b46d799e31ad302
export RELATED_IMAGE_PLACEMENT_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/placement-operator@sha256:a6b3408d79df6b6d4a467e49defaa4a9d9c088c94d0605a4fee0030c9ccc84d2
export RELATED_IMAGE_RABBITMQ_CLUSTER_OPERATOR_MANAGER_IMAGE_URL=quay.io/openstack-k8s-operators/rabbitmq-cluster-operator@sha256:893e66303c1b0bc1d00a299a3f0380bad55c8dc813c8a1c6a4aab379f5aa12a2
Expand Down
22 changes: 12 additions & 10 deletions pkg/dataplane/baremetal.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,18 @@ func DeployBaremetalSet(
ownerLabels := labels.GetLabels(instance, labels.GetGroupLabel(NodeSetLabel), map[string]string{})
baremetalSet.Labels = utils.MergeStringMaps(baremetalSet.GetLabels(), ownerLabels)
baremetalSet.Spec.BaremetalHosts = make(map[string]baremetalv1.InstanceSpec)
instance.Spec.BaremetalSetTemplate.DeepCopyInto(&baremetalSet.Spec.OpenStackBaremetalSetTemplateSpec)
// Set Images
if containerImages.OsContainerImage != nil && instance.Spec.BaremetalSetTemplate.OSContainerImageURL == "" {
baremetalSet.Spec.OSContainerImageURL = *containerImages.OsContainerImage
}
if containerImages.AgentImage != nil && instance.Spec.BaremetalSetTemplate.AgentImageURL == "" {
baremetalSet.Spec.AgentImageURL = *containerImages.AgentImage
}
if containerImages.ApacheImage != nil && instance.Spec.BaremetalSetTemplate.ApacheImageURL == "" {
baremetalSet.Spec.ApacheImageURL = *containerImages.ApacheImage
if instance.Spec.BaremetalSetTemplate != nil {
instance.Spec.BaremetalSetTemplate.DeepCopyInto(&baremetalSet.Spec.OpenStackBaremetalSetTemplateSpec)
// Set Images
if containerImages.OsContainerImage != nil && instance.Spec.BaremetalSetTemplate.OSContainerImageURL == "" {
baremetalSet.Spec.OSContainerImageURL = *containerImages.OsContainerImage
}
if containerImages.AgentImage != nil && instance.Spec.BaremetalSetTemplate.AgentImageURL == "" {
baremetalSet.Spec.AgentImageURL = *containerImages.AgentImage
}
if containerImages.ApacheImage != nil && instance.Spec.BaremetalSetTemplate.ApacheImageURL == "" {
baremetalSet.Spec.ApacheImageURL = *containerImages.ApacheImage
}
}

for _, node := range instance.Spec.Nodes {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,10 @@ var _ = Describe("DataplaneNodeSet Webhook", func() {
It("Should block changes to the BmhLabelSelector object in baremetalSetTemplate spec", func() {
Eventually(func(_ Gomega) string {
instance := GetDataplaneNodeSet(dataplaneNodeSetName)
instance.Spec.BaremetalSetTemplate.BmhLabelSelector = map[string]string{
"app": "openstack1",
if instance.Spec.BaremetalSetTemplate != nil {
instance.Spec.BaremetalSetTemplate.BmhLabelSelector = map[string]string{
"app": "openstack1",
}
}
err := th.K8sClient.Update(th.Ctx, instance)
return fmt.Sprintf("%s", err)
Expand Down Expand Up @@ -80,9 +82,11 @@ var _ = Describe("DataplaneNodeSet Webhook", func() {
It("Should allow changes to the CloudUserName", func() {
Eventually(func(_ Gomega) error {
instance := GetDataplaneNodeSet(dataplaneNodeSetName)
instance.Spec.BaremetalSetTemplate.CloudUserName = "new-user"
instance.Spec.BaremetalSetTemplate.BmhLabelSelector = map[string]string{
"app": "test-openstack",
if instance.Spec.BaremetalSetTemplate != nil {
instance.Spec.BaremetalSetTemplate.CloudUserName = "new-user"
instance.Spec.BaremetalSetTemplate.BmhLabelSelector = map[string]string{
"app": "test-openstack",
}
}

return th.K8sClient.Update(th.Ctx, instance)
Expand Down