Add WUKS after conneting OVS instance to controller
[integration/test.git] / csit / libraries / OVSDB.robot
index ef5746edae3785238e93d50530927c5d07c8d8f9..87b42842f21f82e44f89dd98c31c9202c5431f15 100644 (file)
@@ -33,7 +33,7 @@ Add Bridge To Ovsdb Node
     [Arguments]    ${mininet_ip}    ${bridge_num}    ${datapath_id}
     [Documentation]    This will create a bridge and add it to the OVSDB node.
     ${sample}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_bridge.json
-    ${sample1}    Replace String    ${sample}    tcp:127.0.0.1:6633    tcp:${CONTROLLER}:6633
+    ${sample1}    Replace String    ${sample}    tcp:127.0.0.1:6633    tcp:${ODL_SYSTEM_IP}:6633
     ${sample2}    Replace String    ${sample1}    127.0.0.1    ${mininet_ip}
     ${sample3}    Replace String    ${sample2}    br01    ${bridge_num}
     ${sample4}    Replace String    ${sample3}    61644    ${OVSDB_PORT}
@@ -64,48 +64,71 @@ Add Vxlan To Bridge
 Verify OVS Reports Connected
     [Arguments]    ${tools_system}=${TOOLS_SYSTEM_IP}
     [Documentation]    Uses "vsctl show" to check for string "is_connected"
-    ${output}=    Run Command On Remote System    ${tools_system}    sudo ovs-vsctl show
+    ${output}=    Utils.Run Command On Remote System    ${tools_system}    sudo ovs-vsctl show
     Should Contain    ${output}    is_connected
 
 Get OVSDB UUID
-    [Arguments]    ${ovs_system_ip}=${TOOLS_SYSTEM_IP}    ${controller_ip}=${ODL_SYSTEM_IP}     ${controller_http_session}=session
-    [Documentation]  Queries the topology in the operational datastore and searches for the node that has
-    ...  the ${ovs_system_ip} argument as the "remote-ip".  If found, the value returned will be the value of
-    ...  node-id stripped of "ovsdb://uuid/".  If not found, ${EMPTY} will be returned.
+    [Arguments]    ${ovs_system_ip}=${TOOLS_SYSTEM_IP}    ${controller_ip}=${ODL_SYSTEM_IP}    ${controller_http_session}=session
+    [Documentation]    Queries the topology in the operational datastore and searches for the node that has
+    ...    the ${ovs_system_ip} argument as the "remote-ip". If found, the value returned will be the value of
+    ...    node-id stripped of "ovsdb://uuid/". If not found, ${EMPTY} will be returned.
     ${uuid}=    Set Variable    ${EMPTY}
     ${resp}=    RequestsLibrary.Get Request    ${controller_http_session}    ${OPERATIONAL_TOPO_API}/topology/ovsdb:1
+    Log    ${resp.content}
     Should Be Equal As Strings    ${resp.status_code}    200
     ${resp_json}=    To Json    ${resp.content}
-    ${topologies}=    Get From Dictionary   ${resp_json}    topology
+    ${topologies}=    Get From Dictionary    ${resp_json}    topology
     ${topology}=    Get From List    ${topologies}    0
     ${node_list}=    Get From Dictionary    ${topology}    node
     Log    ${node_list}
+    # Since bridges are also listed as nodes, but will not have the extra "ovsdb:connection-info data,
+    # we need to use "Run Keyword And Ignore Error" below.
     : FOR    ${node}    IN    @{node_list}
     \    ${node_id}=    Get From Dictionary    ${node}    node-id
     \    ${node_uuid}=    Replace String    ${node_id}    ovsdb://uuid/    ${EMPTY}
-    # Since  bridges are also listed as nodes, but will not have the extra "ovsdb:connection-info data, we need to
-    # use "Run Keyword And Ignore Error" below.
     \    ${status}    ${connection_info}    Run Keyword And Ignore Error    Get From Dictionary    ${node}    ovsdb:connection-info
     \    ${status}    ${remote_ip}    Run Keyword And Ignore Error    Get From Dictionary    ${connection_info}    remote-ip
     \    ${uuid}=    Set Variable If    '${remote_ip}' == '${ovs_system_ip}'    ${node_uuid}    ${uuid}
     [Return]    ${uuid}
 
