[SEBA-285] Run ATT workflow tests on ONF POD

Change-Id: I071e0f29435c23fa702e69fe5fc9bbc9fe1908bd
diff --git a/src/test/cord-api/Framework/DHCP.robot b/src/test/cord-api/Framework/DHCP.robot
index 979048e..8af8ada 100644
--- a/src/test/cord-api/Framework/DHCP.robot
+++ b/src/test/cord-api/Framework/DHCP.robot
@@ -20,32 +20,20 @@
 
 *** Keywords ***
 Send Dhclient Request
-    [Arguments]    ${ip}    ${user}    ${pass}    ${iface}    ${prompt}=$    ${prompt_timeout}=60s
-    [Documentation]    SSH's into the RG (src) and executes a dhclient against a particular interface
-    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
-    SSHLibrary.Login    ${user}    ${pass}
-    SSHLibrary.Write    sudo dhclient -nw ${iface}
-    Read Until    [sudo] password for ${user}:
-    SSHLibrary.Write    ${pass}
-    ${result}=    Read Until    ${prompt}
-    SSHLibrary.Close Connection
+    [Arguments]    ${iface}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}
+    [Documentation]    Executes a dhclient against a particular interface on the RG (src)
+    ${result}=    Login And Run Command On Remote System    sudo dhclient -nw ${iface}    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
     [Return]    ${result}
 
 Add Default Route to Dst Gateway
-    [Arguments]    ${ip}    ${user}    ${pass}    ${src_gateway}    ${dst_subnet}    ${iface}    ${prompt}=$    ${prompt_timeout}=60s
-    [Documentation]    SSH's into the RG (src) and adds an entry to the routing table
-    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
-    SSHLibrary.Login    ${user}    ${pass}
-    SSHLibrary.Write    sudo ip route add ${dst_subnet} via ${src_gateway} dev ${iface}
-    Read Until    [sudo] password for ${user}:
-    SSHLibrary.Write    ${pass}
-    ${result}=    Read Until    ${prompt}
-    SSHLibrary.Close Connection
+    [Arguments]    ${src_gateway}    ${dst_subnet}    ${iface}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}
+    [Documentation]    Adds an entry to the routing table on the RG (src)
+    ${result}=    Login And Run Command On Remote System    sudo ip route add ${dst_subnet} via ${src_gateway} dev ${iface}    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
     [Return]    ${result}
 
 Check IPv4 Address on DHCP Client
-    [Arguments]    ${ip_should_exist}    ${ip}    ${user}    ${pass}    ${iface}
+    [Arguments]    ${ip_should_exist}    ${iface}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}
     [Documentation]    Check if the sepcified interface has an IPv4 address assigned
-    ${output}=    Run Command On Remote System    ${ip}    ifconfig ${iface}    ${user}    ${pass}
+    ${output}=    Login And Run Command On Remote System    ifconfig ${iface}    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
     Run Keyword If    '${ip_should_exist}' == 'True'    Should Match Regexp    ${output}    \\b([0-9]{1,3}\\.){3}[0-9]{1,3}\\b
     Run Keyword If    '${ip_should_exist}' == 'False'    Should Not Match Regexp    ${output}    \\b([0-9]{1,3}\\.){3}[0-9]{1,3}\\b
diff --git a/src/test/cord-api/Framework/Kubernetes.robot b/src/test/cord-api/Framework/Kubernetes.robot
index 41af2c5..d284a77 100644
--- a/src/test/cord-api/Framework/Kubernetes.robot
+++ b/src/test/cord-api/Framework/Kubernetes.robot
@@ -24,22 +24,19 @@
 
 *** Keywords ***
 Helm Chart is Removed
-    [Arguments]    ${kubernetes_conf}    ${helm_chart}
+    [Arguments]    ${helm_chart}
     [Documentation]    Verify the specified helm chart has been removed
-    Run    export KUBECONFIG=${kubernetes_conf}
-    ${rc}=    Run And Return Rc    helm ls -q | grep ${helm_chart}
+    ${rc}=    Run And Return Rc    ${export_kubeconfig}; helm ls -q | grep ${helm_chart}
     Should Be Equal As Integers    ${rc}    1
 
 Kubernetes PODs in Namespace are Removed
-    [Arguments]    ${kubernetes_conf}    ${namespace}
+    [Arguments]    ${namespace}
     [Documentation]    Verify all Kubernetes pods in specified namespace have been removed
