Fix for VTN Manager Li job Failure
[integration/test.git] / csit / libraries / VtnMaKeywordsLi.robot
index 8ad03fbd612adf877cfcd0fcb09ac3fac90622a4..add2b11c0039bc43ff48bbd6b48201549e55a689 100644 (file)
@@ -9,8 +9,8 @@ Variables         ../variables/Variables.py
 Resource          ./Utils.robot
 
 *** Variables ***
-${vlan_topo_10}    sudo mn --controller=remote,ip=${CONTROLLER} --custom vlan_vtn_test.py --topo vlantopo
-${vlan_topo_13}    sudo mn --controller=remote,ip=${CONTROLLER} --custom vlan_vtn_test.py --topo vlantopo --switch ovsk,protocols=OpenFlow13
+${vlan_topo_10}    sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --custom vlan_vtn_test.py --topo vlantopo
+${vlan_topo_13}    sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --custom vlan_vtn_test.py --topo vlantopo --switch ovsk,protocols=OpenFlow13
 ${REST_CONTEXT_VTNS}    controller/nb/v2/vtn/default/vtns
 ${REST_CONTEXT}    controller/nb/v2/vtn/default
 ${VERSION_VTN}    controller/nb/v2/vtn/version
@@ -25,8 +25,8 @@ ${vlanmap_bridge1}    {"vlan": "200"}
 ${vlanmap_bridge2}    {"vlan": "300"}
 @{VLANMAP_BRIDGE1_DATAFLOW}    "reason":"VLANMAPPED"    "path":{"tenant":"Tenant1","bridge":"vBridge1_vlan"}
 @{VLANMAP_BRIDGE2_DATAFLOW}    "reason":"VLANMAPPED"    "path":{"tenant":"Tenant1","bridge":"vBridge2_vlan"}
-${pathpolicy_topo_13}    sudo mn --controller=remote,ip=${CONTROLLER} --custom topo-3sw-2host_multipath.py --topo pathpolicytopo --switch ovsk,protocols=OpenFlow13
-${pathpolicy_topo_10}    sudo mn --controller=remote,ip=${CONTROLLER} --custom topo-3sw-2host_multipath.py --topo pathpolicytopo --switch ovsk,protocols=OpenFlow10
+${pathpolicy_topo_13}    sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --custom topo-3sw-2host_multipath.py --topo pathpolicytopo --switch ovsk,protocols=OpenFlow13
+${pathpolicy_topo_10}    sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --custom topo-3sw-2host_multipath.py --topo pathpolicytopo --switch ovsk,protocols=OpenFlow10
 @{PATHMAP_ATTR}    "index":"1"    "condition":"flowcond_path"    "policy":"1"
 ${policy_id}      1
 @{PATHPOLICY_ATTR}    "id":"1"    "type":"OF"    "name":"s4-eth2"
@@ -37,70 +37,77 @@ ${out_after_pathpolicy}    output:3
 
 *** Keywords ***
 Start SuiteVtnMa
+    [Arguments]    ${version_flag}=none
     [Documentation]    Start VTN Manager Init Test Suite
-    Create Session    session    http://${CONTROLLER}:${RESTPORT}    auth=${AUTH}    headers=${HEADERS}
+    Create Session    session    http://${ODL_SYSTEM_IP}:${RESTPORT}    auth=${AUTH}    headers=${HEADERS}
     BuiltIn.Wait_Until_Keyword_Succeeds    30    3    Fetch vtn list
     Start Suite
+    Run Keyword If    '${version_flag}' == 'OF13'    Set Global Variable    ${OPENFLOW_VERSION}    OF13
+    ...    ELSE    Set Global Variable    ${OPENFLOW_VERSION}    OF10
 
 Stop SuiteVtnMa
     [Documentation]    Stop VTN Manager Test Suite
     Delete All Sessions
-    Stop Suite
 
 Start SuiteVtnMaTest
     [Documentation]    Start VTN Manager Test Suite
-    Create Session    session    http://${CONTROLLER}:${RESTPORT}    auth=${AUTH}    headers=${HEADERS}
+    Create Session    session    http://${ODL_SYSTEM_IP}:${RESTPORT}    auth=${AUTH}    headers=${HEADERS}
 
 Stop SuiteVtnMaTest
     [Documentation]    Stop VTN Manager Test Suite
     Delete All Sessions
 
