Skip to content
This repository was archived by the owner on Jun 12, 2023. It is now read-only.

Commit 4a5ea71

Browse files
authored
Merge pull request #170 from ksimon1/revert-labeller
revert removing of labeller
2 parents 7649c51 + 2091c7a commit 4a5ea71

36 files changed

+1095
-2
lines changed

_defaults.yml

+4
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020
#
2121
# Any version, or default, should not be set more than once in a place in the source tree.
2222

23+
kubevirt_node_labeller_tag: "{{ lookup('env','NODE_LABELLER_TAG')| default('v0.1.1', true) }}"
24+
kvm_info_nfd_plugin_tag: "{{ lookup('env','KVM_INFO_TAG')| default('v0.5.8', true) }}"
25+
kubevirt_cpu_nfd_plugin_tag: "{{ lookup('env','CPU_PLUGIN_TAG')| default('v0.1.1', true) }}"
26+
virt_launcher_tag: "{{ lookup('env','VIRT_LAUNCHER_TAG')| default('v0.21.0', true) }}"
2327
validator_tag: "{{ lookup('env','VALIDATOR_TAG')| default('v0.6.6', true) }}"
2428
image_name_prefix: "{{ lookup('env','IMAGE_NAME_PREFIX')| default('', true) }}"
2529
templates_version: v0.10.0

build/csv-generator.sh

+24
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ help_text() {
2828
echo " --namespace: (REQUIRED) The namespace set on the CSV file"
2929
echo " --operator-image: (REQUIRED) The operator container image to use in the CSV file"
3030
echo " --watch-namespace: (OPTIONAL)"
31+
echo " --kvm-info-tag: (OPTIONAL)"
3132
echo " --validator-tag: (OPTIONAL)"
33+
echo " --virt-launcher-tag: (OPTIONAL)"
34+
echo " --node-labeller-tag: (OPTIONAL)"
35+
echo " --cpu-plugin-tag: (OPTIONAL)"
3236
echo " --image-name-prefix: (OPTIONAL)"
3337
echo " --dump-crds: (OPTIONAL) Dumps CRD manifests with the CSV to stdout"
3438
}
@@ -40,7 +44,11 @@ OPERATOR_IMAGE=""
4044

4145
# OPTIONAL ARGS
4246
WATCH_NAMESPACE=""
47+
KVM_INFO_TAG=""
4348
VALIDATOR_TAG=""
49+
VIRT_LAUNCHER_TAG=""
50+
NODE_LABELLER_TAG=""
51+
CPU_PLUGIN_TAG=""
4452
IMAGE_NAME_PREFIX=""
4553
DUMP_CRDS=""
4654

@@ -62,9 +70,21 @@ while (( "$#" )); do
6270
--watch-namespace)
6371
WATCH_NAMESPACE=$VAL
6472
;;
73+
--kvm-info-tag)
74+
KVM_INFO_TAG=$VAL
75+
;;
6576
--validator-tag)
6677
VALIDATOR_TAG=$VAL
6778
;;
79+
--virt-launcher-tag)
80+
VIRT_LAUNCHER_TAG=$VAL
81+
;;
82+
--node-labeller-tag)
83+
NODE_LABELLER_TAG=$VAL
84+
;;
85+
--cpu-plugin-tag)
86+
CPU_PLUGIN_TAG=$VAL
87+
;;
6888
--image-name-prefix)
6989
IMAGE_NAME_PREFIX=$VAL
7090
;;
@@ -96,7 +116,11 @@ sed -i "s/namespace: placeholder/namespace: ${NAMESPACE}/g" ${TMP_FILE}
96116
sed -i "s|REPLACE_IMAGE|${OPERATOR_IMAGE}|g" ${TMP_FILE}
97117

