You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2021/03/02 13:46:54 UTC
[camel-k] 03/03: refactor(trait): nil PodSpec check
This is an automated email from the ASF dual-hosted git repository.
astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit cc0daf4fe4d59e9dec0d513256ed5e6e6ad0adf8
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Tue Mar 2 10:49:59 2021 +0100
refactor(trait): nil PodSpec check
* Added a check to raise an error on nil PodSpec for affinity and toleration traits
* Related unit test
Ref #2047
---
pkg/trait/affinity.go | 28 ++++++++++++++--------------
pkg/trait/affinity_test.go | 9 +++++++++
pkg/trait/toleration.go | 13 ++++++-------
pkg/trait/toleration_test.go | 10 ++++++++++
pkg/trait/trait_types_test.go | 16 ++++++++++++++++
5 files changed, 55 insertions(+), 21 deletions(-)
diff --git a/pkg/trait/affinity.go b/pkg/trait/affinity.go
index aca0e0e..ff86dbd 100644
--- a/pkg/trait/affinity.go
+++ b/pkg/trait/affinity.go
@@ -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
}
diff --git a/pkg/trait/affinity_test.go b/pkg/trait/affinity_test.go
index b008b6a..065b4dc 100644
--- a/pkg/trait/affinity_test.go
+++ b/pkg/trait/affinity_test.go
@@ -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()
diff --git a/pkg/trait/toleration.go b/pkg/trait/toleration.go
index 481cebf..80dc69e 100644
--- a/pkg/trait/toleration.go
+++ b/pkg/trait/toleration.go
@@ -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
}
diff --git a/pkg/trait/toleration_test.go b/pkg/trait/toleration_test.go
index 8ce65cb..fcd26af 100644
--- a/pkg/trait/toleration_test.go
+++ b/pkg/trait/toleration_test.go
@@ -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")
diff --git a/pkg/trait/trait_types_test.go b/pkg/trait/trait_types_test.go
index 68e0238..137f0f9 100644
--- a/pkg/trait/trait_types_test.go
+++ b/pkg/trait/trait_types_test.go
@@ -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{