+
+Add Domain
+ [Arguments] ${domain_name} ${node}=127.0.0.1 ${session}=session
+ [Documentation] Add Domain via RPC
+ ${DATA} Add Domain Xml ${node} ${domain_name}
+ Post To Controller ${session} add-domain ${DATA}
+
+Delete Domain
+ [Arguments] ${domain_name} ${node}=127.0.0.1 ${session}=session
+ [Documentation] Delete Domain via RPC
+ ${DATA} Delete Domain Xml ${node} ${domain_name}
+ Post To Controller ${session} delete-domain ${DATA}
+
+Add Bindings
+ [Arguments] ${sgt} ${prefixes} ${node}=127.0.0.1 ${session}=session ${domain}=global
+ [Documentation] Add bindings via RPC to Master DB of node
+ ${DATA} Add Bindings Xml ${node} ${domain} ${sgt} ${prefixes}
+ Post To Controller ${session} add-bindings ${DATA}
+
+Delete Bindings
+ [Arguments] ${sgt} ${prefixes} ${node}=127.0.0.1 ${session}=session ${domain}=global
+ [Documentation] Delete bindings via RPC from Master DB of node
+ ${DATA} Delete Bindings Xml ${node} ${domain} ${sgt} ${prefixes}
+ Post To Controller ${session} delete-bindings ${DATA}
+
+Add Bindings Range
+ [Arguments] ${sgt} ${start} ${size} ${node}=127.0.0.1
+ [Documentation] Add Bindings to Node specified by range
+ ${prefixes} Prefix Range ${start} ${size}
+ Add Bindings ${sgt} ${prefixes} ${node}
+
+Delete Bindings Range
+ [Arguments] ${sgt} ${start} ${size} ${node}=127.0.0.1
+ [Documentation] Delete Bindings to Node specified by range
+ ${prefixes} Prefix Range ${start} ${size}
+ Delete Bindings ${sgt} ${prefixes} ${node}
+
+Check Binding Range
+ [Arguments] ${sgt} ${start} ${end} ${node}=127.0.0.1
+ [Documentation] Check if Node contains Bindings specified by range
+ ${resp} Get Bindings ${node}
+ : FOR ${num} IN RANGE ${start} ${end}
+ \ ${ip} Get Ip From Number ${num}
+ \ Should Contain Binding ${resp} ${sgt} ${ip}/32
+
+Check Binding Range Negative
+ [Arguments] ${sgt} ${start} ${end} ${node}=127.0.0.1
+ [Documentation] Check if Node does not contains Bindings specified by range
+ ${resp} Get Bindings ${node}
+ : FOR ${num} IN RANGE ${start} ${end}
+ \ ${ip} Get Ip From Number ${num}
+ \ Should Not Contain Binding ${resp} ${sgt} ${ip}/32
+
+Setup SXP Environment
+ [Arguments] ${node_range}=2
+ [Documentation] Create session to Controller, node_range parameter specifies number of nodes to be created plus one
+ Setup SXP Session
+ : FOR ${num} IN RANGE 1 ${node_range}
+ \ ${ip} Get Ip From Number ${num}
+ \ ${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] Verify that SxpNode has data writed to Operational datastore
+ ${resp} RequestsLibrary.Get Request ${session} /restconf/operational/network-topology:network-topology/topology/sxp/node/${node}/
+ Should Be Equal As Strings ${resp.status_code} 200
+ ${rc} Run Command On Remote System ${system} netstat -tln | grep -q ${ip}:${port} && echo 0 || echo 1 ${ODL_SYSTEM_USER} ${ODL_SYSTEM_PASSWORD} prompt=${ODL_SYSTEM_PROMPT}
+ Should Be Equal As Strings ${rc} 0
+
+Clean SXP Environment
+ [Arguments] ${node_range}=2
+ [Documentation] Destroy created sessions
+ : FOR ${num} IN RANGE 1 ${node_range}
+ \ ${ip} Get Ip From Number ${num}
+ \ 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/