Skip to content

Commit 08087ea

Browse files
Merge pull request #309 from rabi/validate_Secrets
Ensure userData and networkData secrets are in bmhNamespace
2 parents df73d3f + 10e2221 commit 08087ea

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

api/v1beta1/openstackbaremetalset_webhook.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ import (
2929
metal3v1 "github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1"
3030
"github.com/openstack-k8s-operators/lib-common/modules/common/labels"
3131
"k8s.io/apimachinery/pkg/api/equality"
32+
apierrors "k8s.io/apimachinery/pkg/api/errors"
3233
"k8s.io/apimachinery/pkg/runtime"
34+
"k8s.io/apimachinery/pkg/runtime/schema"
3335
"k8s.io/apimachinery/pkg/util/validation/field"
3436
ctrl "sigs.k8s.io/controller-runtime"
3537
goClient "sigs.k8s.io/controller-runtime/pkg/client"
@@ -72,8 +74,17 @@ func (r *OpenStackBaremetalSet) ValidateCreate() (admission.Warnings, error) {
7274
field.NewPath("Name"),
7375
r.Name,
7476
fmt.Sprintf("Error validating OpenStackBaremetalSet name %s, name must follow RFC1123", r.Name)))
77+
return nil, apierrors.NewInvalid(
78+
schema.GroupKind{Group: "baremetal.openstack.org", Kind: "OpenStackBaremetalSet"},
79+
r.Name,
80+
errors)
7581
}
7682

83+
// Validate userData and networkData secrets namespace
84+
err := r.ValidateCloudInitSecrets()
85+
if err != nil {
86+
return nil, err
87+
}
7788
//
7889
// Validate that there are enough available BMHs for the initial requested count
7990
//
@@ -94,6 +105,26 @@ func (r *OpenStackBaremetalSet) ValidateCreate() (admission.Warnings, error) {
94105
return nil, nil
95106
}
96107

108+
// ValidateCloudInitSecrets checks if userData and networkData secrets are in the same namespace as bmh
109+
func (r *OpenStackBaremetalSet) ValidateCloudInitSecrets() error {
110+
var secretsWithIssue []string
111+
112+
for _, host := range r.Spec.BaremetalHosts {
113+
if host.NetworkData != nil && host.NetworkData.Namespace != r.Spec.BmhNamespace {
114+
secretsWithIssue = append(secretsWithIssue, host.NetworkData.Name)
115+
}
116+
if host.UserData != nil && host.UserData.Namespace != r.Spec.BmhNamespace {
117+
secretsWithIssue = append(secretsWithIssue, host.UserData.Name)
118+
}
119+
}
120+
121+
if len(secretsWithIssue) > 0 {
122+
return fmt.Errorf("userData and networkData secrets %v should exist in the bmh namespace %s",
123+
secretsWithIssue, r.Spec.BmhNamespace)
124+
}
125+
return nil
126+
}
127+
97128
// Validate implements OpenStackBaremetalSetTemplateSpec validation
98129
func (spec OpenStackBaremetalSetTemplateSpec) ValidateTemplate(oldCount int, oldSpec OpenStackBaremetalSetTemplateSpec) error {
99130
if oldCount > 0 &&

pkg/openstackbaremetalset/baremetalhost.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func BaremetalHostProvision(
7979

8080
userDataSt := util.Template{
8181
Name: userDataSecretName,
82-
Namespace: instance.Namespace,
82+
Namespace: instance.Spec.BmhNamespace,
8383
Type: util.TemplateTypeConfig,
8484
InstanceType: instance.Kind,
8585
AdditionalTemplate: map[string]string{"userData": "/openstackbaremetalset/cloudinit/userdata"},
@@ -89,7 +89,7 @@ func BaremetalHostProvision(
8989
sts = append(sts, userDataSt)
9090
userDataSecret = &corev1.SecretReference{
9191
Name: userDataSecretName,
92-
Namespace: instance.Namespace,
92+
Namespace: instance.Spec.BmhNamespace,
9393
}
9494

9595
}
@@ -147,7 +147,7 @@ func BaremetalHostProvision(
147147

148148
networkDataSt := util.Template{
149149
Name: networkDataSecretName,
150-
Namespace: instance.Namespace,
150+
Namespace: instance.Spec.BmhNamespace,
151151
Type: util.TemplateTypeConfig,
152152
InstanceType: instance.Kind,
153153
AdditionalTemplate: map[string]string{"networkData": "/openstackbaremetalset/cloudinit/networkdata"},
@@ -157,7 +157,7 @@ func BaremetalHostProvision(
157157
sts = append(sts, networkDataSt)
158158
networkDataSecret = &corev1.SecretReference{
159159
Name: networkDataSecretName,
160-
Namespace: instance.Namespace,
160+
Namespace: instance.Spec.BmhNamespace,
161161
}
162162
}
163163

0 commit comments

Comments
 (0)