Use consistent naming in elan suite
[integration/test.git] / csit / libraries / OpenStackOperations.robot
index b937e6b0e81a42aa07030f518c03a653c40a6632..f52d11cea962972c4e446fddc75160a473ca4e65 100644 (file)
@@ -15,7 +15,6 @@ Variables         ../variables/netvirt/Modules.py
 Get Tenant ID From Security Group
     [Documentation]    Returns tenant ID by reading it from existing default security-group.
     ${rc}    ${output}=    Run And Return Rc And Output    openstack security group show default | grep "| tenant_id" | awk '{print $4}'
-    Log    ${output}
     Should Not Be True    ${rc}
     [Return]    ${output}
 
@@ -142,7 +141,7 @@ List Ports
 
 List Nova VMs
     [Documentation]    List VMs and return output with nova client.
-    ${rc}    ${output}=    Run And Return Rc And Output    openstack server list
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack server list --all-projects
     Log    ${output}
     Should Not Be True    ${rc}
     [Return]    ${output}
@@ -166,22 +165,19 @@ Create And Associate Floating IPs
 
 Verify Gateway Ips
     [Documentation]    Verifies the Gateway Ips with dump flow.
-    ${output}=    Write Commands Until Prompt    sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
-    Log    ${output}
+    ${output}=    Write Commands Until Prompt And Log    sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
     : FOR    ${GatewayIpElement}    IN    @{GATEWAY_IPS}
     \    Should Contain    ${output}    ${GatewayIpElement}
 
 Verify Dhcp Ips
     [Documentation]    Verifies the Dhcp Ips with dump flow.
-    ${output}=    Write Commands Until Prompt    sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
-    Log    ${output}
+    ${output}=    Write Commands Until Prompt And Log    sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
     : FOR    ${DhcpIpElement}    IN    @{DHCP_IPS}
     \    Should Contain    ${output}    ${DhcpIpElement}
 
 Verify No Dhcp Ips
     [Documentation]    Verifies the Dhcp Ips with dump flow.
-    ${output}=    Write Commands Until Prompt    sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
-    Log    ${output}
+    ${output}=    Write Commands Until Prompt And Log    sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
     : FOR    ${DhcpIpElement}    IN    @{DHCP_IPS}
     \    Should Not Contain    ${output}    ${DhcpIpElement}
 
@@ -190,13 +186,11 @@ Delete SubNet
     [Documentation]    Delete SubNet for the Network with neutron request.
     Log    ${subnet}
     ${rc}    ${output}=    Run And Return Rc And Output    openstack subnet delete ${subnet}
-    Log    ${output}
     Should Not Be True    ${rc}
 
 Verify No Gateway Ips
     [Documentation]    Verifies the Gateway Ips removed with dump flow.
-    ${output}=    Write Commands Until Prompt    sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
-    Log    ${output}
+    ${output}=    Write Commands Until Prompt And Log    sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
     : FOR    ${GatewayIpElement}    IN    @{GATEWAY_IPS}
     \    Should Not Contain    ${output}    ${GatewayIpElement}
 
@@ -205,50 +199,41 @@ Delete Vm Instance
     [Documentation]    Delete Vm instances using instance names.
     ${rc}    ${output}=    Run And Return Rc And Output    openstack server delete ${vm_name}
     Log    ${output}
-    Log    ${rc}
 
 Get Net Id
     [Arguments]    ${network_name}    ${devstack_conn_id}
     [Documentation]    Retrieve the net id for the given network name to create specific vm instance
     ${rc}    ${output}=    Run And Return Rc And Output    openstack network list | grep "${network_name}" | awk '{print $2}'
-    Log    ${output}
     Should Not Be True    ${rc}
     ${splitted_output}=    Split String    ${output}    ${EMPTY}
     ${net_id}=    Get from List    ${splitted_output}    0
-    Log    ${net_id}
     [Return]    ${net_id}
 
 Get Subnet Id
     [Arguments]    ${subnet_name}    ${devstack_conn_id}
     [Documentation]    Retrieve the subnet id for the given subnet name
     ${rc}    ${output}=    Run And Return Rc And Output    openstack subnet show "${subnet_name}" | grep " id " | awk '{print $4}'
