Add Node
[Arguments] ${node} ${password}=${EMPTY} ${version}=version4 ${port}=64999 ${session}=session ${ip}=${EMPTY}
- ... ${ssl_stores}=${EMPTY}
+ ... ${ssl_stores}=${EMPTY} ${retry_open_timer}=1
[Documentation] Add node via RPC to ODL
${DATA} Add Node Xml ${node} ${port} ${password} ${version} ${ip}
- ... keystores=${ssl_stores}
+ ... keystores=${ssl_stores} retry_open_timer=${retry_open_timer}
Post To Controller ${session} add-node ${DATA}
Delete Node
[Arguments] ${node}=127.0.0.1 ${session}=session ${domain}=global ${scope}=all
[Documentation] Gets all binding via RPC from Master DB of node
${DATA} Get Bindings From Node Xml ${node} ${scope} ${domain}
- ${resp1} CompareStream.Run_Keyword_If_At_Least_Boron TemplatedRequests.Post_To_Uri ${REST_CONTEXT}:get-node-bindings data=${DATA} accept=${ACCEPT_JSON} content_type=${HEADERS_XML}
- ... session=${session}
- ${resp2} CompareStream.Run_Keyword_If_Less_Than_Boron TemplatedRequests.Get_As_Json_From_Uri /restconf/operational/network-topology:network-topology/topology/sxp/node/${node}/master-database/ session=${session}
- ${resp} CompareStream.Set_Variable_If_At_Least_Boron ${resp1} ${resp2}
+ ${resp} TemplatedRequests.Post_To_Uri ${REST_CONTEXT}:get-node-bindings data=${DATA} accept=${ACCEPT_JSON} content_type=${HEADERS_XML} session=${session}
[Return] ${resp}
Clean Bindings
[Arguments] ${node}=127.0.0.1 ${session}=session ${domain}=global
[Documentation] Delete all bindings via RPC from Master DB of node
${resp} Get Bindings ${node} ${session} ${domain} local
- @{bindings} CompareStream.Run_Keyword_If_At_Least_Else boron Parse Bindings ${resp}
- ... ELSE Parse Prefix Groups ${resp} local
+ @{bindings} Parse Bindings ${resp}
: FOR ${binding} IN @{bindings}
- \ CompareStream.Run_Keyword_If_At_Least_Boron Clean Binding Default ${binding} ${node} ${session} ${domain}
- \ CompareStream.Run_Keyword_If_At_Most_Beryllium Clean Binding At Most Be ${binding} ${node} ${session} ${domain}
+ \ Clean Binding Default ${binding} ${node} ${session} ${domain}
Clean Binding Default
[Arguments] ${binding} ${node} ${session} ${domain}
[Arguments] ${sgt} ${prefixes} ${node} ${session} ${domain}=global
[Documentation] Used for nester FOR loop
: FOR ${prefix} IN @{prefixes}
- \ CompareStream.Run_Keyword_If_At_Least_Boron Delete Binding Default ${sgt} ${prefix} ${node} ${domain}
- \ ... ${session}
- \ CompareStream.Run_Keyword_If_At_Most_Beryllium Delete Binding Be ${sgt} ${prefix} ${node} ${domain}
- \ ... ${session}
+ \ Delete Binding Default ${sgt} ${prefix} ${node} ${domain} ${session}
Update Binding
[Arguments] ${sgtOld} ${prefixOld} ${sgtNew} ${prefixNew} ${node}=127.0.0.1 ${session}=session
Should Contain Binding
[Arguments] ${resp} ${sgt} ${prefix} ${db_source}=any
[Documentation] Tests if data contains specified binding
- ${out} CompareStream.Run_Keyword_If_At_Least_Else boron Find Binding ${resp} ${sgt} ${prefix}
- ... ELSE Find Binding Legacy ${resp} ${sgt} ${prefix} ${db_source}
- ... add
+ ${out} Find Binding ${resp} ${sgt} ${prefix}
Should Be True ${out} Doesn't have ${sgt} ${prefix}
Should Not Contain Binding
[Arguments] ${resp} ${sgt} ${prefix} ${db_source}=any
[Documentation] Tests if data doesn't contains specified binding
- ${out} CompareStream.Run_Keyword_If_At_Least_Else boron Find Binding ${resp} ${sgt} ${prefix}
- ... ELSE Find Binding Legacy ${resp} ${sgt} ${prefix} ${db_source}
- ... add
+ ${out} Find Binding ${resp} ${sgt} ${prefix}
Should Not Be True ${out} Should't have ${sgt} ${prefix}
Should Contain Connection
... ${state}
Should Not Be True ${out} Shouldn't have ${ip}:${port} ${mode} ${version}
+Bindings Should Contain
+ [Arguments] ${sgt} ${prefix} ${db_source}=any
+ [Documentation] Retrieves bindings and verifies they contain given binding
+ ${resp} Get Bindings
+ Should Contain Binding ${resp} ${sgt} ${prefix} ${db_source}
+
+Bindings Should Not Contain
+ [Arguments] ${sgt} ${prefix} ${db_source}=any
+ [Documentation] Retrieves bindings and verifies they do not contain given binding
+ ${resp} Get Bindings
+ Should Not Contain Binding ${resp} ${sgt} ${prefix} ${db_source}
+
+Connections Should Contain
+ [Arguments] ${ip} ${port} ${mode} ${version} ${state}=none
+ [Documentation] Retrieves connections and verifies they contain given connection
+ ${resp} Get Connections
+ Should Contain Connection ${resp} ${ip} ${port} ${mode} ${version} ${state}
+
+Connections Should Not Contain
+ [Arguments] ${ip} ${port} ${mode} ${version} ${state}=none
+ [Documentation] Retrieves connections and verifies they do not contain given connection
+ ${resp} Get Connections
+ Should Not Contain Connection ${resp} ${ip} ${port} ${mode} ${version} ${state}
+
Setup Topology Complex
[Arguments] ${version}=version4 ${PASSWORD}=none
: FOR ${node} IN RANGE 2 6
${output} Run Command On Controller ${ODL_SYSTEM_IP} cat ${WORKSPACE}/${BUNDLEFOLDER}/data/log/karaf.log* | grep -c 'Successfully pushed configuration snapshot.*${snapshot_string}'
Should Not Be Equal As Strings ${output} 0
+Prepare SSH Keys On Karaf
+ [Arguments] ${system}=${ODL_SYSTEM_IP} ${user}=${ODL_SYSTEM_USER} ${passwd}=${ODL_SYSTEM_PASSWORD} ${prompt}=${ODL_SYSTEM_PROMPT} ${system_workspace}=${WORKSPACE}
+ [Documentation] Executes client login on karaf VM in so that SSH keys will be generated by defualt karaf callback,
+ ... expecting echo affter succesfull login. TODO: test on multiple runs if this aproach reduce SSHExceptions in robotframework
+ ${stdout} Run Command On Remote System ${system} ${system_workspace}${/}${BUNDLEFOLDER}/bin/client echo READY ${user} ${passwd} prompt=${prompt}
+ Should Match "${stdout}" "*READY"
+
Setup SXP Session
[Arguments] ${session}=session ${controller}=${ODL_SYSTEM_IP}
[Documentation] Create session to Controller
Setup SXP Session
: FOR ${num} IN RANGE 1 ${node_range}
\ ${ip} Get Ip From Number ${num}
- \ CompareStream.Run_Keyword_If_At_Least_Boron Add Node ${ip}
- \ CompareStream.Run_Keyword_If_At_Least_Boron Wait Until Keyword Succeeds 20 1 Check Node Started ${ip}
+ \ ${rnd_retry_time} = Evaluate random.randint(1, 10) modules=random
+ \ Add Node ${ip} retry_open_timer=${rnd_retry_time}
+ \ Wait Until Keyword Succeeds 20 1 Check Node Started ${ip}
Check Node Started
[Arguments] ${node} ${port}=64999 ${system}=${ODL_SYSTEM_IP} ${session}=session ${ip}=${node}
[Documentation] Destroy created sessions
: FOR ${num} IN RANGE 1 ${node_range}
\ ${ip} Get Ip From Number ${num}
- \ CompareStream.Run_Keyword_If_At_Least_Boron Delete Node ${ip}
+ \ Delete Node ${ip}
Clean SXP Session
+
+Get Routing Configuration From Controller
+ [Arguments] ${session}
+ [Documentation] Get Routing configuration from config DS
+ ${resp} RequestsLibrary.Get Request ${session} /restconf/config/sxp-cluster-route:sxp-cluster-route/ headers=${ACCEPT_XML}
+ ${data} Set Variable If "${resp.status_code}" == "200" ${resp.content} ${EMPTY}
+ [Return] ${data}
+
+Put Routing Configuration To Controller
+ [Arguments] ${DATA} ${session}
+ [Documentation] Put Routing configuration to Config DS
+ ${resp} RequestsLibrary.Put Request ${session} /restconf/config/sxp-cluster-route:sxp-cluster-route/ data=${DATA} headers=${HEADERS_XML}
+ Should Match "${resp.status_code}" "20?"
+
+Clean Routing Configuration To Controller
+ [Arguments] ${session}
+ [Documentation] Delete Routing configuration from Config DS
+ ${resp} RequestsLibrary.Get Request ${session} /restconf/config/sxp-cluster-route:sxp-cluster-route/ headers=${ACCEPT_XML}
+ Run Keyword If "${resp.status_code}" == "200" RequestsLibrary.Delete Request ${session} /restconf/config/sxp-cluster-route:sxp-cluster-route/