Skip to content

Commit 600fe0a

Browse files
authored
node-health-check and self-node-remediation operators deployment (#926)
1 parent 9117485 commit 600fe0a

File tree

7 files changed

+109
-1
lines changed

7 files changed

+109
-1
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
2+
import os
3+
4+
from benchmark_runner.common.oc.oc import OC
5+
from benchmark_runner.common.logger.logger_time_stamp import logger_time_stamp, logger
6+
from benchmark_runner.common.ocp_resources.create_ocp_resource_operations import CreateOCPResourceOperations
7+
8+
9+
class CreateNHCSNR(CreateOCPResourceOperations):
10+
"""
11+
This class is created node-health-check and self-node-remediation operators
12+
"""
13+
def __init__(self, oc: OC, path: str, resource_list: list):
14+
super().__init__(oc)
15+
self.__oc = oc
16+
self.__path = path
17+
self.__resource_list = resource_list
18+
19+
@logger_time_stamp
20+
def create_nhc_snr(self):
21+
"""
22+
This method creates node-health-check and self-node-remediation operators
23+
:return:
24+
"""
25+
for resource in self.__resource_list:
26+
logger.info(f'run {resource}')
27+
self.__oc.create_async(yaml=os.path.join(self.__path, resource))
28+
29+
if '03_subscription.yaml' in resource:
30+
# verify once after create all resource files
31+
self.wait_for_ocp_resource_create(operator='nhc',
32+
verify_cmd="oc get csv -n openshift-workload-availability -o jsonpath='{.items[0].status.phase}'",
33+
status='Succeeded')
34+
self.wait_for_ocp_resource_create(operator='snr',
35+
verify_cmd="oc get csv -n openshift-workload-availability -o jsonpath='{.items[1].status.phase}'",
36+
status='Succeeded')
37+
# SNR is automatically enabled when NHC is enabled
38+
if '04_nhc_snr.yaml' in resource:
39+
# Verify NHC is enabled
40+
self.wait_for_ocp_resource_create(operator='nhc',
41+
verify_cmd="oc get nhc -A -o jsonpath='{range .items[*]}{.status.phase}{\"\\n\"}{end}'",
42+
status='Enabled')
43+
return True

benchmark_runner/common/ocp_resources/create_ocp_resource.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from benchmark_runner.common.ocp_resources.create_odf import CreateODF
99
from benchmark_runner.common.ocp_resources.create_kata import CreateKata
1010
from benchmark_runner.common.ocp_resources.create_cnv import CreateCNV
11+
from benchmark_runner.common.ocp_resources.create_nhc_snr import CreateNHCSNR
1112
from benchmark_runner.common.ocp_resources.create_custom import CreateCustom
1213
from benchmark_runner.common.ocp_resources.migrate_infra import MigrateInfra
1314

@@ -91,6 +92,9 @@ def create_resource(self, resource: str, upgrade_version: str):
9192
elif 'cnv' == resource:
9293
create_cnv = CreateCNV(self.__oc, path=os.path.join(self.__dir_path, resource), resource_list=resource_files)
9394
create_cnv.create_cnv()
95+
elif 'nhc_snr' == resource:
96+
create_nhc_snr = CreateNHCSNR(self.__oc, path=os.path.join(self.__dir_path, resource), resource_list=resource_files)
97+
create_nhc_snr.create_nhc_snr()
9498
elif 'infra' == resource:
9599
create_infra = MigrateInfra(self.__oc, path=os.path.join(self.__dir_path, resource), resource_list=resource_files)
96100
create_infra.migrate_infra()
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
apiVersion: v1
2+
kind: Namespace
3+
metadata:
4+
name: openshift-workload-availability
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: operators.coreos.com/v1
2+
kind: OperatorGroup
3+
metadata:
4+
name: workload-availability-operator-group
5+
namespace: openshift-workload-availability
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: operators.coreos.com/v1alpha1
2+
kind: Subscription
3+
metadata:
4+
name: node-health-check-operator
5+
namespace: openshift-workload-availability
6+
spec:
7+
channel: stable
8+
name: node-healthcheck-operator
9+
source: redhat-operators
10+
sourceNamespace: openshift-marketplace
11+
package: node-healthcheck-operator
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
apiVersion: remediation.medik8s.io/v1alpha1
3+
kind: NodeHealthCheck
4+
metadata:
5+
name: chaos-nodehealthcheck
6+
spec:
7+
minHealthy: 1
8+
remediationTemplate:
9+
apiVersion: self-node-remediation.medik8s.io/v1alpha1
10+
name: self-node-remediation-automatic-strategy-template
11+
namespace: openshift-workload-availability
12+
kind: SelfNodeRemediationTemplate
13+
selector:
14+
matchExpressions:
15+
- key: node-role.kubernetes.io/worker
16+
operator: Exists
17+
unhealthyConditions:
18+
- type: Ready
19+
status: "False"
20+
duration: 20s
21+
- type: Ready
22+
status: Unknown
23+
duration: 20s
24+
25+
---
26+
apiVersion: v1
27+
items:
28+
- apiVersion: self-node-remediation.medik8s.io/v1alpha1
29+
kind: SelfNodeRemediationTemplate
30+
metadata:
31+
annotations:
32+
remediation.medik8s.io/multiple-templates-support: "true"
33+
name: self-node-remediation-automatic-strategy-template
34+
namespace: openshift-workload-availability
35+
spec:
36+
template:
37+
spec:
38+
remediationStrategy: OutOfServiceTaint
39+
kind: List
40+
metadata:
41+
resourceVersion: ""

jenkins/PerfCI_Chaos/02_PerfCI_Chaos_Operators_Deployment/Jenkinsfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ END
8484
steps {
8585
script {
8686
// cnv first for “-virtualization” storage class name for Win bootstorm
87-
def resources = ['cnv', 'lso', 'odf', 'infra', 'custom']
87+
def resources = ['cnv', 'lso', 'odf', 'nhc_snr', 'infra', 'custom']
8888

8989
for (resource in resources) {
9090
echo "Run Operator Deployment for ${resource}"

0 commit comments

Comments
 (0)