-    Log    ${output}
     Should Not Be True    ${rc}
     ${splitted_output}=    Split String    ${output}    ${EMPTY}
     ${subnet_id}=    Get from List    ${splitted_output}    0
-    Log    ${subnet_id}
     [Return]    ${subnet_id}
 
 Get Port Id
     [Arguments]    ${port_name}    ${devstack_conn_id}
     [Documentation]    Retrieve the port id for the given port name to attach specific vm instance to a particular port
     ${rc}    ${output}=    Run And Return Rc And Output    openstack port list | grep "${port_name}" | awk '{print $2}'
-    Log    ${output}
     Should Not Be True    ${rc}
     ${splitted_output}=    Split String    ${output}    ${EMPTY}
     ${port_id}=    Get from List    ${splitted_output}    0
-    Log    ${port_id}
     [Return]    ${port_id}
 
 Get Router Id
     [Arguments]    ${router1}    ${devstack_conn_id}
     [Documentation]    Retrieve the router id for the given router name
     ${rc}    ${output}=    Run And Return Rc And Output    openstack router list -f table | grep "${router1}" | awk '{print $2}'
-    Log    ${output}
     Should Not Be True    ${rc}
     ${splitted_output}=    Split String    ${output}    ${EMPTY}
     ${router_id}=    Get from List    ${splitted_output}    0
-    Log    ${router_id}
     [Return]    ${router_id}
 
 Create Vm Instances
@@ -311,12 +296,11 @@ Verify VM Is ACTIVE
     [Arguments]    ${vm_name}
     [Documentation]    Run these commands to check whether the created vm instance is active or not.
     ${rc}    ${output}=    Run And Return Rc And Output    openstack server show ${vm_name} | grep OS-EXT-STS:vm_state
-    Log    ${output}
-    Should Not Be True    ${rc}
+    Should Be True    '${rc}' == '0'
     Should Contain    ${output}    active
 
 Poll VM Is ACTIVE
-    [Arguments]    ${vm_name}    ${retry}=600s    ${retry_interval}=5s
+    [Arguments]    ${vm_name}    ${retry}=600s    ${retry_interval}=30s
     [Documentation]    Run these commands to check whether the created vm instance is active or not.
     Wait Until Keyword Succeeds    ${retry}    ${retry_interval}    Verify VM Is ACTIVE    ${vm_name}
 
@@ -329,19 +313,14 @@ Collect VM IP Addresses
     ${ip_list}    Create List    @{EMPTY}
     : FOR    ${vm}    IN    @{vm_list}
     \    ${rc}    ${vm_ip_line}=    Run And Return Rc And Output    openstack console log show ${vm} | grep -i "obtained"
-    \    Log    ${vm_ip_line}
-    \    Log    ${rc}
     \    @{vm_ip}    Get Regexp Matches    ${vm_ip_line}    [0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}
     \    ${vm_ip_length}    Get Length    ${vm_ip}
     \    Run Keyword If    ${vm_ip_length}>0    Append To List    ${ip_list}    @{vm_ip}[0]
     \    ...    ELSE    Append To List    ${ip_list}    None
     \    ${rc}    ${dhcp_ip_line}=    Run And Return Rc And Output    openstack console log show ${vm} | grep "^nameserver"
-    \    Log    ${dhcp_ip_line}
-    \    Log    ${rc}
     \    ${dhcp_ip}    Get Regexp Matches    ${dhcp_ip_line}    [0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}
     \    ${dhcp_ip_length}    Get Length    ${dhcp_ip}
     \    Run Keyword If    ${dhcp_ip_length}<=0    Append To List    ${dhcp_ip}    None
-    \    Log    ${dhcp_ip}
     \    ${vm_console_output}=    Run    openstack console log show ${vm}
     \    Log    ${vm_console_output}
     ${dhcp_length}    Get Length    ${dhcp_ip}