-    Run    export KUBECONFIG=${kubernetes_conf}
-    ${rc}    ${output}=    Run And Return Rc And Output    kubectl get pods --no-headers -n ${namespace}
+    ${rc}    ${output}=    Run And Return Rc And Output    ${export_kubeconfig}; kubectl get pods --no-headers -n ${namespace}
     Should Contain    ${output}    No resources found
 
 Kubernetes PODs in Namespace are Running
-    [Arguments]    ${kubernetes_conf}    ${namespace}    ${pod_num}
+    [Arguments]    ${namespace}    ${pod_num}
     [Documentation]    Verify the number of Kubernetes pods that are running in specified namespace is as expected
-    Run    export KUBECONFIG=${kubernetes_conf}
-    ${rc}    ${output}=    Run And Return Rc And Output    kubectl get pods -n ${namespace} | grep -i running | grep 1/1 | wc -l
+    ${rc}    ${output}=    Run And Return Rc And Output    ${export_kubeconfig}; kubectl get pods -n ${namespace} | grep -i running | grep 1/1 | wc -l
     Should Be Equal As Integers    ${output}    ${pod_num}
diff --git a/src/test/cord-api/Framework/OLT.robot b/src/test/cord-api/Framework/OLT.robot
index 394b4a2..0e208b0 100644
--- a/src/test/cord-api/Framework/OLT.robot
+++ b/src/test/cord-api/Framework/OLT.robot
@@ -24,9 +24,6 @@
 
 *** Keywords ***
 Openolt is Up
-    [Arguments]    ${ip}    ${user}    ${pass}    ${prompt}=\#    ${prompt_timeout}=60s
+    [Arguments]    ${ip}    ${user}    ${pass}    ${prompt}=~#
     [Documentation]    Verify that openolt process is started and ready to connect to voltha
-    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
-    SSHLibrary.Login    ${user}    ${pass}
-    Check Remote File Contents    True    ${conn_id}    /var/log/    openolt.log    oper_state: up
-    SSHLibrary.Close Connection
+    Check Remote File Contents    True    /var/log/openolt.log    oper_state: up    ${ip}    ${user}    ${pass}    prompt=${prompt}
diff --git a/src/test/cord-api/Framework/Subscriber.robot b/src/test/cord-api/Framework/Subscriber.robot
index b884075..91aff61 100644
--- a/src/test/cord-api/Framework/Subscriber.robot
+++ b/src/test/cord-api/Framework/Subscriber.robot
@@ -20,29 +20,6 @@
 Resource          ../../Framework/utils/utils.robot
 
 *** Keywords ***
-Send EAPOL Message
-    [Arguments]    ${auth_pass}    ${ip}    ${user}    ${pass}    ${iface}    ${conf_file}    ${prompt}=$    ${prompt_timeout}=60s
-    [Documentation]    SSH's into the RG (src) and executes a particular auth request via wpa_supplicant client. Requested packet should exist on src.
-    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
-    SSHLibrary.Login    ${user}    ${pass}
-    SSHLibrary.Write    sudo rm -f /tmp/wpa.log; sudo wpa_supplicant -B -i ${iface} -Dwired -c /etc/wpa_supplicant/${conf_file} -f /tmp/wpa.log
-    Read Until    [sudo] password for ${user}:
-    SSHLibrary.Write    ${pass}
-    Run Keyword If    '${auth_pass}' == 'True'    Wait Until Keyword Succeeds    30s    2s    Check Remote File Contents    True    ${conn_id}    /tmp/    wpa.log    authentication completed successfully
-    Run Keyword If    '${auth_pass}' == 'False'    Sleep    10s
-    Run Keyword If    '${auth_pass}' == 'False'    Check Remote File Contents    False    ${conn_id}    /tmp/    wpa.log    authentication completed successfully
-    SSHLibrary.Close Connection
-
-Delete IP Addresses from Interface on Remote Host
-    [Arguments]    ${ip}    ${user}    ${pass}    ${interface}    ${prompt}=$    ${prompt_timeout}=60s
-    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
-    SSHLibrary.Login    ${user}    ${pass}
-    SSHLibrary.Write    sudo ip addr flush dev ${interface}; echo $?
-    Read Until    [sudo] password for ${user}:
-    SSHLibrary.Write    ${pass}
-    ${result}=    Read Until    ${prompt}
-    SSHLibrary.Close Connection
-
 Subscriber Status Check
     [Arguments]    ${onu_device}
     [Documentation]    Returns Status from Subscribers List for a particular ONU device
