Skip to content

Commit 9ac8ad7

Browse files
authored
Move the nodegroups one level up (#2227)
1 parent 212d52c commit 9ac8ad7

File tree

7 files changed

+34
-26
lines changed

7 files changed

+34
-26
lines changed

pkg/operator/resources/asyncapi/k8s_specs.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func gatewayDeploymentSpec(api spec.API, prevDeployment *kapps.Deployment, queue
8888
Containers: []kcore.Container{container},
8989
NodeSelector: workloads.NodeSelectors(),
9090
Tolerations: workloads.GenerateResourceTolerations(),
91-
Affinity: workloads.GenerateNodeAffinities(api.Pod.NodeGroups),
91+
Affinity: workloads.GenerateNodeAffinities(api.NodeGroups),
9292
Volumes: volumes,
9393
ServiceAccountName: workloads.ServiceAccountName,
9494
},
@@ -239,7 +239,7 @@ func deploymentSpec(api spec.API, prevDeployment *kapps.Deployment, queueURL str
239239
Containers: containers,
240240
NodeSelector: workloads.NodeSelectors(),
241241
Tolerations: workloads.GenerateResourceTolerations(),
242-
Affinity: workloads.GenerateNodeAffinities(api.Pod.NodeGroups),
242+
Affinity: workloads.GenerateNodeAffinities(api.NodeGroups),
243243
Volumes: volumes,
244244
ServiceAccountName: workloads.ServiceAccountName,
245245
},

pkg/operator/resources/job/batchapi/job.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ func SubmitJob(apiName string, submission *schema.BatchJobSubmission) (*spec.Bat
145145
Timeout: timeout,
146146
DeadLetterQueue: deadLetterQueue,
147147
TTL: &kmeta.Duration{Duration: _batchJobTTL},
148-
NodeGroups: apiSpec.Pod.NodeGroups,
148+
NodeGroups: apiSpec.NodeGroups,
149149
Probes: workloads.GetReadinessProbesFromContainers(apiSpec.Pod.Containers),
150150
},
151151
}

pkg/operator/resources/job/taskapi/k8s_specs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func k8sJobSpec(api *spec.API, job *spec.TaskJob) *kbatch.Job {
9494
Containers: containers,
9595
NodeSelector: workloads.NodeSelectors(),
9696
Tolerations: workloads.GenerateResourceTolerations(),
97-
Affinity: workloads.GenerateNodeAffinities(api.Pod.NodeGroups),
97+
Affinity: workloads.GenerateNodeAffinities(api.NodeGroups),
9898
Volumes: volumes,
9999
ServiceAccountName: workloads.ServiceAccountName,
100100
},

pkg/operator/resources/realtimeapi/k8s_specs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func deploymentSpec(api *spec.API, prevDeployment *kapps.Deployment) *kapps.Depl
6868
Containers: containers,
6969
NodeSelector: workloads.NodeSelectors(),
7070
Tolerations: workloads.GenerateResourceTolerations(),
71-
Affinity: workloads.GenerateNodeAffinities(api.Pod.NodeGroups),
71+
Affinity: workloads.GenerateNodeAffinities(api.NodeGroups),
7272
Volumes: volumes,
7373
ServiceAccountName: workloads.ServiceAccountName,
7474
},