98118
replace_env_var "WATCH_NAMESPACE" $WATCH_NAMESPACE
119+
replace_env_var "KVM_INFO_TAG" $KVM_INFO_TAG
99120
replace_env_var "VALIDATOR_TAG" $VALIDATOR_TAG
121+
replace_env_var "VIRT_LAUNCHER_TAG" $VIRT_LAUNCHER_TAG
122+
replace_env_var "NODE_LABELLER_TAG" $NODE_LABELLER_TAG
123+
replace_env_var "CPU_PLUGIN_TAG" $CPU_PLUGIN_TAG
100124
replace_env_var "IMAGE_NAME_PREFIX" $IMAGE_NAME_PREFIX
101125

102126
# dump CSV and CRD manifests to stdout

build/update-olm.py

+14
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,20 @@
7777
],
7878
}],
7979
},
80+
'kubevirtnodelabellerbundles.ssp.kubevirt.io': {
81+
'displayName': 'KubeVirt Node labeller',
82+
'description': \
83+
'Represents a deployment of Node labeller component',
84+
'specDescriptors': [{
85+
'description': \
86+
'The version of the node labeller to deploy',
87+
'displayName': 'Version',
88+
'path': 'version',
89+
'x-descriptors': [
90+
'urn:alm:descriptor:io.kubernetes.ssp:version',
91+
],
92+
}],
93+
},
8094
'kubevirtmetricsaggregations.ssp.kubevirt.io': {
8195
'displayName': 'KubeVirt Metric Aggregation',
8296
'description': \

cluster/latest/kubevirt-ssp-operator-cr.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ spec:
1414
version: v0.0.1
1515
---
1616
apiVersion: ssp.kubevirt.io/v1
17+
kind: KubevirtNodeLabellerBundle
18+
metadata:
19+
name: kubevirt-node-labeller-bundle
20+
spec:
21+
version: v0.1.1
22+
---
23+
apiVersion: ssp.kubevirt.io/v1
1724
kind: KubevirtTemplateValidator
1825
metadata:
1926
name: kubevirt-template-validator

cluster/latest/kubevirt-ssp-operator-crd.yaml

+17
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,23 @@ spec:
3232
subresources:
3333
status: {}
3434

35+
---
36+
apiVersion: apiextensions.k8s.io/v1beta1
37+
kind: CustomResourceDefinition
38+
metadata:
39+
name: kubevirtnodelabellerbundles.ssp.kubevirt.io
40+
spec:
41+
group: ssp.kubevirt.io
42+
names:
43+
kind: KubevirtNodeLabellerBundle
44+
listKind: KubevirtNodeLabellerBundleList
45+
plural: kubevirtnodelabellerbundles
46+
singular: kubevirtnodelabellerbundle
47+
scope: Namespaced
48+
version: v1
49+
subresources:
50+
status: {}
51+
3552
---
3653
apiVersion: apiextensions.k8s.io/v1beta1
3754
kind: CustomResourceDefinition

cluster/latest/kubevirt-ssp-operator.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,16 @@ spec:
181181
value: quay.io/fromani/kubevirt-ssp-operator-container:latest
182182
- name: WATCH_NAMESPACE
183183
value: ""
184+
- name: KVM_INFO_TAG
185+
value: ""
184186
- name: VALIDATOR_TAG
185187
value: ""
188+
- name: VIRT_LAUNCHER_TAG
189+
value: ""
190+
- name: NODE_LABELLER_TAG
191+
value: ""
192+
- name: CPU_PLUGIN_TAG
193+
value: ""
186194
- name: IMAGE_NAME_PREFIX
187195
value: ""
188196
- name: OPERATOR_NAME
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: ssp.kubevirt.io/v1
2+
kind: KubevirtNodeLabellerBundle
3+
metadata:
4+
name: kubevirt-node-labeller-bundle
5+
spec:
6+
version: v0.1.1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: kubevirtnodelabellerbundles.ssp.kubevirt.io
5+
spec:
6+
group: ssp.kubevirt.io
7+
names:
8+
kind: KubevirtNodeLabellerBundle
9+
listKind: KubevirtNodeLabellerBundleList
10+
plural: kubevirtnodelabellerbundles
11+
singular: kubevirtnodelabellerbundle
12+
scope: Namespaced
13+
version: v1
14+
subresources:
15+
status: {}
16+

deploy/operator.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,16 @@ spec:
3636
value: REPLACE_IMAGE
3737
- name: WATCH_NAMESPACE
3838
value: ""
39+
- name: KVM_INFO_TAG
40+
value: ""
3941
- name: VALIDATOR_TAG
4042
value: ""
43+
- name: VIRT_LAUNCHER_TAG
44+
value: ""
45+
- name: NODE_LABELLER_TAG
46+
value: ""
47+
- name: CPU_PLUGIN_TAG
48+
value: ""
4149
- name: IMAGE_NAME_PREFIX
4250
value: ""
4351
- name: OPERATOR_NAME
+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/bin/bash
2+
3+
SCRIPTPATH=$( dirname $(readlink -f $0) )
4+
source ${SCRIPTPATH}/testlib.sh
5+
6+
[ -z ${KV_NAMESPACE} ] && exit 127
7+
8+
RET=1
9+
TEST_NS="${KV_NAMESPACE}"
10+
11+
oc apply -n ${TEST_NS} -f "${SCRIPTPATH}/node-labeller-unversioned-cr.yaml" || exit 2
12+
# TODO: SSP-operator needs to improve its feedback mechanism
13+
# fetching node-labeller images may take a while
14+
15+
wait_node_labeller_running ${TEST_NS} 5 60
16+
17+
for idx in $( seq 1 30); do
18+
echo "Waiting for node-labeller to label nodes"
19+
20+
number_of_cpu=$( oc get nodes -o json | jq '.items[0].metadata.labels | keys | map(select(startswith("feature.node.kubernetes.io/cpu-model-"))) | length')
21+
number_of_cpu_features=$( oc get nodes -o json | jq '.items[0].metadata.labels | keys | map(select(startswith("feature.node.kubernetes.io/cpu-feature-"))) | length')
22+
23+
echo "Number of CPU labels: $number_of_cpu"
24+
echo "Number of CPU features: $number_of_cpu_features"
25+
26+
if [ $number_of_cpu -gt 0 ] && [ $number_of_cpu_features -gt 0 ]; then
27+
RET=0
28+
break
29+
fi
30+
sleep 2s
31+
done
32+
33+
if [ $RET -eq 1 ] ; then
34+
exit 2
35+
fi
36+
37+
#wait for ssp operator to set proper conditions
38+
wait_for_condition ${TEST_NS} 5 40 "KubevirtNodeLabellerBundle" "Available" "True"
39+
RET="$?"
40+
41+
oc delete -n ${TEST_NS} -f "${SCRIPTPATH}/node-labeller-unversioned-cr.yaml" || exit 2
42+
43+
exit $RET
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/bin/bash
2+
3+
SCRIPTPATH=$( dirname $(readlink -f $0) )
4+
source ${SCRIPTPATH}/testlib.sh
5+
6+
RET=1
7+
TEST_NS="openshift" # TODO: check this exists?
8+
9+
{ oc get crds | grep -q prometheusrule; } || exit 99
10+
11+
oc create -n ${TEST_NS} -f "${SCRIPTPATH}/aggregation-rules-unversioned-cr.yaml" || exit 2
12+
# TODO: SSP-operator needs to improve its feedback mechanism
13+
sleep 21s
14+
for idx in $( seq 1 30); do
15+
NUM=$(oc get prometheusrules -n ${TEST_NS} -l 'kubevirt.io=prometheus-rules' -o json | jq ".items | length")
16+
(( ${V} >= 1 )) && echo "prometheus rules found in ${TEST_NS}: ${NUM}"
17+
if (( "${NUM}" > 0 )); then
18+
(( ${V} >= 1 )) && echo "enough prometheus rules found in ${TEST_NS}"
19+
RET=0
20+
break
21+
fi
22+
sleep 3s
23+
done
24+
oc delete -n ${TEST_NS} -f "${SCRIPTPATH}/aggregation-rules-unversioned-cr.yaml" || exit 2
25+
26+
exit $RET
+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/bash
2+
3+
SCRIPTPATH=$( dirname $(readlink -f $0) )
4+
source ${SCRIPTPATH}/testlib.sh
5+
6+
[ -z ${KV_NAMESPACE} ] && exit 127
7+
8+
RET=1
9+
TEST_NS="${KV_NAMESPACE}"
10+
11+
oc create -n ${KV_NAMESPACE} -f "${SCRIPTPATH}/common-templates-versioned-cr.yaml" || exit 2
12+
13+
wait_for_deployment_ready ${TEST_NS} 5 90 "KubevirtCommonTemplatesBundle" "Running" "Successful"
14+
RET="$?"
15+
if [ $RET -eq 1 ]; then
16+
exit $RET
17+
fi
18+
19+
for idx in $( seq 1 40); do
20+
NUM=$(oc get templates -n ${TEST_NS} -l "template.kubevirt.io/type=base" -o json | jq ".items | length")
21+
echo "templates found in ${TEST_NS}: ${NUM}"
22+
if [ "${NUM}" > 0 ]; then
23+
break
24+
fi
25+
sleep 3s
26+
done
27+
28+
#wait for ssp operator to set proper conditions
29+
wait_for_condition ${TEST_NS} 5 40 "KubevirtCommonTemplatesBundle" "Available" "True"
30+
RET="$?"
31+
32+
oc delete -n ${TEST_NS} -f "${SCRIPTPATH}/common-templates-versioned-cr.yaml" || exit 2
33+
34+
exit $RET
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: ssp.kubevirt.io/v1
2+
kind: KubevirtNodeLabellerBundle
3+
metadata:
4+
name: kubevirt-node-labeller-bundle
5+
spec:
6+
useKVM: false

functests/testlib.sh

+34
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,25 @@ is_template_validator_running() {
5959
return 1
6060
}
6161

62+
is_node_labeller_running() {
63+
NS="--all-namespaces"
64+
if [ -n "$1" ]; then
65+
NS="-n ${1}"
66+
fi
67+
VERB="${V}"
68+
if [ -n "$2" ]; then
69+
VERB="${2}"
70+
fi
71+
local labeller_pod=$( oc get pods --selector='app=kubevirt-node-labeller' ${NS} -o json )
72+
local labeller_status=$( echo ${labeller_pod} | jq -r '.items[0].status' )
73+
local labeller_phase=$( echo ${labeller_pod} | jq -r '.items[0].status.phase' )
74+
(( ${VERB} >= 1 )) && echo "node-labeller status: ${labeller_status}"
75+
if [ "${labeller_phase}" == "Running" ]; then
76+
return 0
77+
fi
78+
return 1
79+
}
80+
6281
wait_template_validator_running() {
6382
# $1 passthrough
6483
local wait_secs=${2:-2}
@@ -74,6 +93,21 @@ wait_template_validator_running() {
7493
return 1
7594
}
7695

96+
wait_node_labeller_running() {
97+
# $1 passthrough
98+
local wait_secs=${2:-2}
99+
local max_tries=${3:-15}
100+
for num in $( seq 1 ${max_tries} ); do
101+
(( ${V} >= 1 )) && echo "waiting for node-labeller availability: ${num}/${max_tries}"
102+
sleep ${wait_secs}s
103+
if is_node_labeller_running $1 0; then
104+
return 0
105+
fi
106+
done
107+
dump_component_state "" 'app=kubevirt-node-labeller'
108+
return 1
109+
}
110+
77111
wait_for_condition() {
78112
NS="--all-namespaces"
79113
if [ -n "$1" ]; then

hack/install-operator.sh

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ NAMESPACE=${1:-kubevirt}
99
source ${BASEPATH}/_common.sh
1010

1111
oc create -f ${BASEPATH}/../deploy/crds/kubevirt_v1_commontemplatesbundle_crd.yaml
12+
oc create -f ${BASEPATH}/../deploy/crds/kubevirt_v1_nodelabellerbundle_crd.yaml
1213
oc create -f ${BASEPATH}/../deploy/crds/kubevirt_v1_templatevalidator_crd.yaml
1314
oc create -f ${BASEPATH}/../deploy/crds/kubevirt_v1_metricsaggregation_crd.yaml
1415

manifests/generated/kubevirt-ssp-operator.vVERSION.clusterserviceversion.yaml

+16-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: operators.coreos.com/v1alpha1
22
kind: ClusterServiceVersion
33
metadata:
44
annotations:
5-
alm-examples: '[{"apiVersion":"ssp.kubevirt.io/v1","kind":"KubevirtCommonTemplatesBundle","metadata":{"name":"kubevirt-common-template-bundle"},"spec":{"version":"v0.7.0"}},{"apiVersion":"ssp.kubevirt.io/v1","kind":"KubevirtMetricsAggregation","metadata":{"name":"kubevirt-metrics-aggregation"},"spec":{"version":"v0.0.1"}},{"apiVersion":"ssp.kubevirt.io/v1","kind":"KubevirtTemplateValidator","metadata":{"name":"kubevirt-template-validator","namespace":"kubevirt"},"spec":{"templateValidatorReplicas":2,"version":"v0.6.2"}}]'
5+
alm-examples: '[{"apiVersion":"ssp.kubevirt.io/v1","kind":"KubevirtNodeLabellerBundle","metadata":{"name":"kubevirt-node-labeller-bundle"},"spec":{"version":"v0.1.1"}},{"apiVersion":"ssp.kubevirt.io/v1","kind":"KubevirtTemplateValidator","metadata":{"name":"kubevirt-template-validator","namespace":"kubevirt"},"spec":{"templateValidatorReplicas":2,"version":"v0.6.2"}},{"apiVersion":"ssp.kubevirt.io/v1","kind":"KubevirtCommonTemplatesBundle","metadata":{"name":"kubevirt-common-template-bundle"},"spec":{"version":"v0.7.0"}},{"apiVersion":"ssp.kubevirt.io/v1","kind":"KubevirtMetricsAggregation","metadata":{"name":"kubevirt-metrics-aggregation"},"spec":{"version":"v0.0.1"}}]'
66
capabilities: Basic Install
77
categories: Openshift Optional
88
containerImage: REPLACE_IMAGE
@@ -35,6 +35,17 @@ spec:
3535
x-descriptors:
3636
- urn:alm:descriptor:io.kubernetes.ssp:version
3737
version: v1
38+
- description: Represents a deployment of Node labeller component
39+
displayName: KubeVirt Node labeller
40+
kind: KubevirtNodeLabellerBundle
41+
name: kubevirtnodelabellerbundles.ssp.kubevirt.io
42+
specDescriptors:
43+
- description: The version of the node labeller to deploy
44+
displayName: Version
45+
path: version
46+
x-descriptors:
47+
- urn:alm:descriptor:io.kubernetes.ssp:version
48+
version: v1
3849
- description: Represents a deployment of admission control webhook to validate
3950
the KubeVirt templates
4051
displayName: KubeVirt Template Validator admission webhook
@@ -196,7 +207,11 @@ spec:
196207
- name: IMAGE_REFERENCE
197208
value: REPLACE_IMAGE
198209
- name: WATCH_NAMESPACE
210+
- name: KVM_INFO_TAG
199211
- name: VALIDATOR_TAG
212+
- name: VIRT_LAUNCHER_TAG
213+
- name: NODE_LABELLER_TAG
214+
- name: CPU_PLUGIN_TAG
200215
- name: IMAGE_NAME_PREFIX
201216
- name: OPERATOR_NAME
202217
value: kubevirt-ssp-operator

0 commit comments

Comments
 (0)