@@ -81,60 +58,39 @@
     ${api_result}=    restApi.ApiChameleonDelete    VOLT_SUBSCRIBER    ${id}
     Should Be True    ${api_result}
 
-Add Double Vlan Interface on Host
-    [Arguments]    ${ip}    ${user}    ${pass}    ${interface}    ${stag}    ${ctag}    ${prompt}=$    ${prompt_timeout}=60s
-    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
-    SSHLibrary.Login    ${user}    ${pass}
-    SSHLibrary.Write    sudo ip link add link ${interface} name ${interface}.${stag} type vlan id ${stag}
-    Read Until    [sudo] password for ${user}:
-    SSHLibrary.Write    ${pass}
-    SSHLibrary.Write    sudo ip link set ${interface}.${stag} up
-    ${result}=    Read Until    ${prompt}
-    SSHLibrary.Write    sudo ip link add link ${interface}.${stag} name ${interface}.${stag}.${ctag} type vlan id ${ctag}
-    ${result}=    Read Until    ${prompt}
-    SSHLibrary.Write    sudo ip link set ${interface}.${stag}.${ctag} up
-    ${result}=    Read Until    ${prompt}
-    SSHLibrary.Write    ifconfig ${interface}.${stag}.${ctag}
-    ${result}=    Read Until    ${prompt}
-    SSHLibrary.Close Connection
-
-Delete Interface on Remote Host
-    [Arguments]    ${ip}    ${user}    ${pass}    ${interface}    ${prompt}=$    ${prompt_timeout}=60s
-    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
-    SSHLibrary.Login    ${user}    ${pass}
-    SSHLibrary.Write    sudo ip link del ${interface}
-    Read Until    [sudo] password for ${user}:
-    SSHLibrary.Write    ${pass}
-    Read Until    ${prompt}
-    SSHLibrary.Close Connection
-
-Add Ip Address on Interface on Host
-    [Arguments]    ${ip}    ${user}    ${pass}    ${ip_address}    ${interface}    ${prompt}=$    ${prompt_timeout}=60s
-    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
-    SSHLibrary.Login    ${user}    ${pass}
-    SSHLibrary.Write    sudo ip addr add ${ip_address} dev ${interface}
-    Read Until    [sudo] password for ${user}:
-    SSHLibrary.Write    ${pass}
-    Read Until    ${prompt}
-    SSHLibrary.Close Connection
+Send EAPOL Message
+    [Arguments]    ${auth_pass}    ${iface}    ${conf_file}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}
+    [Documentation]    Executes a particular auth request on the RG via wpa_supplicant client. Requested packet should exist on src.
+    Login And Run Command On Remote System    sudo rm -f /tmp/wpa.log; sudo wpa_supplicant -B -i ${iface} -Dwired -c /etc/wpa_supplicant/${conf_file} -f /tmp/wpa.log    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
+    Run Keyword If    '${auth_pass}' == 'True'    Wait Until Keyword Succeeds    30s    2s    Check Remote File Contents    True    /tmp/wpa.log    authentication completed successfully    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
+    Run Keyword If    '${auth_pass}' == 'False'    Sleep    10s
+    Run Keyword If    '${auth_pass}' == 'False'    Check Remote File Contents    False    /tmp/wpa.log    authentication completed successfully    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
 
 Start DHCP Server on Remote Host
-    [Arguments]    ${ip}    ${user}    ${pass}    ${interface}    ${prompt}=$    ${prompt_timeout}=60s
-    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
-    SSHLibrary.Login    ${user}    ${pass}
-    SSHLibrary.Write    sudo dhcpd -cf /etc/dhcp/dhcpd.conf ${interface}
-    Read Until    [sudo] password for ${user}:
-    SSHLibrary.Write    ${pass}
-    ${result}=    Read Until    ${prompt}
+    [Arguments]    ${interface}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}
+    ${result}=    Login And Run Command On Remote System    sudo dhcpd -cf /etc/dhcp/dhcpd.conf ${interface}    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
     Should Contain    ${result}    Listening on LPF/${interface}