+Add Table Miss Flows
+    [Documentation]    Add Flow entried to handle table miss situation
+    Write    dpctl add-flow priority=0,actions=output:CONTROLLER -OOpenFlow13
+    Read Until    mininet>
+
 Fetch vtn list
     [Documentation]    Check if VTN Manager is up.
-    ${resp}=    RequestsLibrary.Get    session    ${REST_CONTEXT_VTNS}
+    ${resp}=    RequestsLibrary.Get Request    session    ${REST_CONTEXT_VTNS}
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Fetch vtn switch inventory
     [Arguments]    ${sw_name}
     [Documentation]    Check if Switch is detected.
-    ${resp}=    RequestsLibrary.Get    session    ${VTN_INVENTORY}/vtn-inventory:vtn-node/${sw_name}
+    ${resp}=    RequestsLibrary.Get Request    session    ${VTN_INVENTORY}/vtn-inventory:vtn-node/${sw_name}
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Add a vtn
     [Arguments]    ${vtn_name}    ${vtn_data}
     [Documentation]    Create a vtn with specified parameters.
-    ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${vtn_name}    data=${vtn_data}
+    ${resp}=    RequestsLibrary.Post Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}    data=${vtn_data}
     Should Be Equal As Strings    ${resp.status_code}    201
 
 Delete a vtn
     [Arguments]    ${vtn_name}
     [Documentation]    Create a vtn with specified parameters.
-    ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT_VTNS}/${vtn_name}
+    ${resp}=    RequestsLibrary.Delete Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Add a vBridge
     [Arguments]    ${vtn_name}    ${vBridge_name}    ${vBridge_data}
     [Documentation]    Create a vBridge in a VTN
-    ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}    data=${vBridge_data}
+    ${resp}=    RequestsLibrary.Post Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}    data=${vBridge_data}
     Should Be Equal As Strings    ${resp.status_code}    201
 
 Add a interface
     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${interface_data}
     [Documentation]    Create a interface into a vBridge of a VTN
-    ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}    data=${interface_data}
+    ${resp}=    RequestsLibrary.Post Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}    data=${interface_data}
     Should Be Equal As Strings    ${resp.status_code}    201
 
 Add a portmap
     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${portmap_data}
     [Documentation]    Create a portmap for a interface of a vbridge
     ${json_data}=    json.dumps    ${portmap_data}