@@ -351,6 +330,54 @@ Collect VM IP Addresses
     Return From Keyword If    ${dhcp_length}==0    ${ip_list}    ${EMPTY}
     [Return]    ${ip_list}    ${dhcp_ip}
 
+Get Match
+    [Arguments]    ${text}    ${regexp}    ${index}=0
+    [Documentation]    Wrapper around Get Regexp Matches to return None if not found or the first match if found.
+    @{matches} =    String.Get Regexp Matches    ${text}    ${regexp}
+    ${matches_length} =    Get Length    ${matches}
+    BuiltIn.Set Test Variable    ${match}    None
+    BuiltIn.Run Keyword If    ${matches_length} > ${index}    BuiltIn.Set Test Variable    ${match}    @{matches}[${index}]
+    [Return]    ${match}
+
+Get VM IP
+    [Arguments]    ${fail_on_none}    ${vm}
+    [Documentation]    Get the vm ip address and nameserver by scraping the vm's console log.
+    ...    Get VM IP returns three values: [0] the vm IP, [1] the DHCP IP and [2] the vm console log.
+    ${rc}    ${vm_console_output}=    Run And Return Rc And Output    openstack console log show ${vm}
+    ${vm_ip} =    Set Variable    None
+    ${dhcp_ip} =    Set Variable    None
+    ${match} =    Get Match    ${vm_console_output}    ${REGEX_OBTAINED}
+    ${vm_ip} =    Get Match    ${match}    ${REGEX_IPV4}    0
+    ${match} =    Get Match    ${vm_console_output}    ${REGEX_IPROUTE}
+    ${dhcp_ip} =    Get Match    ${match}    ${REGEX_IPV4}    1
+    BuiltIn.Run Keyword If    '${fail_on_none}' == 'true'    Should Not Contain    ${vm_ip}    None
+    BuiltIn.Run Keyword If    '${fail_on_none}' == 'true'    Should Not Contain    ${dhcp_ip}    None
+    [Return]    ${vm_ip}    ${dhcp_ip}    ${vm_console_output}
+
+Get VM IPs
+    [Arguments]    @{vms}
+    [Documentation]    Get the instance IP addresses and nameserver address for the list of given vms.
+    ...    First poll for the vm instance to be in the active state, then poll for the vm ip address and nameserver.
+    ...    Get VM IPs returns two things: [0] a list of the ips for the vms passed to this keyword (may contain values
+    ...    of None) and [1] the dhcp ip address found in the last vm checked.
+    ...    TODO: there is a potential issue for a caller that passes in VMs belonging to different networks that
+    ...    may have different dhcp server addresses. Not sure what TODO about that, but noting it here for reference.
+    @{vm_ips}    BuiltIn.Create List    @{EMPTY}
+    : FOR    ${vm}    IN    @{vms}
+    \    Poll VM Is ACTIVE    ${vm}
+    \    ${status}    ${ips_and_console_log}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    120s    15s
+    \    ...    Get VM IP    true    ${vm}
+    \    # If there is trouble with Get VM IP, the status will be FAIL and the return value will be a string of what went
+    \    # wrong. We need to handle both the PASS and FAIL cases. In the FAIL case we know we wont have access to the
+    \    # console log, as it would not be returned; so we need to grab it again to log it. We also can append 'None' to
+    \    # the vm ip list if status is FAIL.
+    \    Run Keyword If    "${status}" == "PASS"    BuiltIn.Log    ${ips_and_console_log[2]}
+    \    BuiltIn.Run Keyword If    "${status}" == "PASS"    Collections.Append To List    ${vm_ips}    ${ips_and_console_log[0]}
+    \    BuiltIn.Run Keyword If    "${status}" == "FAIL"    Collections.Append To List    ${vm_ips}    None
+    \    ${rc}    ${vm_console_output}=    BuiltIn.Run Keyword If    "${status}" == "FAIL"    Run And Return Rc And Output    openstack console log show ${vm}
+    \    BuiltIn.Run Keyword If    "${status}" == "FAIL"    BuiltIn.Log    ${vm_console_output}
+    [Return]    @{vm_ips}    ${ips_and_console_log[1]}
+
 Collect VM IPv6 SLAAC Addresses
     [Arguments]    ${fail_on_none}    ${prefix}    @{vm_list}
     [Documentation]    Using the console-log on the provided ${vm_list} to search for the string "inet6" which