-    SSHLibrary.Close Connection
+
+Delete IP Addresses from Interface on Remote Host
+    [Arguments]    ${interface}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}
+    Login And Run Command On Remote System    sudo ip addr flush dev ${interface}    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
+
+Add Double Vlan Interface on Host
+    [Arguments]    ${interface}    ${stag}    ${ctag}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}
+    Login And Run Command On Remote System    sudo ip link add link ${interface} name ${interface}.${stag} type vlan id ${stag}    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
+    Login And Run Command On Remote System    sudo ip link set ${interface}.${stag} up    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
+    Login And Run Command On Remote System    sudo ip link add link ${interface}.${stag} name ${interface}.${stag}.${ctag} type vlan id ${ctag}    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
+    Login And Run Command On Remote System    sudo ip link set ${interface}.${stag}.${ctag} up    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
+    Login And Run Command On Remote System    ifconfig ${interface}.${stag}.${ctag}    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
+
+Delete Interface on Remote Host
+    [Arguments]    ${interface}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}
+    Login And Run Command On Remote System    sudo ip link del ${interface}    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
+
+Add Ip Address on Interface on Host
+    [Arguments]    ${ip_address}    ${interface}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}
+    Login And Run Command On Remote System    sudo ip addr add ${ip_address} dev ${interface}    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
 
 Add Route to Remote Host
-    [Arguments]    ${ip}    ${user}    ${pass}    ${subnet}    ${gateway}    ${interface}    ${prompt}=$    ${prompt_timeout}=60s
-    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
-    SSHLibrary.Login    ${user}    ${pass}
-    SSHLibrary.Write    sudo ip route add ${subnet} via ${gateway} dev ${interface}
-    Read Until    [sudo] password for ${user}:
-    SSHLibrary.Write    ${pass}
-    ${result}=    Read Until    ${prompt}
-    SSHLibrary.Close Connection
+    [Arguments]    ${subnet}    ${gateway}    ${interface}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}
+    Login And Run Command On Remote System    sudo ip route add ${subnet} via ${gateway} dev ${interface}    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
diff --git a/src/test/cord-api/Framework/utils/utils.robot b/src/test/cord-api/Framework/utils/utils.robot
index cf8a771..5bd801a 100644
--- a/src/test/cord-api/Framework/utils/utils.robot
+++ b/src/test/cord-api/Framework/utils/utils.robot
@@ -23,27 +23,44 @@
 Library           RequestsLibrary
 
 *** Keywords ***
-Run Command On Remote System
-    [Arguments]    ${ip}    ${cmd}    ${user}    ${pass}    ${prompt}=$    ${prompt_timeout}=60s
-    [Documentation]    SSH's into a remote host, executes command, and logs+returns output
-    ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
-    SSHLibrary.Login    ${user}    ${pass}
-    ${output}=    SSHLibrary.Execute Command    ${cmd}
-    SSHLibrary.Close Connection
-    Log    ${output}
+Login And Run Command On Remote System
+    [Arguments]    ${cmd}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}    ${prompt}=~$    ${prompt_timeout}=15s    ${container_prompt}=~#
+    [Documentation]    SSH's into a remote host and executes a command and returns output. If container_name is specified, login to the container before executing the command
+    ${conn_id}    ${prompt}=    Login To Remote System    ${ip}    ${user}    ${pass}    ${key}    ${container_name}    ${prompt}    ${prompt_timeout}    ${container_prompt}
+    ${output}=    Run Command On Remote System    ${cmd}    ${conn_id}    ${user}    ${prompt}    ${pass}
+    Logout From Remote System    ${conn_id}
     [Return]    ${output}
 
-Run Sudo Command On Remote System
-    [Arguments]    ${ip}    ${cmd}    ${user}    ${pass}    ${prompt}=$    ${prompt_timeout}=60s
+Login To Remote System
+    [Arguments]    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}    ${prompt}=~$    ${prompt_timeout}=15s    ${container_prompt}=~#
+    [Documentation]    SSH's into a remote host and returns connection ID. If container_name is specified, login to the container before returning
     ${conn_id}=    SSHLibrary.Open Connection    ${ip}    prompt=${prompt}    timeout=${prompt_timeout}
-    SSHLibrary.Login    ${user}    ${pass}
-    SSHLibrary.Write    ${cmd}
-    Read Until    [sudo] password for ${user}:
-    SSHLibrary.Write    ${pass}
-    ${result}=    Read Until    ${prompt}
+    Run Keyword If    '${key}' != '${EMPTY}'    SSHLibrary.Login With Public Key    ${user}    ${key}
+    ...                                  ELSE    SSHLibrary.Login    ${user}    ${pass}
+    # Login to the lxc container
+    Run Keyword If    '${container_name}' != '${EMPTY}'    Run Keywords
+    ...    SSHLibrary.Write    lxc exec ${container_name} /bin/bash    AND
+    ...    SSHLibrary.Read Until    ${container_prompt}    AND
+    ...    SSHLibrary.Set Client Configuration    prompt=${container_prompt}
+    ${prompt}=    Set Variable If    '${container_name}' != '${EMPTY}'    ${container_prompt}     ${prompt}
+    [Return]    ${conn_id}    ${prompt}
+
+Logout From Remote System
+    [Arguments]    ${conn_id}
+    [Documentation]    Exit from the SSH session to a remote host
+    SSHLibrary.Switch Connection    ${conn_id}
     SSHLibrary.Close Connection
