*** Variables ***
${REST_CONTEXT_VTNS} controller/nb/v2/vtn/default/vtns
+${REST_CONTEXT} controller/nb/v2/vtn/default
${VERSION_VTN} controller/nb/v2/vtn/version
${VTN_INVENTORY} restconf/operational/vtn-inventory:vtn-nodes
${DUMPFLOWS} dpctl dump-flows -O OpenFlow13
${index} 7
+@{FLOWELMENTS} nw_src=10.0.0.1 nw_dst=10.0.0.3 actions=drop
+
*** Keywords ***
Start SuiteVtnMa
[Documentation] Start VTN Manager Init Test Suite
${resp}= RequestsLibrary.Put 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
+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}
+ Should Be Equal As Strings ${resp.status_code} 201
+
Mininet Ping Should Succeed
[Arguments] ${host1} ${host2}
Write ${host1} ping -c 10 ${host2}
${result} Read Until mininet>
Should Contain ${result} ${sourcemacaddress}
Should Contain ${result} ${destmacaddress}
+
+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}
+ 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}
+ 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}
+ 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}
+ 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}
+ 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}
+ 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}
+ Should Be Equal As Strings ${resp.status_code} 200
+
+Verify Flow Entry for Inet Flowfilter
+ [Documentation] Verify switch flow entry using flowfilter for a vtn
+ ${booleanValue}= Run Keyword And Return Status Verify Actions on Flow Entry
+ Should Not Be Equal As Strings ${booleanValue} True
+
+Verify Removed Flow Entry for Inet Drop Flowfilter
+ [Documentation] Verify removed switch flow entry using flowfilter drop for a vtn
+ ${booleanValue}= Run Keyword And Return Status Verify Actions on Flow Entry
+ Should Be Equal As Strings ${booleanValue} True
+
+Verify Actions on Flow Entry
+ write ${DUMPFLOWS}
+ ${result} Read Until mininet>
+ : FOR ${flowElement} IN @{FLOWELMENTS}
+ \ should Contain ${result} ${flowElement}