Skip to content

Commit b8938d3

Browse files
committed
Set nodeSelector on jobs and allow empty nodeSelector
Switch to a pointer for nodeSelector to allow different logic for empty vs unset
1 parent 61488e9 commit b8938d3

File tree

11 files changed

+248
-31
lines changed

11 files changed

+248
-31
lines changed

api/v1beta1/common_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ type ManilaServiceTemplate struct {
6767
// +kubebuilder:validation:Optional
6868
// NodeSelector to target subset of worker nodes running this service. Setting here overrides
6969
// any global NodeSelector settings within the Manila CR.
70-
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
70+
NodeSelector *map[string]string `json:"nodeSelector,omitempty"`
7171

7272
// +kubebuilder:validation:Optional
7373
// +kubebuilder:default="# add your customization here"

api/v1beta1/manila_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ type ManilaSpecBase struct {
111111
// NodeSelector to target subset of worker nodes running this service. Setting
112112
// NodeSelector here acts as a default value and can be overridden by service
113113
// specific NodeSelector Settings.
114-
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
114+
NodeSelector *map[string]string `json:"nodeSelector,omitempty"`
115115

116116
// +kubebuilder:validation:Optional
117117
// DBPurge parameters -

api/v1beta1/zz_generated.deepcopy.go

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

controllers/manila_controller.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -977,12 +977,13 @@ func (r *ManilaReconciler) apiDeploymentCreateOrUpdate(ctx context.Context, inst
977977
ServiceAccount: instance.RbacResourceName(),
978978
}
979979

980+
if apiSpec.NodeSelector == nil {
981+
apiSpec.NodeSelector = instance.Spec.NodeSelector
982+
}
983+
980984
op, err := controllerutil.CreateOrUpdate(ctx, r.Client, deployment, func() error {
981985
deployment.Spec = apiSpec
982986

983-
if len(deployment.Spec.NodeSelector) == 0 {
984-
deployment.Spec.NodeSelector = instance.Spec.NodeSelector
985-
}
986987
deployment.Spec.TransportURLSecret = instance.Status.TransportURLSecret
987988

988989
err := controllerutil.SetControllerReference(instance, deployment, r.Scheme)
@@ -1014,12 +1015,12 @@ func (r *ManilaReconciler) schedulerDeploymentCreateOrUpdate(ctx context.Context
10141015
TLS: instance.Spec.ManilaAPI.TLS.Ca,
10151016
}
10161017

1018+
if schedulerSpec.NodeSelector == nil {
1019+
schedulerSpec.NodeSelector = instance.Spec.NodeSelector
1020+
}
1021+
10171022
op, err := controllerutil.CreateOrUpdate(ctx, r.Client, deployment, func() error {
10181023
deployment.Spec = schedulerSpec
1019-
1020-
if len(deployment.Spec.NodeSelector) == 0 {
1021-
deployment.Spec.NodeSelector = instance.Spec.NodeSelector
1022-
}
10231024
deployment.Spec.TransportURLSecret = instance.Status.TransportURLSecret
10241025

10251026
err := controllerutil.SetControllerReference(instance, deployment, r.Scheme)
@@ -1061,12 +1062,12 @@ func (r *ManilaReconciler) shareDeploymentCreateOrUpdate(
10611062
TLS: instance.Spec.ManilaAPI.TLS.Ca,
10621063
}
10631064

1065+
if shareSpec.NodeSelector == nil {
1066+
shareSpec.NodeSelector = instance.Spec.NodeSelector
1067+
}
1068+
10641069
op, err := controllerutil.CreateOrUpdate(ctx, r.Client, deployment, func() error {
10651070
deployment.Spec = shareSpec
1066-
1067-
if len(deployment.Spec.NodeSelector) == 0 {
1068-
deployment.Spec.NodeSelector = instance.Spec.NodeSelector
1069-
}
10701071
deployment.Spec.TransportURLSecret = instance.Status.TransportURLSecret
10711072

10721073
err := controllerutil.SetControllerReference(instance, deployment, r.Scheme)

pkg/manila/cronjob.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,9 @@ func CronJob(
124124
},
125125
},
126126
}
127-
if instance.Spec.NodeSelector != nil && len(instance.Spec.NodeSelector) > 0 {
128-
cronjob.Spec.JobTemplate.Spec.Template.Spec.NodeSelector = instance.Spec.NodeSelector
127+
128+
if instance.Spec.NodeSelector != nil {
129+
cronjob.Spec.JobTemplate.Spec.Template.Spec.NodeSelector = *instance.Spec.NodeSelector
129130
}
130131

131132
return cronjob

pkg/manila/job.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package manila
22

33
import (
44
"fmt"
5+
56
"github.com/openstack-k8s-operators/lib-common/modules/common/env"
67
manilav1 "github.com/openstack-k8s-operators/manila-operator/api/v1beta1"
78
batchv1 "k8s.io/api/batch/v1"
@@ -119,5 +120,8 @@ func Job(
119120
// Setting TTL to delete the job after it has completed
120121
job.Spec.TTLSecondsAfterFinished = ttl
121122
}
123+
if instance.Spec.NodeSelector != nil {
124+
job.Spec.Template.Spec.NodeSelector = *instance.Spec.NodeSelector
125+
}
122126
return job
123127
}

pkg/manilaapi/statefulset.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,13 +163,16 @@ func StatefulSet(
163163
LivenessProbe: livenessProbe,
164164
},
165165
},
166-
Affinity: manila.GetPodAffinity(ComponentName),
167-
NodeSelector: instance.Spec.NodeSelector,
168-
Volumes: volumes,
166+
Affinity: manila.GetPodAffinity(ComponentName),
167+
Volumes: volumes,
169168
},
170169
},
171170
},
172171
}
173172

173+
if instance.Spec.NodeSelector != nil {
174+
statefulset.Spec.Template.Spec.NodeSelector = *instance.Spec.NodeSelector
175+
}
176+
174177
return statefulset, nil
175178
}

pkg/manilascheduler/statefulset.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,16 @@ func StatefulSet(
131131
VolumeMounts: volumeMounts,
132132
},
133133
},
134-
Affinity: manila.GetPodAffinity(ComponentName),
135-
NodeSelector: instance.Spec.NodeSelector,
136-
Volumes: volumes,
134+
Affinity: manila.GetPodAffinity(ComponentName),
135+
Volumes: volumes,
137136
},
138137
},
139138
},
140139
}
141140