-
 Collect OVSDB Debugs
     [Arguments]    ${switch}=br-int
     [Documentation]    Used to log useful test debugs for OVSDB related system tests.
-    ${output}=    Run Command On Remote System    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl show
+    ${output}=    Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-vsctl show
     Log    ${output}
-    ${output}=    Run Command On Remote System    ${TOOLS_SYSTEM_IP}    sudo ovs-ofctl -O OpenFlow13 dump-flows ${switch} | cut -d',' -f3-
+    ${output}=    Utils.Run Command On Mininet    ${TOOLS_SYSTEM_IP}    sudo ovs-ofctl -O OpenFlow13 dump-flows ${switch} | cut -d',' -f3-
     Log    ${output}
 
 Clean OVSDB Test Environment
     [Arguments]    ${tools_system}=${TOOLS_SYSTEM_IP}
     [Documentation]    General Use Keyword attempting to sanitize test environment for OVSDB related
-    ...    tests.  Not every step will always be neccessary, but should not cause any problems for
+    ...    tests. Not every step will always be neccessary, but should not cause any problems for
     ...    any new ovsdb test suites.
-    Clean Mininet System    ${tools_system}
-    Run Command On Remote System    ${tools_system}    sudo ovs-vsctl del-manager
-    Run Command On Remote System    ${tools_system}    sudo /usr/share/openvswitch/scripts/ovs-ctl stop
-    Run Command On Remote System    ${tools_system}    sudo rm -rf /etc/openvswitch/conf.db
-    Run Command On Remote System    ${tools_system}    sudo /usr/share/openvswitch/scripts/ovs-ctl start
+    Utils.Clean Mininet System    ${tools_system}
+    Utils.Run Command On Mininet    ${tools_system}    sudo ovs-vsctl del-manager
+    Utils.Run Command On Mininet    ${tools_system}    sudo /usr/share/openvswitch/scripts/ovs-ctl stop
+    Utils.Run Command On Mininet    ${tools_system}    sudo rm -rf /etc/openvswitch/conf.db
+    Utils.Run Command On Mininet    ${tools_system}    sudo /usr/share/openvswitch/scripts/ovs-ctl start
+
+Set Controller In OVS Bridge
+    [Arguments]    ${tools_system}    ${bridge}    ${controller_opt}
+    [Documentation]    Sets controller for a given OVS ${bridge} using controller options in ${controller_opt}
+    Utils.Run Command On Mininet    ${tools_system}    sudo ovs-vsctl del-controller ${bridge}
+    Utils.Run Command On Mininet    ${tools_system}    sudo ovs-vsctl set-controller ${bridge} ${controller_opt}
+
+Add Multiple Managers to OVS
+    [Arguments]    ${tools_system}    ${controller_index_list}    ${ovs_mgr_port}=6640
+    [Documentation]    Connect OVS to all controllers in the ${controller_index_list}.
+    Log    Clear any existing mininet
+    Utils.Clean Mininet System    ${tools_system}
+    ${ovs_opt}=    Set Variable
+    : FOR    ${index}    IN    @{controller_index_list}
+    \    ${ovs_opt}=    Catenate    ${ovs_opt}    ${SPACE}tcp:${ODL_SYSTEM_${index}_IP}:${ovs_mgr_port}
+    \    Log    ${ovs_opt}
+    Log    Configure OVS Managers in the OVS
+    Utils.Run Command On Mininet    ${tools_system}    sudo ovs-vsctl set-manager ${ovs_opt}
+    Log    Check OVS configuratiom
+    ${output}=    Utils.Run Command On Mininet    ${tools_system}    sudo ovs-vsctl show
+    Log    ${output}
+    ${ovsdb_uuid}=    Wait Until Keyword Succeeds    5s    1s    Get OVSDB UUID    controller_http_session=controller1
+    [Return]    ${ovsdb_uuid}