diff --git a/pkg/controllers/cronfederatedhpa/cronfederatedhpa_job.go b/pkg/controllers/cronfederatedhpa/cronfederatedhpa_job.go index 9eafed378f2d..0d1aafbc8381 100755 --- a/pkg/controllers/cronfederatedhpa/cronfederatedhpa_job.go +++ b/pkg/controllers/cronfederatedhpa/cronfederatedhpa_job.go @@ -168,6 +168,10 @@ func (c *ScalingJob) ScaleFHPA(cronFHPA *autoscalingv1alpha1.CronFederatedHPA) e func (c *ScalingJob) ScaleWorkloads(cronFHPA *autoscalingv1alpha1.CronFederatedHPA) error { ctx := context.Background() + if c.rule.TargetReplicas == nil { + return fmt.Errorf("targetReplicas cannot be nil if you want to scale %s", cronFHPA.Spec.ScaleTargetRef.Kind) + } + scaleClient := c.client.SubResource("scale") targetGV, err := schema.ParseGroupVersion(cronFHPA.Spec.ScaleTargetRef.APIVersion) diff --git a/pkg/controllers/cronfederatedhpa/cronfederatedhpa_job_test.go b/pkg/controllers/cronfederatedhpa/cronfederatedhpa_job_test.go index 49cb6ed89dce..c00c6869c908 100644 --- a/pkg/controllers/cronfederatedhpa/cronfederatedhpa_job_test.go +++ b/pkg/controllers/cronfederatedhpa/cronfederatedhpa_job_test.go @@ -189,6 +189,27 @@ func TestScaleFHPA(t *testing.T) { } } +func TestScaleWorkloadsNilTargetReplicas(t *testing.T) { + job := &ScalingJob{ + client: fake.NewClientBuilder().Build(), + rule: autoscalingv1alpha1.CronFederatedHPARule{ + Name: "missing-target-replicas", + }, + } + + cronFHPA := &autoscalingv1alpha1.CronFederatedHPA{ + Spec: autoscalingv1alpha1.CronFederatedHPASpec{ + ScaleTargetRef: autoscalingv2.CrossVersionObjectReference{ + Kind: "Deployment", + }, + }, + } + + err := job.ScaleWorkloads(cronFHPA) + + assert.EqualError(t, err, "targetReplicas cannot be nil if you want to scale Deployment") +} + func TestFindExecutionHistory(t *testing.T) { tests := []struct { name string