From 6a2cfead9cf2d9967114b0a1a83b8a59a81778ec Mon Sep 17 00:00:00 2001 From: Nicolas Ontiveros Date: Mon, 26 Jun 2023 10:41:05 -0700 Subject: [PATCH 01/11] Add maintenance state type --- pkg/api/openshiftcluster.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pkg/api/openshiftcluster.go b/pkg/api/openshiftcluster.go index 4201c544f15..1bac75443be 100644 --- a/pkg/api/openshiftcluster.go +++ b/pkg/api/openshiftcluster.go @@ -180,6 +180,17 @@ const ( MaintenanceTaskRenewCerts MaintenanceTask = "CertificatesRenewal" ) +// MaintenanceState represents a maintenance state +type MaintenanceState string + +// MaintenanceState constants +const ( + MaintenanceStateNone MaintenanceState = "None" + MaintenanceStatePending MaintenanceState = "Pending" + MaintenanceStatePlanned MaintenanceState = "Planned" + MaintenanceStateUnplanned MaintenanceState = "Unplanned" +) + // Cluster-scoped flags type OperatorFlags map[string]string From 7056bb4352491f0c1ff891d2503443003d719998 Mon Sep 17 00:00:00 2001 From: Nicolas Ontiveros Date: Mon, 26 Jun 2023 10:44:17 -0700 Subject: [PATCH 02/11] Add maintenance state to cluster props --- pkg/api/openshiftcluster.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/api/openshiftcluster.go b/pkg/api/openshiftcluster.go index 1bac75443be..c16149aa91c 100644 --- a/pkg/api/openshiftcluster.go +++ b/pkg/api/openshiftcluster.go @@ -100,6 +100,7 @@ type OpenShiftClusterProperties struct { FailedProvisioningState ProvisioningState `json:"failedProvisioningState,omitempty"` LastAdminUpdateError string `json:"lastAdminUpdateError,omitempty"` MaintenanceTask MaintenanceTask `json:"maintenanceTask,omitempty"` + MaintenanceState MaintenanceState `json:"maintenanceState,omitempty"` // Operator feature/option flags OperatorFlags OperatorFlags `json:"operatorFlags,omitempty"` From 0ea38d6a9f88463a7c1b9ed7f0ce7277475de5f6 Mon Sep 17 00:00:00 2001 From: Nicolas Ontiveros Date: Mon, 26 Jun 2023 10:45:43 -0700 Subject: [PATCH 03/11] Set default maintenance state --- pkg/api/defaults.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/api/defaults.go b/pkg/api/defaults.go index 355b691ab8f..1a0cdb357ee 100644 --- a/pkg/api/defaults.go +++ b/pkg/api/defaults.go @@ -46,6 +46,11 @@ func SetDefaults(doc *OpenShiftClusterDocument) { if doc.OpenShiftCluster.Properties.NetworkProfile.PreconfiguredNSG == "" { doc.OpenShiftCluster.Properties.NetworkProfile.PreconfiguredNSG = PreconfiguredNSGDisabled } + + // If there's no maintenance states, set to none + if doc.OpenShiftCluster.Properties.MaintenanceState == "" { + doc.OpenShiftCluster.Properties.MaintenanceState = MaintenanceStateNone + } } } From c4e1ccde19ef3ef2ff332a89bce3d500c50f11d4 Mon Sep 17 00:00:00 2001 From: Nicolas Ontiveros Date: Mon, 26 Jun 2023 10:50:33 -0700 Subject: [PATCH 04/11] Add maintenance state to admin openshiftcluster --- pkg/api/admin/openshiftcluster.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkg/api/admin/openshiftcluster.go b/pkg/api/admin/openshiftcluster.go index d8e6fdb1f40..c853c92018f 100644 --- a/pkg/api/admin/openshiftcluster.go +++ b/pkg/api/admin/openshiftcluster.go @@ -34,6 +34,7 @@ type OpenShiftClusterProperties struct { FailedProvisioningState ProvisioningState `json:"failedProvisioningState,omitempty"` LastAdminUpdateError string `json:"lastAdminUpdateError,omitempty"` MaintenanceTask MaintenanceTask `json:"maintenanceTask,omitempty" mutable:"true"` + MaintenanceState MaintenanceState `json:"maintenanceState,omitempty" mutable:"true"` OperatorFlags OperatorFlags `json:"operatorFlags,omitempty" mutable:"true"` OperatorVersion string `json:"operatorVersion,omitempty" mutable:"true"` CreatedAt time.Time `json:"createdAt,omitempty"` @@ -86,6 +87,17 @@ const ( MaintenanceTaskRenewCerts MaintenanceTask = "CertificatesRenewal" ) +// MaintenanceState represents a maintenance state +type MaintenanceState string + +// MaintenanceState constants +const ( + MaintenanceStateNone MaintenanceState = "None" + MaintenanceStatePending MaintenanceState = "Pending" + MaintenanceStatePlanned MaintenanceState = "Planned" + MaintenanceStateUnplanned MaintenanceState = "Unplanned" +) + // Operator feature flags type OperatorFlags map[string]string From c68373b750372929a87d8167b400f4411ef0d4f8 Mon Sep 17 00:00:00 2001 From: Nicolas Ontiveros Date: Mon, 26 Jun 2023 11:50:19 -0700 Subject: [PATCH 05/11] Finish updating openshiftcluster admin --- pkg/api/admin/openshiftcluster_convert.go | 2 + .../admin/openshiftcluster_validatestatic.go | 16 ++++ .../openshiftcluster_validatestatic_test.go | 79 +++++++++++++++++++ 3 files changed, 97 insertions(+) diff --git a/pkg/api/admin/openshiftcluster_convert.go b/pkg/api/admin/openshiftcluster_convert.go index 2dfa4962f74..31b8276c21c 100644 --- a/pkg/api/admin/openshiftcluster_convert.go +++ b/pkg/api/admin/openshiftcluster_convert.go @@ -26,6 +26,7 @@ func (c openShiftClusterConverter) ToExternal(oc *api.OpenShiftCluster) interfac FailedProvisioningState: ProvisioningState(oc.Properties.FailedProvisioningState), LastAdminUpdateError: oc.Properties.LastAdminUpdateError, MaintenanceTask: MaintenanceTask(oc.Properties.MaintenanceTask), + MaintenanceState: MaintenanceState(oc.Properties.MaintenanceState), OperatorFlags: OperatorFlags(oc.Properties.OperatorFlags), OperatorVersion: oc.Properties.OperatorVersion, CreatedAt: oc.Properties.CreatedAt, @@ -173,6 +174,7 @@ func (c openShiftClusterConverter) ToInternal(_oc interface{}, out *api.OpenShif out.Properties.FailedProvisioningState = api.ProvisioningState(oc.Properties.FailedProvisioningState) out.Properties.LastAdminUpdateError = oc.Properties.LastAdminUpdateError out.Properties.MaintenanceTask = api.MaintenanceTask(oc.Properties.MaintenanceTask) + out.Properties.MaintenanceState = api.MaintenanceState(oc.Properties.MaintenanceState) out.Properties.OperatorFlags = api.OperatorFlags(oc.Properties.OperatorFlags) out.Properties.OperatorVersion = oc.Properties.OperatorVersion out.Properties.CreatedBy = oc.Properties.CreatedBy diff --git a/pkg/api/admin/openshiftcluster_validatestatic.go b/pkg/api/admin/openshiftcluster_validatestatic.go index cad10cbf2c9..21fcf316db8 100644 --- a/pkg/api/admin/openshiftcluster_validatestatic.go +++ b/pkg/api/admin/openshiftcluster_validatestatic.go @@ -33,5 +33,21 @@ func (sv openShiftClusterStaticValidator) validateDelta(oc, current *OpenShiftCl return api.NewCloudError(http.StatusBadRequest, api.CloudErrorCodeInvalidParameter, "properties.maintenanceTask", "Invalid enum parameter.") } + if invalidMaintenanceState(oc.Properties.MaintenanceState) { + return api.NewCloudError(http.StatusBadRequest, api.CloudErrorCodeInvalidParameter, "properties.maintenanceState", "Invalid enum parameter.") + } + return nil } + +func invalidMaintenanceState(state MaintenanceState) bool { + if state == "" || + state == MaintenanceStateNone || + state == MaintenanceStatePending || + state == MaintenanceStatePlanned || + state == MaintenanceStateUnplanned { + return false + } + + return true +} diff --git a/pkg/api/admin/openshiftcluster_validatestatic_test.go b/pkg/api/admin/openshiftcluster_validatestatic_test.go index a9ce5135655..a90560238ea 100644 --- a/pkg/api/admin/openshiftcluster_validatestatic_test.go +++ b/pkg/api/admin/openshiftcluster_validatestatic_test.go @@ -690,6 +690,85 @@ func TestOpenShiftClusterStaticValidateDelta(t *testing.T) { }, wantErr: "400: InvalidParameter: properties.maintenanceTask: Invalid enum parameter.", }, + { + name: "maintenanceState change to blank allowed", + oc: func() *OpenShiftCluster { + return &OpenShiftCluster{ + Properties: OpenShiftClusterProperties{ + MaintenanceState: MaintenanceStateNone, + }, + } + }, + modify: func(oc *OpenShiftCluster) { + oc.Properties.MaintenanceState = "" + }, + }, + { + name: "maintenanceState change to none allowed", + oc: func() *OpenShiftCluster { + return &OpenShiftCluster{ + Properties: OpenShiftClusterProperties{ + MaintenanceState: "", + }, + } + }, + modify: func(oc *OpenShiftCluster) { + oc.Properties.MaintenanceState = MaintenanceStateNone + }, + }, + { + name: "maintenanceState change to pending allowed", + oc: func() *OpenShiftCluster { + return &OpenShiftCluster{ + Properties: OpenShiftClusterProperties{ + MaintenanceState: MaintenanceStateNone, + }, + } + }, + modify: func(oc *OpenShiftCluster) { + oc.Properties.MaintenanceState = MaintenanceStatePending + }, + }, + { + name: "maintenanceState change to planned allowed", + oc: func() *OpenShiftCluster { + return &OpenShiftCluster{ + Properties: OpenShiftClusterProperties{ + MaintenanceState: MaintenanceStateNone, + }, + } + }, + modify: func(oc *OpenShiftCluster) { + oc.Properties.MaintenanceState = MaintenanceStatePlanned + }, + }, + { + name: "maintenanceState change to unplanned allowed", + oc: func() *OpenShiftCluster { + return &OpenShiftCluster{ + Properties: OpenShiftClusterProperties{ + MaintenanceState: MaintenanceStateNone, + }, + } + }, + modify: func(oc *OpenShiftCluster) { + oc.Properties.MaintenanceState = MaintenanceStateUnplanned + }, + }, + { + name: "maintenanceState change to other values is disallowed", + oc: func() *OpenShiftCluster { + return &OpenShiftCluster{ + Properties: OpenShiftClusterProperties{ + MaintenanceState: MaintenanceStateNone, + }, + } + }, + modify: func(oc *OpenShiftCluster) { + oc.Properties.MaintenanceState = "adfasdfadf" + }, + wantErr: "400: InvalidParameter: properties.maintenanceState: Invalid enum parameter.", + }, } for _, tt := range tests { From 2323c34df4a2435a67963d1fabafc46deb7c445e Mon Sep 17 00:00:00 2001 From: Nicolas Ontiveros Date: Mon, 26 Jun 2023 15:13:27 -0700 Subject: [PATCH 06/11] admin update --- pkg/api/admin/openshiftcluster.go | 7 ++++--- .../admin/openshiftcluster_validatestatic.go | 14 +++++++++++++- pkg/api/openshiftcluster.go | 7 ++++--- pkg/cluster/adminupdate_test.go | 18 ++++++++++++++++++ 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/pkg/api/admin/openshiftcluster.go b/pkg/api/admin/openshiftcluster.go index c853c92018f..c220fea9fd6 100644 --- a/pkg/api/admin/openshiftcluster.go +++ b/pkg/api/admin/openshiftcluster.go @@ -82,9 +82,10 @@ const ( type MaintenanceTask string const ( - MaintenanceTaskEverything MaintenanceTask = "Everything" - MaintenanceTaskOperator MaintenanceTask = "OperatorUpdate" - MaintenanceTaskRenewCerts MaintenanceTask = "CertificatesRenewal" + MaintenanceTaskEverything MaintenanceTask = "Everything" + MaintenanceTaskOperator MaintenanceTask = "OperatorUpdate" + MaintenanceTaskRenewCerts MaintenanceTask = "CertificatesRenewal" + MaintenanceTaskStateUpdate MaintenanceTask = "MaintenanceStateUpdate" ) // MaintenanceState represents a maintenance state diff --git a/pkg/api/admin/openshiftcluster_validatestatic.go b/pkg/api/admin/openshiftcluster_validatestatic.go index 21fcf316db8..00e30aeb760 100644 --- a/pkg/api/admin/openshiftcluster_validatestatic.go +++ b/pkg/api/admin/openshiftcluster_validatestatic.go @@ -29,7 +29,7 @@ func (sv openShiftClusterStaticValidator) validateDelta(oc, current *OpenShiftCl return api.NewCloudError(http.StatusBadRequest, api.CloudErrorCodePropertyChangeNotAllowed, err.Target, err.Message) } - if !(oc.Properties.MaintenanceTask == "" || oc.Properties.MaintenanceTask == MaintenanceTaskEverything || oc.Properties.MaintenanceTask == MaintenanceTaskOperator || oc.Properties.MaintenanceTask == MaintenanceTaskRenewCerts) { + if invalidMaintenanceTask(oc.Properties.MaintenanceTask) { return api.NewCloudError(http.StatusBadRequest, api.CloudErrorCodeInvalidParameter, "properties.maintenanceTask", "Invalid enum parameter.") } @@ -40,6 +40,18 @@ func (sv openShiftClusterStaticValidator) validateDelta(oc, current *OpenShiftCl return nil } +func invalidMaintenanceTask(task MaintenanceTask) bool { + if task == "" || + task == MaintenanceTaskEverything || + task == MaintenanceTaskOperator || + task == MaintenanceTaskRenewCerts || + task == MaintenanceTaskStateUpdate { + return false + } + + return true +} + func invalidMaintenanceState(state MaintenanceState) bool { if state == "" || state == MaintenanceStateNone || diff --git a/pkg/api/openshiftcluster.go b/pkg/api/openshiftcluster.go index c16149aa91c..a20bd68443d 100644 --- a/pkg/api/openshiftcluster.go +++ b/pkg/api/openshiftcluster.go @@ -176,9 +176,10 @@ const ( type MaintenanceTask string const ( - MaintenanceTaskEverything MaintenanceTask = "Everything" - MaintenanceTaskOperator MaintenanceTask = "OperatorUpdate" - MaintenanceTaskRenewCerts MaintenanceTask = "CertificatesRenewal" + MaintenanceTaskEverything MaintenanceTask = "Everything" + MaintenanceTaskOperator MaintenanceTask = "OperatorUpdate" + MaintenanceTaskRenewCerts MaintenanceTask = "CertificatesRenewal" + MaintenanceTaskStateUpdate MaintenanceTask = "MaintenanceStateUpdate" ) // MaintenanceState represents a maintenance state diff --git a/pkg/cluster/adminupdate_test.go b/pkg/cluster/adminupdate_test.go index 557f23bcdae..77b1c0e8f5e 100644 --- a/pkg/cluster/adminupdate_test.go +++ b/pkg/cluster/adminupdate_test.go @@ -252,6 +252,24 @@ func TestAdminUpdateSteps(t *testing.T) { "[Action updateProvisionedBy-fm]", }, }, + { + name: "Maintenance State Update", + fixture: func() (*api.OpenShiftClusterDocument, bool) { + doc := baseClusterDoc() + doc.OpenShiftCluster.Properties.ProvisioningState = api.ProvisioningStateAdminUpdating + doc.OpenShiftCluster.Properties.MaintenanceTask = api.MaintenanceTaskStateUpdate + return doc, true + }, + shouldRunSteps: []string{ + "[Action initializeKubernetesClients-fm]", + "[Action ensureBillingRecord-fm]", + "[Action ensureDefaults-fm]", + "[AuthorizationRetryingAction fixupClusterSPObjectID-fm]", + "[Action fixInfraID-fm]", + "[Action startVMs-fm]", + "[Condition apiServersReady-fm, timeout 30m0s]", + }, + }, } { t.Run(tt.name, func(t *testing.T) { doc, adoptViaHive := tt.fixture() From 8a2f4f069713c7441210768ce9dc69dbe28b2410 Mon Sep 17 00:00:00 2001 From: Nicolas Ontiveros Date: Mon, 26 Jun 2023 15:43:24 -0700 Subject: [PATCH 07/11] cluster maintenance state monitoring --- pkg/api/openshiftcluster.go | 4 ++ pkg/monitor/cluster/cluster.go | 1 + .../cluster/clustermaintenancestate.go | 14 +++++++ .../cluster/clustermaintenancestate_test.go | 37 +++++++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 pkg/monitor/cluster/clustermaintenancestate.go create mode 100644 pkg/monitor/cluster/clustermaintenancestate_test.go diff --git a/pkg/api/openshiftcluster.go b/pkg/api/openshiftcluster.go index c16149aa91c..acf62307f16 100644 --- a/pkg/api/openshiftcluster.go +++ b/pkg/api/openshiftcluster.go @@ -204,6 +204,10 @@ func (t ProvisioningState) String() string { return string(t) } +func (t MaintenanceState) String() string { + return string(t) +} + // FipsValidatedModules determines if FIPS is used. type FipsValidatedModules string diff --git a/pkg/monitor/cluster/cluster.go b/pkg/monitor/cluster/cluster.go index 9d8b4822a52..54681601c03 100644 --- a/pkg/monitor/cluster/cluster.go +++ b/pkg/monitor/cluster/cluster.go @@ -163,6 +163,7 @@ func (mon *Monitor) Monitor(ctx context.Context) (errs []error) { mon.emitSummary, mon.emitHiveRegistrationStatus, mon.emitOperatorFlagsAndSupportBanner, + mon.emitClusterMaintenanceState, mon.emitPrometheusAlerts, // at the end for now because it's the slowest/least reliable } { err = f(ctx) diff --git a/pkg/monitor/cluster/clustermaintenancestate.go b/pkg/monitor/cluster/clustermaintenancestate.go new file mode 100644 index 00000000000..7c30f0843e0 --- /dev/null +++ b/pkg/monitor/cluster/clustermaintenancestate.go @@ -0,0 +1,14 @@ +package cluster + +import "context" + +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache License 2.0. + +func (mon *Monitor) emitClusterMaintenanceState(ctx context.Context) error { + mon.emitGauge("cluster.maintenanceState", 1, map[string]string{ + "maintenanceState": mon.oc.Properties.MaintenanceState.String(), + }) + + return nil +} diff --git a/pkg/monitor/cluster/clustermaintenancestate_test.go b/pkg/monitor/cluster/clustermaintenancestate_test.go new file mode 100644 index 00000000000..ba4d706d796 --- /dev/null +++ b/pkg/monitor/cluster/clustermaintenancestate_test.go @@ -0,0 +1,37 @@ +package cluster + +import ( + "context" + "testing" + + "github.com/Azure/ARO-RP/pkg/api" + mock_metrics "github.com/Azure/ARO-RP/pkg/util/mocks/metrics" + "github.com/golang/mock/gomock" +) + +func TestEmitClusterMaintenanceState(t *testing.T) { + ctx := context.Background() + + controller := gomock.NewController(t) + defer controller.Finish() + + m := mock_metrics.NewMockEmitter(controller) + + mon := &Monitor{ + m: m, + oc: &api.OpenShiftCluster{ + Properties: api.OpenShiftClusterProperties{ + MaintenanceState: api.MaintenanceStateNone, + }, + }, + } + + m.EXPECT().EmitGauge("cluster.maintenanceState", int64(1), map[string]string{ + "maintenanceState": "None", + }) + + err := mon.emitClusterMaintenanceState(ctx) + if err != nil { + t.Fatal(err) + } +} From 386ce5bcae49ca1341514063dd67032ff0327f13 Mon Sep 17 00:00:00 2001 From: Nicolas Ontiveros Date: Wed, 5 Jul 2023 08:07:50 -0700 Subject: [PATCH 08/11] use switch statements --- .../admin/openshiftcluster_validatestatic.go | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/pkg/api/admin/openshiftcluster_validatestatic.go b/pkg/api/admin/openshiftcluster_validatestatic.go index 00e30aeb760..10ebdbeed5c 100644 --- a/pkg/api/admin/openshiftcluster_validatestatic.go +++ b/pkg/api/admin/openshiftcluster_validatestatic.go @@ -41,11 +41,16 @@ func (sv openShiftClusterStaticValidator) validateDelta(oc, current *OpenShiftCl } func invalidMaintenanceTask(task MaintenanceTask) bool { - if task == "" || - task == MaintenanceTaskEverything || - task == MaintenanceTaskOperator || - task == MaintenanceTaskRenewCerts || - task == MaintenanceTaskStateUpdate { + switch task { + case "": + fallthrough + case MaintenanceTaskEverything: + fallthrough + case MaintenanceTaskOperator: + fallthrough + case MaintenanceTaskRenewCerts: + fallthrough + case MaintenanceTaskStateUpdate: return false } @@ -53,12 +58,18 @@ func invalidMaintenanceTask(task MaintenanceTask) bool { } func invalidMaintenanceState(state MaintenanceState) bool { - if state == "" || - state == MaintenanceStateNone || - state == MaintenanceStatePending || - state == MaintenanceStatePlanned || - state == MaintenanceStateUnplanned { + switch state { + case "": + fallthrough + case MaintenanceStateNone: + fallthrough + case MaintenanceStatePending: + fallthrough + case MaintenanceStatePlanned: + fallthrough + case MaintenanceStateUnplanned: return false + } return true From a5b878ebd44a51157cf43d2a493ee7f56774cb35 Mon Sep 17 00:00:00 2001 From: Nicolas Ontiveros Date: Wed, 5 Jul 2023 08:20:31 -0700 Subject: [PATCH 09/11] add license --- pkg/monitor/cluster/clustermaintenancestate_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/monitor/cluster/clustermaintenancestate_test.go b/pkg/monitor/cluster/clustermaintenancestate_test.go index ba4d706d796..ca89307705e 100644 --- a/pkg/monitor/cluster/clustermaintenancestate_test.go +++ b/pkg/monitor/cluster/clustermaintenancestate_test.go @@ -1,5 +1,8 @@ package cluster +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache License 2.0. + import ( "context" "testing" From 263c064a9c760ec2ae0729b71faee7c6056dd921 Mon Sep 17 00:00:00 2001 From: Nicolas Ontiveros Date: Wed, 5 Jul 2023 08:45:10 -0700 Subject: [PATCH 10/11] lint --- pkg/api/admin/openshiftcluster_validatestatic.go | 1 - pkg/monitor/cluster/clustermaintenancestate_test.go | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/api/admin/openshiftcluster_validatestatic.go b/pkg/api/admin/openshiftcluster_validatestatic.go index 10ebdbeed5c..fb2c2b0f40a 100644 --- a/pkg/api/admin/openshiftcluster_validatestatic.go +++ b/pkg/api/admin/openshiftcluster_validatestatic.go @@ -69,7 +69,6 @@ func invalidMaintenanceState(state MaintenanceState) bool { fallthrough case MaintenanceStateUnplanned: return false - } return true diff --git a/pkg/monitor/cluster/clustermaintenancestate_test.go b/pkg/monitor/cluster/clustermaintenancestate_test.go index ca89307705e..a8355d68b5f 100644 --- a/pkg/monitor/cluster/clustermaintenancestate_test.go +++ b/pkg/monitor/cluster/clustermaintenancestate_test.go @@ -8,8 +8,9 @@ import ( "testing" "github.com/Azure/ARO-RP/pkg/api" - mock_metrics "github.com/Azure/ARO-RP/pkg/util/mocks/metrics" "github.com/golang/mock/gomock" + + mock_metrics "github.com/Azure/ARO-RP/pkg/util/mocks/metrics" ) func TestEmitClusterMaintenanceState(t *testing.T) { From fe6ef7e2f125b5010654c2a460c7dea43a5b9aff Mon Sep 17 00:00:00 2001 From: Nicolas Ontiveros Date: Wed, 5 Jul 2023 09:05:58 -0700 Subject: [PATCH 11/11] lint --- pkg/monitor/cluster/clustermaintenancestate_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/monitor/cluster/clustermaintenancestate_test.go b/pkg/monitor/cluster/clustermaintenancestate_test.go index a8355d68b5f..338d5d94699 100644 --- a/pkg/monitor/cluster/clustermaintenancestate_test.go +++ b/pkg/monitor/cluster/clustermaintenancestate_test.go @@ -7,9 +7,9 @@ import ( "context" "testing" - "github.com/Azure/ARO-RP/pkg/api" "github.com/golang/mock/gomock" - + + "github.com/Azure/ARO-RP/pkg/api" mock_metrics "github.com/Azure/ARO-RP/pkg/util/mocks/metrics" )