pkg/operator/resources/validations.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ func validateK8sCompute(api *userconfig.API, maxMemMap map[string]kresource.Quan
138138
successfulLoops := 0
139139

140140
clusterNodeGroupNames := strset.New(config.ClusterConfig.GetNodeGroupNames()...)
141-
apiNodeGroupNames := api.Pod.NodeGroups
141+
apiNodeGroupNames := api.NodeGroups
142142

143143
if apiNodeGroupNames != nil {
144144
for _, ngName := range apiNodeGroupNames {

pkg/types/spec/validations.go

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,25 +52,29 @@ func apiValidation(resource userconfig.Resource) *cr.StructValidation {
5252
case userconfig.RealtimeAPIKind:
5353
structFieldValidations = append(resourceStructValidations,
5454
podValidation(userconfig.RealtimeAPIKind),
55+
nodegroupsValidation(),
5556
networkingValidation(),
5657
autoscalingValidation(resource.Kind),
5758
updateStrategyValidation(),
5859
)
5960
case userconfig.AsyncAPIKind:
6061
structFieldValidations = append(resourceStructValidations,
6162
podValidation(userconfig.AsyncAPIKind),
63+
nodegroupsValidation(),
6264
networkingValidation(),
6365
autoscalingValidation(resource.Kind),
6466
updateStrategyValidation(),
6567
)
6668
case userconfig.BatchAPIKind:
6769
structFieldValidations = append(resourceStructValidations,
6870
podValidation(userconfig.BatchAPIKind),
71+
nodegroupsValidation(),
6972
networkingValidation(),
7073
)
7174
case userconfig.TaskAPIKind:
7275
structFieldValidations = append(resourceStructValidations,
7376
podValidation(userconfig.TaskAPIKind),
77+
nodegroupsValidation(),
7478
networkingValidation(),
7579
)
7680
case userconfig.TrafficSplitterKind:
@@ -144,18 +148,6 @@ func podValidation(kind userconfig.Kind) *cr.StructFieldValidation {
144148
StructField: "Pod",
145149
StructValidation: &cr.StructValidation{
146150
StructFieldValidations: []*cr.StructFieldValidation{
147-
{
148-
StructField: "NodeGroups",
149-
StringListValidation: &cr.StringListValidation{
150-
Required: false,
151-
Default: nil,
152-
AllowExplicitNull: true,
153-
AllowEmpty: false,
154-
ElementStringValidation: &cr.StringValidation{
155-
AlphaNumericDashUnderscore: true,
156-
},
157-
},
158-
},
159151
{
160152
StructField: "Port",
161153
Int32PtrValidation: &cr.Int32PtrValidation{
@@ -267,6 +259,21 @@ func containersValidation(kind userconfig.Kind) *cr.StructFieldValidation {
267259
}
268260
}
269261

262+
func nodegroupsValidation() *cr.StructFieldValidation {
263+
return &cr.StructFieldValidation{
264+
StructField: "NodeGroups",
265+
StringListValidation: &cr.StringListValidation{
266+
Required: false,
267+
Default: nil,
268+
AllowExplicitNull: true,
269+
AllowEmpty: false,
270+
ElementStringValidation: &cr.StringValidation{
271+
AlphaNumericDashUnderscore: true,
272+
},
273+
},
274+
}
275+
}
276+
270277
func networkingValidation() *cr.StructFieldValidation {
271278
return &cr.StructFieldValidation{
272279
StructField: "Networking",

pkg/types/userconfig/api.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ type API struct {
3434
Resource
3535

3636
Pod *Pod `json:"pod" yaml:"pod"`
37+
NodeGroups []string `json:"node_groups" yaml:"node_groups"`
3738
APIs []*TrafficSplit `json:"apis" yaml:"apis"`
3839
Networking *Networking `json:"networking" yaml:"networking"`
3940
Autoscaling *Autoscaling `json:"autoscaling" yaml:"autoscaling"`
@@ -44,7 +45,6 @@ type API struct {
4445
}
4546

4647
type Pod struct {
47-
NodeGroups []string `json:"node_groups" yaml:"node_groups"`
4848
Port *int32 `json:"port" yaml:"port"`
4949
MaxQueueLength int64 `json:"max_queue_length" yaml:"max_queue_length"`
5050
MaxConcurrency int64 `json:"max_concurrency" yaml:"max_concurrency"`
@@ -270,6 +270,12 @@ func (api *API) UserStr() string {
270270
sb.WriteString(s.Indent(api.Autoscaling.UserStr(), " "))
271271
}
272272

273+
if api.NodeGroups == nil {
274+
sb.WriteString(fmt.Sprintf("%s: null\n", NodeGroupsKey))
275+
} else {
276+
sb.WriteString(fmt.Sprintf("%s: %s\n", NodeGroupsKey, s.ObjFlatNoQuotes(api.NodeGroups)))
277+
}
278+
273279
if api.UpdateStrategy != nil {
274280
sb.WriteString(fmt.Sprintf("%s:\n", UpdateStrategyKey))
275281
sb.WriteString(s.Indent(api.UpdateStrategy.UserStr(), " "))
@@ -288,12 +294,6 @@ func (trafficSplit *TrafficSplit) UserStr() string {
288294

289295
func (pod *Pod) UserStr(kind Kind) string {
290296
var sb strings.Builder
291-
292-
if pod.NodeGroups == nil {
293-
sb.WriteString(fmt.Sprintf("%s: null\n", NodeGroupsKey))
294-
} else {
295-
sb.WriteString(fmt.Sprintf("%s: %s\n", NodeGroupsKey, s.ObjFlatNoQuotes(pod.NodeGroups)))
296-
}
297297
if pod.Port != nil {
298298
sb.WriteString(fmt.Sprintf("%s: %d\n", PortKey, *pod.Port))
299299
}
@@ -535,7 +535,6 @@ func (api *API) TelemetryEvent() map[string]interface{} {
535535

536536
if api.Pod != nil {
537537
event["pod._is_defined"] = true
538-
event["pod.node_groups._len"] = len(api.Pod.NodeGroups)
539538
if api.Pod.Port != nil {
540539
event["pod.port"] = *api.Pod.Port
541540
}
@@ -576,6 +575,8 @@ func (api *API) TelemetryEvent() map[string]interface{} {
576575
event["pod.containers.compute.inf"] = totalCompute.Inf
577576
}
578577

578+
event["node_groups._len"] = len(api.NodeGroups)
579+
579580
if api.UpdateStrategy != nil {
580581
event["update_strategy._is_defined"] = true
581582
event["update_strategy.max_surge"] = api.UpdateStrategy.MaxSurge

0 commit comments

Comments
 (0)