Skip to content

Commit

Permalink
fix(api): override tolerations instead of merge them (#414)
Browse files Browse the repository at this point in the history
  • Loading branch information
adupays authored Nov 28, 2024
1 parent bffc379 commit d9b2b22
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 18 deletions.
17 changes: 5 additions & 12 deletions api/v1alpha1/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ func GetTerragruntVersion(repository *TerraformRepository, layer *TerraformLayer

func GetOverrideRunnerSpec(repository *TerraformRepository, layer *TerraformLayer) OverrideRunnerSpec {
return OverrideRunnerSpec{
Tolerations: mergeTolerations(repository.Spec.OverrideRunnerSpec.Tolerations, layer.Spec.OverrideRunnerSpec.Tolerations),
Tolerations: overrideTolerations(repository.Spec.OverrideRunnerSpec.Tolerations, layer.Spec.OverrideRunnerSpec.Tolerations),
NodeSelector: mergeMaps(repository.Spec.OverrideRunnerSpec.NodeSelector, layer.Spec.OverrideRunnerSpec.NodeSelector),
Metadata: MetadataOverride{
Annotations: mergeMaps(repository.Spec.OverrideRunnerSpec.Metadata.Annotations, layer.Spec.OverrideRunnerSpec.Metadata.Annotations),
Expand Down Expand Up @@ -274,20 +274,13 @@ func mergeVolumes(a, b []corev1.Volume) []corev1.Volume {
return result
}

func mergeTolerations(a, b []corev1.Toleration) []corev1.Toleration {
result := []corev1.Toleration{}
tempMap := map[string]corev1.Toleration{}
func overrideTolerations(a, b []corev1.Toleration) []corev1.Toleration {
result := b

for _, elt := range a {
tempMap[elt.Key] = elt
}
for _, elt := range b {
tempMap[elt.Key] = elt
if len(result) == 0 {
result = a
}

for _, v := range tempMap {
result = append(result, v)
}
return result
}

Expand Down
117 changes: 111 additions & 6 deletions api/v1alpha1/common_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -638,7 +638,7 @@ func TestOverrideRunnerSpec(t *testing.T) {
expectedSpec configv1alpha1.OverrideRunnerSpec
}{
{
"MergeTolerations",
"OverrideTolerations",
&configv1alpha1.TerraformRepository{
Spec: configv1alpha1.TerraformRepositorySpec{
OverrideRunnerSpec: configv1alpha1.OverrideRunnerSpec{
Expand Down Expand Up @@ -677,11 +677,6 @@ func TestOverrideRunnerSpec(t *testing.T) {
},
configv1alpha1.OverrideRunnerSpec{
Tolerations: []corev1.Toleration{
{
Key: "only-exists-in-repository",
Value: "true",
Effect: "NoSchedule",
},
{
Key: "does-not-exists-in-layer",
Value: "false",
Expand Down Expand Up @@ -767,6 +762,116 @@ func TestOverrideRunnerSpec(t *testing.T) {
},
},
},
{
"TolerationsWithSameKeyButDifferentValuesExistInBoth",
&configv1alpha1.TerraformRepository{
Spec: configv1alpha1.TerraformRepositorySpec{
OverrideRunnerSpec: configv1alpha1.OverrideRunnerSpec{
Tolerations: []corev1.Toleration{
{
Key: "exists-in-both",
Value: "true",
Effect: "NoExecute",
},
},
},
},
},
&configv1alpha1.TerraformLayer{
Spec: configv1alpha1.TerraformLayerSpec{
OverrideRunnerSpec: configv1alpha1.OverrideRunnerSpec{
Tolerations: []corev1.Toleration{
{
Key: "exists-in-both",
Value: "false",
Effect: "NoExecute",
},
},
},
},
},
configv1alpha1.OverrideRunnerSpec{
Tolerations: []corev1.Toleration{
{
Key: "exists-in-both",
Value: "false",
Effect: "NoExecute",
},
},
},
},
{
"TolerationsWithSameKeyButDifferentValuesOnlyInRepository",
&configv1alpha1.TerraformRepository{
Spec: configv1alpha1.TerraformRepositorySpec{
OverrideRunnerSpec: configv1alpha1.OverrideRunnerSpec{
Tolerations: []corev1.Toleration{
{
Key: "same-key",
Value: "value-1",
Effect: "NoExecute",
},
{
Key: "same-key",
Value: "value-2",
Effect: "NoExecute",
},
},
},
},
},
&configv1alpha1.TerraformLayer{},
configv1alpha1.OverrideRunnerSpec{
Tolerations: []corev1.Toleration{
{
Key: "same-key",
Value: "value-1",
Effect: "NoExecute",
},
{
Key: "same-key",
Value: "value-2",
Effect: "NoExecute",
},
},
},
},
{
"TolerationsWithSameKeyButDifferentValuesOnlyInLayer",
&configv1alpha1.TerraformRepository{},
&configv1alpha1.TerraformLayer{
Spec: configv1alpha1.TerraformLayerSpec{
OverrideRunnerSpec: configv1alpha1.OverrideRunnerSpec{
Tolerations: []corev1.Toleration{
{
Key: "same-key",
Value: "value-1",
Effect: "NoExecute",
},
{
Key: "same-key",
Value: "value-2",
Effect: "NoExecute",
},
},
},
},
},
configv1alpha1.OverrideRunnerSpec{
Tolerations: []corev1.Toleration{
{
Key: "same-key",
Value: "value-1",
Effect: "NoExecute",
},
{
Key: "same-key",
Value: "value-2",
Effect: "NoExecute",
},
},
},
},
{
"ChooseImageNotSpecified",
&configv1alpha1.TerraformRepository{},
Expand Down

0 comments on commit d9b2b22

Please sign in to comment.