@@ -389,8 +416,7 @@ Ping Vm From DHCP Namespace
     Switch Connection    ${devstack_conn_id}
     ${net_id}=    Get Net Id    ${net_name}    ${devstack_conn_id}
     Log    ${net_id}
-    ${output}=    Write Commands Until Prompt    sudo ip netns exec qdhcp-${net_id} ping -c 3 ${vm_ip}    20s
-    Log    ${output}
+    ${output}=    Write Commands Until Prompt And Log    sudo ip netns exec qdhcp-${net_id} ping -c 3 ${vm_ip}    20s
     Close Connection
     Should Contain    ${output}    64 bytes
 
@@ -414,8 +440,7 @@ Ping Vm From Control Node
     Log    ${vm_floating_ip}
     ${devstack_conn_id}=    Get ControlNode Connection
     Switch Connection    ${devstack_conn_id}
-    ${output}=    Write Commands Until Prompt    ping ${additional_args} -c 3 ${vm_floating_ip}    20s
-    Log    ${output}
+    ${output}=    Write Commands Until Prompt And Log    ping ${additional_args} -c 3 ${vm_floating_ip}    20s
     Close Connection
     Should Contain    ${output}    64 bytes
 
@@ -434,8 +459,7 @@ Curl Metadata Server
 
 Close Vm Instance
     [Documentation]    Exit the vm instance.
-    ${output}=    Write Commands Until Prompt    exit
-    Log    ${output}
+    ${output}=    Write Commands Until Prompt And Log    exit
 
 Check If Console Is VmInstance
     [Arguments]    ${console}=cirros
@@ -501,7 +525,7 @@ Test Operations From Vm Instance
     Run Keyword If    ${rcode}    Write Commands Until Expected Prompt    route -n    ${OS_SYSTEM_PROMPT}
     Run Keyword If    ${rcode}    Write Commands Until Expected Prompt    route -A inet6    ${OS_SYSTEM_PROMPT}
     Run Keyword If    ${rcode}    Write Commands Until Expected Prompt    arp -an    ${OS_SYSTEM_PROMPT}
-    Run Keyword If    ${rcode}    Write Commands Until Expected Prompt    ip -6 neigh    ${OS_SYSTEM_PROMPT}
+    Run Keyword If    ${rcode}    Write Commands Until Expected Prompt    ip -f inet6 neigh show    ${OS_SYSTEM_PROMPT}
     : FOR    ${dest_ip}    IN    @{dest_ips}
     \    Log    ${dest_ip}
     \    ${string_empty}=    Run Keyword And Return Status    Should Be Empty    ${dest_ip}
@@ -521,10 +545,8 @@ Test Netcat Operations From Vm Instance
     ${devstack_conn_id}=    Get ControlNode Connection
     Switch Connection    ${devstack_conn_id}
     Log    ${vm_ip}
-    ${output}=    Write Commands Until Prompt    ( ( echo "${server_data}" | sudo timeout 60 nc -l ${additional_args} ${port} ) & )
-    Log    ${output}
-    ${output}=    Write Commands Until Prompt    sudo netstat -nlap | grep ${port}
-    Log    ${output}
+    ${output}=    Write Commands Until Prompt And Log    ( ( echo "${server_data}" | sudo timeout 60 nc -l ${additional_args} ${port} ) & )
+    ${output}=    Write Commands Until Prompt And Log    sudo netstat -nlap | grep ${port}
     ${nc_output}=    Execute Command on VM Instance    ${net_name}    ${vm_ip}    sudo echo "${client_data}" | nc -v -w 5 ${additional_args} ${dest_ip} ${port}
     Log    ${nc_output}
     ${output}=    Execute Command on VM Instance    ${net_name}    ${vm_ip}    sudo route -n
