diff --git a/README.md b/README.md
index fe533f7..d5828c7 100644
--- a/README.md
+++ b/README.md
@@ -25,8 +25,7 @@
   Reference - [kubectl](https://kubernetes.io/docs/reference/kubectl/kubectl/)
 
 * `voltctl` and `kubectl` must be properly configured on your system
-  prior to any test executions.  The `kind-voltha` environment will install
-  and configure these tools for you; see below.
+  prior to any test executions.
 
 Directory is structured as follows:
 
@@ -39,57 +38,14 @@
 
 ## Setting up a test environment
 
-An easy way to bring up VOLTHA + BBSim for testing is by using
-[kind-voltha](https://github.com/ciena/kind-voltha).  To set
+An easy way to bring up VOLTHA + BBSim for testing is by using the `helm-charts` as described in
+[voltha-helm-charts README](https://github.com/opencord/voltha-helm-charts/blob/master/README.md). To set
 up a minimal environment, first install [Docker](https://docs.docker.com/install/).
 
 > NOTE: Please make sure you are able to run the docker command (your user is
 > in the `docker` group)
 
-If you don't have a Kubernetes cluster, please use the following command to
-set up the cluster provided by [kind-voltha](https://github.com/ciena/kind-voltha)
-and install required tools.
-
-```bash
-git clone https://github.com/ciena/kind-voltha
-cd kind-voltha
-TYPE=minimal WITH_RADIUS=y WITH_BBSIM=y CONFIG_SADIS=y WITH_SIM_ADAPTERS=n ./voltha up
-source minimal-env.sh
-```
-
-If you prefer to use your own Kubernetes cluster, please read the document
-[kind-voltha configuration
-options](https://github.com/ciena/kind-voltha#voltha-up-configuration-options)
-first to see how to configure the `kind-voltha` installation behavior.
-
-> Recommended software versions
-- Helm: v2.14.3
-- Kubernetes: v1.15.5
-- KIND: v0.5.1
-
-You can skip the installation of Kubernetes cluster and Helm by setting
-environment variables.  For example, run the following command to install
-VOLTHA only in an existing cluster.
-
-```bash
-git clone https://github.com/ciena/kind-voltha
-cd kind-voltha
-TYPE=minimal WITH_RADIUS=y WITH_BBSIM=y CONFIG_SADIS=y WITH_SIM_ADAPTERS=n DEPLOY_K8S=n INSTALL_KUBECTL=n INSTALL_HELM=n ./voltha up
-source minimal-env.sh
-```
-
-The Helm values file `kind-voltha/minimal-values.yaml` determines which images will be deployed on the
-Kubernetes cluster.   The default is `master` images from [VOLTHA's Docker
-Hub repository](https://hub.docker.com/u/voltha/).  You can modify this file as needed, for
-example to deploy released images or private test images.
-
-### DT Workflow
-If you want to install voltha for the DT Workflow, add `WITH_RADIUS=n WITH_EAPOL=n WITH_DHCP=n WITH_IGMP=n CONFIG_SADIS=n` flags in the `./voltha up` command above.
-
-### Debug the kind-voltha installation
-
-If you meet any issues when you set up the VOLTHA testing environment by
-running `./voltha up`, you can see the installation logs from the file `kind-voltha/install-minimal.log`.
+Then you can follow all the instructions in the [voltha-helm-charts README](https://github.com/opencord/voltha-helm-charts/blob/master/README.md).
 
 ## Running the sanity tests
 
@@ -129,8 +85,7 @@
 * ROBOT_FILE: The test suite file in `tests/functional` that will be invoked by `robot`.
 
 * ROBOT_MISC_ARGS: Robot arguments passed directly to `robot`, for example to specify which test
-cases to run.  If you are running in a non-standard environment (e.g., not created by `kind-voltha`)
-you may need to override some default variable settings for your environment.
+cases to run. For some environments you may need to override some default variable settings for your environment.
 See [variables.robot](https://github.com/opencord/voltha-system-tests/blob/master/variables/variables.robot)
 for the list of defaults.
 
@@ -146,20 +101,12 @@
 ### Deploying POD
 
 Deploying POD can be either manual or automated using Jenkins job.
-You can install it manually by following these steps below.
+You can install it manually by following the steps in 
+[voltha-helm-charts README](https://github.com/opencord/voltha-helm-charts/blob/master/README.md)
 
-```bash
-git clone https://github.com/ciena/kind-voltha.git
-cd kind-voltha/
-EXTRA_HELM_FLAGS='-f <PATH_TO_YOUR_K8S_CONFIG_FILE>' WITH_RADIUS=yes WITH_TP=yes DEPLOY_K8S=no INSTALL_KUBECTL=no INSTALL_HELM=no ./voltha up
-```
-
-Note: replace `PATH_TO_YOUR_K8S_CONFIG_FILE` with your Kubernetes configuration
+Note: please add `-f PATH_TO_YOUR_K8S_CONFIG_FILE` to your helm commands with your Kubernetes configuration
 file. To create one please check this
 [example](https://github.com/opencord/pod-configs/blob/master/kubernetes-configs/voltha/flex-ocp-cord.yml).
-For more information on various environment variables with `./voltha up` please
-check the link
-[here](https://github.com/ciena/kind-voltha/blob/master/README.md)
 
 ### Dataplane test prerequisites
 
diff --git a/VERSION b/VERSION
index d578041..4067d1d 100755
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.8.9
+2.8.10
diff --git a/tests/data/bbsim-kind-16.yaml b/tests/data/bbsim-kind-16.yaml
index a2ef6c0..73daf74 100644
--- a/tests/data/bbsim-kind-16.yaml
+++ b/tests/data/bbsim-kind-16.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 has_dataplane: false
diff --git a/tests/data/bbsim-kind-2OLTx2ONUx2PON-dt.yaml b/tests/data/bbsim-kind-2OLTx2ONUx2PON-dt.yaml
index 67a82d8..eddf2f3 100755
--- a/tests/data/bbsim-kind-2OLTx2ONUx2PON-dt.yaml
+++ b/tests/data/bbsim-kind-2OLTx2ONUx2PON-dt.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 workflow: DT
diff --git a/tests/data/bbsim-kind-2OLTx2ONUx2PON-tt.yaml b/tests/data/bbsim-kind-2OLTx2ONUx2PON-tt.yaml
index 3469558..56177a5 100755
--- a/tests/data/bbsim-kind-2OLTx2ONUx2PON-tt.yaml
+++ b/tests/data/bbsim-kind-2OLTx2ONUx2PON-tt.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 workflow: TT
diff --git a/tests/data/bbsim-kind-2OLTx2ONUx2PON.yaml b/tests/data/bbsim-kind-2OLTx2ONUx2PON.yaml
index 4871656..efca8b8 100755
--- a/tests/data/bbsim-kind-2OLTx2ONUx2PON.yaml
+++ b/tests/data/bbsim-kind-2OLTx2ONUx2PON.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 has_dataplane: false
diff --git a/tests/data/bbsim-kind-2x2.yaml b/tests/data/bbsim-kind-2x2.yaml
index 72eba62..6241840 100644
--- a/tests/data/bbsim-kind-2x2.yaml
+++ b/tests/data/bbsim-kind-2x2.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 has_dataplane: false
diff --git a/tests/data/bbsim-kind-8x2.yaml b/tests/data/bbsim-kind-8x2.yaml
index 353195d..9202b4a 100644
--- a/tests/data/bbsim-kind-8x2.yaml
+++ b/tests/data/bbsim-kind-8x2.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 has_dataplane: false
diff --git a/tests/data/bbsim-kind-8x8.yaml b/tests/data/bbsim-kind-8x8.yaml
index 16b059e..a44cc91 100755
--- a/tests/data/bbsim-kind-8x8.yaml
+++ b/tests/data/bbsim-kind-8x8.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 has_dataplane: false
diff --git a/tests/data/bbsim-kind-dt.yaml b/tests/data/bbsim-kind-dt.yaml
index 5585438..ef35890 100644
--- a/tests/data/bbsim-kind-dt.yaml
+++ b/tests/data/bbsim-kind-dt.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 workflow: DT
diff --git a/tests/data/bbsim-kind-multi-uni-2OLTx2ONUx2PON.yaml b/tests/data/bbsim-kind-multi-uni-2OLTx2ONUx2PON.yaml
index cd77b89..cd5ac38 100755
--- a/tests/data/bbsim-kind-multi-uni-2OLTx2ONUx2PON.yaml
+++ b/tests/data/bbsim-kind-multi-uni-2OLTx2ONUx2PON.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 has_dataplane: false
diff --git a/tests/data/bbsim-kind-multi-uni-tt.yaml b/tests/data/bbsim-kind-multi-uni-tt.yaml
index ec8efb1..58fac66 100755
--- a/tests/data/bbsim-kind-multi-uni-tt.yaml
+++ b/tests/data/bbsim-kind-multi-uni-tt.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 workflow: TT
diff --git a/tests/data/bbsim-kind-multi-uni.yaml b/tests/data/bbsim-kind-multi-uni.yaml
index c839f6f..b783644 100644
--- a/tests/data/bbsim-kind-multi-uni.yaml
+++ b/tests/data/bbsim-kind-multi-uni.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 has_dataplane: false
diff --git a/tests/data/bbsim-kind-tt.yaml b/tests/data/bbsim-kind-tt.yaml
index 19d000c..cb9201c 100755
--- a/tests/data/bbsim-kind-tt.yaml
+++ b/tests/data/bbsim-kind-tt.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 workflow: TT
diff --git a/tests/data/bbsim-kind.yaml b/tests/data/bbsim-kind.yaml
index b617e85..f9ca52a 100644
--- a/tests/data/bbsim-kind.yaml
+++ b/tests/data/bbsim-kind.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 has_dataplane: false
diff --git a/tests/data/dmi-components-bbsim.yaml b/tests/data/dmi-components-bbsim.yaml
index 9900b06..a306b30 100755
--- a/tests/data/dmi-components-bbsim.yaml
+++ b/tests/data/dmi-components-bbsim.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # connection parameter needed for device manager interface tests
 GIVEN_DM_IP: 127.0.0.1
diff --git a/tests/data/multiple-bbsim-kind.yaml b/tests/data/multiple-bbsim-kind.yaml
index 018eba7..e3c0dcf 100755
--- a/tests/data/multiple-bbsim-kind.yaml
+++ b/tests/data/multiple-bbsim-kind.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 has_dataplane: false
diff --git a/tests/data/pm-data.yaml b/tests/data/pm-data.yaml
index e62789b..0509910 100755
--- a/tests/data/pm-data.yaml
+++ b/tests/data/pm-data.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Pm user validation and precondition data for validation of received
 # pm-data elements from open-onu-go-adapter.
diff --git a/tests/data/software-upgrade.yaml b/tests/data/software-upgrade.yaml
index 9ba0f8b..080a0aa 100644
--- a/tests/data/software-upgrade.yaml
+++ b/tests/data/software-upgrade.yaml
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Automated deployment configuration for kind-voltha running BBSim
+# Automated deployment configuration for systems running BBSim
 
 # Change default values in tests
 has_dataplane: false
diff --git a/tests/functional/Voltha_StartContainerPODTests.robot b/tests/functional/Voltha_StartContainerPODTests.robot
deleted file mode 100755
index fd6e0c4..0000000
--- a/tests/functional/Voltha_StartContainerPODTests.robot
+++ /dev/null
@@ -1,402 +0,0 @@
-# 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    ${OLT_ADAPTER_APP_LABEL}
-    ${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}'
-    ${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.cluster.service=kafka.default.svc --set services.kafka.cluster.port=9092
-    ...    --set services.kafka.cluster.address=kafka.default.svc:9092
-    ...    --set services.kafka.adapter.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    --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 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 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 'services.controller[0].service=onos-onos-classic-0.onos-onos-classic-hs.default.svc'
-    ...    --set 'services.controller[0].port=6653'
-    ...    --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 '{"enableDhcpOnNni":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 '{"enableIgmpOnNni":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
