fix: Allow to sync deployments when selector changed (#1361)

Signed-off-by: Anatolii Bazko <abazko@redhat.com>
pull/1363/head
Anatolii Bazko 2022-04-27 09:32:40 +03:00 committed by GitHub
parent 96574bb600
commit 5415da9c4c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 2 deletions

View File

@ -59,9 +59,16 @@ func SyncDeploymentSpecToCluster(
done, err := Sync(deployContext, deploymentSpec, deploymentDiffOpts)
if err != nil || !done {
// Failed to sync (update), let's delete and create instead
if err != nil && strings.Contains(err.Error(), "field is immutable") {
if _, err := DeleteNamespacedObject(deployContext, deploymentSpec.Name, &appsv1.Deployment{}); err != nil {
return false, err
}
// Deleted successfully, return original error
return false, err
}
return false, err
} else if !done {
return util.IsTestMode(), nil
}
// always return true for tests

View File

@ -16,6 +16,7 @@ import (
"encoding/base64"
"fmt"
"io/ioutil"
"strings"
"k8s.io/apimachinery/pkg/api/resource"
@ -138,6 +139,15 @@ func syncAll(deployContext *deploy.DeployContext) error {
depl := getGatewayDeploymentSpec(deployContext)
if _, err := deploy.Sync(deployContext, &depl, deploy.DefaultDeploymentDiffOpts); err != nil {
// Failed to sync (update), let's delete and create instead
if strings.Contains(err.Error(), "field is immutable") {
if _, err := deploy.DeleteNamespacedObject(deployContext, depl.Name, &appsv1.Deployment{}); err != nil {
return err
}
// Deleted successfully, return original error
return err
}
return err
}