141+
if instance.Spec.NodeSelector != nil {
142+
statefulset.Spec.Template.Spec.NodeSelector = *instance.Spec.NodeSelector
143+
}
144+
142145
return statefulset
143146
}

pkg/manilashare/statefulset.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,16 @@ func StatefulSet(
149149
VolumeMounts: volumeMounts,
150150
},
151151
},
152-
Affinity: manila.GetPodAffinity(ComponentName),
153-
NodeSelector: instance.Spec.NodeSelector,
154-
Volumes: volumes,
152+
Affinity: manila.GetPodAffinity(ComponentName),
153+
Volumes: volumes,
155154
},
156155
},
157156
},
158157
}
159158

159+
if instance.Spec.NodeSelector != nil {
160+
statefulset.Spec.Template.Spec.NodeSelector = *instance.Spec.NodeSelector
161+
}
162+
160163
return statefulset
161164
}

test/functional/base_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ func GetDefaultManilaSpec() map[string]interface{} {
7373
"secret": SecretName,
7474
"manilaAPI": GetDefaultManilaAPISpec(),
7575
"manilaScheduler": GetDefaultManilaSchedulerSpec(),
76-
"manilaShare": GetDefaultManilaShareSpec(),
76+
"manilaShares": map[string]interface{}{
77+
"share0": GetDefaultManilaShareSpec(),
78+
},
7779
}
7880
}
7981

0 commit comments

Comments
 (0)