-    Log    ${result}
-    [Return]    ${result}
+
+Run Command On Remote System
+    [Arguments]    ${cmd}    ${conn_id}    ${user}    ${prompt}    ${pass}=${EMPTY}
+    [Documentation]    Executes a command on remote host and returns output
+    SSHLibrary.Switch Connection    ${conn_id}
+    SSHLibrary.Write    ${cmd}
+    ${output}=    SSHLibrary.Read Until Regexp    ${prompt}|password for ${user}:
+    Run Keyword If    'password for ${user}:' not in '''${output}'''    Return From Keyword    ${output}
+    SSHLibrary.Write    ${pass}
+    ${output}=    SSHlibrary.Read Until Prompt
+    [Return]    ${output}
 
 Execute Command on CIAB Server in Specific VM
     [Arguments]    ${system}    ${vm}    ${cmd}    ${user}=${VM_USER}    ${password}=${VM_PASS}    ${prompt}=$    ${use_key}=True    ${strip_line}=True
@@ -200,23 +217,29 @@
     [Return]    ${id}
 
 Kill Linux Process
-    [Arguments]    ${ip}    ${user}    ${pass}    ${process}
-    ${rc}=    Run Sudo Command On Remote System    ${ip}    sudo kill $(ps aux | grep '${process}' | awk '{print $2}'); echo $?    ${user}    ${pass}
-    Should Contain    ${rc}    0
+    [Arguments]    ${process}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}
+    ${rc}=    Login And Run Command On Remote System    sudo kill $(ps aux | grep '${process}' | awk '{print $2}'); echo $?    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
+    Should Be Equal As Integers    ${rc}    0
 
 Check Remote File Contents
-    [Arguments]    ${file_should_exist}    ${conn_id}    ${file_path}    ${file_name}    ${pattern}
-    SSHLibrary.Switch Connection    ${conn_id}
-    SSHLibrary.Get File    ${file_path}${file_name}    /tmp/
-    ${content}=    OperatingSystem.Get File    /tmp/${file_name}    encoding_errors=ignore
-    Run Keyword If    '${file_should_exist}' == 'True'    Should Contain    ${content}    ${pattern}
-    Run Keyword If    '${file_should_exist}' == 'False'    Should Not Contain    ${content}    ${pattern}
+    [Arguments]    ${file_should_exist}    ${file}    ${pattern}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}    ${prompt}=~$
+    ${output}=    Login And Run Command On Remote System    cat ${file} | grep '${pattern}'    ${ip}    ${user}    ${pass}    ${key}    ${container_name}    ${prompt}
+    Run Keyword If    '${file_should_exist}' == 'True'    Should Contain    ${output}    ${pattern}
+    ...                                           ELSE    Should Not Contain    ${output}    ${pattern}
+
+Check Ping
+    [Arguments]    ${ping_should_pass}    ${dst_ip}    ${iface}    ${ip}    ${user}    ${pass}=${EMPTY}    ${key}=${EMPTY}    ${container_name}=${EMPTY}
+    ${result}=    Login And Run Command On Remote System    ping -I ${iface} -c 3 ${dst_ip}    ${ip}    ${user}    ${pass}    ${key}    ${container_name}
+    Check Ping Result    ${ping_should_pass}    ${result}
 
 Check Remote System Reachability
-    [Arguments]    ${reachable}    ${ip}    ${prompt}=$    ${prompt_timeout}=60s
+    [Arguments]    ${reachable}    ${ip}
     [Documentation]    Check if the specified IP address is reachable or not
     ${result}=    Run    ping -c 3 -t 3 ${ip}
-    Log    ${result}
+    Check Ping Result    ${reachable}    ${result}
+
+Check Ping Result
+    [Arguments]    ${reachable}    ${result}
     Run Keyword If    '${reachable}' == 'True'    Should Contain    ${result}    64 bytes
     Run Keyword If    '${reachable}' == 'True'    Should Contain Any   ${result}    0% packet loss    0.0% packet loss
     Run Keyword If    '${reachable}' == 'True'    Should Not Contain Any    ${result}    100% packet loss    100.0% packet loss