@@ -547,8 +569,8 @@ Create Router
     ${rc}    ${output}=    Run And Return Rc And Output    openstack router create ${router_name}
     Should Not Be True    ${rc}
 
-List Router
-    [Documentation]    List Router and return output with neutron client.
+List Routers
+    [Documentation]    List Routers and return output with neutron client.
     ${rc}    ${output}=    Run And Return Rc And Output    openstack router list -f value
     Log    ${output}
     Should Not Be True    ${rc}
@@ -561,9 +583,8 @@ Add Router Interface
 
 Show Router Interface
     [Arguments]    ${router_name}
-    [Documentation]    List Router interface associated with given Router and return output with neutron client.
+    [Documentation]    List Routers interface associated with given Router and return output with neutron client.
     ${rc}    ${output}=    Run And Return Rc And Output    openstack port list --router ${router_name} -f value
-    Log    ${output}
     Should Not Be True    ${rc}
     [Return]    ${output}
 
@@ -609,7 +630,7 @@ Get DumpFlows And Ovsconfig
     Write Commands Until Expected Prompt    ip route    ${DEFAULT_LINUX_PROMPT_STRICT}
     Write Commands Until Expected Prompt    arp -an    ${DEFAULT_LINUX_PROMPT_STRICT}
     ${nslist}=    Write Commands Until Expected Prompt    ip netns list | awk '{print $1}'    ${DEFAULT_LINUX_PROMPT_STRICT}
-    @{lines}    Split To Lines    ${nslist}
+    @{lines}    Split To Lines    ${nslist}    end=-1
     : FOR    ${line}    IN    @{lines}
     \    Write Commands Until Expected Prompt    sudo ip netns exec ${line} ip -o link    ${DEFAULT_LINUX_PROMPT_STRICT}
     \    Write Commands Until Expected Prompt    sudo ip netns exec ${line} ip -o addr    ${DEFAULT_LINUX_PROMPT_STRICT}
@@ -626,7 +647,7 @@ Get Karaf Log Type From Test Start
     ...    ${log_file}=${WORKSPACE}/${BUNDLEFOLDER}/data/log/karaf.log
     ${cmd}    Set Variable    sed '1,/ROBOT MESSAGE: Starting test ${test_name}/d' ${log_file} | grep '${type}'
     ${output}    Run Command On Controller    ${ip}    ${cmd}    ${user}    ${password}    ${prompt}
-    Log    ${output}
+    [Return]    ${output}
 
 Get Karaf Log Types From Test Start
     [Arguments]    ${ip}    ${test_name}    ${types}    ${user}=${ODL_SYSTEM_USER}    ${password}=${ODL_SYSTEM_PASSWORD}    ${prompt}=${ODL_SYSTEM_PROMPT}
@@ -660,29 +681,39 @@ Get Test Teardown Debugs
     Run Keyword And Ignore Error    Get Model Dump    ${HA_PROXY_IP}    ${netvirt_data_models}
     Get Karaf Log Events From Test Start    ${test_name}
 
+Get Test Teardown Debugs For SFC
+    [Arguments]    ${test_name}=${TEST_NAME}
+    Run Keyword And Ignore Error    Get Model Dump    ${HA_PROXY_IP}    ${netvirt_sfc_data_models}
+
 Show Debugs
     [Arguments]    @{vm_indices}
     [Documentation]    Run these commands for debugging, it can list state of VM instances and ip information in control node
     ${devstack_conn_id}=    Get ControlNode Connection
     Switch Connection    ${devstack_conn_id}
-    ${output}=    Write Commands Until Prompt    sudo ip netns list
-    Log    ${output}
+    ${output}=    Write Commands Until Prompt And Log    sudo ip netns list
     Close Connection
     : FOR    ${index}    IN    @{vm_indices}
     \    ${rc}    ${output}=    Run And Return Rc And Output    nova show ${index}
     \    Log    ${output}
-    \    Log    ${rc}
     List Nova VMs
+    List Routers
     List Networks
     List Subnets
     List Ports