-    ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap    data=${json_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Put Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap    data=${json_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Verify Data Flows
     [Arguments]    ${vtn_name}    ${vBridge_name}
     [Documentation]    Verify the reason and physical data flows for the specified vtn and vbridge
-    ${resp}=    RequestsLibrary.Get    session    ${REST_CONTEXT_VTNS}/${vtn_name}/flows/detail
+    ${resp}=    RequestsLibrary.Get Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/flows/detail
     Run Keyword If    '${vBridge_name}' == 'vBridge1'    DataFlowsForBridge    ${resp}    @{BRIDGE1_DATAFLOW}
     ...    ELSE IF    '${vBridge_name}' == 'vBridge2'    DataFlowsForBridge    ${resp}    @{BRIDGE2_DATAFLOW}
     ...    ELSE IF    '${vBridge_name}' == 'vBridge1_vlan'    DataFlowsForBridge    ${resp}    @{VLANMAP_BRIDGE1_DATAFLOW}
@@ -116,12 +123,12 @@ Add a pathmap
     [Arguments]    ${pathmap_data}
     [Documentation]    Create a pathmap for a vtn
     ${json_data}=    json.dumps    ${pathmap_data}
-    ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT}/pathmaps/${policy_id}    data=${pathmap_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Put Request    session    ${REST_CONTEXT}/pathmaps/${policy_id}    data=${pathmap_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    201
 
 Get a pathmap
     [Documentation]    Get a pathmap for a vtn.
-    ${resp}=    RequestsLibrary.Get    session    ${REST_CONTEXT}/pathmaps
+    ${resp}=    RequestsLibrary.Get Request    session    ${REST_CONTEXT}/pathmaps
     : FOR    ${pathElement}    IN    @{PATHMAP_ATTR}
     \    should Contain    ${resp.content}    ${pathElement}
 
@@ -129,12 +136,12 @@ Add a pathpolicy
     [Arguments]    ${pathpolicy_data}
     [Documentation]    Create a pathpolicy for a vtn
     ${json_data}=    json.dumps    ${pathpolicy_data}
-    ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT}/pathpolicies/${policy_id}    data=${pathpolicy_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Put Request    session    ${REST_CONTEXT}/pathpolicies/${policy_id}    data=${pathpolicy_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    201
 
 Get a pathpolicy
     [Documentation]    Get a pathpolicy for a vtn.
-    ${resp}=    RequestsLibrary.Get    session    ${REST_CONTEXT}/pathpolicies/${policy_id}
+    ${resp}=    RequestsLibrary.Get Request    session    ${REST_CONTEXT}/pathpolicies/${policy_id}
     : FOR    ${pathpolicyElement}    IN    @{PATHPOLICY_ATTR}
     \    should Contain    ${resp.content}    ${pathpolicyElement}
 
@@ -149,12 +156,12 @@ Verify flowEntryPathPolicy
 Start PathSuiteVtnMaTest
     [Documentation]    Start VTN Manager Test Suite and Mininet
     Start SuiteVtnMaTest
-    Start Mininet    ${MININET}    ${pathpolicy_topo_13}    ${custom}
+    Start Mininet    ${TOOLS_SYSTEM_IP}    ${pathpolicy_topo_13}    ${custom}
 
 Start PathSuiteVtnMaTestOF10
     [Documentation]    Start VTN Manager Test Suite and Mininet in Open Flow 10 Specification
     Start SuiteVtnMaTest
-    Start Mininet    ${MININET}    ${pathpolicy_topo_10}    ${custom}
+    Start Mininet    ${TOOLS_SYSTEM_IP}    ${pathpolicy_topo_10}    ${custom}
 
 Stop PathSuiteVtnMaTest
     [Documentation]    Cleanup/Shutdown work at the completion of all tests.
@@ -163,23 +170,23 @@ Stop PathSuiteVtnMaTest
 
 Delete a pathmap
     [Documentation]    Delete a pathmap for a vtn
-    ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT}/pathmaps/1
+    ${resp}=    RequestsLibrary.Delete Request    session    ${REST_CONTEXT}/pathmaps/1
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Get a pathmap after delete
     [Documentation]    Get a pathmap for a vtn.
-    ${resp}=    RequestsLibrary.Get    session    ${REST_CONTEXT}/pathmaps
+    ${resp}=    RequestsLibrary.Get Request    session    ${REST_CONTEXT}/pathmaps
     : FOR    ${pathElement}    IN    @{PATHMAP_ATTR}
     \    should Not Contain    ${resp.content}    ${pathElement}
 
 Delete a pathpolicy
     [Documentation]    Delete a pathpolicy for a vtn
-    ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT}/pathpolicies/1
+    ${resp}=    RequestsLibrary.Delete Request    session    ${REST_CONTEXT}/pathpolicies/1
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Get a pathpolicy after delete
     [Documentation]    Get a pathpolicy for a vtn after delete.
-    ${resp}=    RequestsLibrary.Get    session    ${REST_CONTEXT}/pathpolicies/${policy_id}
+    ${resp}=    RequestsLibrary.Get Request    session    ${REST_CONTEXT}/pathpolicies/${policy_id}
     : FOR    ${pathpolicyElement}    IN    @{PATHPOLICY_ATTR}
     \    should Not Contain    ${resp.content}    ${pathpolicyElement}
 
@@ -187,7 +194,7 @@ Add a macmap
     [Arguments]    ${vtn_name}    ${vBridge_name}    ${macmap_data}
     [Documentation]    Create a macmap for a vbridge
     ${json_data}=    json.dumps    ${macmap_data}
-    ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/macmap/allow    data=${macmap_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Post Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/macmap/allow    data=${macmap_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    201
 
 Get DynamicMacAddress
@@ -204,7 +211,7 @@ Add a vBridgeMacMapping
     [Arguments]    ${tenant_name}    ${Bridge_name}    ${bridge_macmap_data}
     [Documentation]    Create a vbridge macmap for a bridge
     ${json_data}=    json.dumps    ${bridge_macmap_data}
-    ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${tenant_name}/vbridges/${Bridge_name}/macmap/allow    data=${json_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Post Request    session    ${REST_CONTEXT_VTNS}/${tenant_name}/vbridges/${Bridge_name}/macmap/allow    data=${json_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    201
 
 Mininet Ping Should Succeed
@@ -224,15 +231,15 @@ Mininet Ping Should Not Succeed
 Delete a interface
     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}
     [Documentation]    Delete a interface with specified parameters.
-    ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}
+    ${resp}=    RequestsLibrary.Delete Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Start vlan_topo
     [Arguments]    ${OF}
     Clean Mininet System
-    ${mininet_conn_id1}=    Open Connection    ${MININET}    prompt=${DEFAULT_LINUX_PROMPT}    timeout=30s
+    ${mininet_conn_id1}=    Open Connection    ${TOOLS_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}    timeout=30s
     Set Suite Variable    ${mininet_conn_id1}
-    Login With Public Key    ${MININET_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
+    Login With Public Key    ${TOOLS_SYSTEM_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
     Execute Command    sudo ovs-vsctl set-manager ptcp:6644
     Put File    ${CURDIR}/${CREATE_VLAN_TOPOLOGY_FILE_PATH}
     Run Keyword If    '${OF}' == 'OF13'    Write    ${vlan_topo_13}
@@ -242,20 +249,20 @@ Start vlan_topo
 Add a vlanmap
     [Arguments]    ${vtn_name}    ${vBridge_name}    ${vlanmap_data}
     [Documentation]    Create a vlanmap
-    ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/vlanmaps/    data=${vlanmap_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Post Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/vlanmaps/    data=${vlanmap_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    201
 
 Get flow
     [Arguments]    ${vtn_name}
     [Documentation]    Get data flow.
-    ${resp}=    RequestsLibrary.Get    session    ${REST_CONTEXT_VTNS}/${vtn_name}/flows/detail
+    ${resp}=    RequestsLibrary.Get Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/flows/detail
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Remove a portmap
     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${portmap_data}
     [Documentation]    Remove a portmap for a interface of a vbridge
     ${json_data}=    json.dumps    ${portmap_data}
-    ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap    data=${json_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Delete Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap    data=${json_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Verify FlowMacAddress
@@ -304,43 +311,43 @@ Add a flowcondition
     [Arguments]    ${cond_name}    ${flowcond_data}
     [Documentation]    Create a flowcondition for a interface of a vbridge
     ${json_data}=    json.dumps    ${flowcond_data}
-    ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT}/flowconditions/${cond_name}    data=${json_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Put Request    session    ${REST_CONTEXT}/flowconditions/${cond_name}    data=${json_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    201
 
 Delete a flowcondition
     [Arguments]    ${cond_name}
     [Documentation]    Delete a flowcondition for a interface of a vbridge
-    ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT}/flowconditions/${cond_name}
+    ${resp}=    RequestsLibrary.Delete Request    session    ${REST_CONTEXT}/flowconditions/${cond_name}
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Add a flowfilter
     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${flowfilter_data}    ${ff_index}
     [Documentation]    Create a flowfilter for a vtn
-    ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Put Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    201
 
 Add a flowfilter_vtn
     [Arguments]    ${vtn_name}    ${flowfilter_data}    ${ff_index}
     [Documentation]    Create a flowfilter for a vtn
-    ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/flowfilters/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Put Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/flowfilters/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    201
 
 Add a flowfilter_vbr
     [Arguments]    ${vtn_name}    ${vBridge_name}    ${flowfilter_data}    ${ff_index}
     [Documentation]    Create a flowfilter for a vbr
-    ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/flowfilters/IN/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Put Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/flowfilters/IN/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    201
 
 Update a flowfilter
     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${flowfilter_data}    ${ff_index}
     [Documentation]    Create a flowfilter for a vtn
-    ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Put Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Add a flowfilter for drop
     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${flowfilter_data}    ${ff_index}
     [Documentation]    Create a flowfilter for a vtn
-    ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
+    ${resp}=    RequestsLibrary.Put Request    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Verify Flow Entry for Inet Flowfilter