From 5c22b6ca9dbaa6f6438e61fa63350fda4e9890f1 Mon Sep 17 00:00:00 2001 From: Srinivas Atmakuri Date: Mon, 15 May 2023 23:59:34 +0530 Subject: [PATCH] minor changes to api-operatorFlagsMergeStrategy --- pkg/api/admin/operatorflags.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/pkg/api/admin/operatorflags.go b/pkg/api/admin/operatorflags.go index d94324d7ecb..7f4163fcbec 100644 --- a/pkg/api/admin/operatorflags.go +++ b/pkg/api/admin/operatorflags.go @@ -12,10 +12,14 @@ import ( type operatorFlagsMergeStrategyStruct struct { OperatorFlagsMergeStrategy string - Oc api.OpenShiftCluster + Cluster *api.OpenShiftCluster } -const operatorFlagsMergeStrategyDefault string = "merge" +const ( + operatorFlagsMergeStrategyDefault string = "merge" + operatorFlagsMergeStrategyMerge string = "merge" + operatorFlagsMergeStrategyReset string = "reset" +) // When a cluster is edited via the PATCH Cluster Geneva Action (aka an Admin Update) // the flags given are treated according to the provided Update Strategy, @@ -27,7 +31,7 @@ const operatorFlagsMergeStrategyDefault string = "merge" func OperatorFlagsMergeStrategy(oc *api.OpenShiftCluster, body []byte) error { payload := operatorFlagsMergeStrategyStruct{ OperatorFlagsMergeStrategy: operatorFlagsMergeStrategyDefault, - Oc: api.OpenShiftCluster{}, + Cluster: &api.OpenShiftCluster{}, } err := json.Unmarshal(body, &payload) @@ -35,17 +39,22 @@ func OperatorFlagsMergeStrategy(oc *api.OpenShiftCluster, body []byte) error { return api.NewCloudError(http.StatusBadRequest, api.CloudErrorCodeInvalidRequestContent, "", "The request content was invalid and could not be deserialized: %q.", err) } + // return if payload is empty + if properties := &payload.Cluster.Properties; payload.Cluster == nil || properties == nil || payload.Cluster.Properties.OperatorFlags == nil { + return nil + } // return error if OperatorFlagsMergeStrategy is not merge or reset, default is merge - if payload.OperatorFlagsMergeStrategy != "merge" && payload.OperatorFlagsMergeStrategy != "reset" { + if payload.OperatorFlagsMergeStrategy != operatorFlagsMergeStrategyMerge && + payload.OperatorFlagsMergeStrategy != operatorFlagsMergeStrategyReset { return api.NewCloudError(http.StatusBadRequest, api.CloudErrorCodeInvalidParameter, "", "invalid operatorFlagsMergeStrategy '%s', can only be 'merge' or 'reset'", payload.OperatorFlagsMergeStrategy) } // return nil, if OperatorFlagsMergeStrategy is merge and payload has not operatorFlags // return operatorFlags of payload, if OperatorFlagsMergeStrategy is merge and payload has operatorFlags // return defaultOperatorFlags, if OperatorFlagsMergeStrategy is reset and payload has not operatorFlags // return defaultOperatorFlags + operatorFlags of payload, if OperatorFlagsMergeStrategy is reset and payload has operatorFlags - if payload.OperatorFlagsMergeStrategy == "reset" { + if payload.OperatorFlagsMergeStrategy == operatorFlagsMergeStrategyReset { oc.Properties.OperatorFlags = api.DefaultOperatorFlags() - for operatorflag, value := range payload.Oc.Properties.OperatorFlags { + for operatorflag, value := range payload.Cluster.Properties.OperatorFlags { oc.Properties.OperatorFlags[operatorflag] = value } }