+    List Security Groups
+
+List Security Groups
+    [Documentation]    Logging keyword to display all security groups using the openstack cli. Assumes openstack
+    ...    credentials are already sourced
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack security group list
+    Log    ${output}
+    Should Not Be True    ${rc}
+    [Return]    ${output}
 
 Neutron Security Group Show
     [Arguments]    ${SecurityGroupRuleName}
     [Documentation]    Displays the neutron security group configurations that belongs to a given neutron security group name
-    ${cmd}=    Set Variable    openstack security group show ${SecurityGroupRuleName}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack security group show ${SecurityGroupRuleName}
     Log    ${output}
     Should Not Be True    ${rc}
     [Return]    ${output}
@@ -690,9 +721,7 @@ Neutron Security Group Show
 Neutron Port Show
     [Arguments]    ${PortName}
     [Documentation]    Display the port configuration that belong to a given neutron port
-    ${cmd}=    Set Variable    openstack port show ${PortName}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack port show ${PortName}
     Log    ${output}
     Should Not Be True    ${rc}
     [Return]    ${output}
@@ -702,9 +731,7 @@ Neutron Security Group Create
     [Documentation]    Create a security group with specified name ,description & protocol value according to security group template
     ${devstack_conn_id}=    Get ControlNode Connection
     Switch Connection    ${devstack_conn_id}
