Skip to content

Commit 58e2be2

Browse files
author
Zach Swanson
committed
Add support for WorkloadRef to a deployment in Rollouts objects
1 parent 2fa153b commit 58e2be2

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

components/migrations.go

+15-2
Original file line numberDiff line numberDiff line change
@@ -327,13 +327,26 @@ func (_ *migrationsComponent) findOwners(ctx *cu.Context, obj cu.Object) ([]cu.O
327327
return owners, nil
328328
}
329329

330-
func (_ *migrationsComponent) findSpecFor(obj cu.Object) *corev1.PodSpec {
330+
func (_ *migrationsComponent) findSpecFor(ctx *cu.Context, obj cu.Object) *corev1.PodSpec {
331331
switch v := obj.(type) {
332332
case *corev1.Pod:
333333
return &v.Spec
334334
case *appsv1.Deployment:
335335
return &v.Spec.Template.Spec
336336
case *argoproj.Rollout:
337+
if v.Spec.WorkloadRef != nil {
338+
if v.Spec.WorkloadRef.Kind == "Deployment" {
339+
deployment := appsv1.Deployment{}
340+
err := ctx.Client.Get(ctx, client.ObjectKey{Namespace: v.Namespace, Name: v.Spec.WorkloadRef.Name}, &deployment)
341+
if err != nil {
342+
return nil
343+
}
344+
return &deployment.Spec.Template.Spec
345+
} else {
346+
// TODO handle other WorkloadRef types
347+
return nil
348+
}
349+
}
337350
return &v.Spec.Template.Spec
338351
// TODO other types. lots of them.
339352
default:
@@ -347,7 +360,7 @@ func (comp *migrationsComponent) findOwnerSpec(ctx *cu.Context, obj cu.Object) (
347360
return nil, err
348361
}
349362
for _, owner := range owners {
350-
spec := comp.findSpecFor(owner)
363+
spec := comp.findSpecFor(ctx, owner)
351364
if spec != nil {
352365
return spec, nil
353366
}

0 commit comments

Comments
 (0)