-
Bug
-
Resolution: Done-Errata
-
Major
-
None
-
4.18.z
-
None
Description of problem:
1. what is the "default value" I think the meaning of "default value" should describe the behavior when the value is not explicit set by user in the SriovOperatorConfig object. In my Test 4 and 5, both functions are disabled in the operator when the object creation does not include the attributes in question. The value of '<none>' , i.e. not returned, should match with the "default value". In your my 3 even when the user has set false for both, '<none>' is still returned, which to me indicates default value is false for both. 2. attribute value returned in get should be consistent. The get behaviour should not change resulting documentation regardless of how the attributes are set. In my Test 3, when both attributes are set to false in initial object creation, get does not return any value for those attributes. However, if object attribute was patched to false, the get returns them.
Version-Release number of selected component (if applicable):
4.18.z
How reproducible:
Easily on both SNO and multi-node cluster.
Steps to Reproduce:
I checked in different ways, please check all the tests and scenarios and my observations.
Test 3: Setting the values FALSE at the time of creating CR.
1]
~~~
[root@vm-236-142 ~]# cat << EOF| oc create -f -
apiVersion: v1
kind: Namespace
metadata:
name: openshift-sriov-network-operator
annotations:
workload.openshift.io/allowed: management
EOF
namespace/openshift-sriov-network-operator created
2]
~~~
[root@vm-236-142 ~]# cat << EOF| oc create -f -
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: sriov-network-operators
namespace: openshift-sriov-network-operator
spec:
targetNamespaces:
- openshift-sriov-network-operator
EOF
operatorgroup.operators.coreos.com/sriov-network-operators created
3]
~~~
[root@vm-236-142 ~]# cat << EOF| oc create -f -
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: sriov-network-operator-subscription
namespace: openshift-sriov-network-operator
spec:
channel: stable
name: sriov-network-operator
source: redhat-operators
sourceNamespace: openshift-marketplace
EOF
subscription.operators.coreos.com/sriov-network-operator-subscription created
4] CR does not get created automatically, we need to create manually as mentioned in the documentation.
~~~
[root@vm-236-142 ~]# oc get SriovOperatorConfig
No resources found in test namespace.
5] While creating the CR, I set the values in the spec field to be false.
~~~
[root@vm-236-142 ~]# cat <<EOF | oc create -f -
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovOperatorConfig
metadata:
name: default
namespace: openshift-sriov-network-operator
spec:
enableInjector: false <<<
enableOperatorWebhook: false <<<
logLevel: 2
disableDrain: false
EOF
sriovoperatorconfig.sriovnetwork.openshift.io/default created
VERIFICATION:
~~~
1] There are no injector and webhook pods are running in the namespace.
~~~
[root@vm-236-142 ~]# oc get pods
NAME READY STATUS RESTARTS AGE
sriov-network-config-daemon-2lv5l 1/1 Running 0 62s
sriov-network-operator-548c568f46-v4zd5 1/1 Running 0 10m
2] Setting the values false at the time of CR creation, gives the <none> output. However as per the behaviour 'none' is equivalent to false as per the testing.
~~~
[root@vm-236-142 ~]# oc -n openshift-sriov-network-operator get SriovOperatorConfig -o custom-columns='Name:.metadata.name,Injector:.spec.enableInjector,OperatorWebhook:spec.enableOperatorWebhook'
Name Injector OperatorWebhook
default <none> <none> <<<
3] Deleted the CR and recreated it again by setting the values true.
~~~
[root@vm-236-142 ~]# oc delete SriovOperatorConfig default
sriovoperatorconfig.sriovnetwork.openshift.io "default" deleted
[root@vm-236-142 ~]# oc get SriovOperatorConfig
No resources found in openshift-sriov-network-operator namespace.
4] Recreated CR with true.
~~~
[root@vm-236-142 ~]# cat <<EOF | oc create -f -
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovOperatorConfig
metadata:
name: default
namespace: openshift-sriov-network-operator
spec:
enableInjector: true <<<
enableOperatorWebhook: true <<<
logLevel: 2
disableDrain: false
EOF
sriovoperatorconfig.sriovnetwork.openshift.io/default created
5] Here I observed, if we create the CR with default values which are supposed to be true then it shows 'true'. Later on we can perform the patch to make it false, post patching it updates the value and set to false.
~~~
[root@vm-236-142 ~]# oc get pods
NAME READY STATUS RESTARTS AGE
network-resources-injector-shqnk 1/1 Running 0 9s
operator-webhook-lrzwf 1/1 Running 0 9s
sriov-network-config-daemon-pwnvk 1/1 Running 0 9s
sriov-network-operator-548c568f46-v4zd5 1/1 Running 0 17m
[root@vm-236-142 ~]# oc -n openshift-sriov-network-operator get SriovOperatorConfig -o custom-columns='Name:.metadata.name,Injector:.spec.enableInjector,OperatorWebhook:spec.enableOperatorWebhook'
Name Injector OperatorWebhook
default true true <<<
[root@vm-236-142 ~]# oc patch sriovoperatorconfig default --type=merge -n openshift-sriov-network-operator --patch '{ "spec": { "enableInjector": false } }'
sriovoperatorconfig.sriovnetwork.openshift.io/default patched
[root@vm-236-142 ~]# oc patch sriovoperatorconfig default --type=merge -n openshift-sriov-network-operator --patch '{ "spec": { "enableOperatorWebhook": false } }'
sriovoperatorconfig.sriovnetwork.openshift.io/default patched
[root@vm-236-142 ~]# oc -n openshift-sriov-network-operator get SriovOperatorConfig -o custom-columns='Name:.metadata.name,Injector:.spec.enableInjector,OperatorWebhook:spec.enableOperatorWebhook'
Name Injector OperatorWebhook
default false false <<<
Test 4: <none> SCENARIO on SNO cluster:
~~~
1] Created CR without the parameters "enableInjector and enableOperatorWebhook".
~~~
[root@vm-236-142 ~]# cat <<EOF | oc create -f -
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovOperatorConfig
metadata:
name: default
namespace: openshift-sriov-network-operator
spec:
logLevel: 2
disableDrain: true
EOF
sriovoperatorconfig.sriovnetwork.openshift.io/default created
2] VERIFICATION: Default value seems to be set to false. The Documentation says "By default, this field is set to true." However in practical the default value is false which gives <none> output; unless we specify expilicitly to be true.
~~~
[root@vm-236-142 ~]# oc get pods
NAME READY STATUS RESTARTS AGE
sriov-network-config-daemon-x5jf2 1/1 Running 0 9s
sriov-network-operator-548c568f46-v4zd5 1/1 Running 0 60m
[root@vm-236-142 ~]# oc -n openshift-sriov-network-operator get SriovOperatorConfig -o custom-columns='Name:.metadata.name,Injector:.spec.enableInjector,OperatorWebhook:spec.enableOperatorWebhook'
Name Injector OperatorWebhook
default <none> <none> <<<
Test 5: <none> SCENARIO on multi-node cluster:
~~~
MULTI-NODE CLUSTER:
~~~
[ocp418@vm-236-142 ~]$ cat <<EOF | oc create -f -
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovOperatorConfig
metadata:
name: default
namespace: openshift-sriov-network-operator
spec:
logLevel: 2
disableDrain: true
EOF
sriovoperatorconfig.sriovnetwork.openshift.io/default created
[ocp418@vm-236-142 ~]$ oc get pods
NAME READY STATUS RESTARTS AGE
sriov-network-config-daemon-642g9 0/1 PodInitializing 0 4s
sriov-network-config-daemon-979cr 0/1 PodInitializing 0 4s
sriov-network-config-daemon-p8b5v 0/1 PodInitializing 0 4s
sriov-network-operator-548c568f46-vmvnq 1/1 Running 0 2d3h
[ocp418@vm-236-142 ~]$ oc get pods
NAME READY STATUS RESTARTS AGE
sriov-network-config-daemon-642g9 1/1 Running 0 8s
sriov-network-config-daemon-979cr 1/1 Running 0 8s
sriov-network-config-daemon-p8b5v 1/1 Running 0 8s
sriov-network-operator-548c568f46-vmvnq 1/1 Running 0 2d3h
[ocp418@vm-236-142 ~]$ oc -n openshift-sriov-network-operator get SriovOperatorConfig -o custom-columns='Name:.metadata.name,Injector:.spec.enableInjector,OperatorWebhook:spec.enableOperatorWebhook'
Name Injector OperatorWebhook
default <none> <none> <<<
~~~
Actual results:
[ocp418@vm-236-142 ~]$ oc -n openshift-sriov-network-operator get SriovOperatorConfig -o custom-columns='Name:.metadata.name,Injector:.spec.enableInjector,OperatorWebhook:spec.enableOperatorWebhook' Name Injector OperatorWebhook default <none> <none> <<<
Expected results:
[root@vm-236-142 ~]# oc -n openshift-sriov-network-operator get SriovOperatorConfig -o custom-columns='Name:.metadata.name,Injector:.spec.enableInjector,OperatorWebhook:spec.enableOperatorWebhook' Name Injector OperatorWebhook default false false <<<
Additional info:
REFERENCE: https://docs.redhat.com/en/documentation/openshift_container_platform/4.18/html/networking/networking-operators#sr-iov-operator
- blocks
-
OCPBUGS-54958 Default value seems to be set to false for the parameters enableInjector and enableOperatorWebhook in SriovOperatorConfig.spec. which gives <none> output.
-
- Closed
-
- is cloned by
-
OCPBUGS-54958 Default value seems to be set to false for the parameters enableInjector and enableOperatorWebhook in SriovOperatorConfig.spec. which gives <none> output.
-
- Closed
-
- relates to
-
OCPBUGS-54352 Update needed https://docs.redhat.com/en/documentation/openshift_container_platform/4.18/html/networking/networking-operators#nw-sriov-operator-cr_configuring-sriov-operator
-
- Closed
-
- links to
-
RHEA-2024:11037
OpenShift Container Platform 4.19.z extras update