-    ${cmd}=    Set Variable    openstack security group create ${SecurityGroupName} ${additional_args}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack security group create ${SecurityGroupName} ${additional_args}
     Log    ${output}
     Should Not Be True    ${rc}
     ${sgp_id}=    Should Match Regexp    ${output}    [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
@@ -714,9 +741,7 @@ Neutron Security Group Create
 Neutron Security Group Update
     [Arguments]    ${SecurityGroupName}    ${additional_args}=${EMPTY}
     [Documentation]    Updating security groups
-    ${cmd}=    Set Variable    openstack security group set ${SecurityGroupName} ${additional_args}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack security group set ${SecurityGroupName} ${additional_args}
     Log    ${output}
     Should Not Be True    ${rc}
     [Return]    ${output}
@@ -830,9 +855,7 @@ Create Allow All SecurityGroup
 Create Neutron Port With Additional Params
     [Arguments]    ${network_name}    ${port_name}    ${additional_args}=${EMPTY}
     [Documentation]    Create Port With given additional parameters
-    ${cmd}=    Set Variable    neutron -v port-create ${network_name} --name ${port_name} ${additional_args}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    neutron -v port-create ${network_name} --name ${port_name} ${additional_args}
     Log    ${output}
     Should Not Be True    ${rc}
     ${port_id}=    Should Match Regexp    ${OUTPUT}    [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
@@ -852,10 +875,8 @@ Get Port Ip
     [Arguments]    ${port_name}
     [Documentation]    Keyword would return the IP of the ${port_name} received.
     ${rc}    ${output}=    Run And Return Rc And Output    openstack port list | grep "${port_name}" | awk -F\\' '{print $2}'
-    Log    ${output}
     ${splitted_output}=    Split String    ${output}    ${EMPTY}
     ${port_ip}=    Get from List    ${splitted_output}    0
-    Log    ${port_ip}
     Should Not Be True    ${rc}
     [Return]    ${port_ip}
 
@@ -863,10 +884,8 @@ Get Port Mac
     [Arguments]    ${port_name}    ${conn_id}=${devstack_conn_id}
     [Documentation]    Keyword would return the MAC ID of the ${port_name} received.
     ${rc}    ${output}=    Run And Return Rc And Output    openstack port show ${port_name} | grep mac_address | awk '{print $4}'
-    Log    ${output}
     ${splitted_output}=    Split String    ${output}    ${EMPTY}
     ${port_mac}=    Get from List    ${splitted_output}    0
-    Log    ${port_mac}
     Should Not Be True    ${rc}
     [Return]    ${port_mac}
 
@@ -913,7 +932,6 @@ Get L2gw Id
     Should Not Be True    ${rc}
     ${splitted_output}=    Split String    ${output}    ${EMPTY}
     ${l2gw_id}=    Get from List    ${splitted_output}    0
-    Log    ${l2gw_id}
     [Return]    ${l2gw_id}
 
 Get L2gw Connection Id
@@ -921,12 +939,10 @@ Get L2gw Connection Id
     [Documentation]    Keyword to retrieve the L2 Gateway Connection ID for the ${l2gw_name} (Using Neutron CLI).
     ${l2gw_id}=    OpenStackOperations.Get L2gw Id    ${l2gw_name}
     ${rc}    ${output}=    Run And Return Rc And Output    ${L2GW_GET_CONN} | grep "${l2gw_id}" | awk '{print $2}'
-    Log    ${output}
     Should Not Be True    ${rc}
     ${splitted_output}=    Split String    ${output}    ${EMPTY}
     ${splitted_output}=    Split String    ${output}    ${EMPTY}
     ${l2gw_conn_id}=    Get from List    ${splitted_output}    0
-    Log    ${l2gw_conn_id}
     [Return]    ${l2gw_conn_id}
 
 Neutron Port List Rest
@@ -976,16 +992,13 @@ Remove Security Group From VM
     [Documentation]    Remove the security group provided to the given VM.
     ${devstack_conn_id}=    Get ControlNode Connection
     Switch Connection    ${devstack_conn_id}
-    ${output}=    Write Commands Until Prompt    openstack server remove security group ${vm} ${sg}
-    Log    ${output}
+    ${output}=    Write Commands Until Prompt And Log    openstack server remove security group ${vm} ${sg}
     Close Connection
 
 Create SFC Flow Classifier
     [Arguments]    ${name}    ${src_ip}    ${dest_ip}    ${protocol}    ${dest_port}    ${neutron_src_port}
     [Documentation]    Create a flow classifier for SFC
-    ${cmd}=    Set Variable    openstack sfc flow classifier create --ethertype IPv4 --source-ip-prefix ${src_ip}/32 --destination-ip-prefix ${dest_ip}/32 --protocol ${protocol} --destination-port ${dest_port}:${dest_port} --logical-source-port ${neutron_src_port} ${name}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack sfc flow classifier create --ethertype IPv4 --source-ip-prefix ${src_ip}/32 --destination-ip-prefix ${dest_ip}/32 --protocol ${protocol} --destination-port ${dest_port}:${dest_port} --logical-source-port ${neutron_src_port} ${name}
     Log    ${output}
     Should Not Be True    ${rc}
     Should Contain    ${output}    ${name}
@@ -996,9 +1009,7 @@ Delete SFC Flow Classifier
     [Documentation]    Delete a SFC flow classifier
     ${devstack_conn_id}=    Get ControlNode Connection
     Switch Connection    ${devstack_conn_id}
-    ${cmd}=    Set Variable    openstack sfc flow classifier delete ${name}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack sfc flow classifier delete ${name}
     Log    ${output}
     Should Not Be True    ${rc}
     [Return]    ${output}
@@ -1008,9 +1019,7 @@ Create SFC Port Pair
     [Documentation]    Creates a neutron port pair for SFC
     ${devstack_conn_id}=    Get ControlNode Connection
     Switch Connection    ${devstack_conn_id}
-    ${cmd}=    Set Variable    openstack sfc port pair create --ingress=${port_in} --egress=${port_out} ${name}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack sfc port pair create --ingress=${port_in} --egress=${port_out} ${name}
     Log    ${output}
     Should Not Be True    ${rc}
     Should Contain    ${output}    ${name}
@@ -1019,9 +1028,7 @@ Create SFC Port Pair
 Delete SFC Port Pair
     [Arguments]    ${name}
     [Documentation]    Delete a SFC port pair
-    ${cmd}=    Set Variable    openstack sfc port pair delete ${name}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack sfc port pair delete ${name}
     Log    ${output}
     Should Not Be True    ${rc}
     [Return]    ${output}
@@ -1029,9 +1036,7 @@ Delete SFC Port Pair
 Create SFC Port Pair Group
     [Arguments]    ${name}    ${port_pair}
     [Documentation]    Creates a port pair group with a single port pair for SFC
-    ${cmd}=    Set Variable    openstack sfc port pair group create --port-pair ${port_pair} ${name}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack sfc port pair group create --port-pair ${port_pair} ${name}
     Log    ${output}
     Should Not Be True    ${rc}
     Should Contain    ${output}    ${name}
@@ -1040,9 +1045,7 @@ Create SFC Port Pair Group
 Create SFC Port Pair Group With Two Pairs
     [Arguments]    ${name}    ${port_pair1}    ${port_pair2}
     [Documentation]    Creates a port pair group with two port pairs for SFC
-    ${cmd}=    Set Variable    openstack sfc port pair group create --port-pair ${port_pair1} --port-pair ${port_pair2} ${name}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack sfc port pair group create --port-pair ${port_pair1} --port-pair ${port_pair2} ${name}
     Log    ${output}
     Should Not Be True    ${rc}
     Should Contain    ${output}    ${name}
@@ -1052,9 +1055,7 @@ Delete SFC Port Pair Group
     [Arguments]    ${name}
     [Documentation]    Delete a SFC port pair group
     ${devstack_conn_id}=    Get ControlNode Connection
-    ${cmd}=    Set Variable    openstack sfc port pair group delete ${name}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack sfc port pair group delete ${name}
     Log    ${output}
     Should Not Be True    ${rc}
     [Return]    ${output}
@@ -1062,9 +1063,7 @@ Delete SFC Port Pair Group
 Create SFC Port Chain
     [Arguments]    ${name}    ${pg1}    ${pg2}    ${fc}
     [Documentation]    Creates a port pair chain with two port groups and a singel classifier.
-    ${cmd}=    Set Variable    openstack sfc port chain create --port-pair-group ${pg1} --port-pair-group ${pg2} --flow-classifier ${fc} ${name}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack sfc port chain create --port-pair-group ${pg1} --port-pair-group ${pg2} --flow-classifier ${fc} ${name}
     Log    ${output}
     Should Not Be True    ${rc}
     Should Contain    ${output}    ${name}
@@ -1073,9 +1072,7 @@ Create SFC Port Chain
 Delete SFC Port Chain
     [Arguments]    ${name}
     [Documentation]    Delete a SFC port chain
-    ${cmd}=    Set Variable    openstack sfc port chain delete ${name}
-    Log    ${cmd}
-    ${rc}    ${output}=    Run And Return Rc And Output    ${cmd}
+    ${rc}    ${output}=    Run And Return Rc And Output    openstack sfc port chain delete ${name}
     Log    ${output}
     Should Not Be True    ${rc}
     [Return]    ${output}
@@ -1088,15 +1085,13 @@ Reboot Nova VM
     Should Not Be True    ${rc}
     Wait Until Keyword Succeeds    35s    10s    Verify VM Is ACTIVE    ${vm_name}
 
-Remove RSA Key From KnowHosts
+Remove RSA Key From KnownHosts
     [Arguments]    ${vm_ip}
     [Documentation]    Remove RSA
     ${devstack_conn_id}=    Get ControlNode Connection
     Switch Connection    ${devstack_conn_id}
-    ${output}=    Write Commands Until Prompt    sudo cat /root/.ssh/known_hosts    30s
-    Log    ${output}
-    ${output}=    Write Commands Until Prompt    sudo ssh-keygen -f "/root/.ssh/known_hosts" -R ${vm_ip}    30s
-    Log    ${output}
+    ${output}=    Write Commands Until Prompt And Log    sudo cat /root/.ssh/known_hosts    30s
+    ${output}=    Write Commands Until Prompt And Log    sudo ssh-keygen -f "/root/.ssh/known_hosts" -R ${vm_ip}    30s
     ${output}=    Write Commands Until Prompt    sudo cat "/root/.ssh/known_hosts"    30s
 
 Wait For Routes To Propogate