From 3087ea2a8c740a11c4bfedb3bbafa70d9e1e645c Mon Sep 17 00:00:00 2001 From: realanna Date: Mon, 18 Sep 2023 11:03:03 +0200 Subject: [PATCH 1/8] fix(metrics-operator): flush status when analysis is finished Signed-off-by: realanna --- .../controllers/analysis/controller.go | 6 ++ .../controllers/analysis/controller_test.go | 56 +++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/metrics-operator/controllers/analysis/controller.go b/metrics-operator/controllers/analysis/controller.go index 0b7357db48..7ae537156f 100644 --- a/metrics-operator/controllers/analysis/controller.go +++ b/metrics-operator/controllers/analysis/controller.go @@ -121,6 +121,12 @@ func (a *AnalysisReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c err = a.evaluateObjectives(ctx, res, analysisDef, analysis) + // if evaluation was successful remove the stored values + if err == nil { + analysis.Status.StoredValues = nil + err = a.updateStatus(ctx, analysis) + } + return ctrl.Result{}, err } diff --git a/metrics-operator/controllers/analysis/controller_test.go b/metrics-operator/controllers/analysis/controller_test.go index be7d072354..a96a8ff13b 100644 --- a/metrics-operator/controllers/analysis/controller_test.go +++ b/metrics-operator/controllers/analysis/controller_test.go @@ -101,6 +101,62 @@ func TestAnalysisReconciler_Reconcile_BasicControlLoop(t *testing.T) { } } +func TestAnalysisReconciler_ExistingAnalysisStatusIsFlushedWhenEvaluationFinishes(t *testing.T) { + analysis, analysisDef, template, _ := getTestCRDs() + + analysis.Status = metricsapi.AnalysisStatus{ + StoredValues: map[string]metricsapi.ProviderResult{ + "default": { + Objective: metricsapi.ObjectReference{ + Name: "my-analysis-def", + Namespace: "default", + }, + Value: "1", + }, + }, + } + require.NotNil(t, analysis.Status.StoredValues) + + mockFactory := func(ctx context.Context, analysisMoqParam *metricsapi.Analysis, obj []metricsapi.Objective, numWorkers int, c client.Client, log logr.Logger, namespace string) (context.Context, IAnalysisPool) { + mymock := fake.IAnalysisPoolMock{ + DispatchAndCollectFunc: func(ctx context.Context) (map[string]metricsapi.ProviderResult, error) { + return map[string]metricsapi.ProviderResult{}, nil + }, + } + return ctx, &mymock + } + + fclient := fake2.NewClient(&analysis, &analysisDef, &template) + a := &AnalysisReconciler{ + Client: fclient, + Scheme: fclient.Scheme(), + Log: testr.New(t), + MaxWorkers: 2, + NewWorkersPoolFactory: mockFactory, + IAnalysisEvaluator: &fakeEvaluator.IAnalysisEvaluatorMock{ + EvaluateFunc: func(values map[string]metricsapi.ProviderResult, ad *metricsapi.AnalysisDefinition) metricstypes.AnalysisResult { + return metricstypes.AnalysisResult{Pass: true} + }}, + } + + req := controllerruntime.Request{ + NamespacedName: types.NamespacedName{Namespace: "default", Name: "my-analysis"}, + } + + status := &metricsapi.AnalysisStatus{Raw: "{\"objectiveResults\":null,\"totalScore\":0,\"maximumScore\":0,\"pass\":true,\"warning\":false}", Pass: true} + + got, err := a.Reconcile(context.TODO(), req) + + require.Nil(t, err) + require.Equal(t, controllerruntime.Result{}, got) + resAnalysis := metricsapi.Analysis{} + err = fclient.Get(context.TODO(), req.NamespacedName, &resAnalysis) + require.Nil(t, err) + require.Nil(t, resAnalysis.Status.StoredValues) + require.Equal(t, *status, resAnalysis.Status) + +} + func getTestCRDs() (metricsapi.Analysis, metricsapi.AnalysisDefinition, metricsapi.AnalysisValueTemplate, metricsapi.KeptnMetricsProvider) { analysis := metricsapi.Analysis{ ObjectMeta: metav1.ObjectMeta{ From a7fde806f013211110dab725bc91d1761e1a0a4b Mon Sep 17 00:00:00 2001 From: realanna Date: Mon, 18 Sep 2023 11:17:50 +0200 Subject: [PATCH 2/8] fix(metrics-operator): added test Signed-off-by: realanna --- .../00-teststep-template.yaml | 9 ++ .../01-assert.yaml | 11 ++ .../install.yaml | 64 ++++++++ .../mock-server.yaml | 143 ++++++++++++++++++ 4 files changed, 227 insertions(+) create mode 100644 test/integration/analysis-controller-existing-status/00-teststep-template.yaml create mode 100644 test/integration/analysis-controller-existing-status/01-assert.yaml create mode 100644 test/integration/analysis-controller-existing-status/install.yaml create mode 100644 test/integration/analysis-controller-existing-status/mock-server.yaml diff --git a/test/integration/analysis-controller-existing-status/00-teststep-template.yaml b/test/integration/analysis-controller-existing-status/00-teststep-template.yaml new file mode 100644 index 0000000000..ea3f3168fa --- /dev/null +++ b/test/integration/analysis-controller-existing-status/00-teststep-template.yaml @@ -0,0 +1,9 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: | + envsubst < mock-server.yaml | kubectl apply -f - + # substitutes current time and namespace, making sure they are changed to env var first + # to prevent bad files in case of a test interrupt + - script: | + envsubst < install.yaml | kubectl apply -f - diff --git a/test/integration/analysis-controller-existing-status/01-assert.yaml b/test/integration/analysis-controller-existing-status/01-assert.yaml new file mode 100644 index 0000000000..ba80721544 --- /dev/null +++ b/test/integration/analysis-controller-existing-status/01-assert.yaml @@ -0,0 +1,11 @@ +apiVersion: metrics.keptn.sh/v1alpha3 +kind: Analysis +metadata: + name: analysis-sample +spec: + analysisDefinition: + name: ed-my-proj-dev-svc1 +status: + pass: true + # yamllint disable-line rule:line-length + raw: '{"objectiveResults":[{"result":{"failResult":{"operator":{"lessThan":{"fixedValue":"2"}},"fulfilled":false},"warnResult":{"operator":{"lessThan":{"fixedValue":"3"}},"fulfilled":false},"warning":false,"pass":true},"value":4,"score":1}],"totalScore":1,"maximumScore":1,"pass":true,"warning":false}' diff --git a/test/integration/analysis-controller-existing-status/install.yaml b/test/integration/analysis-controller-existing-status/install.yaml new file mode 100644 index 0000000000..d69105ce32 --- /dev/null +++ b/test/integration/analysis-controller-existing-status/install.yaml @@ -0,0 +1,64 @@ +apiVersion: metrics.keptn.sh/v1alpha3 +kind: AnalysisValueTemplate +metadata: + name: ready + namespace: $NAMESPACE +spec: + provider: + name: my-mocked-provider + namespace: $NAMESPACE + query: 'sum(kube_pod_container_status_ready{namespace="{{.ns}}"})' +--- +apiVersion: metrics.keptn.sh/v1alpha3 +kind: AnalysisDefinition +metadata: + name: ed-my-proj-dev-svc1 + namespace: $NAMESPACE +spec: + objectives: + - analysisValueTemplateRef: + name: ready + namespace: $NAMESPACE + target: + failure: + lessThan: + fixedValue: 2 + warning: + lessThan: + fixedValue: 3 + weight: 1 + keyObjective: false + totalScore: + passPercentage: 90 + warningPercentage: 75 +--- +apiVersion: metrics.keptn.sh/v1alpha3 +kind: Analysis +metadata: + name: analysis-sample + namespace: $NAMESPACE +spec: + timeframe: + from: 2023-09-14T07:33:19Z + to: 2023-09-14T07:33:19Z + args: + "ns": "keptn-lifecycle-toolkit-system" + analysisDefinition: + name: ed-my-proj-dev-svc1 + namespace: $NAMESPACE +status: + gibberish: + - value: 1 + objective: + name: notready + namespace: $NAMESPACE + +--- +apiVersion: metrics.keptn.sh/v1alpha3 +kind: KeptnMetricsProvider +metadata: + name: my-mocked-provider + namespace: $NAMESPACE +spec: + type: prometheus + targetServer: "http://mockserver.$NAMESPACE.svc.cluster.local:1080" diff --git a/test/integration/analysis-controller-existing-status/mock-server.yaml b/test/integration/analysis-controller-existing-status/mock-server.yaml new file mode 100644 index 0000000000..44ddf38d5b --- /dev/null +++ b/test/integration/analysis-controller-existing-status/mock-server.yaml @@ -0,0 +1,143 @@ +apiVersion: v1 +kind: Service +metadata: + name: mockserver + namespace: $NAMESPACE +spec: + ports: + - name: serviceport + port: 1080 + protocol: TCP + targetPort: serviceport + selector: + app: mockserver + sessionAffinity: None + type: ClusterIP +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: mockserver + name: mockserver + namespace: $NAMESPACE +spec: + replicas: 1 + selector: + matchLabels: + app: mockserver + template: + metadata: + labels: + app: mockserver + name: mockserver + spec: + containers: + - env: + - name: MOCKSERVER_LOG_LEVEL + value: INFO + - name: SERVER_PORT + value: "1080" + image: mockserver/mockserver:mockserver-5.13.0 + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 10 + initialDelaySeconds: 10 + periodSeconds: 5 + successThreshold: 1 + tcpSocket: + port: serviceport + timeoutSeconds: 1 + name: mockserver + ports: + - containerPort: 1080 + name: serviceport + protocol: TCP + readinessProbe: + failureThreshold: 10 + initialDelaySeconds: 2 + periodSeconds: 2 + successThreshold: 1 + tcpSocket: + port: serviceport + timeoutSeconds: 1 + volumeMounts: + - mountPath: /config + name: config-volume + - mountPath: /libs + name: libs-volume + terminationGracePeriodSeconds: 30 + volumes: + - configMap: + defaultMode: 420 + name: mockserver-config + optional: true + name: config-volume + - configMap: + defaultMode: 420 + name: mockserver-config + optional: true + name: libs-volume +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: mockserver-config + namespace: $NAMESPACE +data: + initializerJson.json: |- + [ + { + "httpRequest": { + "path": "/api/v1/query_range", + "method": "POST" + }, + "httpResponse": { + "body": { + "status": "success", + "data": { + "resultType": "matrix", + "result": [ + { + "metric": { + "__name__": "metric-name", + "job": "", + "instance": "" + }, + "values": [[1669714193.275, "4"]] + } + ] + } + }, + "statusCode": 200 + } + } + ] + mockserver.properties: |- + ############################### + # MockServer & Proxy Settings # + ############################### + # Socket & Port Settings + # socket timeout in milliseconds (default 120000) + mockserver.maxSocketTimeout=120000 + # Certificate Generation + # dynamically generated CA key pair (if they don't already exist in + specified directory) + mockserver.dynamicallyCreateCertificateAuthorityCertificate=true + # save dynamically generated CA key pair in working directory + mockserver.directoryToSaveDynamicSSLCertificate=. + # certificate domain name (default "localhost") + mockserver.sslCertificateDomainName=localhost + # comma separated list of ip addresses for Subject Alternative Name domain + names (default empty list) + mockserver.sslSubjectAlternativeNameDomains=www.example.com,www.another.com + # comma separated list of ip addresses for Subject Alternative Name ips + (default empty list) + mockserver.sslSubjectAlternativeNameIps=127.0.0.1 + # CORS + # enable CORS for MockServer REST API + mockserver.enableCORSForAPI=true + # enable CORS for all responses + mockserver.enableCORSForAllResponses=true + # Json Initialization + mockserver.initializationJsonPath=/config/initializerJson.json From 6d57fae247cf90eefeeb97aaddaf991e72ac0098 Mon Sep 17 00:00:00 2001 From: realanna Date: Mon, 18 Sep 2023 12:20:31 +0200 Subject: [PATCH 3/8] fix(metrics-operator): fixed test Signed-off-by: realanna --- .../analysis-controller-existing-status/install.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/integration/analysis-controller-existing-status/install.yaml b/test/integration/analysis-controller-existing-status/install.yaml index d69105ce32..7804b209a6 100644 --- a/test/integration/analysis-controller-existing-status/install.yaml +++ b/test/integration/analysis-controller-existing-status/install.yaml @@ -47,11 +47,12 @@ spec: name: ed-my-proj-dev-svc1 namespace: $NAMESPACE status: - gibberish: - - value: 1 - objective: - name: notready - namespace: $NAMESPACE + storedValues: + my-provider-query-1: + objectiveReference: + name: objective-template-1 + value: 1 + errMsg: "" --- apiVersion: metrics.keptn.sh/v1alpha3 From 4da4d646db38cafff22bc682ca47879c131be8bf Mon Sep 17 00:00:00 2001 From: realanna Date: Mon, 18 Sep 2023 13:53:40 +0200 Subject: [PATCH 4/8] fix(metrics-operator): fixed test Signed-off-by: realanna --- .../controllers/analysis/controller_test.go | 1 - .../00-assert.yaml | 14 +++++++++++++ .../{install.yaml => 00-install.yaml} | 21 ++++++++++++------- .../00-teststep-template.yaml | 9 -------- .../01-assert.yaml | 1 + .../{mock-server.yaml => 01-install.yaml} | 6 +++--- .../02-delete.yaml | 4 ++++ 7 files changed, 35 insertions(+), 21 deletions(-) create mode 100644 test/integration/analysis-controller-existing-status/00-assert.yaml rename test/integration/analysis-controller-existing-status/{install.yaml => 00-install.yaml} (81%) delete mode 100644 test/integration/analysis-controller-existing-status/00-teststep-template.yaml rename test/integration/analysis-controller-existing-status/{mock-server.yaml => 01-install.yaml} (98%) create mode 100644 test/integration/analysis-controller-existing-status/02-delete.yaml diff --git a/metrics-operator/controllers/analysis/controller_test.go b/metrics-operator/controllers/analysis/controller_test.go index a96a8ff13b..922dd461d1 100644 --- a/metrics-operator/controllers/analysis/controller_test.go +++ b/metrics-operator/controllers/analysis/controller_test.go @@ -115,7 +115,6 @@ func TestAnalysisReconciler_ExistingAnalysisStatusIsFlushedWhenEvaluationFinishe }, }, } - require.NotNil(t, analysis.Status.StoredValues) mockFactory := func(ctx context.Context, analysisMoqParam *metricsapi.Analysis, obj []metricsapi.Objective, numWorkers int, c client.Client, log logr.Logger, namespace string) (context.Context, IAnalysisPool) { mymock := fake.IAnalysisPoolMock{ diff --git a/test/integration/analysis-controller-existing-status/00-assert.yaml b/test/integration/analysis-controller-existing-status/00-assert.yaml new file mode 100644 index 0000000000..37d995e62a --- /dev/null +++ b/test/integration/analysis-controller-existing-status/00-assert.yaml @@ -0,0 +1,14 @@ +apiVersion: metrics.keptn.sh/v1alpha3 +kind: Analysis +metadata: + name: analysis-sample + namespace: testy +spec: + analysisDefinition: + name: ed-my-proj-dev-svc1 +status: + storedValues: + ready-testy: + objectiveReference: + name: ready + namespace: testy \ No newline at end of file diff --git a/test/integration/analysis-controller-existing-status/install.yaml b/test/integration/analysis-controller-existing-status/00-install.yaml similarity index 81% rename from test/integration/analysis-controller-existing-status/install.yaml rename to test/integration/analysis-controller-existing-status/00-install.yaml index 7804b209a6..5a75c37dc8 100644 --- a/test/integration/analysis-controller-existing-status/install.yaml +++ b/test/integration/analysis-controller-existing-status/00-install.yaml @@ -1,24 +1,29 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: testy +--- apiVersion: metrics.keptn.sh/v1alpha3 kind: AnalysisValueTemplate metadata: name: ready - namespace: $NAMESPACE + namespace: testy spec: provider: name: my-mocked-provider - namespace: $NAMESPACE + namespace: testy query: 'sum(kube_pod_container_status_ready{namespace="{{.ns}}"})' --- apiVersion: metrics.keptn.sh/v1alpha3 kind: AnalysisDefinition metadata: name: ed-my-proj-dev-svc1 - namespace: $NAMESPACE + namespace: testy spec: objectives: - analysisValueTemplateRef: name: ready - namespace: $NAMESPACE + namespace: testy target: failure: lessThan: @@ -36,7 +41,7 @@ apiVersion: metrics.keptn.sh/v1alpha3 kind: Analysis metadata: name: analysis-sample - namespace: $NAMESPACE + namespace: testy spec: timeframe: from: 2023-09-14T07:33:19Z @@ -45,7 +50,7 @@ spec: "ns": "keptn-lifecycle-toolkit-system" analysisDefinition: name: ed-my-proj-dev-svc1 - namespace: $NAMESPACE + namespace: testy status: storedValues: my-provider-query-1: @@ -59,7 +64,7 @@ apiVersion: metrics.keptn.sh/v1alpha3 kind: KeptnMetricsProvider metadata: name: my-mocked-provider - namespace: $NAMESPACE + namespace: testy spec: type: prometheus - targetServer: "http://mockserver.$NAMESPACE.svc.cluster.local:1080" + targetServer: "http://mockserver.testy.svc.cluster.local:1080" diff --git a/test/integration/analysis-controller-existing-status/00-teststep-template.yaml b/test/integration/analysis-controller-existing-status/00-teststep-template.yaml deleted file mode 100644 index ea3f3168fa..0000000000 --- a/test/integration/analysis-controller-existing-status/00-teststep-template.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: kuttl.dev/v1beta1 -kind: TestStep -commands: - - script: | - envsubst < mock-server.yaml | kubectl apply -f - - # substitutes current time and namespace, making sure they are changed to env var first - # to prevent bad files in case of a test interrupt - - script: | - envsubst < install.yaml | kubectl apply -f - diff --git a/test/integration/analysis-controller-existing-status/01-assert.yaml b/test/integration/analysis-controller-existing-status/01-assert.yaml index ba80721544..e3baae607b 100644 --- a/test/integration/analysis-controller-existing-status/01-assert.yaml +++ b/test/integration/analysis-controller-existing-status/01-assert.yaml @@ -2,6 +2,7 @@ apiVersion: metrics.keptn.sh/v1alpha3 kind: Analysis metadata: name: analysis-sample + namespace: testy spec: analysisDefinition: name: ed-my-proj-dev-svc1 diff --git a/test/integration/analysis-controller-existing-status/mock-server.yaml b/test/integration/analysis-controller-existing-status/01-install.yaml similarity index 98% rename from test/integration/analysis-controller-existing-status/mock-server.yaml rename to test/integration/analysis-controller-existing-status/01-install.yaml index 44ddf38d5b..cd82cd0761 100644 --- a/test/integration/analysis-controller-existing-status/mock-server.yaml +++ b/test/integration/analysis-controller-existing-status/01-install.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: name: mockserver - namespace: $NAMESPACE + namespace: testy spec: ports: - name: serviceport @@ -20,7 +20,7 @@ metadata: labels: app: mockserver name: mockserver - namespace: $NAMESPACE + namespace: testy spec: replicas: 1 selector: @@ -83,7 +83,7 @@ kind: ConfigMap apiVersion: v1 metadata: name: mockserver-config - namespace: $NAMESPACE + namespace: testy data: initializerJson.json: |- [ diff --git a/test/integration/analysis-controller-existing-status/02-delete.yaml b/test/integration/analysis-controller-existing-status/02-delete.yaml new file mode 100644 index 0000000000..335dc6c65c --- /dev/null +++ b/test/integration/analysis-controller-existing-status/02-delete.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: testy \ No newline at end of file From 97bd1b2b06ae9ac716c23344c4ca75ccc090625c Mon Sep 17 00:00:00 2001 From: realanna Date: Mon, 18 Sep 2023 13:55:43 +0200 Subject: [PATCH 5/8] fix(metrics-operator): fixed test Signed-off-by: realanna --- .../analysis-controller-existing-status/00-assert.yaml | 3 ++- .../analysis-controller-existing-status/02-delete.yaml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/test/integration/analysis-controller-existing-status/00-assert.yaml b/test/integration/analysis-controller-existing-status/00-assert.yaml index 37d995e62a..99a6d48801 100644 --- a/test/integration/analysis-controller-existing-status/00-assert.yaml +++ b/test/integration/analysis-controller-existing-status/00-assert.yaml @@ -11,4 +11,5 @@ status: ready-testy: objectiveReference: name: ready - namespace: testy \ No newline at end of file + namespace: testy + \ No newline at end of file diff --git a/test/integration/analysis-controller-existing-status/02-delete.yaml b/test/integration/analysis-controller-existing-status/02-delete.yaml index 335dc6c65c..ad2afe3db2 100644 --- a/test/integration/analysis-controller-existing-status/02-delete.yaml +++ b/test/integration/analysis-controller-existing-status/02-delete.yaml @@ -1,4 +1,4 @@ apiVersion: v1 kind: Namespace metadata: - name: testy \ No newline at end of file + name: testy From 18619cc798123d39907e3799d37fdeef24b6c4b5 Mon Sep 17 00:00:00 2001 From: realanna Date: Mon, 18 Sep 2023 14:02:24 +0200 Subject: [PATCH 6/8] fix(metrics-operator): fixed test Signed-off-by: realanna --- .../analysis-controller-existing-status/00-assert.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/test/integration/analysis-controller-existing-status/00-assert.yaml b/test/integration/analysis-controller-existing-status/00-assert.yaml index 99a6d48801..9506857208 100644 --- a/test/integration/analysis-controller-existing-status/00-assert.yaml +++ b/test/integration/analysis-controller-existing-status/00-assert.yaml @@ -12,4 +12,3 @@ status: objectiveReference: name: ready namespace: testy - \ No newline at end of file From 316307977b9718395a218c3dccd8bf03245f48be Mon Sep 17 00:00:00 2001 From: realanna Date: Mon, 18 Sep 2023 14:04:33 +0200 Subject: [PATCH 7/8] fix(metrics-operator): fixed test Signed-off-by: realanna --- .../analysis-controller-existing-status/02-delete.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/analysis-controller-existing-status/02-delete.yaml b/test/integration/analysis-controller-existing-status/02-delete.yaml index ad2afe3db2..d699e1f880 100644 --- a/test/integration/analysis-controller-existing-status/02-delete.yaml +++ b/test/integration/analysis-controller-existing-status/02-delete.yaml @@ -1,4 +1,4 @@ apiVersion: v1 kind: Namespace metadata: - name: testy + name: testy From c1d8972a39088da8335faa580f0def0d72fb4424 Mon Sep 17 00:00:00 2001 From: realanna Date: Mon, 18 Sep 2023 14:16:15 +0200 Subject: [PATCH 8/8] fix(metrics-operator): fixed test delete Signed-off-by: realanna --- .../analysis-controller-existing-status/02-delete.yaml | 4 ---- .../02-namespacedelete.yaml | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 test/integration/analysis-controller-existing-status/02-delete.yaml create mode 100644 test/integration/analysis-controller-existing-status/02-namespacedelete.yaml diff --git a/test/integration/analysis-controller-existing-status/02-delete.yaml b/test/integration/analysis-controller-existing-status/02-delete.yaml deleted file mode 100644 index d699e1f880..0000000000 --- a/test/integration/analysis-controller-existing-status/02-delete.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: testy diff --git a/test/integration/analysis-controller-existing-status/02-namespacedelete.yaml b/test/integration/analysis-controller-existing-status/02-namespacedelete.yaml new file mode 100644 index 0000000000..de2c1eecac --- /dev/null +++ b/test/integration/analysis-controller-existing-status/02-namespacedelete.yaml @@ -0,0 +1,4 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: kubectl delete ns testy