[VOL-2008] Start voltha containers in a specific order and run sanity test
Change-Id: Ib4d23bfd6fa7c0d6a00ac38cee911031ecadf4aa
diff --git a/libraries/k8s.robot b/libraries/k8s.robot
old mode 100644
new mode 100755
index 4fe057d..5d8eb5a
--- a/libraries/k8s.robot
+++ b/libraries/k8s.robot
@@ -328,6 +328,14 @@
Should Be Equal As Integers ${count} 0
Should Be True ${count}==0 Pod ${name} exists but should not
+Wait For Pods Not Exist
+ [Arguments] ${namespace} ${list_names}
+ [Documentation] Checks the passed PODs are no longer existing
+ FOR ${pod_name} IN @{list_names}
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 3s
+ ... Pod Does Not Exist ${namespace} ${pod_name}
+ END
+
Pods Do Not Exist By Label
[Arguments] ${namespace} ${key} ${value}
[Documentation] Succeeds if the named POD does not exist
@@ -376,7 +384,15 @@
[Documentation] Check that all pods with a label are ready
${output}= Run
... kubectl -n ${namespace} get pods -l ${key}=${value} -o=jsonpath="{.items[].status.containerStatuses[].ready}"
- Should Not Contain ${output} "false"
+ Should Not Contain ${output} false
+
+Wait For Pods Ready
+ [Arguments] ${namespace} ${list_apps}
+ [Documentation] Checks the passed PODs are ready
+ FOR ${app_name} IN @{list_apps}
+ Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 3s
+ ... Pods Are Ready By Label ${namespace} app ${app_name}
+ END
Check Expected Running Pods Number By Label
[Arguments] ${namespace} ${key} ${value} ${number}
@@ -384,4 +400,3 @@
${rc} ${count} Run and Return Rc and Output
... kubectl -n ${namespace} get pods -l ${key}=${value} -o json | jq -r ".items[].status.phase" | wc -l
Should Be Equal as Integers ${count} ${number}
-
diff --git a/tests/data/onos-values.yaml b/tests/data/onos-values.yaml
new file mode 100755
index 0000000..94539f6
--- /dev/null
+++ b/tests/data/onos-values.yaml
@@ -0,0 +1,39 @@
+---
+# Copyright 2020-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+defaults:
+ image_tag: master
+ image_pullPolicy: "IfNotPresent"
+images:
+ onos:
+ repository: voltha/voltha-onos
+ tag: master
+image:
+ repository: voltha/voltha-onos
+ tag: master
+ pullPolicy: "IfNotPresent"
+onos_env:
+ - name: POD_IP
+ valueFrom:
+ fieldRef:
+ fieldPath: status.podIP
+ - name: NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: ONOS_APPS
+ value: "drivers,openflow-base,hostprovider"
+atomix:
+ persistence:
+ enabled: false
diff --git a/tests/data/open-olt-values.yaml b/tests/data/open-olt-values.yaml
new file mode 100755
index 0000000..2b34000
--- /dev/null
+++ b/tests/data/open-olt-values.yaml
@@ -0,0 +1,17 @@
+---
+# Copyright 2020-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+defaults:
+ image_tag: master
+ image_pullPolicy: "IfNotPresent"
diff --git a/tests/data/open-onu-values.yaml b/tests/data/open-onu-values.yaml
new file mode 100755
index 0000000..c962da1
--- /dev/null
+++ b/tests/data/open-onu-values.yaml
@@ -0,0 +1,18 @@
+---
+# Copyright 2020-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+defaults:
+ image_tag: master
+ image_pullPolicy: "IfNotPresent"
+use_openonu_adapter_go: false
diff --git a/tests/data/sim-adapter-values.yaml b/tests/data/sim-adapter-values.yaml
new file mode 100755
index 0000000..2b34000
--- /dev/null
+++ b/tests/data/sim-adapter-values.yaml
@@ -0,0 +1,17 @@
+---
+# Copyright 2020-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+defaults:
+ image_tag: master
+ image_pullPolicy: "IfNotPresent"
diff --git a/tests/data/voltha-values.yaml b/tests/data/voltha-values.yaml
new file mode 100755
index 0000000..b811c71
--- /dev/null
+++ b/tests/data/voltha-values.yaml
@@ -0,0 +1,19 @@
+---
+# Copyright 2020-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+defaults:
+ image_tag: master
+ image_pullPolicy: "IfNotPresent"
+private_etcd_cluster: false
+private_kafka_cluster: false
diff --git a/tests/functional/Voltha_StartContainerPODTests.robot b/tests/functional/Voltha_StartContainerPODTests.robot
new file mode 100755
index 0000000..683b581
--- /dev/null
+++ b/tests/functional/Voltha_StartContainerPODTests.robot
@@ -0,0 +1,397 @@
+# Copyright 2020 - present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# FIXME Can we use the same test against BBSim and Hardware?
+
+*** Settings ***
+Documentation Test various end-to-end scenarios
+Suite Setup Setup Suite
+Test Setup Setup
+Test Teardown Teardown
+Suite Teardown Teardown Suite
+Library Collections
+Library String
+Library OperatingSystem
+Library XML
+Library RequestsLibrary
+Library ../../libraries/DependencyLibrary.py
+Resource ../../libraries/onos.robot
+Resource ../../libraries/voltctl.robot
+Resource ../../libraries/voltha.robot
+Resource ../../libraries/utils.robot
+Resource ../../libraries/k8s.robot
+Resource ../../variables/variables.robot
+Resource ../../libraries/power_switch.robot
+
+*** Variables ***
+${POD_NAME} flex-ocp-cord
+${KUBERNETES_CONF} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
+${KUBERNETES_CONFIGS_DIR} ~/pod-configs/kubernetes-configs
+#${KUBERNETES_CONFIGS_DIR} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
+${KUBERNETES_YAML} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
+${HELM_CHARTS_DIR} ~/helm-charts
+${VOLTHA_POD_NUM} 8
+${NAMESPACE} voltha
+# For below variable value, using deployment name as using grep for
+# parsing radius pod name, we can also use full radius pod name
+${RESTART_POD_NAME} radius
+${timeout} 120s
+${of_id} 0
+${logical_id} 0
+${has_dataplane} True
+${teardown_device} False
+${scripts} ../../scripts
+${with_onos} True
+${values_dir} ../data
+${kind_voltha_dir} ~/kind-voltha
+# Per-test logging on failure is turned off by default; set this variable to enable
+${container_log_dir} ${None}
+${pausebeforesanity} False
+${onos_version} ${EMPTY}
+
+*** Test Cases ***
+
+Sanity E2E Test for OLT/ONU on POD
+ [Documentation] Validates E2E Ping Connectivity and object states for the given scenario:
+ ... Validate successful authentication/DHCP/E2E ping for the tech profile that is used
+ [Tags] sanity test1
+ [Setup] Run Keywords Start Logging SanityTest
+ ... AND Setup
+ [Teardown] Run Keywords Collect Logs
+ ... AND Stop Logging SanityTest
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+
+Start voltha containers in a specific order and run sanity test
+ [Documentation] Starts voltha containers in a specific order and run sanity test
+ ... Assuming that test1 was executed where all the ONUs are authenticated/DHCP/pingable
+ ... Two starts of voltha container in specific orders are supported:
+ ... First order: voltha, voltha-adapters-simulated, voltha-adapters-open-olt, voltha-adapters-open-onu, onos
+ ... Second order: voltha-adapters-simulated, voltha-adapters-open-olt, voltha-adapters-open-onu, voltha, onos
+ ... For both orders following scenarios will be run
+ ... - Remove helm charts
+ ... - Restart Helm Charts in a specific order
+ ... - Restart Port Forwarding
+ ... - Repeat the sanity check
+ [Tags] functional VOL-2008 StartVolthaContainers notready
+ [Setup] Start Logging StartVolthaContainers
+ [Teardown] Run Keywords Collect Logs
+ ... AND Stop Logging StartVolthaContainers
+ ${list_order} Create List First Second
+ # Get simulated adpters are running
+ ${contains_sim}= Set Variable False
+ ${container} Get Container Dictionary voltha
+ FOR ${key} IN @{container.keys()}
+ ${contains_sim}= Evaluate "sim-voltha-adapter" in """${key}"""
+ Exit For Loop IF ${contains_sim}
+ END
+ # Prepare Helm Chart list
+ ${list_voltha_apps} Create List ofagent rw-core
+ ${list_voltha_names} Create List voltha-voltha-ofagent voltha-voltha-rw-core
+ ${voltha} CreateDictionary helmchart=voltha namespace=voltha
+ ... apps=${list_voltha_apps} names=${list_voltha_names}
+ ${list_sim_apps} Create List adapter-simulated-olt adapter-simulated-onu
+ ${list_sim_names} Create List sim-voltha-adapter-simulated-olt sim-voltha-adapter-simulated-onu
+ ${sim} CreateDictionary helmchart=sim namespace=voltha
+ ... apps=${list_sim_apps} names=${list_sim_names}
+ ${list_openolt_apps} Create List adapter-open-olt
+ ${list_openolt_names} Create List open-olt-voltha-adapter-openolt
+ ${open-olt} CreateDictionary helmchart=open-olt namespace=voltha
+ ... apps=${list_openolt_apps} names=${list_openolt_names}
+ ${list_openonu_apps} Create List adapter-open-onu
+ ${list_openonu_names} Create List open-onu-voltha-adapter-openonu
+ ${open-onu} CreateDictionary helmchart=open-onu namespace=voltha
+ ... apps=${list_openonu_apps} names=${list_openonu_names}
+ ${list_onos_apps} Create List onos-onos-classic
+ ${list_onos_names} Create List onos-onos-classic
+ ${onos} CreateDictionary helmchart=onos namespace=default
+ ... apps=${list_onos_apps} names=${list_onos_names}
+ ${List_Helm_Charts} Create List
+ Run Keyword If ${contains_sim}
+ ... Append To List ${List_Helm_Charts} ${voltha} ${sim} ${open-olt} ${open-onu} ${onos}
+ ... ELSE
+ ... Append To List ${List_Helm_Charts} ${voltha} ${open-olt} ${open-onu} ${onos}
+ # Start Loop over both orders
+ FOR ${order} IN @{list_order}
+ Perfom Start voltha containers in a specific order ${List_Helm_Charts} ${order} ${contains_sim}
+ ... ${with_onos}
+ END
+
+*** Keywords ***
+Setup Suite
+ [Documentation] Set up the test suite
+ Common Test Suite Setup
+ #Restore all ONUs
+ #Run Keyword If ${has_dataplane} RestoreONUs ${num_onus}
+ #power_switch.robot needs it to support different vendor's power switch
+ ${switch_type}= Get Variable Value ${web_power_switch.type}
+ Run Keyword If "${switch_type}"!="" Set Global Variable ${powerswitch_type} ${switch_type}
+
+Perfom Start voltha containers in a specific order
+ [Arguments] ${List_Helm_Charts} ${order} ${contains_sim} ${with_onos}
+ [Documentation] Performes start ofvoltha containers in a specific order and run sanity test
+ # Repeat Teardown Suite
+ Run Keyword If ${with_onos}
+ ... Log \r\nRepeat Teardown Suite (${order} order)... console=yes
+ Run Keyword If ${with_onos} Teardown Suite
+ # Remove Helm Charts
+ Log \r\nRemove Helm Charts (${order} order)... console=yes
+ Remove Helm Charts ${List_Helm_Charts}
+ # Restart Helm Charts
+ Log \r\nRestart Helm Charts (${order} order)... console=yes
+ Restart Helm Charts ${List_Helm_Charts} ${order} ${contains_sim}
+ # Restart Port Forwarding
+ Log \r\nRestart Port Forwarding (${order} order)... console=yes
+ Restart Port Forwarding
+ # Push ONOS Kafka Configuration
+ Run Keyword If ${with_onos}
+ ... Log \r\nPush ONOS Kafka Configuration (${order} order)... console=yes
+ Run Keyword If ${with_onos} Sleep 5s
+ Run Keyword If ${with_onos}
+ ... Wait Until Keyword Succeeds 30s 3s Push ONOS Kafka Configuration
+ # Push ONOS DHCP L2 Relay Configuration
+ Run Keyword If ${with_onos}
+ ... Log \r\nPush ONOS DHCP L2 Relay Configuration (${order} order)... console=yes
+ Run Keyword If ${with_onos} Sleep 5s
+ Run Keyword If ${with_onos}
+ ... Wait Until Keyword Succeeds 30s 3s Push ONOS DHCP L2 Relay Configuration
+ #Enable VOLTHA ONOS EAPOL provisioning
+ Run Keyword If ${with_onos}
+ ... Log \r\nEnable VOLTHA ONOS EAPOL provisioning (${order} order)... console=yes
+ Run Keyword If ${with_onos} Sleep 5s
+ Run Keyword If ${with_onos}
+ ... Wait Until Keyword Succeeds 30s 3s Enable VOLTHA ONOS EAPOL provisioning
+ #Enable VOLTHA ONOS DHCP Provisioning
+ Run Keyword If ${with_onos}
+ ... Log \r\nEnable VOLTHA ONOS DHCP Provisioning (${order} order)... console=yes
+ Run Keyword If ${with_onos} Sleep 5s
+ Run Keyword If ${with_onos}
+ ... Wait Until Keyword Succeeds 30s 3s Enable VOLTHA ONOS DHCP Provisioning
+ #Disable VOLTHA ONOS IGMP Provisioning
+ Run Keyword If ${with_onos}
+ ... Log \r\nDisable VOLTHA ONOS IGMP Provisioning (${order} order)... console=yes
+ Run Keyword If ${with_onos} Sleep 5s
+ Run Keyword If ${with_onos}
+ ... Wait Until Keyword Succeeds 30s 3s Disable VOLTHA ONOS IGMP Provisioning
+ #Push ONOS SADIS Configuration
+ Run Keyword If ${with_onos}
+ ... Log \r\nPush ONOS SADIS Configuration (${order} order)... console=yes
+ Run Keyword If ${with_onos} Sleep 5s
+ Run Keyword If ${with_onos}
+ ... Wait Until Keyword Succeeds 30s 3s Push ONOS SADIS Configuration
+ # Configure ONOS RADIUS Connection
+ Run Keyword If ${with_onos}
+ ... Log \r\nPush ONOS RADIUS Connection (${order} order)... console=yes
+ Run Keyword If ${with_onos} Sleep 5s
+ Run Keyword If ${with_onos}
+ ... Wait Until Keyword Succeeds 30s 3s Configure ONOS RADIUS Connection
+ Log \r\nSleep 10s (${order} order)... console=yes
+ Sleep 10s
+ # Repeat Suite Setup
+ Run Keyword If ${with_onos}
+ ... Log \r\nRepeat Suite Setup (${order} order)... console=yes
+ Run Keyword If ${with_onos} Common Test Suite Setup
+ # Repeat Setup
+ Run Keyword If ${with_onos}
+ ... Log \r\nRepeat Setup (${order} order)... console=yes
+ Run Keyword If ${with_onos} Setup
+ Run Keyword If ${pausebeforesanity} Import Library Dialogs
+ Run Keyword If ${pausebeforesanity} Pause Execution Press OK to continue with Sanity Check!
+ # Repeat Sanity Test E2E Test for OLT/ONU on POD
+ Log \r\nRepeat Sanity Test E2E Test for OLT/ONU on POD (${order} order)... console=yes
+ Run Keyword If ${has_dataplane} Clean Up Linux
+ Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
+
+Remove Helm Charts
+ [Arguments] ${List_Helm_Charts}
+ [Documentation] Removes the helm charts
+ FOR ${helm_chart} IN @{List_Helm_Charts}
+ ${helmchartname} Get From Dictionary ${helm_chart} helmchart
+ ${namespace} Get From Dictionary ${helm_chart} namespace
+ Run Keyword If ${with_onos} or ('${helmchartname}'!='onos') Remove VOLTHA Helm Charts ${helmchartname}
+ ... ${namespace}
+ ${list_names} Get From Dictionary ${helm_chart} names
+ Run Keyword If ${with_onos} or ('${helmchartname}'!='onos')
+ ... Wait For Pods Not Exist ${namespace} ${list_names}
+ END
+
+Remove VOLTHA Helm Charts
+ [Arguments] ${name} ${namespace}
+ [Documentation] Remove VOLTHA helm charts
+ ${cmd} Catenate helm uninstall --no-hooks --namespace '${namespace}' '${name}'
+ #${cmd} Catenate helm delete --no-hooks --purge '${name}'
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0
+
+Restart Helm Charts
+ [Arguments] ${List_Helm_Charts} ${order} ${contains_sim}
+ [Documentation] Restarts the helm charts
+ Run Keyword If '${order}'=='First' Restart Voltha
+ Run Keyword If ${contains_sim} Restart Voltha Adapters Simulated
+ Restart Voltha Adapters Open OLT
+ Restart Voltha Adapters Open ONU
+ Run Keyword If '${order}'=='Second' Restart Voltha
+ Run Keyword If ${with_onos} Restart ONOS
+ FOR ${helm_chart} IN @{List_Helm_Charts}
+ ${helmchartname} Get From Dictionary ${helm_chart} helmchart
+ ${namespace} Get From Dictionary ${helm_chart} namespace
+ ${list_apps} Get From Dictionary ${helm_chart} apps
+ Run Keyword If ${with_onos} or ('${helmchartname}'!='onos')
+ ... Wait For Pods Ready ${namespace} ${list_apps}
+ END
+
+Restart Voltha Adapters Simulated
+ [Documentation] Restart Voltha Adapters Simulated helm chart
+ ${cmd} Catenate
+ ... helm install -f ${values_dir}/sim-adapter-values.yaml --create-namespace
+ ... --set services.etcd.service=etcd.default.svc --set services.etcd.port=2379
+ ... --set services.etcd.address=etcd.default.svc:2379 --set kafka_broker=kafka.default.svc:9092
+ ... --set services.kafka.adapter.service=kafka.default.svc --set services.kafka.adapter.port=9092
+ ... --set services.kafka.cluster.service=kafka.default.svc --set services.kafka.cluster.port=9092
+ ... --set services.kafka.adapter.address=kafka.default.svc:9092
+ ... --set services.kafka.cluster.address=kafka.default.svc:9092 --set defaults.log_level=WARN
+ ... --namespace voltha sim onf/voltha-adapter-simulated
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0
+
+Restart Voltha Adapters Open OLT
+ [Documentation] Restart Voltha Adapters Open OLT helm chart
+ ${cmd} Catenate
+ ... helm install -f ${values_dir}/open-olt-values.yaml --create-namespace
+ ... --set services.etcd.service=etcd.default.svc --set services.etcd.port=2379
+ ... --set services.etcd.address=etcd.default.svc:2379 --set kafka_broker=kafka.default.svc:9092
+ ... --set services.kafka.adapter.service=kafka.default.svc --set services.kafka.adapter.port=9092
+ ... --set services.kafka.adapter.address=kafka.default.svc:9092
+ ... --set services.kafka.cluster.service=kafka.default.svc --set services.kafka.cluster.port=9092
+ ... --set services.kafka.cluster.address=kafka.default.svc:9092 --set defaults.log_level=WARN
+ ... --namespace voltha open-olt onf/voltha-adapter-openolt
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0
+
+Restart Voltha Adapters Open ONU
+ [Documentation] Restart Voltha Adapters Open ONU helm chart
+ ${cmd} Catenate
+ ... helm install -f ${values_dir}/open-onu-values.yaml --set services.etcd.service=etcd.default.svc
+ ... --set services.etcd.port=2379 --set services.etcd.address=etcd.default.svc:2379
+ ... --set kafka_broker=kafka.default.svc:9092 --set services.kafka.adapter.service=kafka.default.svc
+ ... --set services.kafka.adapter.port=9092 --set services.kafka.adapter.address=kafka.default.svc:9092
+ ... --set services.kafka.cluster.service=kafka.default.svc --set services.kafka.cluster.port=9092
+ ... --set services.kafka.cluster.address=kafka.default.svc:9092 --set replicas.adapter_open_onu=1
+ ... --set defaults.log_level=WARN --namespace voltha open-onu onf/voltha-adapter-openonu
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0
+
+Restart Voltha
+ [Documentation] Restart Voltha helm chart
+ ${cmd} Catenate
+ ... helm install -f ${values_dir}/voltha-values.yaml --create-namespace --set therecanbeonlyone=true
+ ... --set therecanbeonlyone=true --set services.etcd.address=etcd.default.svc:2379
+ ... --set kafka_broker=kafka.default.svc:9092 --set services.kafka.adapter.address=kafka.default.svc:9092
+ ... --set services.kafka.cluster.address=kafka.default.svc:9092
+ ... --set 'services.controller[0].address=onos-onos-classic-0.onos-onos-classic-hs.default.svc:6653'
+ ... --set defaults.log_level=WARN --namespace voltha voltha onf/voltha
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0
+
+
+Restart ONOS
+ [Documentation] Restart ONOS helm chart
+ ${cmd}= Run Keyword If '${onos_version}'=='${EMPTY}' Catenate
+ ... helm install -f ${values_dir}/onos-values.yaml
+ ... --create-namespace --set image.repository=voltha/voltha-onos,image.tag=master,replicas=1,atomix.replicas=0
+ ... --set defaults.log_level=WARN --namespace default onos onos/onos-classic
+ ... ELSE Catenate
+ ... helm install -f ${values_dir}/minimal-values.yaml
+ ... --create-namespace --set image.repository=voltha/voltha-onos,image.tag=master,replicas=1,atomix.replicas=0
+ ... --set defaults.log_level=WARN --namespace default --version ${onos_version} onos onos/onos-classic
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0
+
+Restart Port Forwarding
+ [Documentation] Restarts the VOLTHA port forwarding rules
+ ${List_Tags} Create List etcd-minimal voltha-voltha-api-minimal kafka-minimal
+ ... onos-onos-classic-hs-minimal
+ FOR ${tag} IN @{List_Tags}
+ Run Keyword If ${with_onos} or ('${tag}'!='onos-onos-classic-hs-minimal')
+ ... Restart VOLTHA Port Forward ${tag}
+ END
+
+Push ONOS Kafka Configuration
+ [Documentation] Pushes the ONOS kafka Configuration
+ ${cmd} Catenate
+ ... cd ~/kind-voltha;
+ ... curl -sSL --user karaf:karaf -w %\{http_code\} -X POST --fail -H Content-Type:application/json
+ ... http://127.0.0.1:8181/onos/v1/network/configuration/apps/org.opencord.kafka
+ ... --data '{"kafka":{"bootstrapServers":"kafka.default.svc:9092"}}'; cd -
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0
+
+Push ONOS DHCP L2 Relay Configuration
+ [Documentation] Pushes the ONOS DHCP L2 Relay Configuration
+ ${cmd} Catenate
+ ... cd ~/kind-voltha;
+ ... curl -sSL --user karaf:karaf -w %\{http_code\} -X POST --fail -H Content-Type:application/json
+ ... http://127.0.0.1:8181/onos/v1/network/configuration/apps/org.opencord.dhcpl2relay
+ ... --data @onos-files/onos-dhcpl2relay.json; cd -
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0
+
+Enable VOLTHA ONOS EAPOL provisioning
+ [Documentation] Pushes the ONOS EAPOL Configuration
+ ${cmd} Catenate
+ ... cd ~/kind-voltha;
+ ... curl -sSL --user karaf:karaf -w %\{http_code\} -X POST --fail -H Content-Type:application/json
+ ... http://127.0.0.1:8181/onos/v1/configuration/org.opencord.olt.impl.OltFlowService
+ ... --data '{"enableEapol":true}'; cd -
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0
+
+Enable VOLTHA ONOS DHCP Provisioning
+ [Documentation] Pushes the ONOS OLT DHCP Configuration
+ ${cmd} Catenate
+ ... cd ~/kind-voltha;
+ ... curl -sSL --user karaf:karaf -w %\{http_code\} -X POST --fail -H Content-Type:application/json
+ ... http://127.0.0.1:8181/onos/v1/configuration/org.opencord.olt.impl.OltFlowService
+ ... --data '{"enableDhcpOnProvisioning":true,"enableDhcpV4":true}'; cd -
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0
+
+Disable VOLTHA ONOS IGMP Provisioning
+ [Documentation] Pushes the ONOS IGMP Configuration
+ ${cmd} Catenate
+ ... cd ~/kind-voltha;
+ ... curl -sSL --user karaf:karaf -w %\{http_code\} -X POST --fail -H Content-Type:application/json
+ ... http://127.0.0.1:8181/onos/v1/configuration/org.opencord.olt.impl.OltFlowService
+ ... --data '{"enableIgmpOnProvisioning":false}'; cd -
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0
+
+Push ONOS SADIS Configuration
+ [Documentation] Pushes the ONOS SADIS Configuration
+ ${cmd} Catenate
+ ... cd ~/kind-voltha;
+ ... curl -sSL --user karaf:karaf -w %\{http_code\} -X POST --fail -H Content-Type:application/json
+ ... http://127.0.0.1:8181/onos/v1/network/configuration/apps/org.opencord.sadis
+ ... --data @onos-files/onos-sadis-sample.json; cd -
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0
+
+Configure ONOS RADIUS Connection
+ [Documentation] Configures the ONOS RADIUS Connection
+ ${cmd} Catenate
+ ... sed -e s/:RADIUS_SVC:/radius-freeradius.default.svc/g -e s/:RADIUS_PORT:/1812/
+ ... ${kind_voltha_dir}/onos-files/onos-aaa.json | curl --fail -sSL --user karaf:karaf -X POST
+ ... http://127.0.0.1:8181/onos/v1/network/configuration/apps/org.opencord.aaa
+ ... -H Content-type:application/json -d@-
+ ${rc} Run And Return Rc ${cmd}
+ Should Be Equal as Integers ${rc} 0