github.com/kyma-project/kyma-environment-broker@v0.0.1/internal/process/upgrade_kyma/avs_maintenance.go (about) 1 package upgrade_kyma 2 3 import ( 4 "time" 5 6 "github.com/kyma-project/kyma-environment-broker/internal" 7 "github.com/kyma-project/kyma-environment-broker/internal/avs" 8 kebError "github.com/kyma-project/kyma-environment-broker/internal/error" 9 "github.com/kyma-project/kyma-environment-broker/internal/process" 10 "github.com/sirupsen/logrus" 11 ) 12 13 func SetAvsStatusMaintenance(evaluationManager *avs.EvaluationManager, operationManager *process.UpgradeKymaOperationManager, operation internal.UpgradeKymaOperation, log logrus.FieldLogger) (internal.UpgradeKymaOperation, error) { 14 hasMonitors := evaluationManager.HasMonitors(operation.Avs) 15 inMaintenance := evaluationManager.InMaintenance(operation.Avs) 16 var err error = nil 17 var delay time.Duration = 0 18 19 if hasMonitors && 20 !inMaintenance && 21 evaluationManager.IsMaintenanceModeApplicableForGAID(operation.ProvisioningParameters.ErsContext.GlobalAccountID) { 22 log.Infof("setting AVS evaluations statuses to maintenance") 23 err = evaluationManager.SetMaintenanceStatus(&operation.Avs, log) 24 operation, delay, _ = operationManager.UpdateOperation(operation, func(op *internal.UpgradeKymaOperation) { 25 op.Avs.AvsInternalEvaluationStatus = operation.Avs.AvsInternalEvaluationStatus 26 op.Avs.AvsExternalEvaluationStatus = operation.Avs.AvsExternalEvaluationStatus 27 }, log) 28 if err == nil && delay > 0 { 29 err = kebError.NewTemporaryError("failed to update avs status in operation") 30 } 31 } 32 33 return operation, err 34 } 35 36 func RestoreAvsStatus(evaluationManager *avs.EvaluationManager, operationManager *process.UpgradeKymaOperationManager, operation internal.UpgradeKymaOperation, log logrus.FieldLogger) (internal.UpgradeKymaOperation, error) { 37 hasMonitors := evaluationManager.HasMonitors(operation.Avs) 38 inMaintenance := evaluationManager.InMaintenance(operation.Avs) 39 var err error = nil 40 var delay time.Duration = 0 41 42 if hasMonitors && inMaintenance { 43 log.Infof("clearing AVS maintenantce statuses and restoring original AVS evaluation statuses") 44 err = evaluationManager.RestoreStatus(&operation.Avs, log) 45 operation, delay, _ = operationManager.UpdateOperation(operation, func(op *internal.UpgradeKymaOperation) { 46 op.Avs.AvsInternalEvaluationStatus = operation.Avs.AvsInternalEvaluationStatus 47 op.Avs.AvsExternalEvaluationStatus = operation.Avs.AvsExternalEvaluationStatus 48 }, log) 49 if err == nil && delay > 0 { 50 err = kebError.NewTemporaryError("failed to update avs status in operation") 51 } 52 } 53 54 return operation, err 55 }