Skip to content

Commit

Permalink
refactor(trait): nil PodSpec check
Browse files Browse the repository at this point in the history
* Added a check to raise an error on nil PodSpec for affinity and toleration traits
* Related unit test

Ref #2047
  • Loading branch information
squakez authored and astefanutti committed Mar 2, 2021
1 parent 4898371 commit cc0daf4
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 21 deletions.
28 changes: 14 additions & 14 deletions pkg/trait/affinity.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,21 +75,21 @@ func (t *affinityTrait) Configure(e *Environment) (bool, error) {
func (t *affinityTrait) Apply(e *Environment) (err error) {
podSpec := e.GetIntegrationPodSpec()

if podSpec != nil {
if podSpec.Affinity == nil {
podSpec.Affinity = &corev1.Affinity{}
}
if err := t.addNodeAffinity(e, podSpec); err != nil {
return err
}
if err := t.addPodAffinity(e, podSpec); err != nil {
return err
}
if err := t.addPodAntiAffinity(e, podSpec); err != nil {
return err
}
if podSpec == nil {
return fmt.Errorf("could not find any integration deployment for %v", e.Integration.Name)
}
if podSpec.Affinity == nil {
podSpec.Affinity = &corev1.Affinity{}
}
if err := t.addNodeAffinity(e, podSpec); err != nil {
return err
}
if err := t.addPodAffinity(e, podSpec); err != nil {
return err
}
if err := t.addPodAntiAffinity(e, podSpec); err != nil {
return err
}

return nil
}

Expand Down
9 changes: 9 additions & 0 deletions pkg/trait/affinity_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,15 @@ func TestConfigureDisabledAffinityTraitFails(t *testing.T) {
assert.Nil(t, err)
}

func TestApplyAffinityMissingDeployment(t *testing.T) {
tolerationTrait := createNominalAffinityTest()

environment := createNominalMissingDeploymentTraitTest()
err := tolerationTrait.Apply(environment)

assert.NotNil(t, err)
}

func TestApplyEmptyAffinityLabelsDoesSucceed(t *testing.T) {
affinityTrait := createNominalAffinityTest()

Expand Down
13 changes: 6 additions & 7 deletions pkg/trait/toleration.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,13 @@ func (t *tolerationTrait) Apply(e *Environment) (err error) {
}
podSpec := e.GetIntegrationPodSpec()

// Add the toleration
if podSpec != nil {
if podSpec.Tolerations == nil {
podSpec.Tolerations = make([]corev1.Toleration, 0)
}
podSpec.Tolerations = append(podSpec.Tolerations, tolerations...)
if podSpec == nil {
return fmt.Errorf("could not find any integration deployment for %v", e.Integration.Name)
}

if podSpec.Tolerations == nil {
podSpec.Tolerations = make([]corev1.Toleration, 0)
}
podSpec.Tolerations = append(podSpec.Tolerations, tolerations...)
return nil
}

Expand Down
10 changes: 10 additions & 0 deletions pkg/trait/toleration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,16 @@ func TestApplyTolerationTraitMalformedTaint(t *testing.T) {
assert.NotNil(t, err)
}

func TestApplyPodTolerationMissingDeployment(t *testing.T) {
tolerationTrait := createNominalTolerationTrait()
tolerationTrait.Taints = append(tolerationTrait.Taints, "my-toleration=my-value:NoExecute")

environment := createNominalMissingDeploymentTraitTest()
err := tolerationTrait.Apply(environment)

assert.NotNil(t, err)
}

func TestApplyPodTolerationLabelsDefault(t *testing.T) {
tolerationTrait := createNominalTolerationTrait()
tolerationTrait.Taints = append(tolerationTrait.Taints, "my-toleration=my-value:NoExecute")
Expand Down
16 changes: 16 additions & 0 deletions pkg/trait/trait_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,22 @@ func createNominalDeploymentTraitTest() (*Environment, *appsv1.Deployment) {
return environment, deployment
}

func createNominalMissingDeploymentTraitTest() *Environment {
environment := &Environment{
Integration: &v1.Integration{
ObjectMeta: metav1.ObjectMeta{
Name: "integration-name",
},
Status: v1.IntegrationStatus{
Phase: v1.IntegrationPhaseDeploying,
},
},
Resources: kubernetes.NewCollection(),
}

return environment
}

func createNominalKnativeServiceTraitTest() (*Environment, *serving.Service) {
knativeService := &serving.Service{
ObjectMeta: metav1.ObjectMeta{
Expand Down

0 comments on commit cc0daf4

Please sign in to comment.